@cleocode/adapters 2026.4.139 → 2026.4.141
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +141 -14
- package/dist/index.js.map +4 -4
- package/dist/providers/claude-sdk/adapter.d.ts +57 -0
- package/dist/providers/claude-sdk/adapter.d.ts.map +1 -0
- package/dist/providers/claude-sdk/index.d.ts +10 -0
- package/dist/providers/claude-sdk/index.d.ts.map +1 -1
- package/dist/providers/claude-sdk/install.d.ts +47 -0
- package/dist/providers/claude-sdk/install.d.ts.map +1 -0
- package/package.json +4 -4
- package/src/index.ts +3 -0
- package/src/providers/claude-sdk/__tests__/spawn.test.ts +13 -0
- package/src/providers/claude-sdk/adapter.ts +101 -0
- package/src/providers/claude-sdk/index.ts +15 -0
- package/src/providers/claude-sdk/install.ts +66 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude SDK provider adapter.
|
|
3
|
+
*
|
|
4
|
+
* Wraps {@link ClaudeSDKSpawnProvider} in the standard
|
|
5
|
+
* {@link CLEOProviderAdapter} contract so registry and sovereignty probes can
|
|
6
|
+
* treat the SDK-backed Claude provider like every other CLEO provider.
|
|
7
|
+
*
|
|
8
|
+
* @task T933
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
import type { AdapterCapabilities, AdapterHealthStatus, CLEOProviderAdapter } from '@cleocode/contracts';
|
|
12
|
+
import { ClaudeSDKInstallProvider } from './install.js';
|
|
13
|
+
import { ClaudeSDKSpawnProvider } from './spawn.js';
|
|
14
|
+
/**
|
|
15
|
+
* CLEO provider adapter for Anthropic Claude via the Vercel AI SDK.
|
|
16
|
+
*
|
|
17
|
+
* @remarks
|
|
18
|
+
* This adapter intentionally exposes spawn only. Hooks, instruction files, and
|
|
19
|
+
* provider-native paths belong to CLI providers such as `claude-code`; the SDK
|
|
20
|
+
* provider is the programmatic LLM bridge used when `provider.claude.mode` is
|
|
21
|
+
* configured as `sdk`.
|
|
22
|
+
*/
|
|
23
|
+
export declare class ClaudeSDKAdapter implements CLEOProviderAdapter {
|
|
24
|
+
/** Unique provider identifier. */
|
|
25
|
+
readonly id = "claude-sdk";
|
|
26
|
+
/** Human-readable provider name. */
|
|
27
|
+
readonly name = "Claude SDK (Vercel AI SDK)";
|
|
28
|
+
/** Adapter version string. */
|
|
29
|
+
readonly version = "2.0.0";
|
|
30
|
+
/** Declared capabilities for this provider. */
|
|
31
|
+
capabilities: AdapterCapabilities;
|
|
32
|
+
/** Spawn provider for SDK-backed Claude runs. */
|
|
33
|
+
spawn: ClaudeSDKSpawnProvider;
|
|
34
|
+
/** No-op install provider required by the adapter contract. */
|
|
35
|
+
install: ClaudeSDKInstallProvider;
|
|
36
|
+
private projectDir;
|
|
37
|
+
private initialized;
|
|
38
|
+
constructor();
|
|
39
|
+
/**
|
|
40
|
+
* Initialize the adapter for a project directory.
|
|
41
|
+
*
|
|
42
|
+
* @param projectDir - Root directory of the project using this adapter.
|
|
43
|
+
*/
|
|
44
|
+
initialize(projectDir: string): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Dispose the adapter and clear tracked project state.
|
|
47
|
+
*/
|
|
48
|
+
dispose(): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Check whether SDK-backed spawning can run in the current environment.
|
|
51
|
+
*
|
|
52
|
+
* @returns Adapter health with credential availability and initialization
|
|
53
|
+
* state.
|
|
54
|
+
*/
|
|
55
|
+
healthCheck(): Promise<AdapterHealthStatus>;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/providers/claude-sdk/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,YAAW,mBAAmB;IAC1D,kCAAkC;IAClC,QAAQ,CAAC,EAAE,gBAAgB;IAC3B,oCAAoC;IACpC,QAAQ,CAAC,IAAI,gCAAgC;IAC7C,8BAA8B;IAC9B,QAAQ,CAAC,OAAO,WAAW;IAE3B,+CAA+C;IAC/C,YAAY,EAAE,mBAAmB,CAW/B;IAEF,iDAAiD;IACjD,KAAK,EAAE,sBAAsB,CAAC;IAC9B,+DAA+D;IAC/D,OAAO,EAAE,wBAAwB,CAAC;IAElC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,WAAW,CAAS;;IAO5B;;;;OAIG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;;;;OAKG;IACG,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAalD"}
|
|
@@ -15,10 +15,20 @@
|
|
|
15
15
|
* @task T933 (SDK consolidation — Vercel AI SDK migration)
|
|
16
16
|
* @see ADR-052 — SDK consolidation decision
|
|
17
17
|
*/
|
|
18
|
+
import { ClaudeSDKAdapter } from './adapter.js';
|
|
19
|
+
export { ClaudeSDKAdapter } from './adapter.js';
|
|
20
|
+
export { ClaudeSDKInstallProvider } from './install.js';
|
|
18
21
|
export type { McpServerMap, McpStdioConfig } from './mcp-registry.js';
|
|
19
22
|
export { getServers } from './mcp-registry.js';
|
|
20
23
|
export type { SessionEntry } from './session-store.js';
|
|
21
24
|
export { SessionStore } from './session-store.js';
|
|
22
25
|
export { ClaudeSDKSpawnProvider } from './spawn.js';
|
|
23
26
|
export { DEFAULT_TOOLS, resolveTools } from './tool-bridge.js';
|
|
27
|
+
export default ClaudeSDKAdapter;
|
|
28
|
+
/**
|
|
29
|
+
* Create a Claude SDK adapter instance for dynamic adapter loading.
|
|
30
|
+
*
|
|
31
|
+
* @returns A fresh {@link ClaudeSDKAdapter}.
|
|
32
|
+
*/
|
|
33
|
+
export declare function createAdapter(): ClaudeSDKAdapter;
|
|
24
34
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/claude-sdk/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/claude-sdk/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE/D,eAAe,gBAAgB,CAAC;AAEhC;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,gBAAgB,CAEhD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude SDK install provider.
|
|
3
|
+
*
|
|
4
|
+
* The Claude SDK adapter is a programmatic LLM bridge, not a native CLI
|
|
5
|
+
* integration surface. CLEO installation is therefore a no-op: project
|
|
6
|
+
* instruction files are managed by the active CLI provider (for example
|
|
7
|
+
* `claude-code`) while this provider supplies SDK-backed spawning.
|
|
8
|
+
*
|
|
9
|
+
* @task T933
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
import type { AdapterInstallProvider, InstallOptions, InstallResult } from '@cleocode/contracts';
|
|
13
|
+
/**
|
|
14
|
+
* No-op install provider for the SDK-backed Claude provider.
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* `CLEOProviderAdapter` requires an install provider. This implementation
|
|
18
|
+
* preserves that contract without pretending the Anthropic SDK has a native
|
|
19
|
+
* instruction-file or hook installation target.
|
|
20
|
+
*/
|
|
21
|
+
export declare class ClaudeSDKInstallProvider implements AdapterInstallProvider {
|
|
22
|
+
/**
|
|
23
|
+
* Report a successful no-op installation.
|
|
24
|
+
*
|
|
25
|
+
* @param options - Installation options. Currently accepted for contract
|
|
26
|
+
* parity and not mutated.
|
|
27
|
+
* @returns A successful install result with `instructionFileUpdated=false`.
|
|
28
|
+
*/
|
|
29
|
+
install(options: InstallOptions): Promise<InstallResult>;
|
|
30
|
+
/**
|
|
31
|
+
* No-op uninstall for the SDK provider.
|
|
32
|
+
*/
|
|
33
|
+
uninstall(): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Return true because the SDK provider requires no filesystem installation.
|
|
36
|
+
*
|
|
37
|
+
* @returns Always `true`.
|
|
38
|
+
*/
|
|
39
|
+
isInstalled(): Promise<boolean>;
|
|
40
|
+
/**
|
|
41
|
+
* No-op instruction-file reference hook.
|
|
42
|
+
*
|
|
43
|
+
* @param projectDir - Project directory accepted for interface parity.
|
|
44
|
+
*/
|
|
45
|
+
ensureInstructionReferences(projectDir: string): Promise<void>;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/providers/claude-sdk/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEjG;;;;;;;GAOG;AACH,qBAAa,wBAAyB,YAAW,sBAAsB;IACrE;;;;;;OAMG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAa9D;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAEhC;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;;;OAIG;IACG,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGrE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cleocode/adapters",
|
|
3
|
-
"version": "2026.4.
|
|
3
|
+
"version": "2026.4.141",
|
|
4
4
|
"description": "Unified provider adapters for CLEO (Claude Code, OpenCode, Cursor)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"@ai-sdk/anthropic": "^3.0.69",
|
|
16
16
|
"@ai-sdk/openai": "^2.0.53",
|
|
17
17
|
"ai": "^6.0.168",
|
|
18
|
-
"@cleocode/caamp": "2026.4.
|
|
19
|
-
"@cleocode/contracts": "2026.4.
|
|
18
|
+
"@cleocode/caamp": "2026.4.141",
|
|
19
|
+
"@cleocode/contracts": "2026.4.141"
|
|
20
20
|
},
|
|
21
21
|
"license": "MIT",
|
|
22
22
|
"engines": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/node": "^22.19.15",
|
|
31
31
|
"vitest": "^4.1.4",
|
|
32
|
-
"@cleocode/playbooks": "2026.4.
|
|
32
|
+
"@cleocode/playbooks": "2026.4.141"
|
|
33
33
|
},
|
|
34
34
|
"repository": {
|
|
35
35
|
"type": "git",
|
package/src/index.ts
CHANGED
|
@@ -47,7 +47,10 @@ export {
|
|
|
47
47
|
} from './providers/claude-code/index.js';
|
|
48
48
|
export type { McpServerMap, McpStdioConfig, SessionEntry } from './providers/claude-sdk/index.js';
|
|
49
49
|
export {
|
|
50
|
+
ClaudeSDKAdapter,
|
|
51
|
+
ClaudeSDKInstallProvider,
|
|
50
52
|
ClaudeSDKSpawnProvider,
|
|
53
|
+
createAdapter as createClaudeSDKAdapter,
|
|
51
54
|
DEFAULT_TOOLS,
|
|
52
55
|
getServers,
|
|
53
56
|
resolveTools,
|
|
@@ -267,6 +267,19 @@ describe('ClaudeSDKSpawnProvider', () => {
|
|
|
267
267
|
});
|
|
268
268
|
});
|
|
269
269
|
|
|
270
|
+
describe('ClaudeSDKAdapter', () => {
|
|
271
|
+
it('exports a default CLEOProviderAdapter-compatible class', async () => {
|
|
272
|
+
const mod = await import('../index.js');
|
|
273
|
+
const adapter = new mod.default();
|
|
274
|
+
|
|
275
|
+
expect(adapter.id).toBe('claude-sdk');
|
|
276
|
+
expect(adapter.name).toBe('Claude SDK (Vercel AI SDK)');
|
|
277
|
+
expect(adapter.version).toBe('2.0.0');
|
|
278
|
+
expect(adapter.capabilities.supportsSpawn).toBe(true);
|
|
279
|
+
expect(adapter.spawn).toBeInstanceOf(mod.ClaudeSDKSpawnProvider);
|
|
280
|
+
});
|
|
281
|
+
});
|
|
282
|
+
|
|
270
283
|
// ---------------------------------------------------------------------------
|
|
271
284
|
// SessionStore unit tests
|
|
272
285
|
// ---------------------------------------------------------------------------
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude SDK provider adapter.
|
|
3
|
+
*
|
|
4
|
+
* Wraps {@link ClaudeSDKSpawnProvider} in the standard
|
|
5
|
+
* {@link CLEOProviderAdapter} contract so registry and sovereignty probes can
|
|
6
|
+
* treat the SDK-backed Claude provider like every other CLEO provider.
|
|
7
|
+
*
|
|
8
|
+
* @task T933
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import type {
|
|
13
|
+
AdapterCapabilities,
|
|
14
|
+
AdapterHealthStatus,
|
|
15
|
+
CLEOProviderAdapter,
|
|
16
|
+
} from '@cleocode/contracts';
|
|
17
|
+
import { ClaudeSDKInstallProvider } from './install.js';
|
|
18
|
+
import { ClaudeSDKSpawnProvider } from './spawn.js';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* CLEO provider adapter for Anthropic Claude via the Vercel AI SDK.
|
|
22
|
+
*
|
|
23
|
+
* @remarks
|
|
24
|
+
* This adapter intentionally exposes spawn only. Hooks, instruction files, and
|
|
25
|
+
* provider-native paths belong to CLI providers such as `claude-code`; the SDK
|
|
26
|
+
* provider is the programmatic LLM bridge used when `provider.claude.mode` is
|
|
27
|
+
* configured as `sdk`.
|
|
28
|
+
*/
|
|
29
|
+
export class ClaudeSDKAdapter implements CLEOProviderAdapter {
|
|
30
|
+
/** Unique provider identifier. */
|
|
31
|
+
readonly id = 'claude-sdk';
|
|
32
|
+
/** Human-readable provider name. */
|
|
33
|
+
readonly name = 'Claude SDK (Vercel AI SDK)';
|
|
34
|
+
/** Adapter version string. */
|
|
35
|
+
readonly version = '2.0.0';
|
|
36
|
+
|
|
37
|
+
/** Declared capabilities for this provider. */
|
|
38
|
+
capabilities: AdapterCapabilities = {
|
|
39
|
+
supportsHooks: false,
|
|
40
|
+
supportedHookEvents: [],
|
|
41
|
+
supportsSpawn: true,
|
|
42
|
+
supportsInstall: false,
|
|
43
|
+
supportsInstructionFiles: false,
|
|
44
|
+
supportsContextMonitor: false,
|
|
45
|
+
supportsStatusline: false,
|
|
46
|
+
supportsProviderPaths: false,
|
|
47
|
+
supportsTransport: false,
|
|
48
|
+
supportsTaskSync: false,
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
/** Spawn provider for SDK-backed Claude runs. */
|
|
52
|
+
spawn: ClaudeSDKSpawnProvider;
|
|
53
|
+
/** No-op install provider required by the adapter contract. */
|
|
54
|
+
install: ClaudeSDKInstallProvider;
|
|
55
|
+
|
|
56
|
+
private projectDir: string | null = null;
|
|
57
|
+
private initialized = false;
|
|
58
|
+
|
|
59
|
+
constructor() {
|
|
60
|
+
this.spawn = new ClaudeSDKSpawnProvider();
|
|
61
|
+
this.install = new ClaudeSDKInstallProvider();
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Initialize the adapter for a project directory.
|
|
66
|
+
*
|
|
67
|
+
* @param projectDir - Root directory of the project using this adapter.
|
|
68
|
+
*/
|
|
69
|
+
async initialize(projectDir: string): Promise<void> {
|
|
70
|
+
this.projectDir = projectDir;
|
|
71
|
+
this.initialized = true;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Dispose the adapter and clear tracked project state.
|
|
76
|
+
*/
|
|
77
|
+
async dispose(): Promise<void> {
|
|
78
|
+
this.projectDir = null;
|
|
79
|
+
this.initialized = false;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Check whether SDK-backed spawning can run in the current environment.
|
|
84
|
+
*
|
|
85
|
+
* @returns Adapter health with credential availability and initialization
|
|
86
|
+
* state.
|
|
87
|
+
*/
|
|
88
|
+
async healthCheck(): Promise<AdapterHealthStatus> {
|
|
89
|
+
const credentialsAvailable = await this.spawn.canSpawn();
|
|
90
|
+
return {
|
|
91
|
+
healthy: this.initialized && credentialsAvailable,
|
|
92
|
+
provider: this.id,
|
|
93
|
+
details: {
|
|
94
|
+
initialized: this.initialized,
|
|
95
|
+
credentialsAvailable,
|
|
96
|
+
projectDir: this.projectDir,
|
|
97
|
+
sdkVersion: 'ai@6 + @ai-sdk/anthropic',
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -16,9 +16,24 @@
|
|
|
16
16
|
* @see ADR-052 — SDK consolidation decision
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
|
+
import { ClaudeSDKAdapter } from './adapter.js';
|
|
20
|
+
|
|
21
|
+
export { ClaudeSDKAdapter } from './adapter.js';
|
|
22
|
+
export { ClaudeSDKInstallProvider } from './install.js';
|
|
19
23
|
export type { McpServerMap, McpStdioConfig } from './mcp-registry.js';
|
|
20
24
|
export { getServers } from './mcp-registry.js';
|
|
21
25
|
export type { SessionEntry } from './session-store.js';
|
|
22
26
|
export { SessionStore } from './session-store.js';
|
|
23
27
|
export { ClaudeSDKSpawnProvider } from './spawn.js';
|
|
24
28
|
export { DEFAULT_TOOLS, resolveTools } from './tool-bridge.js';
|
|
29
|
+
|
|
30
|
+
export default ClaudeSDKAdapter;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Create a Claude SDK adapter instance for dynamic adapter loading.
|
|
34
|
+
*
|
|
35
|
+
* @returns A fresh {@link ClaudeSDKAdapter}.
|
|
36
|
+
*/
|
|
37
|
+
export function createAdapter(): ClaudeSDKAdapter {
|
|
38
|
+
return new ClaudeSDKAdapter();
|
|
39
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude SDK install provider.
|
|
3
|
+
*
|
|
4
|
+
* The Claude SDK adapter is a programmatic LLM bridge, not a native CLI
|
|
5
|
+
* integration surface. CLEO installation is therefore a no-op: project
|
|
6
|
+
* instruction files are managed by the active CLI provider (for example
|
|
7
|
+
* `claude-code`) while this provider supplies SDK-backed spawning.
|
|
8
|
+
*
|
|
9
|
+
* @task T933
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import type { AdapterInstallProvider, InstallOptions, InstallResult } from '@cleocode/contracts';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* No-op install provider for the SDK-backed Claude provider.
|
|
17
|
+
*
|
|
18
|
+
* @remarks
|
|
19
|
+
* `CLEOProviderAdapter` requires an install provider. This implementation
|
|
20
|
+
* preserves that contract without pretending the Anthropic SDK has a native
|
|
21
|
+
* instruction-file or hook installation target.
|
|
22
|
+
*/
|
|
23
|
+
export class ClaudeSDKInstallProvider implements AdapterInstallProvider {
|
|
24
|
+
/**
|
|
25
|
+
* Report a successful no-op installation.
|
|
26
|
+
*
|
|
27
|
+
* @param options - Installation options. Currently accepted for contract
|
|
28
|
+
* parity and not mutated.
|
|
29
|
+
* @returns A successful install result with `instructionFileUpdated=false`.
|
|
30
|
+
*/
|
|
31
|
+
async install(options: InstallOptions): Promise<InstallResult> {
|
|
32
|
+
return {
|
|
33
|
+
success: true,
|
|
34
|
+
installedAt: new Date().toISOString(),
|
|
35
|
+
instructionFileUpdated: false,
|
|
36
|
+
details: {
|
|
37
|
+
provider: 'claude-sdk',
|
|
38
|
+
projectDir: options.projectDir,
|
|
39
|
+
mode: 'programmatic-sdk',
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* No-op uninstall for the SDK provider.
|
|
46
|
+
*/
|
|
47
|
+
async uninstall(): Promise<void> {}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Return true because the SDK provider requires no filesystem installation.
|
|
51
|
+
*
|
|
52
|
+
* @returns Always `true`.
|
|
53
|
+
*/
|
|
54
|
+
async isInstalled(): Promise<boolean> {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* No-op instruction-file reference hook.
|
|
60
|
+
*
|
|
61
|
+
* @param projectDir - Project directory accepted for interface parity.
|
|
62
|
+
*/
|
|
63
|
+
async ensureInstructionReferences(projectDir: string): Promise<void> {
|
|
64
|
+
void projectDir;
|
|
65
|
+
}
|
|
66
|
+
}
|