agent-orchestration 0.5.0 → 0.6.0

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 (120) hide show
  1. package/.cursor/rules/orchestrator-auto.mdc +2 -0
  2. package/.cursor/rules/orchestrator-main.mdc +37 -7
  3. package/.cursor/rules/orchestrator-sub.mdc +89 -27
  4. package/README.md +278 -66
  5. package/dist/bin/cli.d.ts +1 -0
  6. package/dist/bin/cli.d.ts.map +1 -1
  7. package/dist/bin/cli.js +54 -157
  8. package/dist/bin/cli.js.map +1 -1
  9. package/dist/bin/cursorCommands.d.ts +3 -0
  10. package/dist/bin/cursorCommands.d.ts.map +1 -0
  11. package/dist/bin/cursorCommands.js +330 -0
  12. package/dist/bin/cursorCommands.js.map +1 -0
  13. package/dist/database.d.ts +32 -1
  14. package/dist/database.d.ts.map +1 -1
  15. package/dist/database.js +105 -5
  16. package/dist/database.js.map +1 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +6 -2
  19. package/dist/index.js.map +1 -1
  20. package/dist/models.d.ts +59 -0
  21. package/dist/models.d.ts.map +1 -1
  22. package/dist/models.js +69 -0
  23. package/dist/models.js.map +1 -1
  24. package/dist/providers/cursor.d.ts +14 -0
  25. package/dist/providers/cursor.d.ts.map +1 -0
  26. package/dist/providers/cursor.js +203 -0
  27. package/dist/providers/cursor.js.map +1 -0
  28. package/dist/providers/types.d.ts +60 -0
  29. package/dist/providers/types.d.ts.map +1 -0
  30. package/dist/providers/types.js +2 -0
  31. package/dist/providers/types.js.map +1 -0
  32. package/dist/tools/agent.d.ts.map +1 -1
  33. package/dist/tools/agent.js +5 -0
  34. package/dist/tools/agent.js.map +1 -1
  35. package/dist/tools/coordination.d.ts.map +1 -1
  36. package/dist/tools/coordination.js +47 -0
  37. package/dist/tools/coordination.js.map +1 -1
  38. package/dist/tools/index.d.ts +3 -0
  39. package/dist/tools/index.d.ts.map +1 -1
  40. package/dist/tools/index.js +3 -0
  41. package/dist/tools/index.js.map +1 -1
  42. package/dist/tools/memory.d.ts.map +1 -1
  43. package/dist/tools/memory.js +6 -1
  44. package/dist/tools/memory.js.map +1 -1
  45. package/dist/tools/provider.d.ts +3 -0
  46. package/dist/tools/provider.d.ts.map +1 -0
  47. package/dist/tools/provider.js +403 -0
  48. package/dist/tools/provider.js.map +1 -0
  49. package/dist/tools/proxy.d.ts +6 -0
  50. package/dist/tools/proxy.d.ts.map +1 -0
  51. package/dist/tools/proxy.js +107 -0
  52. package/dist/tools/proxy.js.map +1 -0
  53. package/dist/tools/research.d.ts +9 -0
  54. package/dist/tools/research.d.ts.map +1 -0
  55. package/dist/tools/research.js +182 -0
  56. package/dist/tools/research.js.map +1 -0
  57. package/dist/tools/task.d.ts.map +1 -1
  58. package/dist/tools/task.js +98 -9
  59. package/dist/tools/task.js.map +1 -1
  60. package/dist/tools/utility.d.ts.map +1 -1
  61. package/dist/tools/utility.js +85 -16
  62. package/dist/tools/utility.js.map +1 -1
  63. package/dist/utils/autoDocumentation.d.ts +8 -0
  64. package/dist/utils/autoDocumentation.d.ts.map +1 -0
  65. package/dist/utils/autoDocumentation.js +140 -0
  66. package/dist/utils/autoDocumentation.js.map +1 -0
  67. package/dist/utils/autoDocumentation.test.d.ts +2 -0
  68. package/dist/utils/autoDocumentation.test.d.ts.map +1 -0
  69. package/dist/utils/autoDocumentation.test.js +47 -0
  70. package/dist/utils/autoDocumentation.test.js.map +1 -0
  71. package/dist/utils/contextSync.d.ts.map +1 -1
  72. package/dist/utils/contextSync.js +21 -1
  73. package/dist/utils/contextSync.js.map +1 -1
  74. package/dist/utils/cursorCli.d.ts +46 -0
  75. package/dist/utils/cursorCli.d.ts.map +1 -0
  76. package/dist/utils/cursorCli.js +176 -0
  77. package/dist/utils/cursorCli.js.map +1 -0
  78. package/dist/utils/cursorCli.test.d.ts +2 -0
  79. package/dist/utils/cursorCli.test.d.ts.map +1 -0
  80. package/dist/utils/cursorCli.test.js +134 -0
  81. package/dist/utils/cursorCli.test.js.map +1 -0
  82. package/dist/utils/delegatedTaskRuntime.d.ts +45 -0
  83. package/dist/utils/delegatedTaskRuntime.d.ts.map +1 -0
  84. package/dist/utils/delegatedTaskRuntime.js +147 -0
  85. package/dist/utils/delegatedTaskRuntime.js.map +1 -0
  86. package/dist/utils/delegationKnowledge.d.ts +51 -0
  87. package/dist/utils/delegationKnowledge.d.ts.map +1 -0
  88. package/dist/utils/delegationKnowledge.js +197 -0
  89. package/dist/utils/delegationKnowledge.js.map +1 -0
  90. package/dist/utils/delegationRecovery.d.ts +17 -0
  91. package/dist/utils/delegationRecovery.d.ts.map +1 -0
  92. package/dist/utils/delegationRecovery.js +63 -0
  93. package/dist/utils/delegationRecovery.js.map +1 -0
  94. package/dist/utils/delegationRecovery.test.d.ts +2 -0
  95. package/dist/utils/delegationRecovery.test.d.ts.map +1 -0
  96. package/dist/utils/delegationRecovery.test.js +42 -0
  97. package/dist/utils/delegationRecovery.test.js.map +1 -0
  98. package/dist/utils/orchestratorConfig.d.ts +19 -0
  99. package/dist/utils/orchestratorConfig.d.ts.map +1 -0
  100. package/dist/utils/orchestratorConfig.js +38 -0
  101. package/dist/utils/orchestratorConfig.js.map +1 -0
  102. package/dist/utils/subprocess.d.ts +27 -0
  103. package/dist/utils/subprocess.d.ts.map +1 -0
  104. package/dist/utils/subprocess.js +84 -0
  105. package/dist/utils/subprocess.js.map +1 -0
  106. package/package.json +17 -5
  107. package/templates/AGENTS.md +164 -0
  108. package/activeContext.md +0 -37
  109. package/src/bin/cli.ts +0 -430
  110. package/src/database.ts +0 -764
  111. package/src/index.ts +0 -71
  112. package/src/models.ts +0 -226
  113. package/src/tools/agent.ts +0 -241
  114. package/src/tools/coordination.ts +0 -152
  115. package/src/tools/index.ts +0 -9
  116. package/src/tools/memory.ts +0 -150
  117. package/src/tools/task.ts +0 -334
  118. package/src/tools/utility.ts +0 -202
  119. package/src/utils/contextSync.ts +0 -144
  120. package/tsconfig.json +0 -20
