@adamancyzhang/claude-orchestrator 0.3.3 → 0.4.1

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 (140) hide show
  1. package/README.md +203 -269
  2. package/dist/cli/commands.d.ts +0 -10
  3. package/dist/cli/commands.js +1 -184
  4. package/dist/cli/commands.js.map +1 -1
  5. package/dist/config.d.ts +39 -0
  6. package/dist/config.js +43 -2
  7. package/dist/config.js.map +1 -1
  8. package/dist/email-validator/__tests__/domain.test.d.ts +1 -0
  9. package/dist/email-validator/__tests__/domain.test.js +128 -0
  10. package/dist/email-validator/__tests__/domain.test.js.map +1 -0
  11. package/dist/email-validator/__tests__/local-part.test.d.ts +1 -0
  12. package/dist/email-validator/__tests__/local-part.test.js +110 -0
  13. package/dist/email-validator/__tests__/local-part.test.js.map +1 -0
  14. package/dist/email-validator/__tests__/parser.test.d.ts +1 -0
  15. package/dist/email-validator/__tests__/parser.test.js +161 -0
  16. package/dist/email-validator/__tests__/parser.test.js.map +1 -0
  17. package/dist/email-validator/__tests__/validator.test.d.ts +1 -0
  18. package/dist/email-validator/__tests__/validator.test.js +152 -0
  19. package/dist/email-validator/__tests__/validator.test.js.map +1 -0
  20. package/dist/email-validator/diagnostics.d.ts +3 -0
  21. package/dist/email-validator/diagnostics.js +34 -0
  22. package/dist/email-validator/diagnostics.js.map +1 -0
  23. package/dist/email-validator/domain.d.ts +2 -0
  24. package/dist/email-validator/domain.js +119 -0
  25. package/dist/email-validator/domain.js.map +1 -0
  26. package/dist/email-validator/index.d.ts +2 -0
  27. package/dist/email-validator/index.js +2 -0
  28. package/dist/email-validator/index.js.map +1 -0
  29. package/dist/email-validator/local-part.d.ts +2 -0
  30. package/dist/email-validator/local-part.js +67 -0
  31. package/dist/email-validator/local-part.js.map +1 -0
  32. package/dist/email-validator/parser.d.ts +9 -0
  33. package/dist/email-validator/parser.js +120 -0
  34. package/dist/email-validator/parser.js.map +1 -0
  35. package/dist/email-validator/types.d.ts +24 -0
  36. package/dist/email-validator/types.js +2 -0
  37. package/dist/email-validator/types.js.map +1 -0
  38. package/dist/email-validator/validator.d.ts +9 -0
  39. package/dist/email-validator/validator.js +51 -0
  40. package/dist/email-validator/validator.js.map +1 -0
  41. package/dist/executor/runner.d.ts +19 -2
  42. package/dist/executor/runner.js +29 -4
  43. package/dist/executor/runner.js.map +1 -1
  44. package/dist/executor/template.d.ts +3 -1
  45. package/dist/executor/template.js +19 -16
  46. package/dist/executor/template.js.map +1 -1
  47. package/dist/index.js +11 -34
  48. package/dist/index.js.map +1 -1
  49. package/dist/leader/chain-router.d.ts +10 -2
  50. package/dist/leader/chain-router.js +167 -10
  51. package/dist/leader/chain-router.js.map +1 -1
  52. package/dist/leader/event-bus.d.ts +1 -1
  53. package/dist/leader/event-bus.js +2 -1
  54. package/dist/leader/event-bus.js.map +1 -1
  55. package/dist/leader/index.d.ts +7 -0
  56. package/dist/leader/index.js +99 -8
  57. package/dist/leader/index.js.map +1 -1
  58. package/dist/leader/merge-validator.d.ts +25 -0
  59. package/dist/leader/merge-validator.js +105 -0
  60. package/dist/leader/merge-validator.js.map +1 -0
  61. package/dist/leader/state.d.ts +20 -0
  62. package/dist/leader/state.js +77 -2
  63. package/dist/leader/state.js.map +1 -1
  64. package/dist/leader/stream-tailer.d.ts +12 -0
  65. package/dist/leader/stream-tailer.js +58 -0
  66. package/dist/leader/stream-tailer.js.map +1 -0
  67. package/dist/leader/tui.d.ts +8 -0
  68. package/dist/leader/tui.js +245 -17
  69. package/dist/leader/tui.js.map +1 -1
  70. package/dist/leader/watcher.js +12 -0
  71. package/dist/leader/watcher.js.map +1 -1
  72. package/dist/models/schemas.d.ts +28 -6
  73. package/dist/models/schemas.js +8 -0
  74. package/dist/models/schemas.js.map +1 -1
  75. package/dist/modules/task-queue.js +4 -0
  76. package/dist/modules/task-queue.js.map +1 -1
  77. package/dist/orchestrator/init-checker.d.ts +33 -0
  78. package/dist/orchestrator/init-checker.js +297 -0
  79. package/dist/orchestrator/init-checker.js.map +1 -0
  80. package/dist/orchestrator/run.d.ts +7 -0
  81. package/dist/orchestrator/run.js +126 -0
  82. package/dist/orchestrator/run.js.map +1 -0
  83. package/dist/skills/claude-orchestrator/SKILL.md +75 -217
  84. package/dist/templates/agents/worker-accept.md +48 -0
  85. package/dist/templates/agents/worker-build.md +38 -0
  86. package/dist/templates/agents/worker-commit-message.md +12 -0
  87. package/dist/templates/agents/worker-decompose.md +40 -0
  88. package/dist/templates/agents/worker-evaluate-format-hint.md +7 -0
  89. package/dist/templates/agents/worker-evaluate.md +49 -0
  90. package/dist/templates/agents/worker-identity.md +7 -0
  91. package/dist/templates/agents/worker-merge-decision.md +12 -0
  92. package/dist/templates/agents/worker-plan.md +36 -0
  93. package/dist/templates/agents/worker-review.md +42 -0
  94. package/dist/templates/agents/worker-task-doc.md +13 -0
  95. package/dist/templates/agents/worker-verify.md +44 -0
  96. package/dist/templates/claude-memory/personal-claude-accepter.md +17 -0
  97. package/dist/templates/claude-memory/personal-claude-builder.md +24 -0
  98. package/dist/templates/claude-memory/personal-claude-planner.md +22 -0
  99. package/dist/templates/claude-memory/personal-claude-reviewer.md +25 -0
  100. package/dist/templates/claude-memory/personal-claude-verifier.md +24 -0
  101. package/dist/templates/claude-memory/team-claude.md +61 -0
  102. package/dist/templates/user-global-claude.md +65 -0
  103. package/dist/utils/console-capture.d.ts +2 -0
  104. package/dist/utils/console-capture.js +42 -0
  105. package/dist/utils/console-capture.js.map +1 -0
  106. package/dist/utils/exec.d.ts +2 -6
  107. package/dist/utils/exec.js +48 -29
  108. package/dist/utils/exec.js.map +1 -1
  109. package/dist/utils/json.d.ts +5 -0
  110. package/dist/utils/json.js +17 -0
  111. package/dist/utils/json.js.map +1 -0
  112. package/dist/utils/logger.d.ts +1 -0
  113. package/dist/utils/logger.js +3 -0
  114. package/dist/utils/logger.js.map +1 -1
  115. package/dist/worker/child-runner.d.ts +12 -0
  116. package/dist/worker/child-runner.js +115 -0
  117. package/dist/worker/child-runner.js.map +1 -0
  118. package/dist/worker/child.d.ts +2 -0
  119. package/dist/worker/child.js +8 -0
  120. package/dist/worker/child.js.map +1 -0
  121. package/dist/worker/commit-checker.d.ts +21 -0
  122. package/dist/worker/commit-checker.js +81 -0
  123. package/dist/worker/commit-checker.js.map +1 -0
  124. package/dist/worker/evaluator.d.ts +3 -4
  125. package/dist/worker/evaluator.js +15 -50
  126. package/dist/worker/evaluator.js.map +1 -1
  127. package/dist/worker/watcher.d.ts +5 -1
  128. package/dist/worker/watcher.js +44 -9
  129. package/dist/worker/watcher.js.map +1 -1
  130. package/dist/worker/worktree-initializer.d.ts +10 -0
  131. package/dist/worker/worktree-initializer.js +238 -0
  132. package/dist/worker/worktree-initializer.js.map +1 -0
  133. package/package.json +2 -2
  134. package/dist/templates/worker-accept.md +0 -46
  135. package/dist/templates/worker-build.md +0 -45
  136. package/dist/templates/worker-decompose.md +0 -67
  137. package/dist/templates/worker-evaluate.md +0 -41
  138. package/dist/templates/worker-plan.md +0 -43
  139. package/dist/templates/worker-review.md +0 -46
  140. package/dist/templates/worker-verify.md +0 -47
