* feat: add initial VS Code extension plan and implementation tasks * feat(vscode): added initial version of an Openchamber VSCode extension * feat(vscode): enhance VS Code extension with theme integration and session management * feat(vscode): implement connection status handling and overlay in VSCode layout * feat: move extension to secondary sidebar * chore: upgrade @opencode-ai/sdk to 1.0.150 * vscode: editor bridge, file picker, click-to-open in tool parts * vscode: layout session lifecycle, theme sync, typography overrides * ui: compact mode for vscode, model search, autocomplete width fixes * perf: scroll force flag, raf placeholder, git polling backoff * ui: tool output styling, markdown code block fix, gitignore * refactor: update typography handling for VSCode runtime, remove unused styles * docs: update README with VS Code extension details and add extension image * docs: update changelog with new features and performance improvements
23 lines
703 B
TypeScript
23 lines
703 B
TypeScript
import type { ToolsAPI } from '@openchamber/ui/lib/api/types';
|
|
|
|
// Use same endpoint as web - fetch interceptor handles URL rewriting
|
|
export const createVSCodeToolsAPI = (): ToolsAPI => ({
|
|
async getAvailableTools(): Promise<string[]> {
|
|
const response = await fetch('/api/experimental/tool/ids');
|
|
|
|
if (!response.ok) {
|
|
throw new Error(`Tools API returned ${response.status} ${response.statusText}`);
|
|
}
|
|
|
|
const data = await response.json();
|
|
|
|
if (!Array.isArray(data)) {
|
|
throw new Error('Tools API returned invalid data format');
|
|
}
|
|
|
|
return data
|
|
.filter((tool: unknown): tool is string => typeof tool === 'string' && tool !== 'invalid')
|
|
.sort();
|
|
},
|
|
});
|