package/dist/bin/cli.js CHANGED
@@ -6,10 +6,12 @@
6
6
  * init - Creates AGENTS.md for cross-IDE/CLI compatibility
7
7
  * init-cursor - Copies .cursor/rules/ for Cursor IDE
8
8
  * serve - Run the MCP server (used by IDEs via npx)
9
+ * cursor - Cursor-native orchestration helpers
9
10
  */
10
11
  import * as fs from 'fs';
11
12
  import * as path from 'path';
12
13
  import { fileURLToPath } from 'url';
14
+ import { runCursorCommand, runDocCommand } from './cursorCommands.js';
13
15
  const __filename = fileURLToPath(import.meta.url);
14
16
  const __dirname = path.dirname(__filename);
15
17
  // Path to the package root (dist/bin/cli.js -> ../../)
@@ -22,6 +24,15 @@ Usage:
22
24
  npx agent-orchestration init Create AGENTS.md (works with any AI agent)
23
25
  npx agent-orchestration init-cursor Setup for Cursor IDE (.cursor/rules/)
24
26
  npx agent-orchestration serve Run the MCP server
27
+ npx agent-orchestration doc --task <id> Generate task documentation
28
+ npx agent-orchestration cursor check Verify Cursor CLI integration
29
+ npx agent-orchestration cursor delegate --task <id> [--mode ask|plan|agent]
30
+ npx agent-orchestration cursor status --task <id>
31
+ npx agent-orchestration cursor resume --task <id> [--exec]
32
+ npx agent-orchestration cursor sync --task <id>
33
+ npx agent-orchestration cursor recover --task <id> [--force]
34
+ npx agent-orchestration cursor handoff --task <id> --summary "..."
35
+ npx agent-orchestration cursor list Show delegated Cursor tasks
25
36
  npx agent-orchestration help Show this help message