@@ -11,15 +11,38 @@ const YELLOW = `${ESC}[33m`;
11
11
  const BLUE = `${ESC}[34m`;
12
12
  const MAGENTA = `${ESC}[35m`;
13
13
  const CYAN = `${ESC}[36m`;
14
+ function stripAnsi(s) {
15
+ return s.replace(/\x1b\[[0-9;]*m/g, "");
16
+ }
14
17
  function padRight(s, n) {
15
- const visible = s.replace(/\x1b\[[0-9;]*m/g, "");
16
- return s + " ".repeat(Math.max(0, n - visible.length));
18
+ const visible = stripAnsi(s).length;
19
+ return s + " ".repeat(Math.max(0, n - visible));
17
20
  }
18
21
  function truncate(s, n) {
19
22
  if (s.length <= n)
20
23
  return s;
21
24
  return s.slice(0, n - 1) + "…";
22
25
  }
26
+ function wrapText(s, maxWidth) {
27
+ const lines = [];
28
+ let current = "";
29
+ for (const ch of s) {
30
+ if (ch === "\n") {
31
+ lines.push(current);
32
+ current = "";
33
+ }
34
+ else if (current.length >= maxWidth) {
35
+ lines.push(current);
36
+ current = ch;
37
+ }
38
+ else {
39
+ current += ch;
40
+ }
41
+ }
42
+ if (current)
43
+ lines.push(current);
44
+ return lines;
45
+ }
23
46
  function box(width, ...lines) {
24
47
  const top = `${DIM}┌${"─".repeat(width - 2)}┐${RESET}\n`;
25
48
  const bottom = `${DIM}└${"─".repeat(width - 2)}┘${RESET}`;
@@ -29,6 +52,21 @@ function box(width, ...lines) {
29
52
  }
30
53
  return top + body + bottom;
31
54
  }
55
+ function stripJsonChunk(line) {
56
+ try {
57
+ const parsed = JSON.parse(line);
58
+ if (parsed.type === "content_block_delta" && parsed.delta?.text) {
59
+ return parsed.delta.text;
60
+ }
61
+ if (parsed.type === "content_block_start" && parsed.content_block?.text) {
62
+ return parsed.content_block.text;
63
+ }
64
+ return "";
65
+ }
66
+ catch {
67
+ return line;
68
+ }
69
+ }
32
70
  function workerStatusColor(status) {
33
71
  if (status === "idle")
34
72
  return GREEN;
@@ -36,12 +74,65 @@ function workerStatusColor(status) {
36
74
  return YELLOW;
37
75
  return DIM;
38
76
  }
77
+ function renderWorkerMessages(worker, maxWidth) {
78
+ const lines = [];
79
+ const contentW = maxWidth - 4;
80
+ if (worker.currentMessage) {
81
+ const linkTag = worker.currentMessageLink
82
+ ? ` ${CYAN}[${worker.currentMessageLink}]${RESET}`
83
+ : "";
84
+ const time = worker.currentMessageTime
85
+ ? ` ${DIM}(${worker.currentMessageTime})${RESET}`
86
+ : "";
87
+ lines.push(` ${GREEN}◆${RESET} ${BOLD}Working${RESET}${time}${linkTag}`);
88
+ const wrapped = wrapText(worker.currentMessage, contentW - 2);
89
+ for (const line of wrapped) {
90
+ lines.push(` ${line}`);
91
+ }
92
+ lines.push("");
93
+ }
94
+ else if (worker.status === "busy" && worker.currentTaskId) {
95
+ const roleTag = worker.currentRole
96
+ ? ` ${MAGENTA}[${worker.currentRole}]${RESET}`
97
+ : "";
98
+ lines.push(` ${YELLOW}◆${RESET} ${BOLD}Working${RESET}${roleTag}`);
99
+ lines.push(` ${DIM}Task: ${worker.currentTaskId}${RESET}`);
100
+ lines.push("");
101
+ }
102
+ else if (worker.lastCompletedTask) {
103
+ lines.push(` ${DIM}◇ (idle) — last: ${worker.lastCompletedTask}${RESET}`);
104
+ lines.push("");
105
+ }
106
+ else {
107
+ lines.push(` ${DIM}◇ (idle)${RESET}`);
108
+ lines.push("");
109
+ }
110
+ if (worker.messageHistory.length > 0) {
111
+ lines.push(` ${BOLD}History:${RESET}`);
112
+ for (const entry of worker.messageHistory.slice(-5).reverse()) {
113
+ const time = `${DIM}${entry.timestamp}${RESET}`;
114
+ const link = entry.link ? ` ${CYAN}[${entry.link}]${RESET}` : "";
115
+ lines.push(` ${time}${link}`);
116
+ const wrapped = wrapText(entry.content, contentW - 4);
117
+ for (const line of wrapped) {
118
+ lines.push(` ${DIM}${line}${RESET}`);
119
+ }
120
+ }
121
+ }
122
+ return lines;
123
+ }
39
124
  export class LeaderTui {
40
125
  inputBuffer = "";
41
126
  inputCallback = null;
42
127
  rawMode = false;
128
+ state = null;
129
+ refreshTimer = null;
130
+ renderQueued = false;
131
+ renderDebounceMs = 50;
43
132
  constructor() {
44
133
  this.setupInput();
134
+ this.setupResizeHandler();
135
+ this.startRefreshTimer();
45
136
  }
46
137
  onInput(cb) {
47
138
  this.inputCallback = cb;
@@ -62,36 +153,87 @@ export class LeaderTui {
62
153
  process.stdin.pause();
63
154
  this.rawMode = false;
64
155
  }
156
+ rerender() {
157
+ if (this.state)
158
+ this.render(this.state);
159
+ }
160
+ requestRender() {
161
+ if (this.renderQueued)
162
+ return;
163
+ this.renderQueued = true;
164
+ setTimeout(() => {
165
+ this.renderQueued = false;
166
+ this.rerender();
167
+ }, this.renderDebounceMs);
168
+ }
169
+ setupResizeHandler() {
170
+ process.stdout.on("resize", () => {
171
+ this.rerender();
172
+ });
173
+ }
174
+ startRefreshTimer() {
175
+ this.refreshTimer = setInterval(() => {
176
+ this.rerender();
177
+ }, 1000);
178
+ }
65
179
  setupInput() {
66
180
  process.stdin.on("data", (data) => {
67
181
  const key = data.toString();
68
182
  if (key === "\x03") {
69
- // Ctrl+C — let SIGINT handler deal with it
70
183
  process.kill(process.pid, "SIGINT");
71
184
  return;
72
185
  }
186
+ if (key === "\t") {
187
+ if (this.state && this.state.workers.length > 0) {
188
+ this.state.selectedWorkerIndex =
189
+ (this.state.selectedWorkerIndex + 1) % this.state.workers.length;
190
+ this.rerender();
191
+ }
192
+ return;
193
+ }
194
+ if (key === "\x1b[Z") {
195
+ if (this.state && this.state.workers.length > 0) {
196
+ this.state.selectedWorkerIndex =
197
+ (this.state.selectedWorkerIndex - 1 + this.state.workers.length) %
198
+ this.state.workers.length;
199
+ this.rerender();
200
+ }
201
+ return;
202
+ }
203
+ if (key >= "1" && key <= "9") {
204
+ const idx = parseInt(key) - 1;
205
+ if (this.state && idx < this.state.workers.length) {
206
+ this.state.selectedWorkerIndex = idx;
207
+ this.rerender();
208
+ }
209
+ return;
210
+ }
73
211
  if (key === "\r" || key === "\n") {
74
212
  if (this.inputBuffer.trim() && this.inputCallback) {
75
213
  this.inputCallback(this.inputBuffer.trim());
76
214
  }
77
215
  this.inputBuffer = "";
216
+ this.rerender();
78
217
  return;
79
218
  }
80
219
  if (key === "\x7f" || key === "\x08") {
81
220
  this.inputBuffer = this.inputBuffer.slice(0, -1);
221
+ this.rerender();
82
222
  return;
83
223
  }
84
224
  if (key === "\x1b") {
85
225
  this.inputBuffer = "";
226
+ this.rerender();
86
227
  return;
87
228
  }
88
- // Printable characters only
89
229
  if (key >= " ") {
90
230
  this.inputBuffer += key;
231
+ this.rerender();
91
232
  }
92
233
  });
93
234
  }
94
235
  render(state) {
236
+ this.state = state;
95
237
  this.enableRawMode();
96
238
  const cols = process.stdout.columns || 120;
97
239
  const rows = process.stdout.rows || 30;
@@ -100,19 +242,38 @@ export class LeaderTui {
100
242
  // ── Team Panel (top) ──
101
243
  const teamWidth = cols - 2;
102
244
  const teamLines = [];
245
+ // Responsive column widths
246
+ const availW = teamWidth - 4;
247
+ const nameW = Math.max(6, Math.floor(availW * 0.13));
248
+ const roleW = Math.max(6, Math.floor(availW * 0.12));
249
+ const wtW = Math.max(8, Math.floor(availW * 0.15));
250
+ const branchW = Math.max(8, Math.floor(availW * 0.20));
251
+ const pidW = 6;
252
+ const statusW = 8;
103
253
  teamLines.push(` ${BOLD}TEAM${RESET}`);
104
254
  teamLines.push(` ${DIM}${"─".repeat(teamWidth - 4)}${RESET}`);
105
255
  if (state.workers.length === 0) {
106
256
  teamLines.push(` ${DIM}No workers online${RESET}`);
107
257
  }
108
258
  else {
109
- const header = `${BOLD}${padRight("Name", 14)}${padRight("Preset", 12)}${padRight("Current Role", 16)}${padRight("Status", 8)}Current Task${RESET}`;
259
+ const header = `${BOLD}${padRight("Name", nameW)}${padRight("Role", roleW)}${padRight("Worktree", wtW)}${padRight("Branch", branchW)}${padRight("PID", pidW)}${padRight("Status", statusW)}${RESET}`;
110
260
  teamLines.push(` ${header}`);
111
- for (const w of state.workers.slice(0, 8)) {
112
- const statusColored = `${workerStatusColor(w.status)}${padRight(w.status, 7)}${RESET}`;
113
- const currentRole = w.currentRole ?? `${DIM}(idle)${RESET}`;
114
- const cross = w.currentRole && w.currentRole !== w.presetRole ? `${MAGENTA}◀←${RESET} ` : "";
115
- const line = ` ${padRight(truncate(w.name, 13), 14)}${padRight(w.presetRole, 12)}${cross}${padRight(currentRole, 16)}${statusColored}${truncate(w.currentTaskId ?? "-", teamWidth - 54)}`;
261
+ const maxWorkers = Math.min(state.workers.length, 8);
262
+ for (let i = 0; i < maxWorkers; i++) {
263
+ const w = state.workers[i];
264
+ const selected = i === state.selectedWorkerIndex;
265
+ const marker = selected ? `${BOLD}${CYAN}>${RESET}` : " ";
266
+ const name = selected
267
+ ? `${BOLD}${CYAN}${padRight(truncate(w.name, nameW - 1), nameW - 1)}${RESET}`
268
+ : padRight(truncate(w.name, nameW - 1), nameW - 1);
269
+ const role = w.currentRole
270
+ ? `${MAGENTA}${padRight(w.currentRole, roleW - 2)}${RESET}${DIM}◀←${RESET}`
271
+ : padRight(w.presetRole, roleW);
272
+ const wt = padRight(truncate(w.worktreeName ?? w.name, wtW - 1), wtW - 1);
273
+ const branch = padRight(truncate(w.worktreeBranch ?? "-", branchW - 1), branchW - 1);
274
+ const pid = padRight(w.pid !== null ? String(w.pid) : "-", pidW - 1);
275
+ const statusColored = `${workerStatusColor(w.status)}${padRight(w.status, statusW - 1)}${RESET}`;
276
+ const line = ` ${marker} ${name} ${role} ${DIM}${wt}${RESET} ${DIM}${branch}${RESET} ${pid} ${statusColored}`;
116
277
  teamLines.push(line);
117
278
  }
118
279
  if (state.workers.length > 8) {
@@ -122,7 +283,6 @@ export class LeaderTui {
122
283
  const teamBoxH = teamLines.length + 2;
123
284
  out += box(teamWidth, ...teamLines);
124
285
  // ── Task Panels (middle, side by side) ──
125
- // Left: Pending
126
286
  const pendLines = [];
127
287
  pendLines.push(` ${BOLD}PENDING${RESET}`);
128
288
  pendLines.push(` ${DIM}${"─".repeat(halfW - 4)}${RESET}`);
@@ -139,7 +299,6 @@ export class LeaderTui {
139
299
  pendLines.push(` ${link}${prio} ${title}`);
140
300
  }
141
301
  }
142
- // Right: In Progress
143
302
  const progLines = [];
144
303
  progLines.push(` ${BOLD}IN PROGRESS${RESET}`);
145
304
  progLines.push(` ${DIM}${"─".repeat(halfW - 4)}${RESET}`);
@@ -154,7 +313,6 @@ export class LeaderTui {
154
313
  progLines.push(` ${BLUE}${who}${RESET} ${title}`);
155
314
  }
156
315
  }
157
- // Pad both to same height
158
316
  const taskH = Math.max(pendLines.length, progLines.length) + 2;
159
317
  while (pendLines.length < taskH - 2)
160
318
  pendLines.push("");
@@ -165,16 +323,79 @@ export class LeaderTui {
165
323
  for (let i = 0; i < leftBox.length; i++) {
166
324
  out += leftBox[i] + " " + rightBox[i] + "\n";
167
325
  }
326
+ // ── Live Stream / Worker Messages Panel ──
327
+ const msgWidth = cols - 2;
328
+ const msgLines = [];
329
+ const selected = state.workers[state.selectedWorkerIndex];
330
+ if (selected) {
331
+ if (selected.streamActive) {
332
+ const title = `LIVE STREAM — ${selected.name} (${selected.presetRole})`;
333
+ msgLines.push(` ${title}`);
334
+ msgLines.push(` ${DIM}${"─".repeat(msgWidth - 4)}${RESET}`);
335
+ msgLines.push(` ${GREEN}${BOLD}═══ Streaming... ═══${RESET}`);
336
+ const displayLines = selected.streamBuffer.slice(-20);
337
+ for (const l of displayLines) {
338
+ const plain = stripJsonChunk(l);
339
+ if (!plain)
340
+ continue;
341
+ const wrapped = wrapText(plain, msgWidth - 4);
342
+ for (const wl of wrapped) {
343
+ msgLines.push(` ${CYAN}${wl}${RESET}`);
344
+ }
345
+ }
346
+ if (selected.streamBuffer.length > 20) {
347
+ msgLines.push(` ${DIM}... (${selected.streamBuffer.length - 20} more lines)${RESET}`);
348
+ }
349
+ while (msgLines.length < 14)
350
+ msgLines.push("");
351
+ }
352
+ else if (selected.streamBuffer.length > 0) {
353
+ const title = `LAST OUTPUT — ${selected.name} (${selected.presetRole})`;
354
+ msgLines.push(` ${title}`);
355
+ msgLines.push(` ${DIM}${"─".repeat(msgWidth - 4)}${RESET}`);
356
+ const displayLines = selected.streamBuffer.slice(-5);
357
+ for (const l of displayLines) {
358
+ const plain = stripJsonChunk(l);
359
+ if (!plain)
360
+ continue;
361
+ const wrapped = wrapText(plain, msgWidth - 4);
362
+ for (const wl of wrapped) {
363
+ msgLines.push(` ${DIM}${wl}${RESET}`);
364
+ }
365
+ }
366
+ while (msgLines.length < 12)
367
+ msgLines.push("");
368
+ }
369
+ else {
370
+ const title = `WORKER MESSAGES — ${selected.name} (${selected.presetRole})`;
371
+ msgLines.push(` ${title}`);
372
+ msgLines.push(` ${DIM}${"─".repeat(msgWidth - 4)}${RESET}`);
373
+ const msgContent = renderWorkerMessages(selected, msgWidth);
374
+ for (const line of msgContent.slice(0, 10)) {
375
+ msgLines.push(line);
376
+ }
377
+ while (msgLines.length < 12)
378
+ msgLines.push("");
379
+ }
380
+ }
381
+ else {
382
+ msgLines.push(` ${DIM}No workers${RESET}`);
383
+ while (msgLines.length < 12)
384
+ msgLines.push("");
385
+ }
386
+ const msgH = msgLines.length + 2;
387
+ out += box(msgWidth, ...msgLines);
168
388
  // ── Event Log ──
169
- const inputSectionH = 4; // input box height
170
- const remainingH = rows - teamBoxH - (taskH + 2) - 3 - inputSectionH;
389
+ const inputSectionH = 4;
390
+ const remainingH = rows - teamBoxH - (taskH + 2) - msgH - inputSectionH - 3;
171
391
  const logH = Math.max(remainingH, 3);
172
392
  const logLines = [];
173
393
  logLines.push(` ${BOLD}EVENT LOG${RESET}`);
174
394
  logLines.push(` ${DIM}${"─".repeat(cols - 4)}${RESET}`);
175
395
  const events = state.events.slice(-(logH - 3));
176
396
  for (const e of events) {
177
- logLines.push(` ${DIM}${e.timestamp}${RESET} ${e.message}`);
397
+ const msg = truncate(e.message, cols - 18);
398
+ logLines.push(` ${DIM}${e.timestamp}${RESET} ${msg}`);
178
399
  }
179
400
  while (logLines.length < logH - 1)
180
401
  logLines.push("");
@@ -186,11 +407,18 @@ export class LeaderTui {
186
407
  out += inputBox;
187
408
  // ── Footer ──
188
409
  const idShort = state.leaderInstanceId.slice(0, 8);
189
- const footer = `${DIM}Leader: ${state.leaderName} | Instance: ${idShort} | CACHE_DIR: ${state.cacheDir} | Ctrl+C to stop${RESET}`;
410
+ const cacheDisplay = state.cacheDir.length > 60
411
+ ? "..." + state.cacheDir.slice(-57)
412
+ : state.cacheDir;
413
+ const footer = `${DIM}Leader: ${state.leaderName} | Instance: ${idShort} | Cache: ${cacheDisplay} | Ctrl+C to stop${RESET}`;
190
414
  out += `\n${footer}`;
191
415
  process.stdout.write(out);
192
416
  }
193
417
  destroy() {
418
+ if (this.refreshTimer) {
419
+ clearInterval(this.refreshTimer);
420
+ this.refreshTimer = null;
421
+ }
194
422
  this.disableRawMode();
195
423
  process.stdout.write(SHOW_CURSOR + CLEAR);
196
424
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/leader/tui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/leader/tui.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,18 @@ export class LeaderWatcher {
54
54
  content: msg.content,
55
55
  msgId,
56
56
  });
57
+ // Emit worker_message_received for TUI if from a Worker
58
+ if (msg.from_role && msg.from_role !== "leader") {
59
+ this.eventBus.emit({
60
+ type: "worker_message_received",
61
+ instanceId: msg.from_instance,
62
+ name: fromLabel,
63
+ content: msg.content,
64
+ link: msg.link,
65
+ timestamp: new Date().toLocaleTimeString(),
66
+ messageId: msgId,
67
+ });
68
+ }
57
69
  await this.chainRouter.route(msg);
58
70
  try {
59
71
  msg.read = true;
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/leader/watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/leader/watcher.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,10 @@ export declare const InstanceSchema: z.ZodObject<{
20
20
  current_task_id: z.ZodDefault<z.ZodNullable<z.ZodString>>;
21
21
  connected_since: z.ZodString;
22
22
  work_dir: z.ZodDefault<z.ZodNullable<z.ZodString>>;
23
+ worktree_name: z.ZodDefault<z.ZodNullable<z.ZodString>>;
24
+ worktree_path: z.ZodDefault<z.ZodNullable<z.ZodString>>;
25
+ worktree_branch: z.ZodDefault<z.ZodNullable<z.ZodString>>;
26
+ pid: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
23
27
  }, "strip", z.ZodTypeAny, {
24
28
  status: "idle" | "busy";
25
29
  id: string;
@@ -28,6 +32,10 @@ export declare const InstanceSchema: z.ZodObject<{
28
32
  current_task_id: string | null;
29
33
  connected_since: string;
30
34
  work_dir: string | null;
35
+ worktree_name: string | null;
36
+ worktree_path: string | null;
37
+ worktree_branch: string | null;
38
+ pid: number | null;
31
39
  }, {
32
40
  id: string;
33
41
  name: string;
@@ -36,6 +44,10 @@ export declare const InstanceSchema: z.ZodObject<{
36
44
  role?: "planner" | "builder" | "verifier" | "reviewer" | "accepter" | "leader" | undefined;
37
45
  current_task_id?: string | null | undefined;
38
46
  work_dir?: string | null | undefined;
47
+ worktree_name?: string | null | undefined;
48
+ worktree_path?: string | null | undefined;
49
+ worktree_branch?: string | null | undefined;
50
+ pid?: number | null | undefined;
39
51
  }>;
40
52
  export type Instance = z.infer<typeof InstanceSchema>;
41
53
  export declare const TaskSchema: z.ZodObject<{
@@ -62,9 +74,10 @@ export declare const TaskSchema: z.ZodObject<{
62
74
  duration_seconds: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
63
75
  depends_on: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
64
76
  blocked_by: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
77
+ leader_only: z.ZodDefault<z.ZodBoolean>;
65
78
  }, "strip", z.ZodTypeAny, {
66
79
  link: "plan" | "build" | "verify" | "review" | "accept" | null;
67
- status: "pending" | "claimed" | "completed" | "blocked" | "failed";
80
+ status: "completed" | "failed" | "pending" | "claimed" | "blocked";
68
81
  id: string;
69
82
  title: string;
70
83
  description: string;
@@ -86,11 +99,12 @@ export declare const TaskSchema: z.ZodObject<{
86
99
  duration_seconds: number | null;
87
100
  depends_on: string[];
88
101
  blocked_by: string[];
102
+ leader_only: boolean;
89
103
  }, {
90
104
  title: string;
91
105
  created_at: string;
92
106
  link?: "plan" | "build" | "verify" | "review" | "accept" | null | undefined;
93
- status?: "pending" | "claimed" | "completed" | "blocked" | "failed" | undefined;
107
+ status?: "completed" | "failed" | "pending" | "claimed" | "blocked" | undefined;
94
108
  id?: string | undefined;
95
109
  description?: string | undefined;
96
110
  priority?: number | undefined;
@@ -110,6 +124,7 @@ export declare const TaskSchema: z.ZodObject<{
110
124
  duration_seconds?: number | null | undefined;
111
125
  depends_on?: string[] | undefined;
112
126
  blocked_by?: string[] | undefined;
127
+ leader_only?: boolean | undefined;
113
128
  }>;
114
129
  export type Task = z.infer<typeof TaskSchema>;
115
130
  export declare const MessageSchema: z.ZodObject<{
@@ -130,11 +145,14 @@ export declare const MessageSchema: z.ZodObject<{
130
145
  task_doc_path: z.ZodDefault<z.ZodNullable<z.ZodString>>;
131
146
  result_path: z.ZodDefault<z.ZodNullable<z.ZodString>>;
132
147
  reply_to: z.ZodDefault<z.ZodNullable<z.ZodString>>;
148
+ chain_id: z.ZodDefault<z.ZodNullable<z.ZodString>>;
149
+ task_id: z.ZodDefault<z.ZodNullable<z.ZodString>>;
133
150
  }, "strip", z.ZodTypeAny, {
134
151
  link: string | null;
135
152
  type: "direct" | "broadcast" | "help";
136
153
  id: string;
137
154
  created_at: string;
155
+ chain_id: string | null;
138
156
  from_instance: string;
139
157
  from_name: string;
140
158
  from_role: string;
@@ -148,12 +166,14 @@ export declare const MessageSchema: z.ZodObject<{
148
166
  task_doc_path: string | null;
149
167
  result_path: string | null;
150
168
  reply_to: string | null;
169
+ task_id: string | null;
151
170
  }, {
152
171
  created_at: string;
153
172
  content: string;
154
173
  link?: string | null | undefined;
155
174
  type?: "direct" | "broadcast" | "help" | undefined;
156
175
  id?: string | undefined;
176
+ chain_id?: string | null | undefined;
157
177
  from_instance?: string | undefined;
158
178
  from_name?: string | undefined;
159
179
  from_role?: string | undefined;
@@ -166,6 +186,7 @@ export declare const MessageSchema: z.ZodObject<{
166
186
  task_doc_path?: string | null | undefined;
167
187
  result_path?: string | null | undefined;
168
188
  reply_to?: string | null | undefined;
189
+ task_id?: string | null | undefined;
169
190
  }>;
170
191
  export type Message = z.infer<typeof MessageSchema>;
171
192
  export declare function createInstance(overrides: {
@@ -186,6 +207,7 @@ export declare function createTask(overrides: {
186
207
  chain_id?: string | null;
187
208
  depends_on?: string[];
188
209
  blocked_by?: string[];
210
+ leader_only?: boolean;
189
211
  }): Task;
190
212
  export declare function createMessage(overrides: {
191
213
  type?: MessageType;
@@ -260,12 +282,12 @@ export declare const CompleteTaskInput: z.ZodObject<{
260
282
  result: z.ZodString;
261
283
  }, "strip", z.ZodTypeAny, {
262
284
  result: string;
263
- instance_id: string;
264
285
  task_id: string;
286
+ instance_id: string;
265
287
  }, {
266
288
  result: string;
267
- instance_id: string;
268
289
  task_id: string;
290
+ instance_id: string;
269
291
  }>;
270
292
  export declare const ListTasksInput: z.ZodObject<{
271
293
  status: z.ZodOptional<z.ZodString>;
@@ -566,14 +588,14 @@ export declare const EvalDecisionSchema: z.ZodObject<{
566
588
  nextLink: z.ZodOptional<z.ZodString>;
567
589
  suggestedWorker: z.ZodOptional<z.ZodNullable<z.ZodString>>;
568
590
  }, "strip", z.ZodTypeAny, {
569
- decision: "activate_next" | "feedback" | "close_chain";
570
591
  reason: string;
592
+ decision: "activate_next" | "feedback" | "close_chain";
571
593
  feedback?: string | undefined;
572
594
  nextLink?: string | undefined;
573
595
  suggestedWorker?: string | null | undefined;
574
596
  }, {
575
- decision: "activate_next" | "feedback" | "close_chain";
576
597
  reason: string;
598
+ decision: "activate_next" | "feedback" | "close_chain";
577
599
  feedback?: string | undefined;
578
600
  nextLink?: string | undefined;
579
601
  suggestedWorker?: string | null | undefined;
@@ -23,6 +23,10 @@ export const InstanceSchema = z.object({
23
23
  current_task_id: z.string().nullable().default(null),
24
24
  connected_since: z.string(),
25
25
  work_dir: z.string().nullable().default(null),
26
+ worktree_name: z.string().nullable().default(null),
27
+ worktree_path: z.string().nullable().default(null),
28
+ worktree_branch: z.string().nullable().default(null),
29
+ pid: z.number().int().nullable().default(null),
26
30
  });
27
31
  export const TaskSchema = z.object({
28
32
  id: z.string().default(""),
@@ -48,6 +52,7 @@ export const TaskSchema = z.object({
48
52
  duration_seconds: z.number().nullable().default(null),
49
53
  depends_on: z.array(z.string()).default([]),
50
54
  blocked_by: z.array(z.string()).default([]),
55
+ leader_only: z.boolean().default(false),
51
56
  });
52
57
  export const MessageSchema = z.object({
53
58
  id: z.string().default(""),
@@ -67,6 +72,8 @@ export const MessageSchema = z.object({
67
72
  task_doc_path: z.string().nullable().default(null),
68
73
  result_path: z.string().nullable().default(null),
69
74
  reply_to: z.string().nullable().default(null),
75
+ chain_id: z.string().nullable().default(null),
76
+ task_id: z.string().nullable().default(null),
70
77
  });
71
78
  // ── Factory helpers (mirrors Python Field(default_factory=...)) ──
72
79
  export function createInstance(overrides) {
@@ -105,6 +112,7 @@ export function createTask(overrides) {
105
112
  duration_seconds: null,
106
113
  depends_on: overrides.depends_on ?? [],
107
114
  blocked_by: overrides.blocked_by ?? [],
115
+ leader_only: overrides.leader_only ?? false,
108
116
  });
109
117
  }
110
118
  export function createMessage(overrides) {