Files
openchamber/packages/vscode/src/extension.ts
T

56 lines
1.6 KiB
TypeScript

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;
}