import * as vscode from 'vscode'; import { copySelection, copyActiveFile, copySingleItem, copySelectedFiles, copyMultiFiles, } from './copyContext'; import { CopyAiCodeActionProvider } from './codeActionProvider'; export function activate(context: vscode.ExtensionContext) { console.log('[copy-ai-ctx] activating...'); context.subscriptions.push( vscode.commands.registerCommand('copy-ai-ctx.copySelection', () => { copySelection(); }), ); context.subscriptions.push( vscode.commands.registerCommand('copy-ai-ctx.copyFile', () => { copyActiveFile(); }), ); context.subscriptions.push( vscode.commands.registerCommand('copy-ai-ctx.copySelectedFiles', (args) => { if (!args) { // keyboard shortcut invocation: fallback to active editor file const editor = vscode.window.activeTextEditor; if (!editor) return; copySingleItem(editor.document.uri); return; } copySingleItem(args as vscode.Uri); }), ); context.subscriptions.push( vscode.commands.registerCommand('copy-ai-ctx.copyMultiFiles', (...args) => { if (args.length < 2) { // keyboard shortcut invocation: fallback to active editor file const editor = vscode.window.activeTextEditor; if (!editor) return; copyMultiFiles([editor.document.uri]); return; } // args[0] = clicked resource URI // args[1] might be array (standard) or individual URI (variadic) const resources = Array.isArray(args[1]) ? args[1] : args.slice(1); if (resources.length === 0) return; copyMultiFiles(resources); }), ); console.log('[copy-ai-ctx] activated'); // Register CodeAction provider (lightbulb on selection) context.subscriptions.push( vscode.languages.registerCodeActionsProvider( { pattern: '**' }, new CopyAiCodeActionProvider(), { providedCodeActionKinds: CopyAiCodeActionProvider.providedCodeActionKinds, }, ), ); } export function deactivate() { // cleanup if needed }