import * as vscode from 'vscode'; import { ChatViewProvider } from './ChatViewProvider'; import { createOpenCodeManager, type OpenCodeManager } from './opencode'; let chatViewProvider: ChatViewProvider | undefined; let openCodeManager: OpenCodeManager | undefined; export function activate(context: vscode.ExtensionContext) { // Create OpenCode manager first openCodeManager = createOpenCodeManager(context); // Create chat view provider with manager reference chatViewProvider = new ChatViewProvider(context, context.extensionUri, openCodeManager); context.subscriptions.push( vscode.window.registerWebviewViewProvider( ChatViewProvider.viewType, chatViewProvider, { webviewOptions: { retainContextWhenHidden: true } } ) ); context.subscriptions.push( vscode.commands.registerCommand('openchamber.restartApi', async () => { try { await openCodeManager?.restart(); vscode.window.showInformationMessage('OpenChamber: API connection restarted'); } catch (e) { vscode.window.showErrorMessage(`OpenChamber: Failed to restart API - ${e}`); } }) ); context.subscriptions.push( vscode.window.onDidChangeActiveColorTheme((theme) => { chatViewProvider?.updateTheme(theme.kind); }) ); // Subscribe to status changes context.subscriptions.push( openCodeManager.onStatusChange((status, error) => { chatViewProvider?.updateConnectionStatus(status, error); }) ); // Auto-start OpenCode API openCodeManager.start(); } export function deactivate() { openCodeManager?.stop(); openCodeManager = undefined; chatViewProvider = undefined; }