conductor-bridge 1.0.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 (134) hide show
  1. package/README.md +69 -0
  2. package/dist/bridge/index.d.ts +8 -0
  3. package/dist/bridge/index.d.ts.map +1 -0
  4. package/dist/bridge/index.js +8 -0
  5. package/dist/bridge/index.js.map +1 -0
  6. package/dist/bridge/json-interchange.d.ts +94 -0
  7. package/dist/bridge/json-interchange.d.ts.map +1 -0
  8. package/dist/bridge/json-interchange.js +301 -0
  9. package/dist/bridge/json-interchange.js.map +1 -0
  10. package/dist/cli/commands/amend.d.ts +12 -0
  11. package/dist/cli/commands/amend.d.ts.map +1 -0
  12. package/dist/cli/commands/amend.js +205 -0
  13. package/dist/cli/commands/amend.js.map +1 -0
  14. package/dist/cli/commands/daemon.d.ts +12 -0
  15. package/dist/cli/commands/daemon.d.ts.map +1 -0
  16. package/dist/cli/commands/daemon.js +60 -0
  17. package/dist/cli/commands/daemon.js.map +1 -0
  18. package/dist/cli/commands/dispatch.d.ts +12 -0
  19. package/dist/cli/commands/dispatch.d.ts.map +1 -0
  20. package/dist/cli/commands/dispatch.js +207 -0
  21. package/dist/cli/commands/dispatch.js.map +1 -0
  22. package/dist/cli/commands/handoff.d.ts +31 -0
  23. package/dist/cli/commands/handoff.d.ts.map +1 -0
  24. package/dist/cli/commands/handoff.js +273 -0
  25. package/dist/cli/commands/handoff.js.map +1 -0
  26. package/dist/cli/commands/init.d.ts +12 -0
  27. package/dist/cli/commands/init.d.ts.map +1 -0
  28. package/dist/cli/commands/init.js +301 -0
  29. package/dist/cli/commands/init.js.map +1 -0
  30. package/dist/cli/commands/status.d.ts +12 -0
  31. package/dist/cli/commands/status.d.ts.map +1 -0
  32. package/dist/cli/commands/status.js +206 -0
  33. package/dist/cli/commands/status.js.map +1 -0
  34. package/dist/cli/index.d.ts +17 -0
  35. package/dist/cli/index.d.ts.map +1 -0
  36. package/dist/cli/index.js +148 -0
  37. package/dist/cli/index.js.map +1 -0
  38. package/dist/handoff/encryption.d.ts +85 -0
  39. package/dist/handoff/encryption.d.ts.map +1 -0
  40. package/dist/handoff/encryption.js +308 -0
  41. package/dist/handoff/encryption.js.map +1 -0
  42. package/dist/handoff/index.d.ts +8 -0
  43. package/dist/handoff/index.d.ts.map +1 -0
  44. package/dist/handoff/index.js +10 -0
  45. package/dist/handoff/index.js.map +1 -0
  46. package/dist/handoff/mycelium-arc.d.ts +116 -0
  47. package/dist/handoff/mycelium-arc.d.ts.map +1 -0
  48. package/dist/handoff/mycelium-arc.js +410 -0
  49. package/dist/handoff/mycelium-arc.js.map +1 -0
  50. package/dist/index.d.ts +38 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +71 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/parsers/index.d.ts +10 -0
  55. package/dist/parsers/index.d.ts.map +1 -0
  56. package/dist/parsers/index.js +12 -0
  57. package/dist/parsers/index.js.map +1 -0
  58. package/dist/parsers/plan-parser.d.ts +29 -0
  59. package/dist/parsers/plan-parser.d.ts.map +1 -0
  60. package/dist/parsers/plan-parser.js +503 -0
  61. package/dist/parsers/plan-parser.js.map +1 -0
  62. package/dist/parsers/spec-parser.d.ts +10 -0
  63. package/dist/parsers/spec-parser.d.ts.map +1 -0
  64. package/dist/parsers/spec-parser.js +382 -0
  65. package/dist/parsers/spec-parser.js.map +1 -0
  66. package/dist/parsers/state-parser.d.ts +21 -0
  67. package/dist/parsers/state-parser.d.ts.map +1 -0
  68. package/dist/parsers/state-parser.js +378 -0
  69. package/dist/parsers/state-parser.js.map +1 -0
  70. package/dist/parsers/types.d.ts +190 -0
  71. package/dist/parsers/types.d.ts.map +1 -0
  72. package/dist/parsers/types.js +7 -0
  73. package/dist/parsers/types.js.map +1 -0
  74. package/dist/schemas/cognitive-state.d.ts +1523 -0
  75. package/dist/schemas/cognitive-state.d.ts.map +1 -0
  76. package/dist/schemas/cognitive-state.js +328 -0
  77. package/dist/schemas/cognitive-state.js.map +1 -0
  78. package/dist/schemas/enums.d.ts +124 -0
  79. package/dist/schemas/enums.d.ts.map +1 -0
  80. package/dist/schemas/enums.js +108 -0
  81. package/dist/schemas/enums.js.map +1 -0
  82. package/dist/schemas/index.d.ts +9 -0
  83. package/dist/schemas/index.d.ts.map +1 -0
  84. package/dist/schemas/index.js +9 -0
  85. package/dist/schemas/index.js.map +1 -0
  86. package/dist/sync/adhd-continuity.d.ts +91 -0
  87. package/dist/sync/adhd-continuity.d.ts.map +1 -0
  88. package/dist/sync/adhd-continuity.js +302 -0
  89. package/dist/sync/adhd-continuity.js.map +1 -0
  90. package/dist/sync/convergence-tracker.d.ts +111 -0
  91. package/dist/sync/convergence-tracker.d.ts.map +1 -0
  92. package/dist/sync/convergence-tracker.js +299 -0
  93. package/dist/sync/convergence-tracker.js.map +1 -0
  94. package/dist/sync/index.d.ts +11 -0
  95. package/dist/sync/index.d.ts.map +1 -0
  96. package/dist/sync/index.js +15 -0
  97. package/dist/sync/index.js.map +1 -0
  98. package/dist/sync/state-sync.d.ts +105 -0
  99. package/dist/sync/state-sync.d.ts.map +1 -0
  100. package/dist/sync/state-sync.js +403 -0
  101. package/dist/sync/state-sync.js.map +1 -0
  102. package/dist/sync/watcher.d.ts +90 -0
  103. package/dist/sync/watcher.d.ts.map +1 -0
  104. package/dist/sync/watcher.js +281 -0
  105. package/dist/sync/watcher.js.map +1 -0
  106. package/dist/utils/atomic-write.d.ts +31 -0
  107. package/dist/utils/atomic-write.d.ts.map +1 -0
  108. package/dist/utils/atomic-write.js +69 -0
  109. package/dist/utils/atomic-write.js.map +1 -0
  110. package/dist/utils/error-handling.d.ts +70 -0
  111. package/dist/utils/error-handling.d.ts.map +1 -0
  112. package/dist/utils/error-handling.js +109 -0
  113. package/dist/utils/error-handling.js.map +1 -0
  114. package/dist/utils/file-lock.d.ts +46 -0
  115. package/dist/utils/file-lock.d.ts.map +1 -0
  116. package/dist/utils/file-lock.js +117 -0
  117. package/dist/utils/file-lock.js.map +1 -0
  118. package/dist/utils/index.d.ts +10 -0
  119. package/dist/utils/index.d.ts.map +1 -0
  120. package/dist/utils/index.js +12 -0
  121. package/dist/utils/index.js.map +1 -0
  122. package/dist/utils/rlm-navigator.d.ts +160 -0
  123. package/dist/utils/rlm-navigator.d.ts.map +1 -0
  124. package/dist/utils/rlm-navigator.js +368 -0
  125. package/dist/utils/rlm-navigator.js.map +1 -0
  126. package/dist/utils/safe-path.d.ts +44 -0
  127. package/dist/utils/safe-path.d.ts.map +1 -0
  128. package/dist/utils/safe-path.js +96 -0
  129. package/dist/utils/safe-path.js.map +1 -0
  130. package/dist/utils/timed-io.d.ts +51 -0
  131. package/dist/utils/timed-io.d.ts.map +1 -0
  132. package/dist/utils/timed-io.js +128 -0
  133. package/dist/utils/timed-io.js.map +1 -0
  134. package/package.json +88 -0
