@cleocode/adapters 2026.3.73 → 2026.3.76

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 (78) hide show
  1. package/dist/index.js +132 -154
  2. package/dist/index.js.map +4 -4
  3. package/dist/providers/codex/hooks.d.ts +2 -2
  4. package/dist/providers/codex/hooks.d.ts.map +1 -1
  5. package/dist/providers/gemini-cli/hooks.d.ts +2 -2
  6. package/dist/providers/gemini-cli/hooks.d.ts.map +1 -1
  7. package/dist/providers/shared/transcript-reader.d.ts +43 -0
  8. package/dist/providers/shared/transcript-reader.d.ts.map +1 -0
  9. package/package.json +3 -3
  10. package/src/providers/codex/hooks.ts +5 -52
  11. package/src/providers/gemini-cli/hooks.ts +5 -52
  12. package/src/providers/shared/transcript-reader.ts +123 -0
  13. package/dist/providers/claude-code/adapter.js +0 -165
  14. package/dist/providers/claude-code/adapter.js.map +0 -1
  15. package/dist/providers/claude-code/context-monitor.js +0 -148
  16. package/dist/providers/claude-code/context-monitor.js.map +0 -1
  17. package/dist/providers/claude-code/hooks.js +0 -279
  18. package/dist/providers/claude-code/hooks.js.map +0 -1
  19. package/dist/providers/claude-code/index.js +0 -26
  20. package/dist/providers/claude-code/index.js.map +0 -1
  21. package/dist/providers/claude-code/install.js +0 -234
  22. package/dist/providers/claude-code/install.js.map +0 -1
  23. package/dist/providers/claude-code/paths.js +0 -33
  24. package/dist/providers/claude-code/paths.js.map +0 -1
  25. package/dist/providers/claude-code/spawn.js +0 -164
  26. package/dist/providers/claude-code/spawn.js.map +0 -1
  27. package/dist/providers/claude-code/statusline.js +0 -86
  28. package/dist/providers/claude-code/statusline.js.map +0 -1
  29. package/dist/providers/claude-code/task-sync.js +0 -111
  30. package/dist/providers/claude-code/task-sync.js.map +0 -1
  31. package/dist/providers/claude-code/transport.js +0 -18
  32. package/dist/providers/claude-code/transport.js.map +0 -1
  33. package/dist/providers/codex/adapter.js +0 -134
  34. package/dist/providers/codex/adapter.js.map +0 -1
  35. package/dist/providers/codex/hooks.js +0 -155
  36. package/dist/providers/codex/hooks.js.map +0 -1
  37. package/dist/providers/codex/index.js +0 -24
  38. package/dist/providers/codex/index.js.map +0 -1
  39. package/dist/providers/codex/install.js +0 -183
  40. package/dist/providers/codex/install.js.map +0 -1
  41. package/dist/providers/cursor/adapter.js +0 -138
  42. package/dist/providers/cursor/adapter.js.map +0 -1
  43. package/dist/providers/cursor/hooks.js +0 -201
  44. package/dist/providers/cursor/hooks.js.map +0 -1
  45. package/dist/providers/cursor/index.js +0 -21
  46. package/dist/providers/cursor/index.js.map +0 -1
  47. package/dist/providers/cursor/install.js +0 -238
  48. package/dist/providers/cursor/install.js.map +0 -1
  49. package/dist/providers/cursor/spawn.js +0 -59
  50. package/dist/providers/cursor/spawn.js.map +0 -1
  51. package/dist/providers/gemini-cli/adapter.js +0 -145
  52. package/dist/providers/gemini-cli/adapter.js.map +0 -1
  53. package/dist/providers/gemini-cli/hooks.js +0 -169
  54. package/dist/providers/gemini-cli/hooks.js.map +0 -1
  55. package/dist/providers/gemini-cli/index.js +0 -24
  56. package/dist/providers/gemini-cli/index.js.map +0 -1
  57. package/dist/providers/gemini-cli/install.js +0 -183
  58. package/dist/providers/gemini-cli/install.js.map +0 -1
  59. package/dist/providers/kimi/adapter.js +0 -133
  60. package/dist/providers/kimi/adapter.js.map +0 -1
  61. package/dist/providers/kimi/hooks.js +0 -73
  62. package/dist/providers/kimi/hooks.js.map +0 -1
  63. package/dist/providers/kimi/index.js +0 -24
  64. package/dist/providers/kimi/index.js.map +0 -1
  65. package/dist/providers/kimi/install.js +0 -189
  66. package/dist/providers/kimi/install.js.map +0 -1
  67. package/dist/providers/opencode/adapter.js +0 -151
  68. package/dist/providers/opencode/adapter.js.map +0 -1
  69. package/dist/providers/opencode/hooks.js +0 -197
  70. package/dist/providers/opencode/hooks.js.map +0 -1
  71. package/dist/providers/opencode/index.js +0 -22
  72. package/dist/providers/opencode/index.js.map +0 -1
  73. package/dist/providers/opencode/install.js +0 -180
  74. package/dist/providers/opencode/install.js.map +0 -1
  75. package/dist/providers/opencode/spawn.js +0 -219
  76. package/dist/providers/opencode/spawn.js.map +0 -1
  77. package/dist/registry.js +0 -55
  78. package/dist/registry.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/providers/cursor/adapter.ts"],"names":[],"mappings":"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"}