26
37
 
27
38
  Commands:
@@ -35,184 +46,51 @@ Commands:
35
46
  serve Runs the MCP server. IDEs call this via their MCP config.
36
47
  The server uses the current working directory as the project root.
37
48
 
49
+ doc Generates Markdown documentation for a task from orchestration state.
50
+
51
+ cursor Provides Cursor-native task delegation helpers.
52
+ Use "cursor check", "cursor delegate", "cursor status", "cursor resume",
53
+ "cursor sync", "cursor recover", "cursor handoff", or "cursor list".
54
+
38
55
  Example:
39
56
  cd /path/to/my-project
40
57
  npx agent-orchestration init
41
58
  `);
42
59
  }
43
60
  /**
44
- * Generate the AGENTS.md content with full orchestration instructions
61
+ * Load AGENTS.md template content from the package.
45
62
  */
46
- function generateAgentsMd() {
47
- return `# AGENTS.md
48
-
49
- This project uses **Agent Orchestration** for multi-agent coordination.
50
-
51
- ## MCP Server Setup
52
-
53
- Add this to your IDE's MCP configuration:
54
-
55
- \`\`\`json
56
- {
57
- "mcpServers": {
58
- "agent-orchestration": {
59
- "command": "npx",
60
- "args": ["-y", "agent-orchestration", "serve"],
61
- "env": {
62
- "MCP_ORCH_SYNC_CONTEXT": "true"
63
- }
63
+ function loadAgentsMdTemplate() {
64
+ const templatePath = path.join(packageRoot, 'templates', 'AGENTS.md');
65
+ try {
66
+ if (!fs.existsSync(templatePath)) {
67
+ throw new Error(`Missing template: ${templatePath}`);
68
+ }
69
+ return fs.readFileSync(templatePath, 'utf-8');
64
70
  }
65
- }
66
- }
67
- \`\`\`
68
-
69
- **Note**: Run from your project root. The server uses the current directory.
71
+ catch (error) {
72
+ // Fallback to a minimal stub so init still works even if the template isn't shipped.
73
+ console.warn('[init] Failed to load templates/AGENTS.md. Writing a minimal AGENTS.md instead.', error);
74
+ return `# AGENTS.md
70
75
 
71
- ---
76
+ This project uses **Agent Orchestration** for multi-agent coordination.
72
77
 
73
- ## First Action: Bootstrap
78
+ ## First Action
74
79
 
75
- Before doing any work, you MUST run:
80
+ Run the MCP tool:
76
81
 
