@cleocode/adapters 2026.3.71 → 2026.3.73

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.
Files changed (96) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1227 -101
  4. package/dist/index.js.map +4 -4
  5. package/dist/providers/claude-code/adapter.d.ts.map +1 -1
  6. package/dist/providers/claude-code/adapter.js +16 -5
  7. package/dist/providers/claude-code/adapter.js.map +1 -1
  8. package/dist/providers/claude-code/hooks.d.ts +89 -25
  9. package/dist/providers/claude-code/hooks.d.ts.map +1 -1
  10. package/dist/providers/claude-code/hooks.js +230 -28
  11. package/dist/providers/claude-code/hooks.js.map +1 -1
  12. package/dist/providers/codex/adapter.d.ts +70 -0
  13. package/dist/providers/codex/adapter.d.ts.map +1 -0
  14. package/dist/providers/codex/adapter.js +134 -0
  15. package/dist/providers/codex/adapter.js.map +1 -0
  16. package/dist/providers/codex/hooks.d.ts +85 -0
  17. package/dist/providers/codex/hooks.d.ts.map +1 -0
  18. package/dist/providers/codex/hooks.js +155 -0
  19. package/dist/providers/codex/hooks.js.map +1 -0
  20. package/dist/providers/codex/index.d.ts +22 -0
  21. package/dist/providers/codex/index.d.ts.map +1 -0
  22. package/dist/providers/codex/index.js +24 -0
  23. package/dist/providers/codex/index.js.map +1 -0
  24. package/dist/providers/codex/install.d.ts +74 -0
  25. package/dist/providers/codex/install.d.ts.map +1 -0
  26. package/dist/providers/codex/install.js +183 -0
  27. package/dist/providers/codex/install.js.map +1 -0
  28. package/dist/providers/cursor/adapter.d.ts.map +1 -1
  29. package/dist/providers/cursor/adapter.js +16 -2
  30. package/dist/providers/cursor/adapter.js.map +1 -1
  31. package/dist/providers/cursor/hooks.d.ts +102 -17
  32. package/dist/providers/cursor/hooks.d.ts.map +1 -1
  33. package/dist/providers/cursor/hooks.js +164 -18
  34. package/dist/providers/cursor/hooks.js.map +1 -1
  35. package/dist/providers/gemini-cli/adapter.d.ts +70 -0
  36. package/dist/providers/gemini-cli/adapter.d.ts.map +1 -0
  37. package/dist/providers/gemini-cli/adapter.js +145 -0
  38. package/dist/providers/gemini-cli/adapter.js.map +1 -0
  39. package/dist/providers/gemini-cli/hooks.d.ts +92 -0
  40. package/dist/providers/gemini-cli/hooks.d.ts.map +1 -0
  41. package/dist/providers/gemini-cli/hooks.js +169 -0
  42. package/dist/providers/gemini-cli/hooks.js.map +1 -0
  43. package/dist/providers/gemini-cli/index.d.ts +22 -0
  44. package/dist/providers/gemini-cli/index.d.ts.map +1 -0
  45. package/dist/providers/gemini-cli/index.js +24 -0
  46. package/dist/providers/gemini-cli/index.js.map +1 -0
  47. package/dist/providers/gemini-cli/install.d.ts +74 -0
  48. package/dist/providers/gemini-cli/install.d.ts.map +1 -0
  49. package/dist/providers/gemini-cli/install.js +183 -0
  50. package/dist/providers/gemini-cli/install.js.map +1 -0
  51. package/dist/providers/kimi/adapter.d.ts +72 -0
  52. package/dist/providers/kimi/adapter.d.ts.map +1 -0
  53. package/dist/providers/kimi/adapter.js +133 -0
  54. package/dist/providers/kimi/adapter.js.map +1 -0
  55. package/dist/providers/kimi/hooks.d.ts +64 -0
  56. package/dist/providers/kimi/hooks.d.ts.map +1 -0
  57. package/dist/providers/kimi/hooks.js +73 -0
  58. package/dist/providers/kimi/hooks.js.map +1 -0
  59. package/dist/providers/kimi/index.d.ts +22 -0
  60. package/dist/providers/kimi/index.d.ts.map +1 -0
  61. package/dist/providers/kimi/index.js +24 -0
  62. package/dist/providers/kimi/index.js.map +1 -0
  63. package/dist/providers/kimi/install.d.ts +80 -0
  64. package/dist/providers/kimi/install.d.ts.map +1 -0
  65. package/dist/providers/kimi/install.js +189 -0
  66. package/dist/providers/kimi/install.js.map +1 -0
  67. package/dist/providers/opencode/adapter.d.ts.map +1 -1
  68. package/dist/providers/opencode/adapter.js +13 -6
  69. package/dist/providers/opencode/adapter.js.map +1 -1
  70. package/dist/providers/opencode/hooks.d.ts +89 -28
  71. package/dist/providers/opencode/hooks.d.ts.map +1 -1
  72. package/dist/providers/opencode/hooks.js +145 -37
  73. package/dist/providers/opencode/hooks.js.map +1 -1
  74. package/package.json +3 -2
  75. package/src/index.ts +18 -0
  76. package/src/providers/claude-code/adapter.ts +16 -5
  77. package/src/providers/claude-code/hooks.ts +154 -30
  78. package/src/providers/codex/adapter.ts +154 -0
  79. package/src/providers/codex/hooks.ts +163 -0
  80. package/src/providers/codex/index.ts +27 -0
  81. package/src/providers/codex/install.ts +203 -0
  82. package/src/providers/codex/manifest.json +28 -0
  83. package/src/providers/cursor/adapter.ts +16 -2
  84. package/src/providers/cursor/hooks.ts +167 -18
  85. package/src/providers/gemini-cli/adapter.ts +165 -0
  86. package/src/providers/gemini-cli/hooks.ts +177 -0
  87. package/src/providers/gemini-cli/index.ts +27 -0
  88. package/src/providers/gemini-cli/install.ts +203 -0
  89. package/src/providers/gemini-cli/manifest.json +35 -0
  90. package/src/providers/kimi/adapter.ts +153 -0
  91. package/src/providers/kimi/hooks.ts +80 -0
  92. package/src/providers/kimi/index.ts +27 -0
  93. package/src/providers/kimi/install.ts +209 -0
  94. package/src/providers/kimi/manifest.json +24 -0
  95. package/src/providers/opencode/adapter.ts +13 -6
  96. package/src/providers/opencode/hooks.ts +146 -37
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Kimi Install Provider
3
+ *
4
+ * Handles CLEO installation into Kimi environments:
5
+ * - Registers CLEO MCP server in ~/.kimi/mcp.json
6
+ * - Ensures AGENTS.md has CLEO @-references
7
+ *
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
+ * @task T163
12
+ * @epic T134
13
+ */
14
+ import type { AdapterInstallProvider, InstallOptions, InstallResult } from '@cleocode/contracts';
15
+ /**
16
+ * Install provider for Kimi.
17
+ *
18
+ * Manages CLEO's integration with Kimi by:
19
+ * 1. Registering the CLEO MCP server in ~/.kimi/mcp.json
20
+ * 2. Ensuring AGENTS.md contains @-references to CLEO instruction files
21
+ *
22
+ * Since Kimi has no native hook system, MCP registration is the only
23
+ * mechanism for surfacing CLEO capabilities inside a Kimi session.
24
+ *
25
+ * @task T163
26
+ * @epic T134
27
+ */
28
+ export declare class KimiInstallProvider implements AdapterInstallProvider {
29
+ /**
30
+ * Install CLEO into a Kimi environment.
31
+ *
32
+ * @param options - Installation options including project directory and MCP server path
33
+ * @returns Result describing what was installed
34
+ * @task T163
35
+ */
36
+ install(options: InstallOptions): Promise<InstallResult>;
37
+ /**
38
+ * Uninstall CLEO from the Kimi environment.
39
+ *
40
+ * Removes the MCP server registration from ~/.kimi/mcp.json.
41
+ * Does not remove AGENTS.md references (they are harmless if CLEO is not present).
42
+ * @task T163
43
+ */
44
+ uninstall(): Promise<void>;
45
+ /**
46
+ * Check whether CLEO is installed in the Kimi environment.
47
+ *
48
+ * Checks for MCP server registered in ~/.kimi/mcp.json.
49
+ * Returns true if the CLEO MCP server entry is found.
50
+ * @task T163
51
+ */
52
+ isInstalled(): Promise<boolean>;
53
+ /**
54
+ * Ensure AGENTS.md contains @-references to CLEO instruction files.
55
+ *
56
+ * Creates AGENTS.md if it does not exist. Appends any missing references.
57
+ *
58
+ * @param projectDir - Project root directory
59
+ * @task T163
60
+ */
61
+ ensureInstructionReferences(projectDir: string): Promise<void>;
62
+ /**
63
+ * Register the CLEO MCP server in ~/.kimi/mcp.json.
64
+ *
65
+ * Kimi stores its MCP server configuration in ~/.kimi/mcp.json
66
+ * under the mcpServers key.
67
+ *
68
+ * @param mcpServerPath - Absolute path to the MCP server entry point
69
+ * @returns true if registration was performed or updated
70
+ */
71
+ private registerMcpServer;
72
+ /**
73
+ * Update AGENTS.md with CLEO @-references.
74
+ *
75
+ * @param projectDir - Project root directory
76
+ * @returns true if the file was created or modified
77
+ */
78
+ private updateInstructionFile;
79
+ }
80
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/providers/kimi/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQjG;;;;;;;;;;;;GAYG;AACH,qBAAa,mBAAoB,YAAW,sBAAsB;IAChE;;;;;;OAMG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IA8B9D;;;;;;OAMG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBhC;;;;;;OAMG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAiBrC;;;;;;;OAOG;IACG,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpE;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;CA4B9B"}
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Kimi Install Provider
3
+ *
4
+ * Handles CLEO installation into Kimi environments:
5
+ * - Registers CLEO MCP server in ~/.kimi/mcp.json
6
+ * - Ensures AGENTS.md has CLEO @-references
7
+ *
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
+ * @task T163
12
+ * @epic T134
13
+ */
14
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
15
+ import { homedir } from 'node:os';
16
+ import { join } from 'node:path';
17
+ /** Lines that should appear in AGENTS.md to reference CLEO. */
18
+ const INSTRUCTION_REFERENCES = ['@~/.cleo/templates/CLEO-INJECTION.md', '@.cleo/memory-bridge.md'];
19
+ /** MCP server registration key used in Kimi MCP config. */
20
+ const MCP_SERVER_KEY = 'cleo';
21
+ /**
22
+ * Install provider for Kimi.
23
+ *
24
+ * Manages CLEO's integration with Kimi by:
25
+ * 1. Registering the CLEO MCP server in ~/.kimi/mcp.json
26
+ * 2. Ensuring AGENTS.md contains @-references to CLEO instruction files
27
+ *
28
+ * Since Kimi has no native hook system, MCP registration is the only
29
+ * mechanism for surfacing CLEO capabilities inside a Kimi session.
30
+ *
31
+ * @task T163
32
+ * @epic T134
33
+ */
34
+ export class KimiInstallProvider {
35
+ /**
36
+ * Install CLEO into a Kimi environment.
37
+ *
38
+ * @param options - Installation options including project directory and MCP server path
39
+ * @returns Result describing what was installed
40
+ * @task T163
41
+ */
42
+ async install(options) {
43
+ const { projectDir, mcpServerPath } = options;
44
+ const installedAt = new Date().toISOString();
45
+ let instructionFileUpdated = false;
46
+ let mcpRegistered = false;
47
+ const details = {};
48
+ // Step 1: Register MCP server in ~/.kimi/mcp.json
49
+ if (mcpServerPath) {
50
+ mcpRegistered = this.registerMcpServer(mcpServerPath);
51
+ if (mcpRegistered) {
52
+ details.mcpConfigPath = join(homedir(), '.kimi', 'mcp.json');
53
+ }
54
+ }
55
+ // Step 2: Ensure AGENTS.md has @-references
56
+ instructionFileUpdated = this.updateInstructionFile(projectDir);
57
+ if (instructionFileUpdated) {
58
+ details.instructionFile = join(projectDir, 'AGENTS.md');
59
+ }
60
+ return {
61
+ success: true,
62
+ installedAt,
63
+ instructionFileUpdated,
64
+ mcpRegistered,
65
+ details,
66
+ };
67
+ }
68
+ /**
69
+ * Uninstall CLEO from the Kimi environment.
70
+ *
71
+ * Removes the MCP server registration from ~/.kimi/mcp.json.
72
+ * Does not remove AGENTS.md references (they are harmless if CLEO is not present).
73
+ * @task T163
74
+ */
75
+ async uninstall() {
76
+ const mcpPath = join(homedir(), '.kimi', 'mcp.json');
77
+ if (existsSync(mcpPath)) {
78
+ try {
79
+ const raw = readFileSync(mcpPath, 'utf-8');
80
+ const config = JSON.parse(raw);
81
+ const mcpServers = config.mcpServers;
82
+ if (mcpServers && MCP_SERVER_KEY in mcpServers) {
83
+ delete mcpServers[MCP_SERVER_KEY];
84
+ writeFileSync(mcpPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
85
+ }
86
+ }
87
+ catch {
88
+ // Ignore errors during uninstall
89
+ }
90
+ }
91
+ }
92
+ /**
93
+ * Check whether CLEO is installed in the Kimi environment.
94
+ *
95
+ * Checks for MCP server registered in ~/.kimi/mcp.json.
96
+ * Returns true if the CLEO MCP server entry is found.
97
+ * @task T163
98
+ */
99
+ async isInstalled() {
100
+ const mcpPath = join(homedir(), '.kimi', 'mcp.json');
101
+ if (existsSync(mcpPath)) {
102
+ try {
103
+ const config = JSON.parse(readFileSync(mcpPath, 'utf-8'));
104
+ const mcpServers = config.mcpServers;
105
+ if (mcpServers && MCP_SERVER_KEY in mcpServers) {
106
+ return true;
107
+ }
108
+ }
109
+ catch {
110
+ // Fall through
111
+ }
112
+ }
113
+ return false;
114
+ }
115
+ /**
116
+ * Ensure AGENTS.md contains @-references to CLEO instruction files.
117
+ *
118
+ * Creates AGENTS.md if it does not exist. Appends any missing references.
119
+ *
120
+ * @param projectDir - Project root directory
121
+ * @task T163
122
+ */
123
+ async ensureInstructionReferences(projectDir) {
124
+ this.updateInstructionFile(projectDir);
125
+ }
126
+ /**
127
+ * Register the CLEO MCP server in ~/.kimi/mcp.json.
128
+ *
129
+ * Kimi stores its MCP server configuration in ~/.kimi/mcp.json
130
+ * under the mcpServers key.
131
+ *
132
+ * @param mcpServerPath - Absolute path to the MCP server entry point
133
+ * @returns true if registration was performed or updated
134
+ */
135
+ registerMcpServer(mcpServerPath) {
136
+ const kimiDir = join(homedir(), '.kimi');
137
+ const mcpPath = join(kimiDir, 'mcp.json');
138
+ let config = {};
139
+ mkdirSync(kimiDir, { recursive: true });
140
+ if (existsSync(mcpPath)) {
141
+ try {
142
+ config = JSON.parse(readFileSync(mcpPath, 'utf-8'));
143
+ }
144
+ catch {
145
+ // Start fresh on parse error
146
+ }
147
+ }
148
+ if (!config.mcpServers || typeof config.mcpServers !== 'object') {
149
+ config.mcpServers = {};
150
+ }
151
+ const mcpServers = config.mcpServers;
152
+ mcpServers[MCP_SERVER_KEY] = {
153
+ command: 'node',
154
+ args: [mcpServerPath],
155
+ };
156
+ writeFileSync(mcpPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
157
+ return true;
158
+ }
159
+ /**
160
+ * Update AGENTS.md with CLEO @-references.
161
+ *
162
+ * @param projectDir - Project root directory
163
+ * @returns true if the file was created or modified
164
+ */
165
+ updateInstructionFile(projectDir) {
166
+ const agentsMdPath = join(projectDir, 'AGENTS.md');
167
+ let content = '';
168
+ let existed = false;
169
+ if (existsSync(agentsMdPath)) {
170
+ content = readFileSync(agentsMdPath, 'utf-8');
171
+ existed = true;
172
+ }
173
+ const missingRefs = INSTRUCTION_REFERENCES.filter((ref) => !content.includes(ref));
174
+ if (missingRefs.length === 0) {
175
+ return false;
176
+ }
177
+ const refsBlock = missingRefs.join('\n');
178
+ if (existed) {
179
+ const separator = content.endsWith('\n') ? '' : '\n';
180
+ content = content + separator + refsBlock + '\n';
181
+ }
182
+ else {
183
+ content = refsBlock + '\n';
184
+ }
185
+ writeFileSync(agentsMdPath, content, 'utf-8');
186
+ return true;
187
+ }
188
+ }
189
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/providers/kimi/install.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/providers/opencode/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAInD;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,mBAAmB;IACzD,QAAQ,CAAC,EAAE,cAAc;IACzB,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,OAAO,WAAW;IAE3B,YAAY,EAAE,mBAAmB,CAoB/B;IAEF,KAAK,EAAE,oBAAoB,CAAC;IAC5B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,OAAO,EAAE,uBAAuB,CAAC;IAEjC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,WAAW,CAAS;;IAQ5B;;;;;;;OAOG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B;;;;;;;;;OASG;IACG,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IA2CjD;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,aAAa,IAAI,MAAM,GAAG,IAAI;CAG/B"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/providers/opencode/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAInD;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,mBAAmB;IACzD,QAAQ,CAAC,EAAE,cAAc;IACzB,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,OAAO,WAAW;IAE3B,YAAY,EAAE,mBAAmB,CA2B/B;IAEF,KAAK,EAAE,oBAAoB,CAAC;IAC5B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,OAAO,EAAE,uBAAuB,CAAC;IAEjC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,WAAW,CAAS;;IAQ5B;;;;;;;OAOG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B;;;;;;;;;OASG;IACG,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IA2CjD;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,aAAa,IAAI,MAAM,GAAG,IAAI;CAG/B"}
@@ -28,13 +28,20 @@ export class OpenCodeAdapter {
28
28
  version = '1.0.0';
29
29
  capabilities = {
30
30
  supportsHooks: true,
31
+ // 10/16 canonical events — derived from getProviderHookProfile('opencode') in CAAMP 1.9.1.
32
+ // PostToolUseFailure, SubagentStart, SubagentStop, Notification, ConfigChange are
33
+ // not supported by OpenCode's plugin system.
31
34
  supportedHookEvents: [
32
- 'onSessionStart',
33
- 'onSessionEnd',
34
- 'onToolStart',
35
- 'onToolComplete',
36
- 'onError',
37
- 'onPromptSubmit',
35
+ 'SessionStart',
36
+ 'SessionEnd',
37
+ 'PromptSubmit',
38
+ 'ResponseComplete',
39
+ 'PreToolUse',
40
+ 'PostToolUse',
41
+ 'PermissionRequest',
42
+ 'PreModel',
43
+ 'PreCompact',
44
+ 'PostCompact',
38
45
  ],
39
46
  supportsSpawn: true,
40
47
  supportsInstall: true,
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/providers/opencode/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/providers/opencode/adapter.ts"],"names":[],"mappings":"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"}
@@ -1,66 +1,127 @@
1
1
  /**
2
2
  * OpenCode Hook Provider
3
3
  *
4
- * Maps OpenCode's native hook events to CAAMP hook events.
5
- * OpenCode supports 6 of 8 CAAMP events through its agent/hook system.
4
+ * Maps OpenCode's native hook events to CAAMP canonical hook events.
5
+ * OpenCode supports 10 of 16 canonical events through its plugin system.
6
6
  *
7
- * OpenCode event mapping:
8
- * - session.start -> onSessionStart
9
- * - session.end -> onSessionEnd
10
- * - tool.start -> onToolStart
11
- * - tool.complete -> onToolComplete
12
- * - error -> onError
13
- * - prompt.submit -> onPromptSubmit
7
+ * Event translation uses CAAMP normalizer APIs:
8
+ * - `toCanonical(nativeName, 'opencode')` for runtime event name resolution
9
+ * - `getSupportedEvents('opencode')` to enumerate supported canonical events
10
+ * - `getProviderHookProfile('opencode')` for the full provider profile
14
11
  *
15
- * @task T5240
12
+ * OpenCode uses a JavaScript plugin system with event-prefixed names
13
+ * (e.g. `event:session.created`) for some hooks and bare names for others.
14
+ * The map is derived from `getProviderHookProfile('opencode').mappings` in
15
+ * CAAMP 1.9.1. PostToolUseFailure, SubagentStart, SubagentStop, Notification,
16
+ * and ConfigChange are not supported by OpenCode.
17
+ *
18
+ * @task T164
19
+ * @epic T134
16
20
  */
17
21
  import type { AdapterHookProvider } from '@cleocode/contracts';
18
22
  /**
19
23
  * Hook provider for OpenCode.
20
24
  *
21
- * OpenCode registers hooks via its configuration system at
22
- * .opencode/config.json. Hook handlers are defined as shell commands
23
- * or script paths that execute when the corresponding event fires.
25
+ * OpenCode registers hooks via its JavaScript plugin system at
26
+ * `.opencode/plugins/`. Supported handler type: plugin (JavaScript).
27
+ *
28
+ * Event mapping is based on `getProviderHookProfile('opencode')` from
29
+ * CAAMP 1.9.1. Async accessors (`getSupportedCanonicalEvents`,
30
+ * `getProviderProfile`) call CAAMP directly when available.
31
+ *
32
+ * Since hooks are registered through the plugin system (managed by the install
33
+ * provider), `registerNativeHooks` and `unregisterNativeHooks` track registration
34
+ * state without performing filesystem operations.
24
35
  *
25
- * Since hooks are registered through the config system (managed by
26
- * the install provider), registerNativeHooks and unregisterNativeHooks
27
- * track registration state without performing filesystem operations.
36
+ * @task T164
37
+ * @epic T134
28
38
  */
29
39
  export declare class OpenCodeHookProvider implements AdapterHookProvider {
30
40
  private registered;
31
41
  /**
32
- * Map an OpenCode native event name to a CAAMP hook event name.
42
+ * Map an OpenCode native event name to a CAAMP canonical hook event name.
33
43
  *
34
- * @param providerEvent - OpenCode event name (e.g. "session.start", "tool.complete")
35
- * @returns CAAMP event name or null if unmapped
44
+ * Looks up the native event name in the map derived from
45
+ * `getProviderHookProfile('opencode').mappings` (CAAMP 1.9.1).
46
+ * Returns null for unsupported events (PostToolUseFailure, SubagentStart,
47
+ * SubagentStop, Notification, ConfigChange).
48
+ *
49
+ * @param providerEvent - OpenCode native event (e.g. "event:session.created", "tool.execute.before")
50
+ * @returns CAAMP canonical event name, or null if unmapped
51
+ * @task T164
36
52
  */
37
53
  mapProviderEvent(providerEvent: string): string | null;
38
54
  /**
39
55
  * Register native hooks for a project.
40
56
  *
41
- * For OpenCode, hooks are registered via the config system
42
- * (.opencode/config.json), which is handled by the install provider.
43
- * This method marks hooks as registered without performing
44
- * filesystem operations.
57
+ * For OpenCode, hooks are registered via the plugin system
58
+ * (`.opencode/plugins/`), managed by the install provider.
59
+ * This method marks hooks as registered without performing filesystem operations.
60
+ *
61
+ * Iterating supported events is handled at install time using
62
+ * `getSupportedCanonicalEvents()` to enumerate all 10 supported hooks.
45
63
  *
46
64
  * @param _projectDir - Project directory (unused; config manages registration)
65
+ * @task T164
47
66
  */
48
67
  registerNativeHooks(_projectDir: string): Promise<void>;
49
68
  /**
50
69
  * Unregister native hooks.
51
70
  *
52
- * For OpenCode, this is a no-op since hooks are managed through
53
- * the config system. Unregistration happens via the install
54
- * provider's uninstall method.
71
+ * For OpenCode, this is a no-op since hooks are managed through the plugin
72
+ * system. Unregistration happens via the install provider's uninstall method.
73
+ *
74
+ * @task T164
55
75
  */
56
76
  unregisterNativeHooks(): Promise<void>;
57
77
  /**
58
- * Check whether hooks have been registered via registerNativeHooks.
78
+ * Check whether hooks have been registered via `registerNativeHooks`.
59
79
  */
60
80
  isRegistered(): boolean;
61
81
  /**
62
- * Get the full event mapping for introspection/debugging.
82
+ * Get the native→canonical event mapping for introspection and debugging.
83
+ *
84
+ * Returns the map derived from `getProviderHookProfile('opencode').mappings`
85
+ * (CAAMP 1.9.1). Use `getSupportedCanonicalEvents()` to enumerate canonical
86
+ * names via live CAAMP APIs.
87
+ *
88
+ * @returns Immutable record of native event name → canonical event name
63
89
  */
64
90
  getEventMap(): Readonly<Record<string, string>>;
91
+ /**
92
+ * Enumerate supported canonical events via CAAMP's `getSupportedEvents()`.
93
+ *
94
+ * Calls `getSupportedEvents('opencode')` from the CAAMP normalizer to get the
95
+ * authoritative list. OpenCode supports 10 of 16 canonical events via its
96
+ * plugin system. Falls back to the values of the static event map when
97
+ * CAAMP is unavailable at runtime.
98
+ *
99
+ * @returns Array of CAAMP canonical event names supported by OpenCode
100
+ * @task T164
101
+ */
102
+ getSupportedCanonicalEvents(): Promise<string[]>;
103
+ /**
104
+ * Retrieve the full provider hook profile from CAAMP.
105
+ *
106
+ * Calls `getProviderHookProfile('opencode')` from the CAAMP normalizer to
107
+ * get the complete profile: hook system type (`plugin`), config path
108
+ * (`.opencode/plugins/`), handler types, and all event mappings.
109
+ * Returns null when CAAMP is unavailable at runtime.
110
+ *
111
+ * @returns Provider hook profile or null if CAAMP is unavailable
112
+ * @task T164
113
+ */
114
+ getProviderProfile(): Promise<unknown | null>;
115
+ /**
116
+ * Translate a CAAMP canonical event to its OpenCode native name via CAAMP.
117
+ *
118
+ * Calls `toNative(canonical, 'opencode')` from the CAAMP normalizer.
119
+ * Returns null for unsupported events or when CAAMP is unavailable.
120
+ *
121
+ * @param canonical - CAAMP canonical event name (e.g. "PreToolUse")
122
+ * @returns OpenCode native event name or null
123
+ * @task T164
124
+ */
125
+ toNativeEvent(canonical: string): Promise<string | null>;
65
126
  }
66
127
  //# sourceMappingURL=hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/providers/opencode/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAiB/D;;;;;;;;;;GAUG;AACH,qBAAa,oBAAqB,YAAW,mBAAmB;IAC9D,OAAO,CAAC,UAAU,CAAS;IAE3B;;;;;OAKG;IACH,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAItD;;;;;;;;;OASG;IACG,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D;;;;;;OAMG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5C;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,WAAW,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAGhD"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/providers/opencode/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAuC/D;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,oBAAqB,YAAW,mBAAmB;IAC9D,OAAO,CAAC,UAAU,CAAS;IAE3B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAItD;;;;;;;;;;;;OAYG;IACG,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D;;;;;;;OAOG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5C;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;;;;;;;OAQG;IACH,WAAW,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAI/C;;;;;;;;;;OAUG;IACG,2BAA2B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAStD;;;;;;;;;;OAUG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IASnD;;;;;;;;;OASG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAU/D"}