POC: vscode-free @cline/sdk driver with unit test (Feature #2)

fetchSdkSummary() dynamic-imports the ESM-only SDK and returns its build
version + builtin tool catalog (pure, key-free). Kept vscode-free so it is
unit-testable in Node; test asserts a semver version and the read_files tool.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ben Stull
2026-06-09 23:55:39 -07:00
parent b343f0754a
commit 33bff2b130
2 changed files with 49 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
/**
* vscode-free driver for @cline/sdk.
*
* @cline/sdk is ESM-only (Node >=22) and uses createRequire(import.meta.url),
* so it must NOT be bundled into the CJS extension. We load it at runtime via
* dynamic import(); the bundler keeps it external (see esbuild.mjs).
*/
export interface ClineTool {
id: string;
description: string;
}
export interface SdkSummary {
version: string;
tools: ClineTool[];
}
/**
* Drive @cline/sdk with pure, key-free calls and return a renderable summary:
* the SDK build version and the agent's builtin tool catalog. Proves the SDK
* is linked and callable from the extension host.
*/
export async function fetchSdkSummary(): Promise<SdkSummary> {
const sdk = await import("@cline/sdk");
const catalog = sdk.getCoreBuiltinToolCatalog();
return {
version: sdk.CORE_BUILD_VERSION,
tools: catalog.map((entry) => ({
id: entry.id,
description: entry.description,
})),
};
}