77
82
  \`\`\`
78
83
  bootstrap
79
84
  \`\`\`
80
85
 
81
- This registers you with the orchestrator and shows:
82
- - Current project focus
83
- - Tasks assigned to you
84
- - Recent decisions
85
-
86
- ---
87
-
88
- ## If You Have a Specific Task
89
-
90
- If you were given a specific task to work on, run:
91
-
92
- \`\`\`
93
- claim_todo:
94
- title: "<the task title>"
95
- \`\`\`
96
-
97
- This registers you AND claims the task in one call.
98
-
99
- ---
100
-
101
- ## Available Tools
102
-
103
- ### Session Management
104
- | Tool | Description |
105
- |------|-------------|
106
- | \`bootstrap\` | Initialize session: register, get focus, tasks, decisions |
107
- | \`claim_todo\` | Register + claim a task in one call |
108
- | \`agent_whoami\` | Get your current agent info |
109
-
110
- ### Agent Coordination
111
- | Tool | Description |
112
- |------|-------------|
113
- | \`agent_register\` | Register with the orchestration system |
114
- | \`agent_heartbeat\` | Send heartbeat to indicate you're active |
115
- | \`agent_list\` | List all registered agents |
116
- | \`agent_unregister\` | Unregister (releases all locks) |
117
-
118
- ### Shared Memory
119
- | Tool | Description |
120
- |------|-------------|
121
- | \`memory_set\` | Store a value in shared memory |
122
- | \`memory_get\` | Retrieve a value from shared memory |
123
- | \`memory_list\` | List all keys in a namespace |
124
- | \`memory_delete\` | Delete a value from shared memory |
125
-
126
- ### Task Management
127
- | Tool | Description |
128
- |------|-------------|
129
- | \`task_create\` | Create a new task |
130
- | \`task_claim\` | Claim a task to work on |
131
- | \`task_update\` | Update task status or progress |
132
- | \`task_complete\` | Mark task as completed |
133
- | \`task_list\` | List tasks with filters |
134
- | \`is_my_turn\` | Check if work is available |
135
-
136
- ### Resource Locking
137
- | Tool | Description |
138
- |------|-------------|
139
- | \`lock_acquire\` | Acquire a lock on a file/resource |
140
- | \`lock_release\` | Release a held lock |
141
- | \`lock_check\` | Check if a resource is locked |
142
- | \`coordination_status\` | Get overall system status |
143
-
144
- ---
145
-
146
- ## Workflow for Main Orchestrator
147
-
148
- \`\`\`
149
- 1. bootstrap # Start session
150
- 2. memory_set current_focus "..." # Set project focus
151
- 3. task_create "Feature X" # Create tasks
152
- 4. coordination_status # Monitor progress
153
- \`\`\`
154
-
155
- ## Workflow for Sub-Agents
156
-
157
- \`\`\`
158
- 1. claim_todo "Feature X" # Register + claim
159
- 2. lock_acquire "src/feature.ts" # Lock before editing
160
- 3. [do the work]
161
- 4. task_complete <task_id> "Done" # Complete the task
162
- 5. agent_unregister # Clean up
163
- \`\`\`
164
-
165
- ---
166
-
167
- ## Memory Namespaces
168
-
169
- Use these namespaces for organization:
170
-
171
- | Namespace | Purpose | Example Keys |
172
- |-----------|---------|--------------|
173
- | \`context\` | Current state and focus | \`current_focus\`, \`current_branch\` |
174
- | \`decisions\` | Architectural decisions | \`auth_strategy\`, \`db_choice\` |
175
- | \`findings\` | Analysis results | \`perf_issues\`, \`security_audit\` |
176
- | \`blockers\` | Issues blocking progress | \`api_down\`, \`missing_deps\` |
177
-
178
- ---
179
-
180
- ## Coordination Patterns
181
-
182
- ### Before Editing Files
183
- \`\`\`
184
- lock_check: { resource: "src/file.ts" }
185
- lock_acquire: { resource: "src/file.ts", reason: "Implementing feature" }
186
- \`\`\`
187
-
188
- ### After Editing Files
189
- \`\`\`
190
- lock_release: { resource: "src/file.ts" }
191
- \`\`\`
192
-
193
- ### Check Before Major Work
194
- \`\`\`
195
- is_my_turn
196
- \`\`\`
197
-
198
- ### When Done
199
- \`\`\`
200
- task_complete: { task_id: "<id>", output: "Summary of changes" }
201
- agent_unregister
202
- \`\`\`
203
-
204
- ---
205
-
206
- ## Reference activeContext.md
207
-
208
- Check \`activeContext.md\` for current project state - it's auto-updated.
86
+ Note: \`bootstrap\` is an MCP tool invocation in your agent/IDE, not a terminal command.
209
87
  `;
88
+ }
210
89
  }
211
90
  /**
212
91
  * Run the MCP server
213
92
  */
214
93
  async function runServer() {
215
- // Import and start the server
216
94
  const { startServer } = await import('../index.js');
217
95
  await startServer();
218
96
  }