@@ -0,0 +1,205 @@
1
+ /**
2
+ * conductor amend command
3
+ *
4
+ * Files an amendment proposal.
5
+ */
6
+ import { readFile, writeFile, readdir, access, mkdir } from 'fs/promises';
7
+ import { join } from 'path';
8
+ import chalk from 'chalk';
9
+ import { validatePath } from '../../utils/safe-path.js';
10
+ async function fileExists(path) {
11
+ try {
12
+ await access(path);
13
+ return true;
14
+ }
15
+ catch {
16
+ return false;
17
+ }
18
+ }
19
+ async function getNextAmendmentId(amendmentsDir) {
20
+ try {
21
+ const files = await readdir(amendmentsDir);
22
+ const ids = files
23
+ .filter((f) => f.match(/^\d{3}-/))
24
+ .map((f) => parseInt(f.slice(0, 3), 10))
25
+ .filter((n) => !isNaN(n));
26
+ const maxId = ids.length > 0 ? Math.max(...ids) : 0;
27
+ return (maxId + 1).toString().padStart(3, '0');
28
+ }
29
+ catch {
30
+ return '001';
31
+ }
32
+ }
33
+ function generateAmendmentTemplate(id, title, section, agent) {
34
+ const now = new Date().toISOString();
35
+ return `---
36
+ conductor: "1.0"
37
+ id: AMEND-${id}
38
+ status: proposed
39
+ proposed_by: ${agent}
40
+ proposed_at: ${now}
41
+ reviewed_by: null
42
+ reviewed_at: null
43
+ affects:
44
+ file: spec.md
45
+ section: ${section}
46
+ ---
47
+
48
+ # Amendment: ${title}
49
+
50
+ ## Summary
51
+
52
+ [1-2 sentences: What change is being proposed?]
53
+
54
+ ## Rationale
55
+
56
+ [Why is this change necessary? What problem does it solve?]
57
+
58
+ **Evidence from implementation:**
59
+
60
+ \`\`\`
61
+ [Code, logs, or other evidence supporting the need for this change]
62
+ \`\`\`
63
+
64
+ **Options considered:**
65
+
66
+ 1. [Option 1] - [tradeoffs]
67
+ 2. [Option 2] - [tradeoffs]
68
+ 3. [Option 3] - [tradeoffs]
69
+
70
+ Recommending Option X because [reason].
71
+
72
+ ## Current Text
73
+
74
+ \`\`\`markdown
75
+ [Copy the current text from the spec that will be changed]
76
+ \`\`\`
77
+
78
+ ## Proposed Text
79
+
80
+ \`\`\`markdown
81
+ [The new text that should replace the current text]
82
+ \`\`\`
83
+
84
+ ## Impact Assessment
85
+
86
+ | Dimension | Assessment |
87
+ |-----------|------------|
88
+ | Tracks affected | [list tracks] |
89
+ | Re-planning required | Yes/No |
90
+ | Effort change | +/- X hours |
91
+ | Risk | Low/Medium/High |
92
+
93
+ ## Discussion
94
+
95
+ Space for dialogue between proposer and reviewer.
96
+
97
+ ---
98
+
99
+ **${now} ${agent}**:
100
+
101
+ Initial proposal. [Add any context for the reviewer]
102
+
103
+ ---
104
+ `;
105
+ }
106
+ export async function amendCommand(file, options) {
107
+ const cwd = process.cwd();
108
+ const conductorDir = join(cwd, '.conductor');
109
+ const amendmentsDir = join(conductorDir, 'amendments');
110
+ if (!(await fileExists(conductorDir))) {
111
+ console.log(chalk.yellow('No .conductor/ directory found.'));
112
+ console.log('Run `conductor init` to initialize.');
113
+ return;
114
+ }
115
+ try {
116
+ // Ensure amendments directory exists
117
+ await mkdir(amendmentsDir, { recursive: true });
118
+ // If file is provided, it's an existing amendment to view/edit
119
+ if (file) {
120
+ // Validate path to prevent traversal attacks
121
+ const validation = validatePath(file, amendmentsDir);
122
+ if (!validation.valid) {
123
+ console.log(chalk.red(`Invalid path: ${validation.error}`));
124
+ console.log(chalk.gray('Amendment files must be within the amendments directory.'));
125
+ return;
126
+ }
127
+ const amendPath = validation.resolvedPath;
128
+ if (await fileExists(amendPath)) {
129
+ const content = await readFile(amendPath, 'utf-8');
130
+ console.log(content);
131
+ }
132
+ else {
133
+ console.log(chalk.red(`Amendment file not found: ${amendPath}`));
134
+ }
135
+ return;
136
+ }
137
+ // Create new amendment
138
+ if (!options.title) {
139
+ console.log(chalk.yellow('Please provide a title with --title'));
140
+ console.log(chalk.gray('Example: conductor amend --title "Simplify ADR format" --section "Architecture Decisions"'));
141
+ return;
142
+ }
143
+ // Get agent from state.md
144
+ const statePath = join(conductorDir, 'state.md');
145
+ let agent = 'unknown';
146
+ if (await fileExists(statePath)) {
147
+ const stateContent = await readFile(statePath, 'utf-8');
148
+ const agentMatch = stateContent.match(/^agent:\s*(.+)$/m);
149
+ if (agentMatch?.[1]) {
150
+ agent = agentMatch[1].trim();
151
+ }
152
+ }
153
+ const id = await getNextAmendmentId(amendmentsDir);
154
+ const section = options.section || 'Unspecified';
155
+ const title = options.title;
156
+ // Generate filename (slug from title)
157
+ const slug = title
158
+ .toLowerCase()
159
+ .replace(/[^a-z0-9]+/g, '-')
160
+ .replace(/^-|-$/g, '')
161
+ .slice(0, 40);
162
+ const filename = `${id}-${slug}.md`;
163
+ const amendPath = join(amendmentsDir, filename);
164
+ // Generate template
165
+ const template = generateAmendmentTemplate(id, title, section, agent);
166
+ await writeFile(amendPath, template);
167
+ console.log(chalk.green(`Amendment created: AMEND-${id}`));
168
+ console.log(chalk.gray(`File: ${amendPath}`));
169
+ console.log('');
170
+ console.log(chalk.blue('Next steps:'));
171
+ console.log(` 1. Edit ${filename} to fill in the details`);
172
+ console.log(' 2. Request review from spec author');
173
+ console.log(` 3. Run \`conductor accept AMEND-${id}\` or \`conductor reject AMEND-${id}\``);
174
+ // Update state.md to add pending amendment
175
+ if (await fileExists(statePath)) {
176
+ const stateContent = await readFile(statePath, 'utf-8');
177
+ // Find the Pending Amendments section and add the new one
178
+ const amendmentLine = `| [AMEND-${id}](./amendments/${filename}) | ${title} | proposed | ${new Date().toISOString()} | - |`;
179
+ // Check if there's a "(none)" placeholder
180
+ if (stateContent.includes('(none)')) {
181
+ const updated = stateContent.replace(/## Pending Amendments\n+\(none\)/, `## Pending Amendments\n\n| ID | Title | Status | Proposed | Reviewer |\n|----|-------|--------|----------|----------|\n${amendmentLine}`);
182
+ await writeFile(statePath, updated);
183
+ }
184
+ else if (stateContent.includes('## Pending Amendments')) {
185
+ // Add to existing table
186
+ const lines = stateContent.split('\n');
187
+ const amendIdx = lines.findIndex((l) => l.includes('## Pending Amendments'));
188
+ if (amendIdx >= 0) {
189
+ // Find the end of the table
190
+ let insertIdx = amendIdx + 1;
191
+ while (insertIdx < lines.length && (lines[insertIdx]?.startsWith('|') || lines[insertIdx]?.trim() === '')) {
192
+ insertIdx++;
193
+ }
194
+ lines.splice(insertIdx, 0, amendmentLine);
195
+ await writeFile(statePath, lines.join('\n'));
196
+ }
197
+ }
198
+ }
199
+ }
200
+ catch (error) {
201
+ console.error(chalk.red(`Failed to create amendment: ${error instanceof Error ? error.message : String(error)}`));
202
+ process.exit(1);
203
+ }
204
+ }
205
+ //# sourceMappingURL=amend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amend.js","sourceRoot":"","sources":["../../../src/cli/commands/amend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * conductor daemon command
3
+ *
4
+ * Runs the file watcher daemon for auto-sync.
5
+ */
6
+ interface DaemonOptions {
7
+ debounce?: number;
8
+ noSyncOnStart?: boolean;
9
+ }
10
+ export declare function daemonCommand(options: DaemonOptions): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/daemon.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DzE"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * conductor daemon command
3
+ *
4
+ * Runs the file watcher daemon for auto-sync.
5
+ */
6
+ import { join } from 'path';
7
+ import chalk from 'chalk';
8
+ import { createWatcher } from '../../sync/watcher.js';
9
+ export async function daemonCommand(options) {
10
+ const cwd = process.cwd();
11
+ const conductorDir = join(cwd, '.conductor');
12
+ console.log(chalk.blue('\n=== Conductor Daemon ===\n'));
13
+ console.log(chalk.gray(`Watching: ${conductorDir}`));
14
+ console.log(chalk.gray(`Debounce: ${options.debounce ?? 500}ms`));
15
+ console.log(chalk.gray(`Sync on start: ${!options.noSyncOnStart}`));
16
+ console.log('');
17
+ console.log(chalk.yellow('Press Ctrl+C to stop\n'));
18
+ try {
19
+ const watcher = await createWatcher(conductorDir, {
20
+ debounceMs: options.debounce ?? 500,
21
+ syncOnStart: !options.noSyncOnStart,
22
+ });
23
+ // Event handlers
24
+ watcher.on('sync', (result) => {
25
+ const icon = result.success ? chalk.green('✓') : chalk.red('✗');
26
+ console.log(`${icon} Sync: ${result.changes.join(', ')}`);
27
+ if (result.warnings.length > 0) {
28
+ for (const warning of result.warnings) {
29
+ console.log(chalk.yellow(` ! ${warning}`));
30
+ }
31
+ }
32
+ });
33
+ watcher.on('change', ({ path }) => {
34
+ console.log(chalk.gray(` Changed: ${path}`));
35
+ });
36
+ watcher.on('convergence', (data) => {
37
+ console.log(chalk.cyan(` ${data.glyph} | xi=${data.xi_n.toFixed(3)} | ${data.attractor}`));
38
+ });
39
+ watcher.on('error', ({ message }) => {
40
+ console.log(chalk.red(` Error: ${message}`));
41
+ });
42
+ // Handle shutdown
43
+ process.on('SIGINT', async () => {
44
+ console.log(chalk.yellow('\n\nShutting down...'));
45
+ await watcher.stop();
46
+ const stats = watcher.getStats();
47
+ console.log(chalk.gray(`Syncs: ${stats.syncCount}`));
48
+ console.log(chalk.gray(`Exchanges: ${stats.exchangeCount}`));
49
+ console.log(chalk.gray(`Errors: ${stats.errors.length}`));
50
+ process.exit(0);
51
+ });
52
+ // Keep process running
53
+ await new Promise(() => { });
54
+ }
55
+ catch (error) {
56
+ console.error(chalk.red(`Failed to start daemon: ${error instanceof Error ? error.message : String(error)}`));
57
+ process.exit(1);
58
+ }
59
+ }
60
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/cli/commands/daemon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * conductor dispatch command
3
+ *
4
+ * Dispatches a track to its assigned agent.
5
+ */
6
+ interface DispatchOptions {
7
+ track?: string;
8
+ dryRun: boolean;
9
+ }
10
+ export declare function dispatchCommand(options: DispatchOptions): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=dispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dispatch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AA6DD,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAkL7E"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * conductor dispatch command
3
+ *
4
+ * Dispatches a track to its assigned agent.
5
+ */
6
+ import { readFile, writeFile, access } from 'fs/promises';
7
+ import { join } from 'path';
8
+ import chalk from 'chalk';
9
+ import { parsePlan, getNextPendingTask } from '../../parsers/plan-parser.js';
10
+ import { parseState } from '../../parsers/state-parser.js';
11
+ async function fileExists(path) {
12
+ try {
13
+ await access(path);
14
+ return true;
15
+ }
16
+ catch {
17
+ return false;
18
+ }
19
+ }
20
+ function generateDispatchPrompt(context) {
21
+ return `# Conductor Dispatch
22
+
23
+ You have been assigned a task by the Conductor orchestration system.
24
+
25
+ ## Track: ${context.track.name}
26
+
27
+ ${context.track.description}
28
+
29
+ ## Current Task
30
+
31
+ **${context.task.content}**
32
+
33
+ ## Context
34
+
35
+ This task is part of track "${context.track.name}" which has the following dependencies:
36
+ ${context.track.dependencies.length > 0 ? context.track.dependencies.map((d) => `- ${d}`).join('\n') : '- (no dependencies)'}
37
+
38
+ ## Instructions
39
+
40
+ 1. Review the spec and plan files for full context
41
+ 2. Complete the assigned task
42
+ 3. Update the plan.md checkbox when done: \`- [ ]\` → \`- [x]\`
43
+ 4. Add any created/modified files to the Artifacts section
44
+ 5. Update the Notes section with relevant context for future work
45
+
46
+ ## Files to Review
47
+
48
+ ${context.contextFiles.map((f) => `- ${f}`).join('\n')}
49
+
50
+ ## Constraints
51
+
52
+ - Follow the spec constraints exactly
53
+ - Do not deviate from the plan without filing an amendment
54
+ - Mark task as blocked \`[!]\` if you cannot proceed
55
+
56
+ ---
57
+
58
+ *This prompt was generated by Conductor Bridge v1.0.0*
59
+ `;
60
+ }
61
+ export async function dispatchCommand(options) {
62
+ const cwd = process.cwd();
63
+ const conductorDir = join(cwd, '.conductor');
64
+ if (!(await fileExists(conductorDir))) {
65
+ console.log(chalk.yellow('No .conductor/ directory found.'));
66
+ console.log('Run `conductor init` to initialize.');
67
+ return;
68
+ }
69
+ try {
70
+ // Load state.md
71
+ const statePath = join(conductorDir, 'state.md');
72
+ if (!(await fileExists(statePath))) {
73
+ console.log(chalk.red('No state.md found'));
74
+ return;
75
+ }
76
+ const stateContent = await readFile(statePath, 'utf-8');
77
+ const stateResult = parseState(stateContent);
78
+ if (!stateResult.success || !stateResult.data) {
79
+ console.log(chalk.red('Failed to parse state.md'));
80
+ for (const err of stateResult.errors) {
81
+ console.log(chalk.red(` - ${err.message}`));
82
+ }
83
+ return;
84
+ }
85
+ const state = stateResult.data;
86
+ // Load plan.md
87
+ const planPath = join(conductorDir, state.frontmatter.plan || 'plan.md');
88
+ if (!(await fileExists(planPath))) {
89
+ console.log(chalk.red(`Plan file not found: ${planPath}`));
90
+ return;
91
+ }
92
+ const planContent = await readFile(planPath, 'utf-8');
93
+ const planResult = parsePlan(planContent);
94
+ if (!planResult.success || !planResult.data) {
95
+ console.log(chalk.red('Failed to parse plan.md'));
96
+ for (const err of planResult.errors) {
97
+ console.log(chalk.red(` - ${err.message}`));
98
+ }
99
+ return;
100
+ }
101
+ const plan = planResult.data;
102
+ // Find track to dispatch
103
+ let targetTrack;
104
+ if (options.track) {
105
+ // Specific track requested
106
+ targetTrack = plan.tracks.find((t) => t.name.toLowerCase() === options.track?.toLowerCase());
107
+ if (!targetTrack) {
108
+ console.log(chalk.red(`Track not found: ${options.track}`));
109
+ console.log(chalk.gray('Available tracks:'));
110
+ for (const t of plan.tracks) {
111
+ console.log(chalk.gray(` - ${t.name}`));
112
+ }
113
+ return;
114
+ }
115
+ }
116
+ else {
117
+ // Find next available track
118
+ for (const track of plan.tracks) {
119
+ if (track.status === 'complete' || track.status === 'blocked') {
120
+ continue;
121
+ }
122
+ // Check dependencies
123
+ const depsComplete = track.dependencies.every((depName) => {
124
+ const depTrack = plan.tracks.find((t) => t.name === depName);
125
+ return depTrack?.status === 'complete';
126
+ });
127
+ if (depsComplete) {
128
+ targetTrack = track;
129
+ break;
130
+ }
131
+ }
132
+ }
133
+ if (!targetTrack) {
134
+ console.log(chalk.yellow('No tracks available for dispatch.'));
135
+ console.log(chalk.gray('All tracks are either complete, blocked, or have unmet dependencies.'));
136
+ return;
137
+ }
138
+ // Find next pending task in track
139
+ const nextTask = getNextPendingTask(plan);
140
+ if (!nextTask) {
141
+ console.log(chalk.yellow(`No pending tasks in track: ${targetTrack.name}`));
142
+ return;
143
+ }
144
+ // Check agent assignment
145
+ if (targetTrack.agent === 'unassigned') {
146
+ console.log(chalk.yellow(`Track "${targetTrack.name}" has no agent assigned.`));
147
+ console.log(chalk.gray('Edit plan.md to assign an agent before dispatching.'));
148
+ return;
149
+ }
150
+ // Load spec for context
151
+ const specPath = join(conductorDir, state.frontmatter.spec || 'spec.md');
152
+ let specContent = '';
153
+ if (await fileExists(specPath)) {
154
+ specContent = await readFile(specPath, 'utf-8');
155
+ }
156
+ // Build context
157
+ const context = {
158
+ track: targetTrack,
159
+ task: nextTask,
160
+ spec: specContent,
161
+ plan: planContent,
162
+ contextFiles: [
163
+ state.frontmatter.spec || 'spec.md',
164
+ state.frontmatter.plan || 'plan.md',
165
+ ...targetTrack.artifacts,
166
+ ],
167
+ };
168
+ // Generate dispatch prompt
169
+ const prompt = generateDispatchPrompt(context);
170
+ console.log(chalk.blue('\n=== Dispatch Summary ===\n'));
171
+ console.log(chalk.gray('Track:'), targetTrack.name);
172
+ console.log(chalk.gray('Agent:'), targetTrack.agent);
173
+ console.log(chalk.gray('Task:'), nextTask.content);
174
+ console.log(chalk.gray('Dependencies:'), targetTrack.dependencies.length > 0 ? targetTrack.dependencies.join(', ') : '(none)');
175
+ if (options.dryRun) {
176
+ console.log(chalk.yellow('\n[DRY RUN] Would dispatch the following prompt:\n'));
177
+ console.log(chalk.gray('─'.repeat(60)));
178
+ console.log(prompt);
179
+ console.log(chalk.gray('─'.repeat(60)));
180
+ return;
181
+ }
182
+ // Update state.md with current assignment
183
+ const now = new Date().toISOString();
184
+ const updatedState = stateContent
185
+ .replace(/\| Track \| [^|]+ \|/, `| Track | ${targetTrack.name} |`)
186
+ .replace(/\| Task \| [^|]+ \|/, `| Task | ${nextTask.content} |`)
187
+ .replace(/\| Iteration \| [^|]+ \|/, `| Iteration | 1 |`)
188
+ .replace(/\| Started \| [^|]+ \|/, `| Started | ${now} |`)
189
+ .replace(/^updated: .+$/m, `updated: ${now}`);
190
+ await writeFile(statePath, updatedState);
191
+ // Write dispatch prompt to file
192
+ const dispatchPath = join(conductorDir, 'dispatch.md');
193
+ await writeFile(dispatchPath, prompt);
194
+ console.log(chalk.green('\nDispatch created!'));
195
+ console.log(chalk.gray(`Prompt written to: ${dispatchPath}`));
196
+ console.log('');
197
+ console.log(chalk.blue('Next steps:'));
198
+ console.log(` 1. Review ${dispatchPath}`);
199
+ console.log(` 2. Send to ${targetTrack.agent} for execution`);
200
+ console.log(' 3. Run `conductor sync` after completion');
201
+ }
202
+ catch (error) {
203
+ console.error(chalk.red(`Failed to dispatch: ${error instanceof Error ? error.message : String(error)}`));
204
+ process.exit(1);
205
+ }
206
+ }
207
+ //# sourceMappingURL=dispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../../src/cli/commands/dispatch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * conductor handoff command
3
+ *
4
+ * Create and receive cross-agent handoffs.
5
+ *
6
+ * Usage:
7
+ * conductor handoff create [options] # Package cognitive state for transfer
8
+ * conductor handoff receive <file> # Unpack and apply a handoff
9
+ * conductor handoff status <file> # Check handoff status without applying
10
+ */
11
+ interface CreateOptions {
12
+ goal?: string;
13
+ output?: string;
14
+ encrypt?: boolean;
15
+ machineBound?: boolean;
16
+ expires?: string;
17
+ passphrase?: string;
18
+ target?: string;
19
+ state?: string;
20
+ }
21
+ interface ReceiveOptions {
22
+ passphrase?: string;
23
+ apply?: boolean;
24
+ output?: string;
25
+ }
26
+ export declare function createCommand(options: CreateOptions): Promise<void>;
27
+ export declare function receiveCommand(file: string, options: ReceiveOptions): Promise<void>;
28
+ export declare function statusCommand(file: string): Promise<void>;
29
+ export declare function listCommand(): Promise<void>;
30
+ export {};
31
+ //# sourceMappingURL=handoff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/handoff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAoBH,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,cAAc;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAqBD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuGzE;AAMD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAoFzF;AAMD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4C/D;AAMD,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAgCjD"}