orquesta-agent 0.2.235 → 0.2.238

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 (43) hide show
  1. package/README.md +45 -0
  2. package/dist/cli-auth-detect.d.ts +17 -0
  3. package/dist/cli-auth-detect.d.ts.map +1 -0
  4. package/dist/cli-auth-detect.js +31 -0
  5. package/dist/cli-auth-detect.js.map +1 -0
  6. package/dist/executor.d.ts +12 -4
  7. package/dist/executor.d.ts.map +1 -1
  8. package/dist/executor.js +201 -66
  9. package/dist/executor.js.map +1 -1
  10. package/dist/hook.d.ts +26 -1
  11. package/dist/hook.d.ts.map +1 -1
  12. package/dist/hook.js +170 -21
  13. package/dist/hook.js.map +1 -1
  14. package/dist/index.js +28 -14
  15. package/dist/index.js.map +1 -1
  16. package/dist/init.d.ts +42 -0
  17. package/dist/init.d.ts.map +1 -1
  18. package/dist/init.js +100 -28
  19. package/dist/init.js.map +1 -1
  20. package/dist/sandbox.d.ts.map +1 -1
  21. package/dist/sandbox.js +4 -0
  22. package/dist/sandbox.js.map +1 -1
  23. package/dist/supabase.d.ts +16 -8
  24. package/dist/supabase.d.ts.map +1 -1
  25. package/dist/supabase.js +30 -2
  26. package/dist/supabase.js.map +1 -1
  27. package/dist/types/hook-types.d.ts +49 -1
  28. package/dist/types/hook-types.d.ts.map +1 -1
  29. package/dist/ui/onboarding.js +1 -1
  30. package/dist/ui/onboarding.js.map +1 -1
  31. package/dist/ui/public/app.js +11 -1
  32. package/dist/ui/public/index.html +1 -0
  33. package/dist/ui/public/style.css +1 -0
  34. package/dist/ui/public/welcome.html +2 -0
  35. package/dist/ui/server.d.ts +1 -1
  36. package/dist/ui/server.d.ts.map +1 -1
  37. package/dist/ui/server.js +2 -2
  38. package/dist/ui/server.js.map +1 -1
  39. package/dist/ui/types.d.ts +1 -1
  40. package/dist/ui/types.d.ts.map +1 -1
  41. package/dist/ws-client.d.ts +1 -1
  42. package/dist/ws-client.d.ts.map +1 -1
  43. package/package.json +1 -1
package/dist/hook.d.ts CHANGED
@@ -7,5 +7,30 @@
7
7
  * Zero npm dependencies — uses only Node.js built-ins for fast startup.
8
8
  * Always exits 0 to never block Claude.
9
9
  */
10
- export declare function handleHookEvent(event: string): Promise<void>;
10
+ import type { HookClient } from './types/hook-types.js';
11
+ /**
12
+ * Which tool invoked us. The explicit flag (written by `init`) wins; otherwise
13
+ * fall back to the payload shape. Claude Code sends `session_id`, Cursor sends
14
+ * `conversation_id`, and only Cursor uses camelCase event names.
15
+ */
16
+ export declare function detectClient(hookData: any, explicit?: string): HookClient;
17
+ /**
18
+ * Map a Cursor hook payload onto the Claude Code field names the handlers below
19
+ * already speak. Claude Code payloads pass through untouched.
20
+ *
21
+ * Cursor differences we bridge:
22
+ * - `conversation_id` is the stable session id (`generation_id` changes per turn)
23
+ * - `workspace_roots[0]` / $CURSOR_PROJECT_DIR stands in for `cwd`
24
+ * - `postToolUse` returns `tool_output`, not `tool_result`
25
+ * - shell runs and file edits arrive as their OWN events rather than as a
26
+ * generic tool event, so we synthesize Bash/Edit tool calls for them
27
+ */
28
+ export declare function normalizeHookData(raw: any): any;
29
+ /**
30
+ * Identity of a tool call for de-duplication. Content-based rather than
31
+ * id-based on purpose: the SAME shell command reaching us through two different
32
+ * Cursor hooks carries two different `tool_use_id`s but identical content.
33
+ */
34
+ export declare function toolDedupeKey(toolName: string, toolInput: Record<string, unknown>): string;
35
+ export declare function handleHookEvent(event: string, clientOpt?: string): Promise<void>;
11
36
  //# sourceMappingURL=hook.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA6YH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyClE"}