@@ -225,7 +103,7 @@ function initAgentsMd() {
225
103
  // 1. Create AGENTS.md
226
104
  const agentsMdPath = path.join(cwd, 'AGENTS.md');
227
105
  if (!fs.existsSync(agentsMdPath)) {
228
- fs.writeFileSync(agentsMdPath, generateAgentsMd());
106
+ fs.writeFileSync(agentsMdPath, loadAgentsMdTemplate());
229
107
  console.log('✓ Created AGENTS.md');
230
108
  }
231
109
  else {
@@ -359,6 +237,10 @@ _No tasks in progress._
359
237
 
360
238
  _No pending tasks. Create tasks using the \`task_create\` tool._
361
239
 
240
+ ## Cursor Delegations
241
+
242
+ _No Cursor delegations. Use \`cursor_delegate_task\` or the CLI cursor commands._
243
+
362
244
  ## Recent Decisions
363
245
 
364
246
  _No decisions recorded. Use \`memory_set\` in namespace "decisions" to record decisions._
@@ -395,6 +277,21 @@ switch (command) {
395
277
  process.exit(1);
396
278
  });
397
279
  break;
280
+ case 'doc':
281
+ try {
282
+ runDocCommand(args.slice(1));
283
+ }
284
+ catch (err) {
285
+ console.error('Doc command error:', err instanceof Error ? err.message : err);
286
+ process.exit(1);
287
+ }
288
+ break;
289
+ case 'cursor':
290
+ runCursorCommand(args.slice(1)).catch((err) => {
291
+ console.error('Cursor command error:', err instanceof Error ? err.message : err);
292
+ process.exit(1);
293
+ });
294
+ break;
398
295
  case 'help':
399
296
  case '--help':
400
297
  case '-h':
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function runDocCommand(args: string[]): void;
2
+ export declare function runCursorCommand(args: string[]): Promise<void>;
3
+ //# sourceMappingURL=cursorCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursorCommands.d.ts","sourceRoot":"","sources":["../../src/bin/cursorCommands.ts"],"names":[],"mappings":"AA2BA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAalD;AAuTD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BpE"}
@@ -0,0 +1,330 @@
1
+ import { spawn } from 'child_process';
2
+ import { getDatabase } from '../database.js';
3
+ import { CursorProvider, getCursorMetadata } from '../providers/cursor.js';
4
+ import { TaskStatus } from '../models.js';
5
+ import { writeDelegationBrief, writeDelegationHandoff, writeDelegationSync, } from '../utils/delegationKnowledge.js';
6
+ import { syncToActiveContext } from '../utils/contextSync.js';
7
+ import { getRecoveryDisplayLine } from '../utils/delegationRecovery.js';
8
+ import { generateTaskDocumentation } from '../utils/autoDocumentation.js';
9
+ import { getTaskDelegationContext, recoverDelegatedTask } from '../utils/delegatedTaskRuntime.js';
10
+ function getFlagValue(args, flag) {
11
+ const index = args.indexOf(flag);
12
+ if (index === -1 || index === args.length - 1) {
13
+ return undefined;
14
+ }
15
+ return args[index + 1];
16
+ }
17
+ function hasFlag(args, flag) {
18
+ return args.includes(flag);
19
+ }
20
+ export function runDocCommand(args) {
21
+ const taskId = getFlagValue(args, '--task');
22
+ if (!taskId) {
23
+ throw new Error('Missing required flag: --task <taskId>');
24
+ }
25
+ const generated = generateTaskDocumentation(getDatabase(), taskId);
26
+ if (!generated) {
27
+ throw new Error(`Task ${taskId} not found.`);
28
+ }
29
+ console.log(`Task doc: ${generated.taskDocPath}`);
30
+ console.log(`Index doc: ${generated.indexDocPath}`);
31
+ }
32
+ async function runCursorCheck() {
33
+ const result = await new CursorProvider(process.cwd()).check();
34
+ console.log(`Cursor available: ${result.available ? 'yes' : 'no'}`);
35
+ console.log(`Binary: ${result.binary}`);
36
+ console.log(`Runtime: ${result.runtime}`);
37
+ console.log(`Version: ${result.version ?? 'unknown'}`);
38
+ console.log(`Features: ${result.features.join(', ') || 'none detected'}`);
39
+ if (result.warnings.length > 0) {
40
+ for (const warning of result.warnings) {
41
+ console.log(`Warning: ${warning}`);
42
+ }
43
+ }
44
+ if (!result.available) {
45
+ process.exit(1);
46
+ }
47
+ }
48
+ async function runCursorDelegate(args) {
49
+ const taskId = getFlagValue(args, '--task');
50
+ if (!taskId) {
51
+ throw new Error('Missing required flag: --task <taskId>');
52
+ }
53
+ const db = getDatabase();
54
+ const context = getTaskDelegationContext(db, taskId);
55
+ if (!context) {
56
+ throw new Error(`Task ${taskId} not found.`);
57
+ }
58
+ const { task, currentFocus, decisions, research } = context;
59
+ const provider = new CursorProvider(process.cwd());
60
+ const check = await provider.check();
61
+ if (!check.available) {
62
+ throw new Error(check.warnings.join('\n') || 'Cursor CLI is not available.');
63
+ }
64
+ const delegated = await provider.spawnTask({
65
+ cwd: process.cwd(),
66
+ task,
67
+ currentFocus,
68
+ decisions,
69
+ research,
70
+ mode: getFlagValue(args, '--mode') ?? undefined,
71
+ model: getFlagValue(args, '--model'),
72
+ cloud: hasFlag(args, '--cloud'),
73
+ useWorktree: hasFlag(args, '--worktree') ? true : hasFlag(args, '--no-worktree') ? false : undefined,
74
+ force: hasFlag(args, '--force') ? true : hasFlag(args, '--no-force') ? false : undefined,
75
+ });
76
+ const updated = db.updateTask(task.id, {
77
+ status: TaskStatus.IN_PROGRESS,
78
+ metadata: delegated.metadata,
79
+ });
80
+ if (updated) {
81
+ writeDelegationBrief({
82
+ db,
83
+ task: updated,
84
+ currentFocus,
85
+ decisions,
86
+ research,
87
+ metadata: delegated.metadata,
88
+ });
89
+ generateTaskDocumentation(db, updated.id);
90
+ }
91
+ syncToActiveContext();
92
+ console.log(`Delegated task '${task.title}' to Cursor.`);
93
+ console.log(`Command: ${delegated.command}`);
94
+ console.log(`Chat ID: ${delegated.metadata.providerChatId ?? 'unavailable'}`);
95
+ console.log(`Run log: ${delegated.metadata.providerLogPath ?? 'unavailable'}`);
96
+ if (delegated.warnings.length > 0) {
97
+ for (const warning of delegated.warnings) {
98
+ console.log(`Warning: ${warning}`);
99
+ }
100
+ }
101
+ }
102
+ async function runCursorResume(args) {
103
+ const taskId = getFlagValue(args, '--task');
104
+ if (!taskId) {
105
+ throw new Error('Missing required flag: --task <taskId>');
106
+ }
107
+ const db = getDatabase();
108
+ const context = getTaskDelegationContext(db, taskId);
109
+ if (!context) {
110
+ throw new Error(`Task ${taskId} not found.`);
111
+ }
112
+ const { task, currentFocus, decisions, research, knowledge } = context;
113
+ const metadata = getCursorMetadata(task.metadata);
114
+ if (!metadata) {
115
+ throw new Error(`Task ${taskId} is not delegated to Cursor.`);
116
+ }
117
+ const provider = new CursorProvider(process.cwd());
118
+ const result = await provider.resumeSession({
119
+ cwd: process.cwd(),
120
+ task,
121
+ currentFocus,
122
+ decisions,
123
+ research,
124
+ delegationKnowledge: knowledge,
125
+ metadata,
126
+ });
127
+ console.log(`Resume command: ${result.command}`);
128
+ if (result.prompt) {
129
+ console.log('Resume prompt:');
130
+ console.log(result.prompt);
131
+ }
132
+ if (result.warnings.length > 0) {
133
+ for (const warning of result.warnings) {
134
+ console.log(`Warning: ${warning}`);
135
+ }
136
+ }
137
+ if (hasFlag(args, '--exec')) {
138
+ const check = await provider.check();
139
+ const child = spawn(check.binary, result.args, {
140
+ cwd: process.cwd(),
141
+ stdio: 'inherit',
142
+ });
143
+ child.on('exit', (code) => {
144
+ process.exit(code ?? 0);
145
+ });
146
+ }
147
+ }
148
+ async function syncCliDelegatedTask(taskId) {
149
+ const db = getDatabase();
150
+ const task = db.getTask(taskId);
151
+ if (!task) {
152
+ throw new Error(`Task ${taskId} not found.`);
153
+ }
154
+ const metadata = getCursorMetadata(task.metadata);
155
+ if (!metadata) {
156
+ throw new Error(`Task ${taskId} is not delegated to Cursor.`);
157
+ }
158
+ const provider = new CursorProvider(process.cwd());
159
+ const result = await provider.syncTask(metadata);
160
+ const updated = db.updateTask(task.id, {
161
+ metadata: result.metadata,
162
+ status: result.metadata.providerStatus === 'completed'
163
+ ? TaskStatus.COMPLETED
164
+ : result.metadata.providerStatus === 'failed'
165
+ ? TaskStatus.FAILED
166
+ : undefined,
167
+ output: result.outputSummary ?? task.output ?? undefined,
168
+ });
169
+ if (updated) {
170
+ writeDelegationSync({
171
+ db,
172
+ task: updated,
173
+ metadata: result.metadata,
174
+ outputSummary: result.outputSummary,
175
+ finished: result.finished,
176
+ });
177
+ generateTaskDocumentation(db, updated.id);
178
+ }
179
+ syncToActiveContext();
180
+ return { task, result };
181
+ }
182
+ async function runCursorStatus(args) {
183
+ const taskId = getFlagValue(args, '--task');
184
+ if (!taskId) {
185
+ throw new Error('Missing required flag: --task <taskId>');
186
+ }
187
+ const { task, result } = await syncCliDelegatedTask(taskId);
188
+ console.log(`Task: ${task.title}`);
189
+ console.log(`Provider status: ${result.metadata.providerStatus}`);
190
+ console.log(`Recovery: ${getRecoveryDisplayLine(result.metadata)}`);
191
+ console.log(`Retry count: ${result.metadata.providerRetryCount ?? 0}`);
192
+ if (result.reason) {
193
+ console.log(`Reason: ${result.reason}`);
194
+ }
195
+ if (result.recoveryHints.length > 0) {
196
+ for (const hint of result.recoveryHints) {
197
+ console.log(`Hint: ${hint}`);
198
+ }
199
+ }
200
+ }
201
+ async function runCursorSync(args) {
202
+ const taskId = getFlagValue(args, '--task');
203
+ if (!taskId) {
204
+ throw new Error('Missing required flag: --task <taskId>');
205
+ }
206
+ const { task, result } = await syncCliDelegatedTask(taskId);
207
+ console.log(`Synced task '${task.title}'.`);
208
+ console.log(`Provider status: ${result.metadata.providerStatus}`);
209
+ console.log(`Recovery: ${getRecoveryDisplayLine(result.metadata)}`);
210
+ if (result.reason) {
211
+ console.log(`Reason: ${result.reason}`);
212
+ }
213
+ if (result.recoveryHints.length > 0) {
214
+ for (const hint of result.recoveryHints) {
215
+ console.log(`Hint: ${hint}`);
216
+ }
217
+ }
218
+ if (result.outputSummary) {
219
+ console.log(`Latest output: ${result.outputSummary}`);
220
+ }
221
+ }
222
+ async function runCursorRecover(args) {
223
+ const taskId = getFlagValue(args, '--task');
224
+ if (!taskId) {
225
+ throw new Error('Missing required flag: --task <taskId>');
226
+ }
227
+ const result = await recoverDelegatedTask({
228
+ db: getDatabase(),
229
+ taskId,
230
+ cwd: process.cwd(),
231
+ options: {
232
+ mode: getFlagValue(args, '--mode') ?? undefined,
233
+ model: getFlagValue(args, '--model'),
234
+ cloud: hasFlag(args, '--cloud') ? true : undefined,
235
+ useWorktree: hasFlag(args, '--worktree') ? true : hasFlag(args, '--no-worktree') ? false : undefined,
236
+ force: hasFlag(args, '--force') ? true : undefined,
237
+ },
238
+ });
239
+ if (!result) {
240
+ throw new Error(`Task ${taskId} not found.`);
241
+ }
242
+ if (result.blocked) {
243
+ throw new Error(result.reason ?? 'Recovery blocked.');
244
+ }
245
+ console.log(`Recovered task '${result.task.title}'.`);
246
+ console.log(`Command: ${result.delegated.command}`);
247
+ console.log(`Retry count: ${result.metadata.providerRetryCount ?? 0}`);
248
+ }
249
+ async function runCursorHandoff(args) {
250
+ const taskId = getFlagValue(args, '--task');
251
+ const summary = getFlagValue(args, '--summary');
252
+ if (!taskId || !summary) {
253
+ throw new Error('Missing required flags: --task <taskId> --summary "..."');
254
+ }
255
+ const db = getDatabase();
256
+ const task = db.getTask(taskId);
257
+ if (!task) {
258
+ throw new Error(`Task ${taskId} not found.`);
259
+ }
260
+ const metadata = getCursorMetadata(task.metadata);
261
+ if (!metadata) {
262
+ throw new Error(`Task ${taskId} is not delegated to Cursor.`);
263
+ }
264
+ const findings = getFlagValue(args, '--findings')?.split('||').map((value) => value.trim()).filter(Boolean) ?? [];
265
+ const nextSteps = getFlagValue(args, '--next-steps')?.split('||').map((value) => value.trim()).filter(Boolean) ?? [];
266
+ const blockers = getFlagValue(args, '--blockers')?.split('||').map((value) => value.trim()).filter(Boolean) ?? [];
267
+ writeDelegationHandoff({
268
+ db,
269
+ taskId,
270
+ summary,
271
+ findings,
272
+ nextSteps,
273
+ blockers,
274
+ });
275
+ generateTaskDocumentation(db, task.id);
276
+ syncToActiveContext();
277
+ console.log(`Recorded handoff for '${task.title}'.`);
278
+ }
279
+ function runCursorList() {
280
+ const db = getDatabase();
281
+ const delegatedTasks = db.listTasks().filter((task) => getCursorMetadata(task.metadata));
282
+ if (delegatedTasks.length === 0) {
283
+ console.log('No Cursor delegations found.');
284
+ return;
285
+ }
286
+ for (const task of delegatedTasks) {
287
+ const metadata = getCursorMetadata(task.metadata);
288
+ if (!metadata) {
289
+ continue;
290
+ }
291
+ console.log(`${task.title} (${task.id})`);
292
+ console.log(` Status: ${metadata.providerStatus}`);
293
+ console.log(` Mode: ${metadata.providerMode ?? 'agent'}`);
294
+ console.log(` Chat ID: ${metadata.providerChatId ?? 'n/a'}`);
295
+ console.log(` Worktree: ${metadata.providerWorktree ? 'yes' : 'no'}`);
296
+ console.log(` Log: ${metadata.providerLogPath ?? 'n/a'}`);
297
+ }
298
+ }
299
+ export async function runCursorCommand(args) {
300
+ const subcommand = args[0];
301
+ switch (subcommand) {
302
+ case 'check':
303
+ await runCursorCheck();
304
+ return;
305
+ case 'delegate':
306
+ await runCursorDelegate(args.slice(1));
307
+ return;
308
+ case 'status':
309
+ await runCursorStatus(args.slice(1));
310
+ return;
311
+ case 'resume':
312
+ await runCursorResume(args.slice(1));
313
+ return;
314
+ case 'sync':
315
+ await runCursorSync(args.slice(1));
316
+ return;
317
+ case 'recover':
318
+ await runCursorRecover(args.slice(1));
319
+ return;
320
+ case 'handoff':
321
+ await runCursorHandoff(args.slice(1));
322
+ return;
323
+ case 'list':
324
+ runCursorList();
325
+ return;
326
+ default:
327
+ throw new Error(`Unknown cursor subcommand: ${subcommand ?? '(none)'}`);
328
+ }
329
+ }
330
+ //# sourceMappingURL=cursorCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursorCommands.js","sourceRoot":"","sources":["../../src/bin/cursorCommands.ts"],"names":[],"mappings":"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"}