@cleocode/adapters 2026.4.0 → 2026.4.2
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 +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +724 -630
- package/dist/index.js.map +3 -3
- package/dist/providers/claude-code/adapter.d.ts +21 -1
- package/dist/providers/claude-code/adapter.d.ts.map +1 -1
- package/dist/providers/claude-code/context-monitor.d.ts +11 -0
- package/dist/providers/claude-code/context-monitor.d.ts.map +1 -1
- package/dist/providers/claude-code/hooks.d.ts +7 -0
- package/dist/providers/claude-code/hooks.d.ts.map +1 -1
- package/dist/providers/claude-code/index.d.ts +16 -1
- package/dist/providers/claude-code/index.d.ts.map +1 -1
- package/dist/providers/claude-code/install.d.ts +10 -18
- package/dist/providers/claude-code/install.d.ts.map +1 -1
- package/dist/providers/claude-code/paths.d.ts +8 -0
- package/dist/providers/claude-code/paths.d.ts.map +1 -1
- package/dist/providers/claude-code/spawn.d.ts +7 -0
- package/dist/providers/claude-code/spawn.d.ts.map +1 -1
- package/dist/providers/claude-code/statusline.d.ts +44 -0
- package/dist/providers/claude-code/statusline.d.ts.map +1 -1
- package/dist/providers/claude-code/task-sync.d.ts +8 -0
- package/dist/providers/claude-code/task-sync.d.ts.map +1 -1
- package/dist/providers/claude-code/transport.d.ts +11 -0
- package/dist/providers/claude-code/transport.d.ts.map +1 -1
- package/dist/providers/codex/adapter.d.ts +14 -1
- package/dist/providers/codex/adapter.d.ts.map +1 -1
- package/dist/providers/codex/hooks.d.ts +6 -0
- package/dist/providers/codex/hooks.d.ts.map +1 -1
- package/dist/providers/codex/index.d.ts +16 -1
- package/dist/providers/codex/index.d.ts.map +1 -1
- package/dist/providers/codex/install.d.ts +8 -17
- package/dist/providers/codex/install.d.ts.map +1 -1
- package/dist/providers/cursor/adapter.d.ts +15 -1
- package/dist/providers/cursor/adapter.d.ts.map +1 -1
- package/dist/providers/cursor/hooks.d.ts +7 -0
- package/dist/providers/cursor/hooks.d.ts.map +1 -1
- package/dist/providers/cursor/index.d.ts +16 -1
- package/dist/providers/cursor/index.d.ts.map +1 -1
- package/dist/providers/cursor/install.d.ts +10 -17
- package/dist/providers/cursor/install.d.ts.map +1 -1
- package/dist/providers/gemini-cli/adapter.d.ts +15 -1
- package/dist/providers/gemini-cli/adapter.d.ts.map +1 -1
- package/dist/providers/gemini-cli/hooks.d.ts +7 -0
- package/dist/providers/gemini-cli/hooks.d.ts.map +1 -1
- package/dist/providers/gemini-cli/index.d.ts +16 -1
- package/dist/providers/gemini-cli/index.d.ts.map +1 -1
- package/dist/providers/gemini-cli/install.d.ts +8 -17
- package/dist/providers/gemini-cli/install.d.ts.map +1 -1
- package/dist/providers/kimi/adapter.d.ts +15 -2
- package/dist/providers/kimi/adapter.d.ts.map +1 -1
- package/dist/providers/kimi/hooks.d.ts +6 -0
- package/dist/providers/kimi/hooks.d.ts.map +1 -1
- package/dist/providers/kimi/index.d.ts +16 -1
- package/dist/providers/kimi/index.d.ts.map +1 -1
- package/dist/providers/kimi/install.d.ts +7 -22
- package/dist/providers/kimi/install.d.ts.map +1 -1
- package/dist/providers/opencode/adapter.d.ts +17 -1
- package/dist/providers/opencode/adapter.d.ts.map +1 -1
- package/dist/providers/opencode/hooks.d.ts +9 -0
- package/dist/providers/opencode/hooks.d.ts.map +1 -1
- package/dist/providers/opencode/index.d.ts +16 -1
- package/dist/providers/opencode/index.d.ts.map +1 -1
- package/dist/providers/opencode/install.d.ts +8 -17
- package/dist/providers/opencode/install.d.ts.map +1 -1
- package/dist/providers/opencode/spawn.d.ts +23 -1
- package/dist/providers/opencode/spawn.d.ts.map +1 -1
- package/dist/providers/shared/transcript-reader.d.ts +15 -0
- package/dist/providers/shared/transcript-reader.d.ts.map +1 -1
- package/dist/registry.d.ts +54 -2
- package/dist/registry.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/claude-code-adapter.test.js +21 -30
- package/src/__tests__/claude-code-adapter.test.js.map +1 -1
- package/src/__tests__/claude-code-adapter.test.ts +21 -32
- package/src/__tests__/cursor-adapter.test.js +25 -29
- package/src/__tests__/cursor-adapter.test.js.map +1 -1
- package/src/__tests__/cursor-adapter.test.ts +26 -33
- package/src/__tests__/opencode-adapter.test.js +47 -46
- package/src/__tests__/opencode-adapter.test.js.map +1 -1
- package/src/__tests__/opencode-adapter.test.ts +51 -49
- package/src/index.ts +9 -1
- package/src/providers/claude-code/__tests__/adapter.test.js +50 -23
- package/src/providers/claude-code/__tests__/adapter.test.js.map +1 -1
- package/src/providers/claude-code/__tests__/adapter.test.ts +52 -23
- package/src/providers/claude-code/adapter.ts +22 -2
- package/src/providers/claude-code/context-monitor.ts +11 -0
- package/src/providers/claude-code/hooks.ts +7 -0
- package/src/providers/claude-code/index.ts +16 -1
- package/src/providers/claude-code/install.ts +15 -96
- package/src/providers/claude-code/manifest.json +1 -1
- package/src/providers/claude-code/paths.ts +8 -0
- package/src/providers/claude-code/spawn.ts +7 -0
- package/src/providers/claude-code/statusline.ts +44 -0
- package/src/providers/claude-code/task-sync.ts +8 -0
- package/src/providers/claude-code/transport.ts +11 -0
- package/src/providers/codex/adapter.ts +15 -2
- package/src/providers/codex/hooks.ts +6 -0
- package/src/providers/codex/index.ts +16 -1
- package/src/providers/codex/install.ts +17 -81
- package/src/providers/codex/manifest.json +1 -1
- package/src/providers/cursor/__tests__/adapter.test.js +37 -12
- package/src/providers/cursor/__tests__/adapter.test.js.map +1 -1
- package/src/providers/cursor/__tests__/adapter.test.ts +43 -12
- package/src/providers/cursor/adapter.ts +16 -2
- package/src/providers/cursor/hooks.ts +7 -0
- package/src/providers/cursor/index.ts +16 -1
- package/src/providers/cursor/install.ts +23 -88
- package/src/providers/cursor/manifest.json +1 -1
- package/src/providers/gemini-cli/adapter.ts +16 -2
- package/src/providers/gemini-cli/hooks.ts +7 -0
- package/src/providers/gemini-cli/index.ts +16 -1
- package/src/providers/gemini-cli/install.ts +17 -81
- package/src/providers/gemini-cli/manifest.json +1 -1
- package/src/providers/kimi/adapter.ts +16 -3
- package/src/providers/kimi/hooks.ts +6 -0
- package/src/providers/kimi/index.ts +16 -1
- package/src/providers/kimi/install.ts +16 -86
- package/src/providers/kimi/manifest.json +1 -1
- package/src/providers/opencode/__tests__/adapter.test.js +48 -35
- package/src/providers/opencode/__tests__/adapter.test.js.map +1 -1
- package/src/providers/opencode/__tests__/adapter.test.ts +49 -34
- package/src/providers/opencode/adapter.ts +18 -2
- package/src/providers/opencode/hooks.ts +9 -0
- package/src/providers/opencode/index.ts +16 -1
- package/src/providers/opencode/install.ts +17 -90
- package/src/providers/opencode/manifest.json +1 -1
- package/src/providers/opencode/spawn.ts +23 -1
- package/src/providers/shared/transcript-reader.ts +15 -0
- package/src/registry.ts +54 -2
- package/dist/providers/claude-code/adapter.js +0 -165
- package/dist/providers/claude-code/adapter.js.map +0 -1
- package/dist/providers/claude-code/context-monitor.js +0 -148
- package/dist/providers/claude-code/context-monitor.js.map +0 -1
- package/dist/providers/claude-code/hooks.js +0 -279
- package/dist/providers/claude-code/hooks.js.map +0 -1
- package/dist/providers/claude-code/index.js +0 -26
- package/dist/providers/claude-code/index.js.map +0 -1
- package/dist/providers/claude-code/install.js +0 -234
- package/dist/providers/claude-code/install.js.map +0 -1
- package/dist/providers/claude-code/paths.js +0 -33
- package/dist/providers/claude-code/paths.js.map +0 -1
- package/dist/providers/claude-code/spawn.js +0 -164
- package/dist/providers/claude-code/spawn.js.map +0 -1
- package/dist/providers/claude-code/statusline.js +0 -86
- package/dist/providers/claude-code/statusline.js.map +0 -1
- package/dist/providers/claude-code/task-sync.js +0 -111
- package/dist/providers/claude-code/task-sync.js.map +0 -1
- package/dist/providers/claude-code/transport.js +0 -18
- package/dist/providers/claude-code/transport.js.map +0 -1
- package/dist/providers/codex/adapter.js +0 -134
- package/dist/providers/codex/adapter.js.map +0 -1
- package/dist/providers/codex/hooks.js +0 -107
- package/dist/providers/codex/hooks.js.map +0 -1
- package/dist/providers/codex/index.js +0 -24
- package/dist/providers/codex/index.js.map +0 -1
- package/dist/providers/codex/install.js +0 -183
- package/dist/providers/codex/install.js.map +0 -1
- package/dist/providers/cursor/adapter.js +0 -138
- package/dist/providers/cursor/adapter.js.map +0 -1
- package/dist/providers/cursor/hooks.js +0 -201
- package/dist/providers/cursor/hooks.js.map +0 -1
- package/dist/providers/cursor/index.js +0 -21
- package/dist/providers/cursor/index.js.map +0 -1
- package/dist/providers/cursor/install.js +0 -238
- package/dist/providers/cursor/install.js.map +0 -1
- package/dist/providers/cursor/spawn.js +0 -59
- package/dist/providers/cursor/spawn.js.map +0 -1
- package/dist/providers/gemini-cli/adapter.js +0 -145
- package/dist/providers/gemini-cli/adapter.js.map +0 -1
- package/dist/providers/gemini-cli/hooks.js +0 -121
- package/dist/providers/gemini-cli/hooks.js.map +0 -1
- package/dist/providers/gemini-cli/index.js +0 -24
- package/dist/providers/gemini-cli/index.js.map +0 -1
- package/dist/providers/gemini-cli/install.js +0 -183
- package/dist/providers/gemini-cli/install.js.map +0 -1
- package/dist/providers/kimi/adapter.js +0 -133
- package/dist/providers/kimi/adapter.js.map +0 -1
- package/dist/providers/kimi/hooks.js +0 -73
- package/dist/providers/kimi/hooks.js.map +0 -1
- package/dist/providers/kimi/index.js +0 -24
- package/dist/providers/kimi/index.js.map +0 -1
- package/dist/providers/kimi/install.js +0 -189
- package/dist/providers/kimi/install.js.map +0 -1
- package/dist/providers/opencode/adapter.js +0 -151
- package/dist/providers/opencode/adapter.js.map +0 -1
- package/dist/providers/opencode/hooks.js +0 -197
- package/dist/providers/opencode/hooks.js.map +0 -1
- package/dist/providers/opencode/index.js +0 -22
- package/dist/providers/opencode/index.js.map +0 -1
- package/dist/providers/opencode/install.js +0 -180
- package/dist/providers/opencode/install.js.map +0 -1
- package/dist/providers/opencode/spawn.js +0 -219
- package/dist/providers/opencode/spawn.js.map +0 -1
- package/dist/providers/shared/transcript-reader.js +0 -109
- package/dist/providers/shared/transcript-reader.js.map +0 -1
- package/dist/registry.js +0 -55
- package/dist/registry.js.map +0 -1
- package/src/__tests__/claude-code-adapter.test.d.ts +0 -10
- package/src/__tests__/cursor-adapter.test.d.ts +0 -10
- package/src/__tests__/opencode-adapter.test.d.ts +0 -10
- package/src/index.d.ts +0 -35
- package/src/index.d.ts.map +0 -1
- package/src/index.js +0 -13
- package/src/index.js.map +0 -1
- package/src/providers/claude-code/__tests__/adapter.test.d.ts +0 -7
- package/src/providers/claude-code/adapter.d.ts +0 -79
- package/src/providers/claude-code/adapter.d.ts.map +0 -1
- package/src/providers/claude-code/adapter.js +0 -154
- package/src/providers/claude-code/adapter.js.map +0 -1
- package/src/providers/claude-code/context-monitor.d.ts +0 -24
- package/src/providers/claude-code/context-monitor.d.ts.map +0 -1
- package/src/providers/claude-code/context-monitor.js +0 -148
- package/src/providers/claude-code/context-monitor.js.map +0 -1
- package/src/providers/claude-code/hooks.d.ts +0 -59
- package/src/providers/claude-code/hooks.d.ts.map +0 -1
- package/src/providers/claude-code/hooks.js +0 -77
- package/src/providers/claude-code/hooks.js.map +0 -1
- package/src/providers/claude-code/index.d.ts +0 -28
- package/src/providers/claude-code/index.d.ts.map +0 -1
- package/src/providers/claude-code/index.js +0 -26
- package/src/providers/claude-code/index.js.map +0 -1
- package/src/providers/claude-code/install.d.ts +0 -75
- package/src/providers/claude-code/install.d.ts.map +0 -1
- package/src/providers/claude-code/install.js +0 -234
- package/src/providers/claude-code/install.js.map +0 -1
- package/src/providers/claude-code/paths.d.ts +0 -24
- package/src/providers/claude-code/paths.d.ts.map +0 -1
- package/src/providers/claude-code/paths.js +0 -33
- package/src/providers/claude-code/paths.js.map +0 -1
- package/src/providers/claude-code/spawn.d.ts +0 -60
- package/src/providers/claude-code/spawn.d.ts.map +0 -1
- package/src/providers/claude-code/spawn.js +0 -164
- package/src/providers/claude-code/spawn.js.map +0 -1
- package/src/providers/claude-code/statusline.d.ts +0 -23
- package/src/providers/claude-code/statusline.d.ts.map +0 -1
- package/src/providers/claude-code/statusline.js +0 -86
- package/src/providers/claude-code/statusline.js.map +0 -1
- package/src/providers/claude-code/task-sync.js +0 -122
- package/src/providers/claude-code/task-sync.js.map +0 -1
- package/src/providers/claude-code/transport.d.ts +0 -14
- package/src/providers/claude-code/transport.d.ts.map +0 -1
- package/src/providers/claude-code/transport.js +0 -18
- package/src/providers/claude-code/transport.js.map +0 -1
- package/src/providers/cursor/__tests__/adapter.test.d.ts +0 -7
- package/src/providers/cursor/adapter.d.ts +0 -66
- package/src/providers/cursor/adapter.d.ts.map +0 -1
- package/src/providers/cursor/adapter.js +0 -124
- package/src/providers/cursor/adapter.js.map +0 -1
- package/src/providers/cursor/hooks.d.ts +0 -48
- package/src/providers/cursor/hooks.d.ts.map +0 -1
- package/src/providers/cursor/hooks.js +0 -55
- package/src/providers/cursor/hooks.js.map +0 -1
- package/src/providers/cursor/index.d.ts +0 -19
- package/src/providers/cursor/index.d.ts.map +0 -1
- package/src/providers/cursor/index.js +0 -21
- package/src/providers/cursor/index.js.map +0 -1
- package/src/providers/cursor/install.d.ts +0 -94
- package/src/providers/cursor/install.d.ts.map +0 -1
- package/src/providers/cursor/install.js +0 -238
- package/src/providers/cursor/install.js.map +0 -1
- package/src/providers/cursor/spawn.d.ts +0 -50
- package/src/providers/cursor/spawn.d.ts.map +0 -1
- package/src/providers/cursor/spawn.js +0 -59
- package/src/providers/cursor/spawn.js.map +0 -1
- package/src/providers/opencode/__tests__/adapter.test.d.ts +0 -7
- package/src/providers/opencode/adapter.d.ts +0 -71
- package/src/providers/opencode/adapter.d.ts.map +0 -1
- package/src/providers/opencode/adapter.js +0 -144
- package/src/providers/opencode/adapter.js.map +0 -1
- package/src/providers/opencode/hooks.d.ts +0 -66
- package/src/providers/opencode/hooks.d.ts.map +0 -1
- package/src/providers/opencode/hooks.js +0 -89
- package/src/providers/opencode/hooks.js.map +0 -1
- package/src/providers/opencode/index.d.ts +0 -20
- package/src/providers/opencode/index.d.ts.map +0 -1
- package/src/providers/opencode/index.js +0 -22
- package/src/providers/opencode/index.js.map +0 -1
- package/src/providers/opencode/install.d.ts +0 -65
- package/src/providers/opencode/install.d.ts.map +0 -1
- package/src/providers/opencode/install.js +0 -180
- package/src/providers/opencode/install.js.map +0 -1
- package/src/providers/opencode/spawn.d.ts +0 -75
- package/src/providers/opencode/spawn.d.ts.map +0 -1
- package/src/providers/opencode/spawn.js +0 -219
- package/src/providers/opencode/spawn.js.map +0 -1
- package/src/registry.d.ts +0 -36
- package/src/registry.d.ts.map +0 -1
- package/src/registry.js +0 -55
- package/src/registry.js.map +0 -1
|
@@ -2,36 +2,29 @@
|
|
|
2
2
|
* Kimi Install Provider
|
|
3
3
|
*
|
|
4
4
|
* Handles CLEO installation into Kimi environments:
|
|
5
|
-
* - Registers CLEO MCP server in ~/.kimi/mcp.json
|
|
6
5
|
* - Ensures AGENTS.md has CLEO @-references
|
|
7
6
|
*
|
|
8
|
-
* Kimi has no native hook system, so this is the primary integration
|
|
9
|
-
* mechanism: registering the MCP server so CLEO can be accessed as a tool.
|
|
10
|
-
*
|
|
11
7
|
* @task T163
|
|
12
8
|
* @epic T134
|
|
13
9
|
*/
|
|
14
10
|
|
|
15
|
-
import { existsSync,
|
|
16
|
-
import { homedir } from 'node:os';
|
|
11
|
+
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
17
12
|
import { join } from 'node:path';
|
|
18
13
|
import type { AdapterInstallProvider, InstallOptions, InstallResult } from '@cleocode/contracts';
|
|
19
14
|
|
|
20
15
|
/** Lines that should appear in AGENTS.md to reference CLEO. */
|
|
21
16
|
const INSTRUCTION_REFERENCES = ['@~/.cleo/templates/CLEO-INJECTION.md', '@.cleo/memory-bridge.md'];
|
|
22
17
|
|
|
23
|
-
/** MCP server registration key used in Kimi MCP config. */
|
|
24
|
-
const MCP_SERVER_KEY = 'cleo';
|
|
25
|
-
|
|
26
18
|
/**
|
|
27
19
|
* Install provider for Kimi.
|
|
28
20
|
*
|
|
29
21
|
* Manages CLEO's integration with Kimi by:
|
|
30
|
-
* 1.
|
|
31
|
-
* 2. Ensuring AGENTS.md contains @-references to CLEO instruction files
|
|
22
|
+
* 1. Ensuring AGENTS.md contains @-references to CLEO instruction files
|
|
32
23
|
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
24
|
+
* @remarks
|
|
25
|
+
* Installation is idempotent -- running install multiple times on the same
|
|
26
|
+
* project produces the same result. Only AGENTS.md is managed; Kimi does
|
|
27
|
+
* not have an MCP or plugin registration mechanism.
|
|
35
28
|
*
|
|
36
29
|
* @task T163
|
|
37
30
|
* @epic T134
|
|
@@ -40,26 +33,17 @@ export class KimiInstallProvider implements AdapterInstallProvider {
|
|
|
40
33
|
/**
|
|
41
34
|
* Install CLEO into a Kimi environment.
|
|
42
35
|
*
|
|
43
|
-
* @param options - Installation options including project directory
|
|
36
|
+
* @param options - Installation options including project directory
|
|
44
37
|
* @returns Result describing what was installed
|
|
45
38
|
* @task T163
|
|
46
39
|
*/
|
|
47
40
|
async install(options: InstallOptions): Promise<InstallResult> {
|
|
48
|
-
const { projectDir
|
|
41
|
+
const { projectDir } = options;
|
|
49
42
|
const installedAt = new Date().toISOString();
|
|
50
43
|
let instructionFileUpdated = false;
|
|
51
|
-
let mcpRegistered = false;
|
|
52
44
|
const details: Record<string, unknown> = {};
|
|
53
45
|
|
|
54
|
-
// Step 1:
|
|
55
|
-
if (mcpServerPath) {
|
|
56
|
-
mcpRegistered = this.registerMcpServer(mcpServerPath);
|
|
57
|
-
if (mcpRegistered) {
|
|
58
|
-
details.mcpConfigPath = join(homedir(), '.kimi', 'mcp.json');
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// Step 2: Ensure AGENTS.md has @-references
|
|
46
|
+
// Step 1: Ensure AGENTS.md has @-references
|
|
63
47
|
instructionFileUpdated = this.updateInstructionFile(projectDir);
|
|
64
48
|
if (instructionFileUpdated) {
|
|
65
49
|
details.instructionFile = join(projectDir, 'AGENTS.md');
|
|
@@ -69,7 +53,7 @@ export class KimiInstallProvider implements AdapterInstallProvider {
|
|
|
69
53
|
success: true,
|
|
70
54
|
installedAt,
|
|
71
55
|
instructionFileUpdated,
|
|
72
|
-
mcpRegistered,
|
|
56
|
+
mcpRegistered: false,
|
|
73
57
|
details,
|
|
74
58
|
};
|
|
75
59
|
}
|
|
@@ -77,41 +61,25 @@ export class KimiInstallProvider implements AdapterInstallProvider {
|
|
|
77
61
|
/**
|
|
78
62
|
* Uninstall CLEO from the Kimi environment.
|
|
79
63
|
*
|
|
80
|
-
* Removes the MCP server registration from ~/.kimi/mcp.json.
|
|
81
64
|
* Does not remove AGENTS.md references (they are harmless if CLEO is not present).
|
|
82
65
|
* @task T163
|
|
83
66
|
*/
|
|
84
67
|
async uninstall(): Promise<void> {
|
|
85
|
-
|
|
86
|
-
if (existsSync(mcpPath)) {
|
|
87
|
-
try {
|
|
88
|
-
const raw = readFileSync(mcpPath, 'utf-8');
|
|
89
|
-
const config = JSON.parse(raw) as Record<string, unknown>;
|
|
90
|
-
const mcpServers = config.mcpServers as Record<string, unknown> | undefined;
|
|
91
|
-
if (mcpServers && MCP_SERVER_KEY in mcpServers) {
|
|
92
|
-
delete mcpServers[MCP_SERVER_KEY];
|
|
93
|
-
writeFileSync(mcpPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
94
|
-
}
|
|
95
|
-
} catch {
|
|
96
|
-
// Ignore errors during uninstall
|
|
97
|
-
}
|
|
98
|
-
}
|
|
68
|
+
// No-op: no MCP registration to remove
|
|
99
69
|
}
|
|
100
70
|
|
|
101
71
|
/**
|
|
102
72
|
* Check whether CLEO is installed in the Kimi environment.
|
|
103
73
|
*
|
|
104
|
-
* Checks for
|
|
105
|
-
* Returns true if the CLEO MCP server entry is found.
|
|
74
|
+
* Checks for CLEO references in AGENTS.md.
|
|
106
75
|
* @task T163
|
|
107
76
|
*/
|
|
108
77
|
async isInstalled(): Promise<boolean> {
|
|
109
|
-
const
|
|
110
|
-
if (existsSync(
|
|
78
|
+
const agentsMdPath = join(process.cwd(), 'AGENTS.md');
|
|
79
|
+
if (existsSync(agentsMdPath)) {
|
|
111
80
|
try {
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
if (mcpServers && MCP_SERVER_KEY in mcpServers) {
|
|
81
|
+
const content = readFileSync(agentsMdPath, 'utf-8');
|
|
82
|
+
if (INSTRUCTION_REFERENCES.some((ref) => content.includes(ref))) {
|
|
115
83
|
return true;
|
|
116
84
|
}
|
|
117
85
|
} catch {
|
|
@@ -134,44 +102,6 @@ export class KimiInstallProvider implements AdapterInstallProvider {
|
|
|
134
102
|
this.updateInstructionFile(projectDir);
|
|
135
103
|
}
|
|
136
104
|
|
|
137
|
-
/**
|
|
138
|
-
* Register the CLEO MCP server in ~/.kimi/mcp.json.
|
|
139
|
-
*
|
|
140
|
-
* Kimi stores its MCP server configuration in ~/.kimi/mcp.json
|
|
141
|
-
* under the mcpServers key.
|
|
142
|
-
*
|
|
143
|
-
* @param mcpServerPath - Absolute path to the MCP server entry point
|
|
144
|
-
* @returns true if registration was performed or updated
|
|
145
|
-
*/
|
|
146
|
-
private registerMcpServer(mcpServerPath: string): boolean {
|
|
147
|
-
const kimiDir = join(homedir(), '.kimi');
|
|
148
|
-
const mcpPath = join(kimiDir, 'mcp.json');
|
|
149
|
-
let config: Record<string, unknown> = {};
|
|
150
|
-
|
|
151
|
-
mkdirSync(kimiDir, { recursive: true });
|
|
152
|
-
|
|
153
|
-
if (existsSync(mcpPath)) {
|
|
154
|
-
try {
|
|
155
|
-
config = JSON.parse(readFileSync(mcpPath, 'utf-8'));
|
|
156
|
-
} catch {
|
|
157
|
-
// Start fresh on parse error
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
if (!config.mcpServers || typeof config.mcpServers !== 'object') {
|
|
162
|
-
config.mcpServers = {};
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
const mcpServers = config.mcpServers as Record<string, unknown>;
|
|
166
|
-
mcpServers[MCP_SERVER_KEY] = {
|
|
167
|
-
command: 'node',
|
|
168
|
-
args: [mcpServerPath],
|
|
169
|
-
};
|
|
170
|
-
|
|
171
|
-
writeFileSync(mcpPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
172
|
-
return true;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
105
|
/**
|
|
176
106
|
* Update AGENTS.md with CLEO @-references.
|
|
177
107
|
*
|
|
@@ -82,23 +82,27 @@ describe('OpenCodeAdapter', () => {
|
|
|
82
82
|
it('supports install', () => {
|
|
83
83
|
expect(adapter.capabilities.supportsInstall).toBe(true);
|
|
84
84
|
});
|
|
85
|
-
it('
|
|
86
|
-
expect(adapter.capabilities.supportsMcp).toBe(
|
|
85
|
+
it('does not support MCP (removed)', () => {
|
|
86
|
+
expect(adapter.capabilities.supportsMcp).toBe(false);
|
|
87
87
|
});
|
|
88
88
|
it('supports instruction files with AGENTS.md pattern', () => {
|
|
89
89
|
expect(adapter.capabilities.supportsInstructionFiles).toBe(true);
|
|
90
90
|
expect(adapter.capabilities.instructionFilePattern).toBe('AGENTS.md');
|
|
91
91
|
});
|
|
92
|
-
it('declares expected hook events', () => {
|
|
93
|
-
expect(adapter.capabilities.supportedHookEvents).toContain('
|
|
94
|
-
expect(adapter.capabilities.supportedHookEvents).toContain('
|
|
95
|
-
expect(adapter.capabilities.supportedHookEvents).toContain('
|
|
96
|
-
expect(adapter.capabilities.supportedHookEvents).toContain('
|
|
97
|
-
expect(adapter.capabilities.supportedHookEvents).toContain('
|
|
98
|
-
expect(adapter.capabilities.supportedHookEvents).toContain('
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
expect(adapter.capabilities.supportedHookEvents).
|
|
92
|
+
it('declares expected hook events (10 CAAMP canonical events)', () => {
|
|
93
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('SessionStart');
|
|
94
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('SessionEnd');
|
|
95
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('PromptSubmit');
|
|
96
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('ResponseComplete');
|
|
97
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('PreToolUse');
|
|
98
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('PostToolUse');
|
|
99
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('PermissionRequest');
|
|
100
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('PreModel');
|
|
101
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('PreCompact');
|
|
102
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('PostCompact');
|
|
103
|
+
});
|
|
104
|
+
it('supports 10 hook events', () => {
|
|
105
|
+
expect(adapter.capabilities.supportedHookEvents).toHaveLength(10);
|
|
102
106
|
});
|
|
103
107
|
});
|
|
104
108
|
describe('sub-providers', () => {
|
|
@@ -152,23 +156,29 @@ describe('OpenCodeHookProvider', () => {
|
|
|
152
156
|
hooks = new OpenCodeHookProvider();
|
|
153
157
|
});
|
|
154
158
|
describe('mapProviderEvent', () => {
|
|
155
|
-
it('maps session.
|
|
156
|
-
expect(hooks.mapProviderEvent('session.
|
|
159
|
+
it('maps event:session.created to SessionStart', () => {
|
|
160
|
+
expect(hooks.mapProviderEvent('event:session.created')).toBe('SessionStart');
|
|
161
|
+
});
|
|
162
|
+
it('maps event:session.deleted to SessionEnd', () => {
|
|
163
|
+
expect(hooks.mapProviderEvent('event:session.deleted')).toBe('SessionEnd');
|
|
164
|
+
});
|
|
165
|
+
it('maps chat.message to PromptSubmit', () => {
|
|
166
|
+
expect(hooks.mapProviderEvent('chat.message')).toBe('PromptSubmit');
|
|
157
167
|
});
|
|
158
|
-
it('maps session.
|
|
159
|
-
expect(hooks.mapProviderEvent('session.
|
|
168
|
+
it('maps event:session.idle to ResponseComplete', () => {
|
|
169
|
+
expect(hooks.mapProviderEvent('event:session.idle')).toBe('ResponseComplete');
|
|
160
170
|
});
|
|
161
|
-
it('maps tool.
|
|
162
|
-
expect(hooks.mapProviderEvent('tool.
|
|
171
|
+
it('maps tool.execute.before to PreToolUse', () => {
|
|
172
|
+
expect(hooks.mapProviderEvent('tool.execute.before')).toBe('PreToolUse');
|
|
163
173
|
});
|
|
164
|
-
it('maps tool.
|
|
165
|
-
expect(hooks.mapProviderEvent('tool.
|
|
174
|
+
it('maps tool.execute.after to PostToolUse', () => {
|
|
175
|
+
expect(hooks.mapProviderEvent('tool.execute.after')).toBe('PostToolUse');
|
|
166
176
|
});
|
|
167
|
-
it('maps
|
|
168
|
-
expect(hooks.mapProviderEvent('
|
|
177
|
+
it('maps permission.ask to PermissionRequest', () => {
|
|
178
|
+
expect(hooks.mapProviderEvent('permission.ask')).toBe('PermissionRequest');
|
|
169
179
|
});
|
|
170
|
-
it('maps
|
|
171
|
-
expect(hooks.mapProviderEvent('
|
|
180
|
+
it('maps chat.params to PreModel', () => {
|
|
181
|
+
expect(hooks.mapProviderEvent('chat.params')).toBe('PreModel');
|
|
172
182
|
});
|
|
173
183
|
it('returns null for unknown events', () => {
|
|
174
184
|
expect(hooks.mapProviderEvent('UnknownEvent')).toBeNull();
|
|
@@ -190,15 +200,19 @@ describe('OpenCodeHookProvider', () => {
|
|
|
190
200
|
});
|
|
191
201
|
});
|
|
192
202
|
describe('getEventMap', () => {
|
|
193
|
-
it('returns all mapped events', () => {
|
|
203
|
+
it('returns all 10 mapped events', () => {
|
|
194
204
|
const map = hooks.getEventMap();
|
|
195
|
-
expect(Object.keys(map)).toHaveLength(
|
|
196
|
-
expect(map['session.
|
|
197
|
-
expect(map['session.
|
|
198
|
-
expect(map['
|
|
199
|
-
expect(map['
|
|
200
|
-
expect(map['
|
|
201
|
-
expect(map['
|
|
205
|
+
expect(Object.keys(map)).toHaveLength(10);
|
|
206
|
+
expect(map['event:session.created']).toBe('SessionStart');
|
|
207
|
+
expect(map['event:session.deleted']).toBe('SessionEnd');
|
|
208
|
+
expect(map['chat.message']).toBe('PromptSubmit');
|
|
209
|
+
expect(map['event:session.idle']).toBe('ResponseComplete');
|
|
210
|
+
expect(map['tool.execute.before']).toBe('PreToolUse');
|
|
211
|
+
expect(map['tool.execute.after']).toBe('PostToolUse');
|
|
212
|
+
expect(map['permission.ask']).toBe('PermissionRequest');
|
|
213
|
+
expect(map['chat.params']).toBe('PreModel');
|
|
214
|
+
expect(map['experimental.session.compacting']).toBe('PreCompact');
|
|
215
|
+
expect(map['event:session.compacted']).toBe('PostCompact');
|
|
202
216
|
});
|
|
203
217
|
});
|
|
204
218
|
});
|
|
@@ -246,12 +260,11 @@ describe('OpenCodeInstallProvider', () => {
|
|
|
246
260
|
expect(typeof result.instructionFileUpdated).toBe('boolean');
|
|
247
261
|
expect(typeof result.mcpRegistered).toBe('boolean');
|
|
248
262
|
});
|
|
249
|
-
it('
|
|
263
|
+
it('does not register MCP when only projectDir is provided', async () => {
|
|
250
264
|
const result = await installProvider.install({
|
|
251
265
|
projectDir: '/tmp/test-project',
|
|
252
|
-
mcpServerPath: '/path/to/mcp-server.js',
|
|
253
266
|
});
|
|
254
|
-
expect(result.mcpRegistered).toBe(
|
|
267
|
+
expect(result.mcpRegistered).toBe(false);
|
|
255
268
|
});
|
|
256
269
|
});
|
|
257
270
|
describe('uninstall', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.test.js","sourceRoot":"","sources":["adapter.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adapter.test.js","sourceRoot":"","sources":["adapter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -95,8 +95,8 @@ describe('OpenCodeAdapter', () => {
|
|
|
95
95
|
expect(adapter.capabilities.supportsInstall).toBe(true);
|
|
96
96
|
});
|
|
97
97
|
|
|
98
|
-
it('
|
|
99
|
-
expect(adapter.capabilities.supportsMcp).toBe(
|
|
98
|
+
it('does not support MCP (removed)', () => {
|
|
99
|
+
expect(adapter.capabilities.supportsMcp).toBe(false);
|
|
100
100
|
});
|
|
101
101
|
|
|
102
102
|
it('supports instruction files with AGENTS.md pattern', () => {
|
|
@@ -104,17 +104,21 @@ describe('OpenCodeAdapter', () => {
|
|
|
104
104
|
expect(adapter.capabilities.instructionFilePattern).toBe('AGENTS.md');
|
|
105
105
|
});
|
|
106
106
|
|
|
107
|
-
it('declares expected hook events', () => {
|
|
108
|
-
expect(adapter.capabilities.supportedHookEvents).toContain('
|
|
109
|
-
expect(adapter.capabilities.supportedHookEvents).toContain('
|
|
110
|
-
expect(adapter.capabilities.supportedHookEvents).toContain('
|
|
111
|
-
expect(adapter.capabilities.supportedHookEvents).toContain('
|
|
112
|
-
expect(adapter.capabilities.supportedHookEvents).toContain('
|
|
113
|
-
expect(adapter.capabilities.supportedHookEvents).toContain('
|
|
107
|
+
it('declares expected hook events (10 CAAMP canonical events)', () => {
|
|
108
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('SessionStart');
|
|
109
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('SessionEnd');
|
|
110
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('PromptSubmit');
|
|
111
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('ResponseComplete');
|
|
112
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('PreToolUse');
|
|
113
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('PostToolUse');
|
|
114
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('PermissionRequest');
|
|
115
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('PreModel');
|
|
116
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('PreCompact');
|
|
117
|
+
expect(adapter.capabilities.supportedHookEvents).toContain('PostCompact');
|
|
114
118
|
});
|
|
115
119
|
|
|
116
|
-
it('supports
|
|
117
|
-
expect(adapter.capabilities.supportedHookEvents).toHaveLength(
|
|
120
|
+
it('supports 10 hook events', () => {
|
|
121
|
+
expect(adapter.capabilities.supportedHookEvents).toHaveLength(10);
|
|
118
122
|
});
|
|
119
123
|
});
|
|
120
124
|
|
|
@@ -179,28 +183,36 @@ describe('OpenCodeHookProvider', () => {
|
|
|
179
183
|
});
|
|
180
184
|
|
|
181
185
|
describe('mapProviderEvent', () => {
|
|
182
|
-
it('maps session.
|
|
183
|
-
expect(hooks.mapProviderEvent('session.
|
|
186
|
+
it('maps event:session.created to SessionStart', () => {
|
|
187
|
+
expect(hooks.mapProviderEvent('event:session.created')).toBe('SessionStart');
|
|
184
188
|
});
|
|
185
189
|
|
|
186
|
-
it('maps session.
|
|
187
|
-
expect(hooks.mapProviderEvent('session.
|
|
190
|
+
it('maps event:session.deleted to SessionEnd', () => {
|
|
191
|
+
expect(hooks.mapProviderEvent('event:session.deleted')).toBe('SessionEnd');
|
|
188
192
|
});
|
|
189
193
|
|
|
190
|
-
it('maps
|
|
191
|
-
expect(hooks.mapProviderEvent('
|
|
194
|
+
it('maps chat.message to PromptSubmit', () => {
|
|
195
|
+
expect(hooks.mapProviderEvent('chat.message')).toBe('PromptSubmit');
|
|
192
196
|
});
|
|
193
197
|
|
|
194
|
-
it('maps
|
|
195
|
-
expect(hooks.mapProviderEvent('
|
|
198
|
+
it('maps event:session.idle to ResponseComplete', () => {
|
|
199
|
+
expect(hooks.mapProviderEvent('event:session.idle')).toBe('ResponseComplete');
|
|
196
200
|
});
|
|
197
201
|
|
|
198
|
-
it('maps
|
|
199
|
-
expect(hooks.mapProviderEvent('
|
|
202
|
+
it('maps tool.execute.before to PreToolUse', () => {
|
|
203
|
+
expect(hooks.mapProviderEvent('tool.execute.before')).toBe('PreToolUse');
|
|
200
204
|
});
|
|
201
205
|
|
|
202
|
-
it('maps
|
|
203
|
-
expect(hooks.mapProviderEvent('
|
|
206
|
+
it('maps tool.execute.after to PostToolUse', () => {
|
|
207
|
+
expect(hooks.mapProviderEvent('tool.execute.after')).toBe('PostToolUse');
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
it('maps permission.ask to PermissionRequest', () => {
|
|
211
|
+
expect(hooks.mapProviderEvent('permission.ask')).toBe('PermissionRequest');
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
it('maps chat.params to PreModel', () => {
|
|
215
|
+
expect(hooks.mapProviderEvent('chat.params')).toBe('PreModel');
|
|
204
216
|
});
|
|
205
217
|
|
|
206
218
|
it('returns null for unknown events', () => {
|
|
@@ -226,15 +238,19 @@ describe('OpenCodeHookProvider', () => {
|
|
|
226
238
|
});
|
|
227
239
|
|
|
228
240
|
describe('getEventMap', () => {
|
|
229
|
-
it('returns all mapped events', () => {
|
|
241
|
+
it('returns all 10 mapped events', () => {
|
|
230
242
|
const map = hooks.getEventMap();
|
|
231
|
-
expect(Object.keys(map)).toHaveLength(
|
|
232
|
-
expect(map['session.
|
|
233
|
-
expect(map['session.
|
|
234
|
-
expect(map['
|
|
235
|
-
expect(map['
|
|
236
|
-
expect(map['
|
|
237
|
-
expect(map['
|
|
243
|
+
expect(Object.keys(map)).toHaveLength(10);
|
|
244
|
+
expect(map['event:session.created']).toBe('SessionStart');
|
|
245
|
+
expect(map['event:session.deleted']).toBe('SessionEnd');
|
|
246
|
+
expect(map['chat.message']).toBe('PromptSubmit');
|
|
247
|
+
expect(map['event:session.idle']).toBe('ResponseComplete');
|
|
248
|
+
expect(map['tool.execute.before']).toBe('PreToolUse');
|
|
249
|
+
expect(map['tool.execute.after']).toBe('PostToolUse');
|
|
250
|
+
expect(map['permission.ask']).toBe('PermissionRequest');
|
|
251
|
+
expect(map['chat.params']).toBe('PreModel');
|
|
252
|
+
expect(map['experimental.session.compacting']).toBe('PreCompact');
|
|
253
|
+
expect(map['event:session.compacted']).toBe('PostCompact');
|
|
238
254
|
});
|
|
239
255
|
});
|
|
240
256
|
});
|
|
@@ -292,12 +308,11 @@ describe('OpenCodeInstallProvider', () => {
|
|
|
292
308
|
expect(typeof result.mcpRegistered).toBe('boolean');
|
|
293
309
|
});
|
|
294
310
|
|
|
295
|
-
it('
|
|
311
|
+
it('does not register MCP when only projectDir is provided', async () => {
|
|
296
312
|
const result = await installProvider.install({
|
|
297
313
|
projectDir: '/tmp/test-project',
|
|
298
|
-
mcpServerPath: '/path/to/mcp-server.js',
|
|
299
314
|
});
|
|
300
|
-
expect(result.mcpRegistered).toBe(
|
|
315
|
+
expect(result.mcpRegistered).toBe(false);
|
|
301
316
|
});
|
|
302
317
|
});
|
|
303
318
|
|
|
@@ -28,13 +28,24 @@ const execAsync = promisify(exec);
|
|
|
28
28
|
* Bridges CLEO's adapter system with OpenCode's native capabilities:
|
|
29
29
|
* - Hooks: Maps OpenCode events (session.start, tool.complete, etc.) to CAAMP events
|
|
30
30
|
* - Spawn: Launches subagent processes via the `opencode` CLI
|
|
31
|
-
* - Install:
|
|
31
|
+
* - Install: Ensures AGENTS.md references for CLEO instruction files
|
|
32
|
+
*
|
|
33
|
+
* @remarks
|
|
34
|
+
* OpenCode is the second-most feature-complete adapter after Claude Code,
|
|
35
|
+
* supporting 10 canonical events through its JavaScript plugin system,
|
|
36
|
+
* subagent spawning via the `opencode run` CLI command, and instruction
|
|
37
|
+
* file management via AGENTS.md. It uniquely supports PreModel via the
|
|
38
|
+
* `chat.params` event, which allows pre-inference parameter injection.
|
|
32
39
|
*/
|
|
33
40
|
export class OpenCodeAdapter implements CLEOProviderAdapter {
|
|
41
|
+
/** Unique provider identifier. */
|
|
34
42
|
readonly id = 'opencode';
|
|
43
|
+
/** Human-readable provider name. */
|
|
35
44
|
readonly name = 'OpenCode';
|
|
45
|
+
/** Adapter version string. */
|
|
36
46
|
readonly version = '1.0.0';
|
|
37
47
|
|
|
48
|
+
/** Declared capabilities for this provider. */
|
|
38
49
|
capabilities: AdapterCapabilities = {
|
|
39
50
|
supportsHooks: true,
|
|
40
51
|
// 10/16 canonical events — derived from getProviderHookProfile('opencode') in CAAMP 1.9.1.
|
|
@@ -54,7 +65,7 @@ export class OpenCodeAdapter implements CLEOProviderAdapter {
|
|
|
54
65
|
],
|
|
55
66
|
supportsSpawn: true,
|
|
56
67
|
supportsInstall: true,
|
|
57
|
-
supportsMcp:
|
|
68
|
+
supportsMcp: false,
|
|
58
69
|
supportsInstructionFiles: true,
|
|
59
70
|
instructionFilePattern: 'AGENTS.md',
|
|
60
71
|
supportsContextMonitor: false,
|
|
@@ -64,11 +75,16 @@ export class OpenCodeAdapter implements CLEOProviderAdapter {
|
|
|
64
75
|
supportsTaskSync: false,
|
|
65
76
|
};
|
|
66
77
|
|
|
78
|
+
/** Hook provider for CAAMP event mapping via OpenCode's plugin system. */
|
|
67
79
|
hooks: OpenCodeHookProvider;
|
|
80
|
+
/** Spawn provider for launching subagent processes via `opencode run`. */
|
|
68
81
|
spawn: OpenCodeSpawnProvider;
|
|
82
|
+
/** Install provider for managing AGENTS.md instruction files. */
|
|
69
83
|
install: OpenCodeInstallProvider;
|
|
70
84
|
|
|
85
|
+
/** Project directory this adapter was initialized with, or null. */
|
|
71
86
|
private projectDir: string | null = null;
|
|
87
|
+
/** Whether {@link initialize} has been called. */
|
|
72
88
|
private initialized = false;
|
|
73
89
|
|
|
74
90
|
constructor() {
|
|
@@ -72,10 +72,19 @@ const OPENCODE_EVENT_MAP: Record<string, string> = {
|
|
|
72
72
|
* provider), `registerNativeHooks` and `unregisterNativeHooks` track registration
|
|
73
73
|
* state without performing filesystem operations.
|
|
74
74
|
*
|
|
75
|
+
* @remarks
|
|
76
|
+
* OpenCode uses dot-delimited and `event:`-prefixed event names
|
|
77
|
+
* (e.g. `event:session.created`, `tool.execute.before`) which differ
|
|
78
|
+
* significantly from the PascalCase CAAMP canonical names. The static
|
|
79
|
+
* event map covers all 10 supported events. Async CAAMP accessors
|
|
80
|
+
* (`getSupportedCanonicalEvents`, `getProviderProfile`, `toNativeEvent`)
|
|
81
|
+
* call the normalizer directly when available and fall back to the static map.
|
|
82
|
+
*
|
|
75
83
|
* @task T164
|
|
76
84
|
* @epic T134
|
|
77
85
|
*/
|
|
78
86
|
export class OpenCodeHookProvider implements AdapterHookProvider {
|
|
87
|
+
/** Whether hooks have been registered for the current session. */
|
|
79
88
|
private registered = false;
|
|
80
89
|
|
|
81
90
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @packageDocumentation
|
|
3
3
|
*
|
|
4
4
|
* CLEO provider adapter for OpenCode AI coding assistant.
|
|
5
5
|
* Default export is the adapter class for dynamic loading by AdapterManager.
|
|
@@ -19,6 +19,21 @@ export default OpenCodeAdapter;
|
|
|
19
19
|
/**
|
|
20
20
|
* Factory function for creating adapter instances.
|
|
21
21
|
* Used by AdapterManager's dynamic import fallback.
|
|
22
|
+
*
|
|
23
|
+
* @remarks
|
|
24
|
+
* This is the primary entry point for dynamic adapter loading.
|
|
25
|
+
* AdapterManager calls this function when it resolves the opencode
|
|
26
|
+
* provider via its import-based discovery mechanism.
|
|
27
|
+
*
|
|
28
|
+
* @returns A new {@link OpenCodeAdapter} instance ready for initialization
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* import { createAdapter } from '@cleocode/adapters/providers/opencode';
|
|
33
|
+
*
|
|
34
|
+
* const adapter = createAdapter();
|
|
35
|
+
* await adapter.initialize('/path/to/project');
|
|
36
|
+
* ```
|
|
22
37
|
*/
|
|
23
38
|
export function createAdapter(): OpenCodeAdapter {
|
|
24
39
|
return new OpenCodeAdapter();
|