feat(vscode) Agent Manager (#87)
* Add Agent Manager * Basic Mock UP * Fix Comand naming Ctrl+P Uses Category to group * Move the UI in views * Agent Manager Landing Page * Fix attachment buig * Change Session Name for multi run to incoporate groupSlug * First running UI * Fix Max Model Multi Run * Rework Agent Group detection * ignore false positives with ' ' in it * Simplify Logic * remove unused dropdowns * Clean up * Update Changelog
This commit is contained in:
@@ -125,6 +125,10 @@ export async function stopSseProxy(options: { streamId: string }): Promise<{ sto
|
||||
return sendBridgeMessage<{ stopped: boolean }>('api:sse:stop', options);
|
||||
}
|
||||
|
||||
export async function executeVSCodeCommand(command: string, args?: unknown[]): Promise<{ result?: unknown }> {
|
||||
return sendBridgeMessage<{ result?: unknown }>('vscode:command', { command, args });
|
||||
}
|
||||
|
||||
type CommandHandler = (payload: unknown) => void;
|
||||
const commandHandlers = new Map<string, CommandHandler>();
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import { createVSCodePermissionsAPI } from './permissions';
|
||||
import { createVSCodeToolsAPI } from './tools';
|
||||
import { createVSCodeEditorAPI } from './editor';
|
||||
import { createVSCodeGitAPI } from './git';
|
||||
import { createVSCodeActionsAPI } from './vscode';
|
||||
|
||||
// Stub APIs return sensible defaults instead of throwing
|
||||
const createStubTerminalAPI = (): TerminalAPI => ({
|
||||
@@ -30,4 +31,5 @@ export const createVSCodeAPIs = (): RuntimeAPIs => ({
|
||||
notifications: createStubNotificationsAPI(),
|
||||
tools: createVSCodeToolsAPI(),
|
||||
editor: createVSCodeEditorAPI(),
|
||||
vscode: createVSCodeActionsAPI(),
|
||||
});
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
import type { VSCodeAPI } from '../../../ui/src/lib/api/types';
|
||||
import { executeVSCodeCommand } from './bridge';
|
||||
|
||||
export const createVSCodeActionsAPI = (): VSCodeAPI => ({
|
||||
async executeCommand(command: string, ...args: unknown[]): Promise<unknown> {
|
||||
const result = await executeVSCodeCommand(command, args);
|
||||
return result.result;
|
||||
},
|
||||
|
||||
async openAgentManager(): Promise<void> {
|
||||
await executeVSCodeCommand('openchamber.openAgentManager');
|
||||
},
|
||||
});
|
||||
@@ -9,6 +9,7 @@ import {
|
||||
} from '../../ui/src/lib/theme/vscode/adapter';
|
||||
|
||||
type ConnectionStatus = 'connecting' | 'connected' | 'error' | 'disconnected';
|
||||
type PanelType = 'chat' | 'agentManager';
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
@@ -19,11 +20,13 @@ declare global {
|
||||
theme: string;
|
||||
connectionStatus: string;
|
||||
cliAvailable?: boolean;
|
||||
panelType?: PanelType;
|
||||
};
|
||||
__OPENCHAMBER_VSCODE_THEME__?: VSCodeThemePayload['theme'];
|
||||
__OPENCHAMBER_VSCODE_SHIKI_THEMES__?: { light?: Record<string, unknown>; dark?: Record<string, unknown> } | null;
|
||||
__OPENCHAMBER_CONNECTION__?: { status: ConnectionStatus; error?: string; cliAvailable?: boolean };
|
||||
__OPENCHAMBER_HOME__?: string;
|
||||
__OPENCHAMBER_PANEL_TYPE__?: PanelType;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,6 +43,9 @@ const bootstrapConnectionStatus = () => {
|
||||
|
||||
bootstrapConnectionStatus();
|
||||
|
||||
// Expose panel type globally for App.tsx to conditionally render
|
||||
window.__OPENCHAMBER_PANEL_TYPE__ = (window.__VSCODE_CONFIG__?.panelType as PanelType) || 'chat';
|
||||
|
||||
const handleConnectionMessage = (event: MessageEvent) => {
|
||||
const msg = event.data;
|
||||
if (msg?.type === 'connectionStatus') {
|
||||
|
||||
Reference in New Issue
Block a user