38 lines
1.3 KiB
TypeScript
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);
|
|
},
|
|
});
|