@@ -1,201 +0,0 @@
1
- /**
2
- * Cursor Hook Provider
3
- *
4
- * Maps Cursor's native hook events to CAAMP canonical hook events.
5
- * Cursor supports 10 of 16 canonical events through its config-based hook system.
6
- *
7
- * Event translation uses CAAMP normalizer APIs:
8
- * - `toCanonical(nativeName, 'cursor')` for runtime event name resolution
9
- * - `getSupportedEvents('cursor')` to enumerate supported canonical events
10
- * - `getProviderHookProfile('cursor')` for the full provider profile
11
- *
12
- * Cursor uses camelCase native event names (e.g. `sessionStart`, `preToolUse`).
13
- * Hooks are configured via `.cursor/hooks.json`. Supported handler types:
14
- * command, prompt.
15
- *
16
- * Unsupported events: PermissionRequest, PreModel, PostModel, PostCompact,
17
- * Notification, ConfigChange.
18
- *
19
- * @task T165
20
- * @epic T134
21
- */
22
- /** CAAMP provider identifier for Cursor. */
23
- const PROVIDER_ID = 'cursor';
24
- /**
25
- * Fallback map from Cursor native event names to CAAMP canonical names.
26
- *
27
- * Derived from `getProviderHookProfile('cursor').mappings` in CAAMP 1.9.1.
28
- * Covers all 10 supported events. PermissionRequest, PreModel, PostModel,
29
- * PostCompact, Notification, and ConfigChange are not supported by Cursor.
30
- *
31
- * Cursor uses camelCase names while CAAMP canonical names are PascalCase.
32
- */
33
- const CURSOR_EVENT_MAP = {
34
- // CAAMP: toNative('SessionStart', 'cursor') = 'sessionStart'
35
- sessionStart: 'SessionStart',
36
- // CAAMP: toNative('SessionEnd', 'cursor') = 'sessionEnd'
37
- sessionEnd: 'SessionEnd',
38
- // CAAMP: toNative('PromptSubmit', 'cursor') = 'beforeSubmitPrompt'
39
- beforeSubmitPrompt: 'PromptSubmit',
40
- // CAAMP: toNative('ResponseComplete', 'cursor') = 'stop'
41
- stop: 'ResponseComplete',
42
- // CAAMP: toNative('PreToolUse', 'cursor') = 'preToolUse'
43
- preToolUse: 'PreToolUse',
44
- // CAAMP: toNative('PostToolUse', 'cursor') = 'postToolUse'
45
- postToolUse: 'PostToolUse',
46
- // CAAMP: toNative('PostToolUseFailure', 'cursor') = 'postToolUseFailure'
47
- postToolUseFailure: 'PostToolUseFailure',
48
- // CAAMP: toNative('SubagentStart', 'cursor') = 'subagentStart'
49
- subagentStart: 'SubagentStart',
50
- // CAAMP: toNative('SubagentStop', 'cursor') = 'subagentStop'
51
- subagentStop: 'SubagentStop',
52
- // CAAMP: toNative('PreCompact', 'cursor') = 'preCompact'
53
- preCompact: 'PreCompact',
54
- };
55
- /**
56
- * Hook provider for Cursor.
57
- *
58
- * Cursor registers hooks via its config system at `.cursor/hooks.json`.
59
- * Supported handler types: command, prompt.
60
- *
61
- * CAAMP 1.9.1 reveals Cursor supports 10 of 16 canonical events. Previously
62
- * this provider was a no-op stub. It now provides full event mapping and CAAMP
63
- * normalizer integration.
64
- *
65
- * Event mapping is based on `getProviderHookProfile('cursor')` from CAAMP 1.9.1.
66
- * Async accessors (`getSupportedCanonicalEvents`, `getProviderProfile`) call
67
- * CAAMP directly when available.
68
- *
69
- * Since hooks are registered through the config system (managed by the install
70
- * provider), `registerNativeHooks` and `unregisterNativeHooks` track registration
71
- * state without performing filesystem operations.
72
- *
73
- * @task T165
74
- * @epic T134
75
- */
76
- export class CursorHookProvider {
77
- registered = false;
78
- /**
79
- * Map a Cursor native event name to a CAAMP canonical hook event name.
80
- *
81
- * Looks up the native event name in the map derived from
82
- * `getProviderHookProfile('cursor').mappings` (CAAMP 1.9.1). Cursor uses
83
- * camelCase names (e.g. "preToolUse", "sessionStart").
84
- *
85
- * Returns null for unsupported events (PermissionRequest, PreModel,
86
- * PostModel, PostCompact, Notification, ConfigChange).
87
- *
88
- * @param providerEvent - Cursor native event name (e.g. "preToolUse", "sessionStart")
89
- * @returns CAAMP canonical event name, or null if unmapped
90
- * @task T165
91
- */
92
- mapProviderEvent(providerEvent) {
93
- return CURSOR_EVENT_MAP[providerEvent] ?? null;
94
- }
95
- /**
96
- * Register native hooks for a project.
97
- *
98
- * For Cursor, hooks are registered via the config system
99
- * (`.cursor/hooks.json`), managed by the install provider.
100
- * This method marks hooks as registered without performing filesystem operations.
101
- *
102
- * Iterating supported events is handled at install time using
103
- * `getSupportedCanonicalEvents()` to enumerate all 10 supported hooks.
104
- *
105
- * @param _projectDir - Project directory (unused; Cursor config manages registration)
106
- * @task T165
107
- */
108
- async registerNativeHooks(_projectDir) {
109
- this.registered = true;
110
- }
111
- /**
112
- * Unregister native hooks.
113
- *
114
- * For Cursor, this is a no-op since hooks are managed through the config
115
- * system. Unregistration happens via the install provider's uninstall method.
116
- *
117
- * @task T165
118
- */
119
- async unregisterNativeHooks() {
120
- this.registered = false;
121
- }
122
- /**
123
- * Check whether hooks have been registered via `registerNativeHooks`.
124
- */
125
- isRegistered() {
126
- return this.registered;
127
- }
128
- /**
129
- * Get the native→canonical event mapping for introspection and debugging.
130
- *
131
- * Returns the map derived from `getProviderHookProfile('cursor').mappings`
132
- * (CAAMP 1.9.1). Use `getSupportedCanonicalEvents()` to enumerate canonical
133
- * names via live CAAMP APIs.
134
- *
135
- * @returns Immutable record of native event name → canonical event name
136
- */
137
- getEventMap() {
138
- return { ...CURSOR_EVENT_MAP };
139
- }
140
- /**
141
- * Enumerate supported canonical events via CAAMP's `getSupportedEvents()`.
142
- *
143
- * Calls `getSupportedEvents('cursor')` from the CAAMP normalizer to get the
144
- * authoritative list. Cursor supports 10 of 16 canonical events. Falls back
145
- * to the values of the static event map when CAAMP is unavailable at runtime.
146
- *
147
- * @returns Array of CAAMP canonical event names supported by Cursor
148
- * @task T165
149
- */
150
- async getSupportedCanonicalEvents() {
151
- try {
152
- const { getSupportedEvents } = await import('@cleocode/caamp');
153
- return getSupportedEvents(PROVIDER_ID);
154
- }
155
- catch {
156
- return [...new Set(Object.values(CURSOR_EVENT_MAP))];
157
- }
158
- }
159
- /**
160
- * Retrieve the full provider hook profile from CAAMP.
161
- *
162
- * Calls `getProviderHookProfile('cursor')` from the CAAMP normalizer to
163
- * get the complete profile: hook system type (`config`), config path
164
- * (`.cursor/hooks.json`), handler types (command, prompt), and all event
165
- * mappings. Returns null when CAAMP is unavailable at runtime.
166
- *
167
- * @returns Provider hook profile or null if CAAMP is unavailable
168
- * @task T165
169
- */
170
- async getProviderProfile() {
171
- try {
172
- const { getProviderHookProfile } = await import('@cleocode/caamp');
173
- return getProviderHookProfile(PROVIDER_ID) ?? null;
174
- }
175
- catch {
176
- return null;
177
- }
178
- }
179
- /**
180
- * Translate a CAAMP canonical event to its Cursor native name via CAAMP.
181
- *
182
- * Calls `toNative(canonical, 'cursor')` from the CAAMP normalizer.
183
- * Returns null for unsupported events or when CAAMP is unavailable.
184
- *
185
- * @param canonical - CAAMP canonical event name (e.g. "PreToolUse")
186
- * @returns Cursor native event name (e.g. "preToolUse") or null
187
- * @task T165
188
- */
189
- async toNativeEvent(canonical) {
190
- try {
191
- const { toNative } = await import('@cleocode/caamp');
192
- return toNative(canonical, PROVIDER_ID);
193
- }
194
- catch {
195
- // Invert the static map as fallback
196
- const entry = Object.entries(CURSOR_EVENT_MAP).find(([, v]) => v === canonical);
197
- return entry?.[0] ?? null;
198
- }
199
- }
200
- }
201
- //# sourceMappingURL=hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/providers/cursor/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,4CAA4C;AAC5C,MAAM,WAAW,GAAG,QAAiB,CAAC;AAEtC;;;;;;;;GAQG;AACH,MAAM,gBAAgB,GAA2B;IAC/C,mEAAmE;IACnE,YAAY,EAAE,cAAc;IAC5B,iEAAiE;IACjE,UAAU,EAAE,YAAY;IACxB,yEAAyE;IACzE,kBAAkB,EAAE,cAAc;IAClC,2DAA2D;IAC3D,IAAI,EAAE,kBAAkB;IACxB,iEAAiE;IACjE,UAAU,EAAE,YAAY;IACxB,kEAAkE;IAClE,WAAW,EAAE,aAAa;IAC1B,yEAAyE;IACzE,kBAAkB,EAAE,oBAAoB;IACxC,oEAAoE;IACpE,aAAa,EAAE,eAAe;IAC9B,mEAAmE;IACnE,YAAY,EAAE,cAAc;IAC5B,iEAAiE;IACjE,UAAU,EAAE,YAAY;CACzB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,kBAAkB;IACrB,UAAU,GAAG,KAAK,CAAC;IAE3B;;;;;;;;;;;;;OAaG;IACH,gBAAgB,CAAC,aAAqB;QACpC,OAAO,gBAAgB,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;IACjD,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,mBAAmB,CAAC,WAAmB;QAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,qBAAqB;QACzB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;;;;;;;OAQG;IACH,WAAW;QACT,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACjC,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,2BAA2B;QAC/B,IAAI,CAAC;YACH,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC/D,OAAO,kBAAkB,CAAC,WAAW,CAAa,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC;YACH,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACnE,OAAO,sBAAsB,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACrD,OAAO,QAAQ,CAAC,SAA2C,EAAE,WAAW,CAAC,CAAC;QAC5E,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;YACpC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;YAChF,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC5B,CAAC;IACH,CAAC;CACF"}
@@ -1,21 +0,0 @@
1
- /**
2
- * Cursor provider adapter.
3
- *
4
- * CLEO provider adapter for Cursor AI code editor.
5
- * Default export is the adapter class for dynamic loading by AdapterManager.
6
- *
7
- * @task T5240
8
- */
9
- import { CursorAdapter } from './adapter.js';
10
- export { CursorAdapter } from './adapter.js';
11
- export { CursorHookProvider } from './hooks.js';
12
- export { CursorInstallProvider } from './install.js';
13
- export default CursorAdapter;
14
- /**
15
- * Factory function for creating adapter instances.
16
- * Used by AdapterManager's dynamic import fallback.
17
- */
18
- export function createAdapter() {
19
- return new CursorAdapter();
20
- }
21
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/cursor/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,eAAe,aAAa,CAAC;AAE7B;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,aAAa,EAAE,CAAC;AAC7B,CAAC"}
@@ -1,238 +0,0 @@
1
- /**
2
- * Cursor Install Provider
3
- *
4
- * Handles CLEO installation into Cursor environments:
5
- * - Registers CLEO MCP server in .cursor/mcp.json
6
- * - Ensures .cursorrules has CLEO @-references (legacy format)
7
- * - Creates .cursor/rules/cleo.mdc with CLEO references (modern format)
8
- *
9
- * Cursor supports two instruction file formats:
10
- * 1. Legacy: .cursorrules (flat file, project root)
11
- * 2. Modern: .cursor/rules/*.mdc (MDC format, per-rule files)
12
- *
13
- * This provider writes to both for maximum compatibility.
14
- *
15
- * @task T5240
16
- */
17
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
18
- import { join } from 'node:path';
19
- /** Lines that should appear in instruction files to reference CLEO. */
20
- const INSTRUCTION_REFERENCES = ['@~/.cleo/templates/CLEO-INJECTION.md', '@.cleo/memory-bridge.md'];
21
- /** MCP server registration key used in Cursor config. */
22
- const MCP_SERVER_KEY = 'cleo';
23
- /**
24
- * Install provider for Cursor.
25
- *
26
- * Manages CLEO's integration with Cursor by:
27
- * 1. Registering the CLEO MCP server in .cursor/mcp.json
28
- * 2. Creating/updating .cursorrules with @-references (legacy)
29
- * 3. Creating .cursor/rules/cleo.mdc with @-references (modern)
30
- */
31
- export class CursorInstallProvider {
32
- installedProjectDir = null;
33
- /**
34
- * Install CLEO into a Cursor project.
35
- *
36
- * @param options - Installation options including project directory and MCP server path
37
- * @returns Result describing what was installed
38
- */
39
- async install(options) {
40
- const { projectDir, mcpServerPath } = options;
41
- const installedAt = new Date().toISOString();
42
- let instructionFileUpdated = false;
43
- let mcpRegistered = false;
44
- const details = {};
45
- // Step 1: Register MCP server in .cursor/mcp.json
46
- if (mcpServerPath) {
47
- mcpRegistered = this.registerMcpServer(projectDir, mcpServerPath);
48
- if (mcpRegistered) {
49
- details.mcpConfigPath = join(projectDir, '.cursor', 'mcp.json');
50
- }
51
- }
52
- // Step 2: Ensure instruction files have @-references
53
- instructionFileUpdated = this.updateInstructionFiles(projectDir);
54
- if (instructionFileUpdated) {
55
- details.instructionFiles = this.getUpdatedFileList(projectDir);
56
- }
57
- this.installedProjectDir = projectDir;
58
- return {
59
- success: true,
60
- installedAt,
61
- instructionFileUpdated,
62
- mcpRegistered,
63
- details,
64
- };
65
- }
66
- /**
67
- * Uninstall CLEO from the current Cursor project.
68
- *
69
- * Removes the MCP server registration from .cursor/mcp.json.
70
- * Does not remove instruction file references (they are harmless if CLEO is not present).
71
- */
72
- async uninstall() {
73
- if (!this.installedProjectDir)
74
- return;
75
- const mcpPath = join(this.installedProjectDir, '.cursor', 'mcp.json');
76
- if (existsSync(mcpPath)) {
77
- try {
78
- const raw = readFileSync(mcpPath, 'utf-8');
79
- const config = JSON.parse(raw);
80
- const mcpServers = config.mcpServers;
81
- if (mcpServers && MCP_SERVER_KEY in mcpServers) {
82
- delete mcpServers[MCP_SERVER_KEY];
83
- writeFileSync(mcpPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
84
- }
85
- }
86
- catch {
87
- // Ignore errors during uninstall
88
- }
89
- }
90
- this.installedProjectDir = null;
91
- }
92
- /**
93
- * Check whether CLEO is installed in the current environment.
94
- *
95
- * Checks for MCP server registered in .cursor/mcp.json.
96
- */
97
- async isInstalled() {
98
- const mcpPath = join(process.cwd(), '.cursor', 'mcp.json');
99
- if (existsSync(mcpPath)) {
100
- try {
101
- const config = JSON.parse(readFileSync(mcpPath, 'utf-8'));
102
- const mcpServers = config.mcpServers;
103
- if (mcpServers && MCP_SERVER_KEY in mcpServers) {
104
- return true;
105
- }
106
- }
107
- catch {
108
- // Fall through
109
- }
110
- }
111
- return false;
112
- }
113
- /**
114
- * Ensure instruction files contain @-references to CLEO.
115
- *
116
- * Updates .cursorrules (legacy) and creates .cursor/rules/cleo.mdc (modern).
117
- *
118
- * @param projectDir - Project root directory
119
- */
120
- async ensureInstructionReferences(projectDir) {
121
- this.updateInstructionFiles(projectDir);
122
- }
123
- /**
124
- * Register the CLEO MCP server in .cursor/mcp.json.
125
- *
126
- * Cursor stores MCP server configuration in .cursor/mcp.json
127
- * under the mcpServers key.
128
- *
129
- * @returns true if registration was performed or updated
130
- */
131
- registerMcpServer(projectDir, mcpServerPath) {
132
- const cursorDir = join(projectDir, '.cursor');
133
- const mcpPath = join(cursorDir, 'mcp.json');
134
- let config = {};
135
- mkdirSync(cursorDir, { recursive: true });
136
- if (existsSync(mcpPath)) {
137
- try {
138
- config = JSON.parse(readFileSync(mcpPath, 'utf-8'));
139
- }
140
- catch {
141
- // Start fresh on parse error
142
- }
143
- }
144
- if (!config.mcpServers || typeof config.mcpServers !== 'object') {
145
- config.mcpServers = {};
146
- }
147
- const mcpServers = config.mcpServers;
148
- mcpServers[MCP_SERVER_KEY] = {
149
- command: 'node',
150
- args: [mcpServerPath],
151
- };
152
- writeFileSync(mcpPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
153
- return true;
154
- }
155
- /**
156
- * Update instruction files with CLEO @-references.
157
- *
158
- * Handles both legacy (.cursorrules) and modern (.cursor/rules/cleo.mdc) formats.
159
- *
160
- * @returns true if any file was created or modified
161
- */
162
- updateInstructionFiles(projectDir) {
163
- let updated = false;
164
- // Update legacy .cursorrules if it exists
165
- if (this.updateLegacyRules(projectDir)) {
166
- updated = true;
167
- }
168
- // Create/update modern .cursor/rules/cleo.mdc
169
- if (this.updateModernRules(projectDir)) {
170
- updated = true;
171
- }
172
- return updated;
173
- }
174
- /**
175
- * Update legacy .cursorrules file with @-references.
176
- * Only modifies the file if it already exists (does not create it).
177
- *
178
- * @returns true if the file was modified
179
- */
180
- updateLegacyRules(projectDir) {
181
- const rulesPath = join(projectDir, '.cursorrules');
182
- if (!existsSync(rulesPath)) {
183
- return false;
184
- }
185
- let content = readFileSync(rulesPath, 'utf-8');
186
- const missingRefs = INSTRUCTION_REFERENCES.filter((ref) => !content.includes(ref));
187
- if (missingRefs.length === 0) {
188
- return false;
189
- }
190
- const separator = content.endsWith('\n') ? '' : '\n';
191
- content = content + separator + missingRefs.join('\n') + '\n';
192
- writeFileSync(rulesPath, content, 'utf-8');
193
- return true;
194
- }
195
- /**
196
- * Create or update .cursor/rules/cleo.mdc with CLEO references.
197
- *
198
- * MDC (Markdown Component) format is Cursor's modern rule file format.
199
- * Each .mdc file in .cursor/rules/ is loaded as a rule set.
200
- *
201
- * @returns true if the file was created or modified
202
- */
203
- updateModernRules(projectDir) {
204
- const rulesDir = join(projectDir, '.cursor', 'rules');
205
- const mdcPath = join(rulesDir, 'cleo.mdc');
206
- const expectedContent = [
207
- '---',
208
- 'description: CLEO task management protocol references',
209
- 'globs: "**/*"',
210
- 'alwaysApply: true',
211
- '---',
212
- '',
213
- ...INSTRUCTION_REFERENCES,
214
- '',
215
- ].join('\n');
216
- if (existsSync(mdcPath)) {
217
- const existing = readFileSync(mdcPath, 'utf-8');
218
- if (existing === expectedContent) {
219
- return false;
220
- }
221
- }
222
- mkdirSync(rulesDir, { recursive: true });
223
- writeFileSync(mdcPath, expectedContent, 'utf-8');
224
- return true;
225
- }
226
- /**
227
- * Get list of instruction files that were updated.
228
- */
229
- getUpdatedFileList(projectDir) {
230
- const files = [];
231
- if (existsSync(join(projectDir, '.cursorrules'))) {
232
- files.push(join(projectDir, '.cursorrules'));
233
- }
234
- files.push(join(projectDir, '.cursor', 'rules', 'cleo.mdc'));
235
- return files;
236
- }
237
- }
238
- //# sourceMappingURL=install.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/providers/cursor/install.ts"],"names":[],"mappings":"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"}
@@ -1,59 +0,0 @@
1
- /**
2
- * Cursor Spawn Provider
3
- *
4
- * Cursor is a GUI-based AI code editor and does not support
5
- * CLI-based subagent spawning. This provider implements
6
- * the AdapterSpawnProvider interface with appropriate rejections.
7
- *
8
- * @task T5240
9
- */
10
- /**
11
- * Spawn provider for Cursor.
12
- *
13
- * Cursor does not support subagent spawning via CLI. The adapter
14
- * declares supportsSpawn: false in its capabilities. All methods
15
- * either reject or return empty results.
16
- */
17
- export class CursorSpawnProvider {
18
- /**
19
- * Check if Cursor supports spawning subagents.
20
- *
21
- * @returns false (Cursor does not support CLI spawning)
22
- */
23
- async canSpawn() {
24
- return false;
25
- }
26
- /**
27
- * Attempt to spawn a subagent via Cursor.
28
- *
29
- * Always throws because Cursor does not support subagent spawning.
30
- * Callers should check canSpawn() before calling this method.
31
- *
32
- * @param _context - Unused; spawning is not supported
33
- * @throws Error explaining that Cursor does not support subagent spawning
34
- */
35
- async spawn(_context) {
36
- throw new Error('Cursor does not support subagent spawning. ' +
37
- 'Cursor is a GUI-based editor without CLI subagent capabilities. ' +
38
- 'Use a provider that supports spawning (e.g., Claude Code or OpenCode).');
39
- }
40
- /**
41
- * List running Cursor subagent processes.
42
- *
43
- * @returns Empty array (no processes can be spawned)
44
- */
45
- async listRunning() {
46
- return [];
47
- }
48
- /**
49
- * Terminate a Cursor subagent process.
50
- *
51
- * No-op because Cursor cannot spawn processes.
52
- *
53
- * @param _instanceId - Unused; no processes to terminate
54
- */
55
- async terminate(_instanceId) {
56
- // No-op: Cursor does not spawn processes.
57
- }
58
- }
59
- //# sourceMappingURL=spawn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/providers/cursor/spawn.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;;GAMG;AACH,MAAM,OAAO,mBAAmB;IAC9B;;;;OAIG;IACH,KAAK,CAAC,QAAQ;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,KAAK,CAAC,QAAsB;QAChC,MAAM,IAAI,KAAK,CACb,6CAA6C;YAC3C,kEAAkE;YAClE,wEAAwE,CAC3E,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,SAAS,CAAC,WAAmB;QACjC,0CAA0C;IAC5C,CAAC;CACF"}