1
+ {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAIV,UAAU,EACX,MAAM,uBAAuB,CAAA;AAY9B;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAOzE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAwC/C;AAicD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAU1F;AAID,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDtF"}
package/dist/hook.js CHANGED
@@ -10,6 +10,83 @@
10
10
  import * as fs from 'fs';
11
11
  import * as path from 'path';
12
12
  import * as os from 'os';
13
+ // --- Client normalization ---
14
+ // Cursor event names, used to detect the client when no --client flag was passed
15
+ // (e.g. a hooks.json written by an older orquesta-agent, or hand-edited).
16
+ const CURSOR_EVENT_NAMES = new Set([
17
+ 'beforeSubmitPrompt', 'postToolUse', 'postToolUseFailure', 'preToolUse',
18
+ 'afterFileEdit', 'beforeShellExecution', 'afterShellExecution',
19
+ 'afterAgentResponse', 'afterAgentThought', 'sessionStart', 'sessionEnd', 'stop',
20
+ ]);
21
+ /**
22
+ * Which tool invoked us. The explicit flag (written by `init`) wins; otherwise
23
+ * fall back to the payload shape. Claude Code sends `session_id`, Cursor sends
24
+ * `conversation_id`, and only Cursor uses camelCase event names.
25
+ */
26
+ export function detectClient(hookData, explicit) {
27
+ if (explicit === 'cursor' || explicit === 'claude')
28
+ return explicit;
29
+ if (hookData?.conversation_id && !hookData?.session_id)
30
+ return 'cursor';
31
+ if (typeof hookData?.hook_event_name === 'string' && CURSOR_EVENT_NAMES.has(hookData.hook_event_name)) {
32
+ return 'cursor';
33
+ }
34
+ return 'claude';
35
+ }
36
+ /**
37
+ * Map a Cursor hook payload onto the Claude Code field names the handlers below
38
+ * already speak. Claude Code payloads pass through untouched.
39
+ *
40
+ * Cursor differences we bridge:
41
+ * - `conversation_id` is the stable session id (`generation_id` changes per turn)
42
+ * - `workspace_roots[0]` / $CURSOR_PROJECT_DIR stands in for `cwd`
43
+ * - `postToolUse` returns `tool_output`, not `tool_result`
44
+ * - shell runs and file edits arrive as their OWN events rather than as a
45
+ * generic tool event, so we synthesize Bash/Edit tool calls for them
46
+ */
47
+ export function normalizeHookData(raw) {
48
+ const d = { ...(raw || {}) };
49
+ if (!d.session_id)
50
+ d.session_id = d.conversation_id;
51
+ if (!d.cwd) {
52
+ d.cwd = (Array.isArray(d.workspace_roots) && d.workspace_roots[0])
53
+ || process.env.CURSOR_PROJECT_DIR
54
+ || process.env.CLAUDE_PROJECT_DIR
55
+ || undefined;
56
+ }
57
+ if (d.tool_result === undefined && d.tool_output !== undefined) {
58
+ d.tool_result = d.tool_output;
59
+ }
60
+ switch (d.hook_event_name) {
61
+ case 'beforeShellExecution':
62
+ case 'afterShellExecution':
63
+ if (!d.tool_name)
64
+ d.tool_name = 'Bash';
65
+ if (!d.tool_input)
66
+ d.tool_input = { command: d.command };
67
+ if (d.tool_result === undefined && d.output !== undefined)
68
+ d.tool_result = d.output;
69
+ break;
70
+ case 'afterFileEdit': {
71
+ if (!d.tool_name)
72
+ d.tool_name = 'Edit';
73
+ const edits = Array.isArray(d.edits) ? d.edits : [];
74
+ if (!d.tool_input) {
75
+ d.tool_input = {
76
+ file_path: d.file_path,
77
+ old_string: edits[0]?.old_string,
78
+ new_string: edits[0]?.new_string,
79
+ };
80
+ }
81
+ if (d.tool_result === undefined) {
82
+ const n = edits.length;
83
+ d.tool_result = { content: `${n} edit${n === 1 ? '' : 's'} applied to ${d.file_path}` };
84
+ }
85
+ break;
86
+ }
87
+ }
88
+ return d;
89
+ }
13
90
  // --- Utility functions ---
14
91
  function readStdin() {
15
92
  return new Promise((resolve) => {
@@ -161,22 +238,29 @@ async function fetchCoordinationBlock(config) {
161
238
  return '';
162
239
  }
163
240
  }
164
- async function handlePromptSubmit(hookData, config) {
241
+ async function handlePromptSubmit(hookData, config, client = 'claude') {
165
242
  // Inject a short Orquesta context block into Claude's context.
166
243
  // Claude Code captures UserPromptSubmit stdout and feeds it to the model.
167
244
  // Wrapped defensively — never let this break the logging path.
168
- try {
169
- process.stdout.write(buildOrquestaContext(config));
170
- // Inject active coordination channels too, if any. Fetched per-prompt so newly-created
171
- // bridges are visible immediately. ~1s upper bound — race against a short timeout.
172
- const coord = await Promise.race([
173
- fetchCoordinationBlock(config),
174
- new Promise(resolve => setTimeout(() => resolve(''), 1500)),
175
- ]);
176
- if (coord)
177
- process.stdout.write(coord);
245
+ //
246
+ // Cursor is DELIBERATELY excluded: its hooks must emit either nothing or a
247
+ // well-formed JSON permission object on stdout, so writing a plain-text block
248
+ // there risks blocking the user's prompt. Mirroring still works — we just
249
+ // don't inject context. See the Cursor hooks docs for the stdout contract.
250
+ if (client !== 'cursor') {
251
+ try {
252
+ process.stdout.write(buildOrquestaContext(config));
253
+ // Inject active coordination channels too, if any. Fetched per-prompt so newly-created
254
+ // bridges are visible immediately. ~1s upper bound — race against a short timeout.
255
+ const coord = await Promise.race([
256
+ fetchCoordinationBlock(config),
257
+ new Promise(resolve => setTimeout(() => resolve(''), 1500)),
258
+ ]);
259
+ if (coord)
260
+ process.stdout.write(coord);
261
+ }
262
+ catch { }
178
263
  }
179
- catch { }
180
264
  // Clean stale session files
181
265
  cleanStaleSessionFiles();
182
266
  const sessionId = hookData.session_id;
@@ -185,11 +269,13 @@ async function handlePromptSubmit(hookData, config) {
185
269
  // Extract prompt content from hook data
186
270
  const promptContent = hookData.prompt
187
271
  || hookData.message?.content
188
- || '(Claude Code session)';
272
+ || (client === 'cursor' ? '(Cursor session)' : '(Claude Code session)');
189
273
  // Create prompt in Orquesta
190
274
  const { ok, data } = await apiCall(`${config.apiUrl}/api/orquesta-cli/prompts`, 'POST', config.token, {
191
275
  content: typeof promptContent === 'string' ? promptContent : JSON.stringify(promptContent),
192
- cliType: 'claude-code',
276
+ // Must be one of prompts_cli_type_check (see 20260814_cli_type_cursor.sql) —
277
+ // an unlisted value fails the CHECK and the prompt is never created.
278
+ cliType: client === 'cursor' ? 'cursor-cli' : 'claude-code',
193
279
  // Spell out the target project. Hooks enrolled from the terminal cockpit
194
280
  // carry an ORG-scoped token (oclt_), which may write to any project in the
195
281
  // org — so the server rejects the prompt outright ("projectId is required
@@ -197,7 +283,7 @@ async function handlePromptSubmit(hookData, config) {
197
283
  // resolve it themselves and simply ignore this field.
198
284
  projectId: config.projectId,
199
285
  context: {
200
- source: 'claude-code-hook',
286
+ source: client === 'cursor' ? 'cursor-hook' : 'claude-code-hook',
201
287
  cwd: hookData.cwd,
202
288
  sessionId,
203
289
  },
@@ -229,6 +315,12 @@ async function handleToolUse(hookData, config) {
229
315
  const toolName = hookData.tool_name || 'unknown';
230
316
  const toolInput = hookData.tool_input || {};
231
317
  const toolResult = hookData.tool_result;
318
+ // Drop repeats of an action we already mirrored (see SessionState.seenToolKeys).
319
+ const dedupeKey = toolDedupeKey(toolName, toolInput);
320
+ const seen = session.seenToolKeys || [];
321
+ if (seen.includes(dedupeKey))
322
+ return;
323
+ session.seenToolKeys = [...seen, dedupeKey].slice(-20);
232
324
  // Increment sequence
233
325
  session.sequence += 1;
234
326
  const seq = session.sequence;
@@ -292,7 +384,40 @@ async function handleToolUse(hookData, config) {
292
384
  // Update session state with new sequence
293
385
  writeSessionState(sessionId, session);
294
386
  }
295
- async function handleStop(hookData, config) {
387
+ /**
388
+ * Mirror the assistant's final answer.
389
+ *
390
+ * Only Cursor drives this today: its `stop` payload carries no text, so
391
+ * `afterAgentResponse` is the sole place the answer is exposed to a hook.
392
+ * Without it the mirrored prompt would show every tool call but no conclusion.
393
+ */
394
+ async function handleAssistantText(hookData, config) {
395
+ const sessionId = hookData.session_id;
396
+ if (!sessionId)
397
+ return;
398
+ const session = readSessionState(sessionId);
399
+ if (!session)
400
+ return;
401
+ const text = typeof hookData.text === 'string'
402
+ ? hookData.text
403
+ : (typeof hookData.message?.content === 'string' ? hookData.message.content : '');
404
+ if (!text.trim())
405
+ return;
406
+ session.sequence += 1;
407
+ await apiCall(`${session.apiUrl}/api/prompts/${session.promptId}/logs`, 'POST', session.token, {
408
+ logs: [{
409
+ type: 'output',
410
+ level: 'info',
411
+ sequence: session.sequence,
412
+ output: {
413
+ content: truncate(text, 10000),
414
+ stream: 'assistant',
415
+ },
416
+ }],
417
+ });
418
+ writeSessionState(sessionId, session);
419
+ }
420
+ async function handleStop(hookData, config, client = 'claude') {
296
421
  const sessionId = hookData.session_id;
297
422
  if (!sessionId)
298
423
  return;
@@ -308,7 +433,7 @@ async function handleStop(hookData, config) {
308
433
  sequence: session.sequence,
309
434
  system: {
310
435
  event: 'complete',
311
- message: 'Claude Code session completed',
436
+ message: client === 'cursor' ? 'Cursor session completed' : 'Claude Code session completed',
312
437
  },
313
438
  }],
314
439
  });
@@ -350,8 +475,25 @@ function sanitizeToolInput(toolName, input) {
350
475
  function truncate(str, maxLen) {
351
476
  return str.length > maxLen ? str.slice(0, maxLen) + '...' : str;
352
477
  }
478
+ /**
479
+ * Identity of a tool call for de-duplication. Content-based rather than
480
+ * id-based on purpose: the SAME shell command reaching us through two different
481
+ * Cursor hooks carries two different `tool_use_id`s but identical content.
482
+ */
483
+ export function toolDedupeKey(toolName, toolInput) {
484
+ let payload;
485
+ try {
486
+ // Stable key regardless of property order.
487
+ const keys = Object.keys(toolInput).sort();
488
+ payload = JSON.stringify(keys.map(k => [k, toolInput[k]]));
489
+ }
490
+ catch {
491
+ payload = String(Object.keys(toolInput).sort().join(','));
492
+ }
493
+ return `${toolName}:${truncate(payload, 500)}`;
494
+ }
353
495
  // --- Main entry point ---
354
- export async function handleHookEvent(event) {
496
+ export async function handleHookEvent(event, clientOpt) {
355
497
  try {
356
498
  // Find project config
357
499
  const config = findOrquestaConfig(process.cwd());
@@ -371,23 +513,30 @@ export async function handleHookEvent(event) {
371
513
  process.exit(0);
372
514
  }
373
515
  }
516
+ // Cursor speaks a different dialect of the same protocol — translate before
517
+ // any handler sees it, so the handlers stay single-shape.
518
+ const client = detectClient(hookData, clientOpt);
519
+ hookData = normalizeHookData(hookData);
374
520
  // Route to handler
375
521
  switch (event) {
376
522
  case 'prompt-submit':
377
- await handlePromptSubmit(hookData, config);
523
+ await handlePromptSubmit(hookData, config, client);
378
524
  break;
379
525
  case 'tool-use':
380
526
  await handleToolUse(hookData, config);
381
527
  break;
528
+ case 'assistant-text':
529
+ await handleAssistantText(hookData, config);
530
+ break;
382
531
  case 'stop':
383
- await handleStop(hookData, config);
532
+ await handleStop(hookData, config, client);
384
533
  break;
385
534
  default:
386
535
  process.stderr.write(`[orquesta-hook] Unknown event: ${event}\n`);
387
536
  }
388
537
  }
389
538
  catch (err) {
390
- // Never block Claude — log error and exit cleanly
539
+ // Never block the host IDE — log error and exit cleanly
391
540
  process.stderr.write(`[orquesta-hook] Error: ${err}\n`);
392
541
  }
393
542
  process.exit(0);
package/dist/hook.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -31,10 +31,10 @@ import { fileURLToPath } from 'url';
31
31
  import * as logger from './logger.js';
32
32
  import { startDaemon, isDaemonChild, acquireSingleInstanceLock } from './daemon.js';
33
33
  import { getCliTokenHash } from './cli-config.js';
34
- import { validateToken, markDisconnected, subscribeToChannel, setAgentToken, reportAgentError, reportAgentProblem, persistAgentSettings, startHeartbeat, stopHeartbeat, setPermissionModeUpdater, setCliPreferenceUpdater, setCliEndpointUpdater, setBrowserEnabledUpdater, setSandboxUpdater, setSandboxAccessUpdater, setCurrentProjectId, getCurrentProjectId, fetchCredentials, fetchSkills, syncSkillsToDirectory, uploadClaudeMd, setClaudeAuthChecker, setOrquestaCliChecker, setKimiCliChecker, setActiveCliResolver, setEffectiveConfigResolver, setAgentVersion, setAgentName, } from './supabase.js';
34
+ import { validateToken, markDisconnected, subscribeToChannel, setAgentToken, reportAgentError, reportAgentProblem, persistAgentSettings, startHeartbeat, stopHeartbeat, setPermissionModeUpdater, setCliPreferenceUpdater, setCliEndpointUpdater, setBrowserEnabledUpdater, setSandboxUpdater, setSandboxAccessUpdater, setCurrentProjectId, getCurrentProjectId, fetchCredentials, fetchSkills, syncSkillsToDirectory, uploadClaudeMd, setClaudeAuthChecker, setOrquestaCliChecker, setKimiCliChecker, setCursorCliChecker, setActiveCliResolver, setEffectiveConfigResolver, setAgentVersion, setAgentName, } from './supabase.js';
35
35
  import { createSocketIOConnection, createExecutionChannel, setupSocketIOListeners, } from './socketio-transport.js';
36
36
  import { execSync, spawn } from 'child_process';
37
- import { execute, evaluate, cancel, cancelAll, hasRunningProcesses, checkClaudeAuth, configureAuth, gitClone, gitPull, setPermissionMode, setSandboxConfig, setSandboxAccess, setAgentInstructions, setProjectSettings, handleSupervisionResponse, setInjectedCredentials, generatePlanItems, isOrquestaCliAvailable, isClaudeCliAvailable, setCliPreference, setCliEndpoint, setBrowserEnabled, selectCli, isKimiCliAvailable,
37
+ import { execute, evaluate, cancel, cancelAll, hasRunningProcesses, checkClaudeAuth, configureAuth, gitClone, gitPull, setPermissionMode, setSandboxConfig, setSandboxAccess, setAgentInstructions, setProjectSettings, handleSupervisionResponse, setInjectedCredentials, generatePlanItems, isOrquestaCliAvailable, isClaudeCliAvailable, setCliPreference, setCliEndpoint, setBrowserEnabled, selectCli, isKimiCliAvailable, isCursorCliAvailable, checkCursorAuth,
38
38
  // Interactive session functions
39
39
  startSession, sendSessionInput, endSession, terminateSession, hasActiveSession, hasActiveSessionFor, getEffectiveRuntimeConfig, getSessionStatus, resizeSession, setOnSessionEnded, listResumableSessions, } from './executor.js';
40
40
  import { startBrowserSession, endBrowserSession, tunnelInbound, openBrowserTunnel, browserRpc, runBrowserGoal, pauseBrowserGoal, resumeBrowserGoal, cancelBrowserGoal, shutdownAllBrowserSessions, } from './browser.js';
@@ -158,6 +158,7 @@ async function connect(options) {
158
158
  authenticated: getCliTokenHash() !== null,
159
159
  }));
160
160
  setKimiCliChecker(() => ({ available: isKimiCliAvailable() }));
161
+ setCursorCliChecker(() => checkCursorAuth());
161
162
  // Resolve BOTH the active CLI and the reason (incl. fallback) so the dashboard
162
163
  // can surface "preferred X but using Y because X isn't installed".
163
164
  setActiveCliResolver(() => selectCli());
@@ -354,8 +355,13 @@ async function connect(options) {
354
355
  available.push('claude (Anthropic API)');
355
356
  if (isKimiCliAvailable())
356
357
  available.push('kimi (Kimi Code)');
358
+ // Installed but logged out is worth saying at startup: the CLI counts as
359
+ // available (selectCli will pick it) yet every prompt would fail on auth.
360
+ if (isCursorCliAvailable()) {
361
+ available.push(checkCursorAuth().authenticated ? 'cursor (cursor-agent)' : 'cursor (cursor-agent — NOT logged in, run `cursor-agent login`)');
362
+ }
357
363
  if (available.length === 0) {
358
- logger.warn('⚠ No CLI found (orquesta, claude, kimi)');
364
+ logger.warn('⚠ No CLI found (orquesta, claude, kimi, cursor)');
359
365
  }
360
366
  else {
361
367
  logger.info(`Available CLIs: ${available.join(', ')}`);
@@ -365,7 +371,8 @@ async function connect(options) {
365
371
  if (selectedCli) {
366
372
  const label = selectedCli === 'orquesta' ? 'Orquesta CLI (local LLM)'
367
373
  : selectedCli === 'kimi' ? 'Kimi Code CLI'
368
- : 'Claude CLI (Anthropic API)';
374
+ : selectedCli === 'cursor' ? 'Cursor CLI (cursor-agent)'
375
+ : 'Claude CLI (Anthropic API)';
369
376
  logger.success(`✓ Using: ${label}`);
370
377
  logger.debug(`Selection reason: ${reason}`);
371
378
  }
@@ -1452,8 +1459,8 @@ program
1452
1459
  .option('--sandbox', 'Isolate the agent to its working directory using bubblewrap (rest of filesystem read-only). Requires bwrap on Linux.')
1453
1460
  .option('--sandbox-extra-paths <paths>', 'Comma-separated extra read-write paths when --sandbox is on.')
1454
1461
  .option('--sandbox-strict', 'Strict sandbox: also tmpfs-mask /home so the agent sees only its project + OS (hides other projects, ~/.ssh, ~/.aws, etc.) and reduce the spawned CLI env to an allowlist. Implies --sandbox.')
1455
- .option('--cli-preference <preference>', 'CLI preference: auto (prefer orquesta), orquesta (force orquesta), claude (force claude). Defaults to auto.')
1456
- .option('--mode <mode>', 'Alias for --cli-preference: orquesta (use Orquesta CLI) or claude (use Claude CLI)')
1462
+ .option('--cli-preference <preference>', 'CLI preference: auto (prefer orquesta), orquesta, claude, kimi, or cursor (cursor-agent). Defaults to auto.')
1463
+ .option('--mode <mode>', 'Alias for --cli-preference: auto, orquesta, claude, kimi or cursor')
1457
1464
  .option('--renew', 'Rotate this agent token: mint a fresh oat_, revoke the current one, print the new token, and exit. Update your start command/script with it to reconnect.')
1458
1465
  .option('-D, --daemon', 'Run in daemon mode with automatic restart on exit')
1459
1466
  .option('--max-restarts <number>', 'Maximum restart attempts in daemon mode (0=unlimited)', '0')
@@ -1477,7 +1484,7 @@ program
1477
1484
  options.cliPreference = options.mode;
1478
1485
  }
1479
1486
  // Validate CLI preference
1480
- if (options.cliPreference && !['auto', 'orquesta', 'claude', 'kimi'].includes(options.cliPreference)) {
1487
+ if (options.cliPreference && !['auto', 'orquesta', 'claude', 'kimi', 'cursor'].includes(options.cliPreference)) {
1481
1488
  logger.error('Invalid CLI preference/mode. Use "auto", "orquesta", "claude", or "kimi".');
1482
1489
  process.exit(1);
1483
1490
  }
@@ -1507,23 +1514,30 @@ program
1507
1514
  agentName: options.name,
1508
1515
  });
1509
1516
  });
1510
- // Hook command — Claude Code hook event handler
1517
+ // Hook command — Claude Code / Cursor hook event handler
1511
1518
  program
1512
1519
  .command('hook <event>')
1513
- .description('Handle Claude Code hook events (prompt-submit, tool-use, stop)')
1514
- .action(async (event) => {
1520
+ .description('Handle IDE hook events (prompt-submit, tool-use, assistant-text, stop)')
1521
+ .option('--client <client>', 'Which tool invoked the hook: claude or cursor (auto-detected if omitted)')
1522
+ .action(async (event, options) => {
1515
1523
  const { handleHookEvent } = await import('./hook.js');
1516
- await handleHookEvent(event);
1524
+ await handleHookEvent(event, options.client);
1517
1525
  });
1518
- // Init command — set up Claude Code hook integration
1526
+ // Init command — set up Claude Code / Cursor hook integration
1519
1527
  program
1520
1528
  .command('init')
1521
- .description('Initialize Claude Code hook integration for this project')
1529
+ .description('Initialize Orquesta hook integration for this project (Claude Code and/or Cursor)')
1522
1530
  .requiredOption('--token <token>', 'Orquesta token (oat_xxx or oclt_xxx)')
1523
1531
  .option('--api-url <url>', 'Orquesta API URL', 'https://getorquesta.com')
1532
+ .option('--client <client>', 'Which tool to wire: claude, cursor, or both', 'both')
1524
1533
  .action(async (options) => {
1525
1534
  const { initProject } = await import('./init.js');
1526
- await initProject(options);
1535
+ const client = options.client;
1536
+ if (!['claude', 'cursor', 'both'].includes(client)) {
1537
+ console.error(` Error: --client must be one of claude, cursor, both (got "${client}")`);
1538
+ process.exit(1);
1539
+ }
1540
+ await initProject({ ...options, client: client });
1527
1541
  });
1528
1542
  // Setup command
1529
1543
  program