Files
openchamber/packages/vscode/webview/api/vscode.ts
T

38 lines
1.3 KiB
TypeScript

import type { VSCodeAPI } from '@openchamber/ui/lib/api/types';
import { executeVSCodeCommand, openVSCodeExternalUrl, sendBridgeMessage } 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');
},
async openExternalUrl(url: string): Promise<void> {
await openVSCodeExternalUrl(url);
},
async addWorkspaceFolder(path: string): Promise<Array<{ name: string; path: string }>> {
const result = await sendBridgeMessage<{ workspaceFolders: Array<{ name: string; path: string }> }>(
'api:workspace:addFolder',
{ path },
);
return Array.isArray(result?.workspaceFolders) ? result.workspaceFolders : [];
},
async pickFiles(options): Promise<unknown> {
return sendBridgeMessage('api:files/pick', options);
},
async saveImage(payload: unknown): Promise<unknown> {
return sendBridgeMessage('api:files/save-image', payload);
},
async saveMarkdown(payload: unknown): Promise<unknown> {
return sendBridgeMessage('api:files/save-markdown', payload);
},
});