@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.
- package/README.md +203 -269
- package/dist/cli/commands.d.ts +0 -10
- package/dist/cli/commands.js +1 -184
- package/dist/cli/commands.js.map +1 -1
- package/dist/config.d.ts +39 -0
- package/dist/config.js +43 -2
- package/dist/config.js.map +1 -1
- package/dist/email-validator/__tests__/domain.test.d.ts +1 -0
- package/dist/email-validator/__tests__/domain.test.js +128 -0
- package/dist/email-validator/__tests__/domain.test.js.map +1 -0
- package/dist/email-validator/__tests__/local-part.test.d.ts +1 -0
- package/dist/email-validator/__tests__/local-part.test.js +110 -0
- package/dist/email-validator/__tests__/local-part.test.js.map +1 -0
- package/dist/email-validator/__tests__/parser.test.d.ts +1 -0
- package/dist/email-validator/__tests__/parser.test.js +161 -0
- package/dist/email-validator/__tests__/parser.test.js.map +1 -0
- package/dist/email-validator/__tests__/validator.test.d.ts +1 -0
- package/dist/email-validator/__tests__/validator.test.js +152 -0
- package/dist/email-validator/__tests__/validator.test.js.map +1 -0
- package/dist/email-validator/diagnostics.d.ts +3 -0
- package/dist/email-validator/diagnostics.js +34 -0
- package/dist/email-validator/diagnostics.js.map +1 -0
- package/dist/email-validator/domain.d.ts +2 -0
- package/dist/email-validator/domain.js +119 -0
- package/dist/email-validator/domain.js.map +1 -0
- package/dist/email-validator/index.d.ts +2 -0
- package/dist/email-validator/index.js +2 -0
- package/dist/email-validator/index.js.map +1 -0
- package/dist/email-validator/local-part.d.ts +2 -0
- package/dist/email-validator/local-part.js +67 -0
- package/dist/email-validator/local-part.js.map +1 -0
- package/dist/email-validator/parser.d.ts +9 -0
- package/dist/email-validator/parser.js +120 -0
- package/dist/email-validator/parser.js.map +1 -0
- package/dist/email-validator/types.d.ts +24 -0
- package/dist/email-validator/types.js +2 -0
- package/dist/email-validator/types.js.map +1 -0
- package/dist/email-validator/validator.d.ts +9 -0
- package/dist/email-validator/validator.js +51 -0
- package/dist/email-validator/validator.js.map +1 -0
- package/dist/executor/runner.d.ts +19 -2
- package/dist/executor/runner.js +29 -4
- package/dist/executor/runner.js.map +1 -1
- package/dist/executor/template.d.ts +3 -1
- package/dist/executor/template.js +19 -16
- package/dist/executor/template.js.map +1 -1
- package/dist/index.js +11 -34
- package/dist/index.js.map +1 -1
- package/dist/leader/chain-router.d.ts +10 -2
- package/dist/leader/chain-router.js +167 -10
- package/dist/leader/chain-router.js.map +1 -1
- package/dist/leader/event-bus.d.ts +1 -1
- package/dist/leader/event-bus.js +2 -1
- package/dist/leader/event-bus.js.map +1 -1
- package/dist/leader/index.d.ts +7 -0
- package/dist/leader/index.js +99 -8
- package/dist/leader/index.js.map +1 -1
- package/dist/leader/merge-validator.d.ts +25 -0
- package/dist/leader/merge-validator.js +105 -0
- package/dist/leader/merge-validator.js.map +1 -0
- package/dist/leader/state.d.ts +20 -0
- package/dist/leader/state.js +77 -2
- package/dist/leader/state.js.map +1 -1
- package/dist/leader/stream-tailer.d.ts +12 -0
- package/dist/leader/stream-tailer.js +58 -0
- package/dist/leader/stream-tailer.js.map +1 -0
- package/dist/leader/tui.d.ts +8 -0
- package/dist/leader/tui.js +245 -17
- package/dist/leader/tui.js.map +1 -1
- package/dist/leader/watcher.js +12 -0
- package/dist/leader/watcher.js.map +1 -1
- package/dist/models/schemas.d.ts +28 -6
- package/dist/models/schemas.js +8 -0
- package/dist/models/schemas.js.map +1 -1
- package/dist/modules/task-queue.js +4 -0
- package/dist/modules/task-queue.js.map +1 -1
- package/dist/orchestrator/init-checker.d.ts +33 -0
- package/dist/orchestrator/init-checker.js +297 -0
- package/dist/orchestrator/init-checker.js.map +1 -0
- package/dist/orchestrator/run.d.ts +7 -0
- package/dist/orchestrator/run.js +126 -0
- package/dist/orchestrator/run.js.map +1 -0
- package/dist/skills/claude-orchestrator/SKILL.md +75 -217
- package/dist/templates/agents/worker-accept.md +48 -0
- package/dist/templates/agents/worker-build.md +38 -0
- package/dist/templates/agents/worker-commit-message.md +12 -0
- package/dist/templates/agents/worker-decompose.md +40 -0
- package/dist/templates/agents/worker-evaluate-format-hint.md +7 -0
- package/dist/templates/agents/worker-evaluate.md +49 -0
- package/dist/templates/agents/worker-identity.md +7 -0
- package/dist/templates/agents/worker-merge-decision.md +12 -0
- package/dist/templates/agents/worker-plan.md +36 -0
- package/dist/templates/agents/worker-review.md +42 -0
- package/dist/templates/agents/worker-task-doc.md +13 -0
- package/dist/templates/agents/worker-verify.md +44 -0
- package/dist/templates/claude-memory/personal-claude-accepter.md +17 -0
- package/dist/templates/claude-memory/personal-claude-builder.md +24 -0
- package/dist/templates/claude-memory/personal-claude-planner.md +22 -0
- package/dist/templates/claude-memory/personal-claude-reviewer.md +25 -0
- package/dist/templates/claude-memory/personal-claude-verifier.md +24 -0
- package/dist/templates/claude-memory/team-claude.md +61 -0
- package/dist/templates/user-global-claude.md +65 -0
- package/dist/utils/console-capture.d.ts +2 -0
- package/dist/utils/console-capture.js +42 -0
- package/dist/utils/console-capture.js.map +1 -0
- package/dist/utils/exec.d.ts +2 -6
- package/dist/utils/exec.js +48 -29
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/json.d.ts +5 -0
- package/dist/utils/json.js +17 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/logger.d.ts +1 -0
- package/dist/utils/logger.js +3 -0
- package/dist/utils/logger.js.map +1 -1
- package/dist/worker/child-runner.d.ts +12 -0
- package/dist/worker/child-runner.js +115 -0
- package/dist/worker/child-runner.js.map +1 -0
- package/dist/worker/child.d.ts +2 -0
- package/dist/worker/child.js +8 -0
- package/dist/worker/child.js.map +1 -0
- package/dist/worker/commit-checker.d.ts +21 -0
- package/dist/worker/commit-checker.js +81 -0
- package/dist/worker/commit-checker.js.map +1 -0
- package/dist/worker/evaluator.d.ts +3 -4
- package/dist/worker/evaluator.js +15 -50
- package/dist/worker/evaluator.js.map +1 -1
- package/dist/worker/watcher.d.ts +5 -1
- package/dist/worker/watcher.js +44 -9
- package/dist/worker/watcher.js.map +1 -1
- package/dist/worker/worktree-initializer.d.ts +10 -0
- package/dist/worker/worktree-initializer.js +238 -0
- package/dist/worker/worktree-initializer.js.map +1 -0
- package/package.json +2 -2
- package/dist/templates/worker-accept.md +0 -46
- package/dist/templates/worker-build.md +0 -45
- package/dist/templates/worker-decompose.md +0 -67
- package/dist/templates/worker-evaluate.md +0 -41
- package/dist/templates/worker-plan.md +0 -43
- package/dist/templates/worker-review.md +0 -46
- package/dist/templates/worker-verify.md +0 -47
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
2
|
import { Logger } from "../utils/logger.js";
|
|
3
3
|
import { createMessage, ChainDefSchema, EvalDecisionSchema, } from "../models/schemas.js";
|
|
4
|
+
import { extractJson } from "../utils/json.js";
|
|
4
5
|
const NEXT_LINKS = {
|
|
5
6
|
plan: "build",
|
|
6
7
|
build: "verify",
|
|
@@ -8,6 +9,14 @@ const NEXT_LINKS = {
|
|
|
8
9
|
review: "accept",
|
|
9
10
|
accept: null,
|
|
10
11
|
};
|
|
12
|
+
const LINK_TO_ROLE = {
|
|
13
|
+
plan: "planner",
|
|
14
|
+
build: "builder",
|
|
15
|
+
verify: "verifier",
|
|
16
|
+
review: "reviewer",
|
|
17
|
+
accept: "accepter",
|
|
18
|
+
decompose: "leader",
|
|
19
|
+
};
|
|
11
20
|
export class ChainRouter {
|
|
12
21
|
zk;
|
|
13
22
|
taskQueue;
|
|
@@ -16,8 +25,11 @@ export class ChainRouter {
|
|
|
16
25
|
leaderInstanceId;
|
|
17
26
|
leaderName;
|
|
18
27
|
runner;
|
|
28
|
+
templateEngine;
|
|
29
|
+
mergeValidator;
|
|
19
30
|
logger = new Logger("ChainRouter");
|
|
20
|
-
|
|
31
|
+
taskDocTemplate = null;
|
|
32
|
+
constructor(zk, taskQueue, messageRouter, eventBus, leaderInstanceId, leaderName, runner, templateEngine, mergeValidator = null) {
|
|
21
33
|
this.zk = zk;
|
|
22
34
|
this.taskQueue = taskQueue;
|
|
23
35
|
this.messageRouter = messageRouter;
|
|
@@ -25,6 +37,8 @@ export class ChainRouter {
|
|
|
25
37
|
this.leaderInstanceId = leaderInstanceId;
|
|
26
38
|
this.leaderName = leaderName;
|
|
27
39
|
this.runner = runner;
|
|
40
|
+
this.templateEngine = templateEngine;
|
|
41
|
+
this.mergeValidator = mergeValidator;
|
|
28
42
|
}
|
|
29
43
|
async route(msg) {
|
|
30
44
|
const link = msg.link;
|
|
@@ -40,6 +54,61 @@ export class ChainRouter {
|
|
|
40
54
|
return this.handleCompletionReport(msg);
|
|
41
55
|
}
|
|
42
56
|
async handleRequirement(msg) {
|
|
57
|
+
const template = this.templateEngine.get("decompose");
|
|
58
|
+
if (template) {
|
|
59
|
+
// Leader self-processes decompose
|
|
60
|
+
const uniqueKey = `leader-decompose-${msg.id || Date.now().toString(36)}`;
|
|
61
|
+
const resultPath = this.runner.resultPath(uniqueKey);
|
|
62
|
+
const logPath = this.runner.logPath(uniqueKey);
|
|
63
|
+
const prompt = this.templateEngine.render(template, {
|
|
64
|
+
task_title: msg.task_title ?? "",
|
|
65
|
+
task_description: msg.task_description ?? msg.content,
|
|
66
|
+
task_criteria: msg.task_criteria ?? "",
|
|
67
|
+
task_doc_path: msg.task_doc_path ?? "",
|
|
68
|
+
result_path: resultPath,
|
|
69
|
+
work_dir: process.cwd(),
|
|
70
|
+
time: new Date().toISOString(),
|
|
71
|
+
content: msg.content,
|
|
72
|
+
});
|
|
73
|
+
this.logger.info(`Leader self-processing decompose: "${msg.content.slice(0, 80)}"`);
|
|
74
|
+
this.eventBus.emit({
|
|
75
|
+
type: "stream_start",
|
|
76
|
+
instanceId: this.leaderInstanceId,
|
|
77
|
+
logPath,
|
|
78
|
+
taskId: msg.id,
|
|
79
|
+
});
|
|
80
|
+
await this.runner.run(prompt, logPath, {
|
|
81
|
+
systemPrompt: this.runner.buildIdentityPrompt(),
|
|
82
|
+
});
|
|
83
|
+
this.eventBus.emit({
|
|
84
|
+
type: "stream_end",
|
|
85
|
+
instanceId: this.leaderInstanceId,
|
|
86
|
+
logPath,
|
|
87
|
+
});
|
|
88
|
+
try {
|
|
89
|
+
const resultContent = await fs.promises.readFile(resultPath, "utf-8");
|
|
90
|
+
const cleanedContent = extractJson(resultContent);
|
|
91
|
+
const syntheticMsg = createMessage({
|
|
92
|
+
from_instance: this.leaderInstanceId,
|
|
93
|
+
from_name: this.leaderName,
|
|
94
|
+
from_role: "leader",
|
|
95
|
+
to_instance: this.leaderInstanceId,
|
|
96
|
+
content: cleanedContent,
|
|
97
|
+
link: "task_defs",
|
|
98
|
+
});
|
|
99
|
+
await this.handleTaskDefinitions(syntheticMsg);
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
this.logger.error("Failed to read decompose result, falling back to planner", err);
|
|
103
|
+
await this.forwardToPlanner(msg);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
// Fallback: forward to planner worker
|
|
108
|
+
await this.forwardToPlanner(msg);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async forwardToPlanner(msg) {
|
|
43
112
|
const planner = await this.findWorkerByRole("planner");
|
|
44
113
|
if (!planner) {
|
|
45
114
|
this.logger.error("No planner worker available. Requirement not processed.");
|
|
@@ -63,7 +132,7 @@ export class ChainRouter {
|
|
|
63
132
|
async handleTaskDefinitions(msg) {
|
|
64
133
|
let chainDef;
|
|
65
134
|
try {
|
|
66
|
-
chainDef = ChainDefSchema.parse(JSON.parse(msg.content));
|
|
135
|
+
chainDef = ChainDefSchema.parse(JSON.parse(extractJson(msg.content)));
|
|
67
136
|
}
|
|
68
137
|
catch (err) {
|
|
69
138
|
this.logger.error("Failed to parse task definitions", err);
|
|
@@ -76,17 +145,25 @@ export class ChainRouter {
|
|
|
76
145
|
{ link: "review", def: chainDef.tasks.review },
|
|
77
146
|
{ link: "accept", def: chainDef.tasks.accept },
|
|
78
147
|
];
|
|
148
|
+
const createdTasks = new Map();
|
|
79
149
|
for (const { link, def } of taskLinks) {
|
|
80
150
|
if (!def)
|
|
81
151
|
continue;
|
|
82
152
|
const task = await this.taskQueue.push(def.title, def.description, def.priority, this.leaderInstanceId, undefined, this.leaderName, undefined, link, chainDef.chain_id);
|
|
153
|
+
if (this.taskDocTemplate === null) {
|
|
154
|
+
this.taskDocTemplate = await this.templateEngine.loadFile("worker-task-doc.md");
|
|
155
|
+
}
|
|
83
156
|
const docPath = this.runner.taskDocPath(task.id);
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
157
|
+
const docContent = this.templateEngine.render(this.taskDocTemplate, {
|
|
158
|
+
title: def.title,
|
|
159
|
+
link,
|
|
160
|
+
chain_id: chainDef.chain_id,
|
|
161
|
+
priority: String(def.priority),
|
|
162
|
+
description: def.description,
|
|
163
|
+
criteria: def.criteria,
|
|
164
|
+
});
|
|
165
|
+
await fs.promises.writeFile(docPath, docContent);
|
|
166
|
+
createdTasks.set(link, { taskId: task.id, docPath, def });
|
|
90
167
|
this.eventBus.emit({
|
|
91
168
|
type: "task_created",
|
|
92
169
|
task: { ...task },
|
|
@@ -98,12 +175,43 @@ export class ChainRouter {
|
|
|
98
175
|
const linkCount = taskLinks.filter(t => t.def).length;
|
|
99
176
|
this.eventBus.emit({ type: "debug_info", message: `Chain ${chainDef.chain_id}: ${linkCount} tasks created` });
|
|
100
177
|
}
|
|
178
|
+
// Send message to the first worker in the chain to start processing
|
|
179
|
+
const firstLink = taskLinks.find(t => t.def)?.link;
|
|
180
|
+
if (firstLink && createdTasks.has(firstLink)) {
|
|
181
|
+
const role = LINK_TO_ROLE[firstLink];
|
|
182
|
+
const worker = await this.findWorkerByRole(role);
|
|
183
|
+
if (worker) {
|
|
184
|
+
const { docPath, def } = createdTasks.get(firstLink);
|
|
185
|
+
await this.sendTaskToWorker(worker, firstLink, def, docPath, chainDef.chain_id, createdTasks.get(firstLink).taskId);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
this.logger.error(`No ${role} worker available. Chain ${chainDef.chain_id} waiting for worker.`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
101
191
|
}
|
|
102
192
|
async handleCompletionReport(msg) {
|
|
193
|
+
// Try merge validation if commit info is present
|
|
194
|
+
if (this.mergeValidator) {
|
|
195
|
+
try {
|
|
196
|
+
const parsed = JSON.parse(msg.content);
|
|
197
|
+
if (parsed.commit?.sha) {
|
|
198
|
+
this.mergeValidator.validate({
|
|
199
|
+
sha: parsed.commit.sha,
|
|
200
|
+
message: parsed.commit.message,
|
|
201
|
+
branch: parsed.commit.branch,
|
|
202
|
+
taskTitle: msg.task_title ?? "unknown",
|
|
203
|
+
taskLink: msg.link ?? "unknown",
|
|
204
|
+
}).catch(() => { });
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
// Content is not JSON, skip merge validation
|
|
209
|
+
}
|
|
210
|
+
}
|
|
103
211
|
let decision;
|
|
104
212
|
let parsed = true;
|
|
105
213
|
try {
|
|
106
|
-
decision = EvalDecisionSchema.parse(JSON.parse(msg.content));
|
|
214
|
+
decision = EvalDecisionSchema.parse(JSON.parse(extractJson(msg.content)));
|
|
107
215
|
}
|
|
108
216
|
catch {
|
|
109
217
|
parsed = false;
|
|
@@ -127,12 +235,30 @@ export class ChainRouter {
|
|
|
127
235
|
const nextLink = decision.nextLink ?? NEXT_LINKS[msg.link];
|
|
128
236
|
if (!nextLink)
|
|
129
237
|
break;
|
|
130
|
-
const
|
|
238
|
+
const chainId = msg.chain_id ?? null;
|
|
239
|
+
const task = await this.taskQueue.push(`[${msg.reply_to ?? "chain"}] ${nextLink}`, "", 1, this.leaderInstanceId, undefined, this.leaderName, undefined, nextLink, chainId);
|
|
131
240
|
this.eventBus.emit({
|
|
132
241
|
type: "task_created",
|
|
133
242
|
task: { ...task },
|
|
134
243
|
taskId: task.id,
|
|
135
244
|
});
|
|
245
|
+
// Find worker and send message for the next link
|
|
246
|
+
const role = LINK_TO_ROLE[nextLink];
|
|
247
|
+
if (role) {
|
|
248
|
+
const worker = await this.findWorkerByRole(role);
|
|
249
|
+
if (worker) {
|
|
250
|
+
// Try to find pending task with full details from handleTaskDefinitions
|
|
251
|
+
const pending = await this.findPendingTaskByChainLink(chainId, nextLink);
|
|
252
|
+
const docPath = this.runner.taskDocPath(task.id);
|
|
253
|
+
const def = pending
|
|
254
|
+
? { title: pending.title, description: pending.description || "", criteria: "", priority: pending.priority ?? 1 }
|
|
255
|
+
: { title: task.title, description: task.description, criteria: "", priority: 1 };
|
|
256
|
+
await this.sendTaskToWorker(worker, nextLink, def, docPath, chainId ?? "", task.id);
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
this.logger.info(`No ${role} worker available for ${nextLink}, task queued`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
136
262
|
break;
|
|
137
263
|
}
|
|
138
264
|
case "feedback": {
|
|
@@ -150,6 +276,17 @@ export class ChainRouter {
|
|
|
150
276
|
}
|
|
151
277
|
}
|
|
152
278
|
}
|
|
279
|
+
async findPendingTaskByChainLink(chainId, link) {
|
|
280
|
+
if (!chainId)
|
|
281
|
+
return null;
|
|
282
|
+
const pending = await this.taskQueue.listTasks("pending");
|
|
283
|
+
for (const t of pending) {
|
|
284
|
+
if (t.chain_id === chainId && t.link === link) {
|
|
285
|
+
return t;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return null;
|
|
289
|
+
}
|
|
153
290
|
async findWorkerByRole(role) {
|
|
154
291
|
const instances = await this.zk.listInstances();
|
|
155
292
|
for (const inst of instances) {
|
|
@@ -159,5 +296,25 @@ export class ChainRouter {
|
|
|
159
296
|
}
|
|
160
297
|
return null;
|
|
161
298
|
}
|
|
299
|
+
async sendTaskToWorker(worker, link, def, docPath, chainId, taskId) {
|
|
300
|
+
await this.zk.createMessage(worker.id, {
|
|
301
|
+
type: "direct",
|
|
302
|
+
from_instance: this.leaderInstanceId,
|
|
303
|
+
from_name: this.leaderName,
|
|
304
|
+
from_role: "leader",
|
|
305
|
+
to_instance: worker.id,
|
|
306
|
+
content: def.description,
|
|
307
|
+
created_at: new Date().toISOString(),
|
|
308
|
+
read: false,
|
|
309
|
+
link,
|
|
310
|
+
task_title: def.title,
|
|
311
|
+
task_description: def.description,
|
|
312
|
+
task_criteria: def.criteria,
|
|
313
|
+
task_doc_path: docPath,
|
|
314
|
+
chain_id: chainId,
|
|
315
|
+
task_id: taskId ?? null,
|
|
316
|
+
});
|
|
317
|
+
this.logger.info(`Sent ${link} task to ${worker.name} (${worker.id.slice(0, 8)})`);
|
|
318
|
+
}
|
|
162
319
|
}
|
|
163
320
|
//# sourceMappingURL=chain-router.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-router.js","sourceRoot":"","sources":["../../src/leader/chain-router.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chain-router.js","sourceRoot":"","sources":["../../src/leader/chain-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type LeaderEventType = "worker_joined" | "worker_left" | "worker_status_changed" | "task_created" | "task_claimed" | "task_completed" | "task_blocked" | "task_failed" | "task_recovered" | "message_received" | "message_processed" | "chain_activated" | "chain_closed" | "debug_info";
|
|
1
|
+
export type LeaderEventType = "worker_joined" | "worker_left" | "worker_status_changed" | "worker_message_received" | "task_created" | "task_claimed" | "task_completed" | "task_blocked" | "task_failed" | "task_recovered" | "message_received" | "message_processed" | "chain_activated" | "chain_closed" | "debug_info" | "stream_start" | "stream_chunk" | "stream_end";
|
|
2
2
|
export interface LeaderEvent {
|
|
3
3
|
type: LeaderEventType;
|
|
4
4
|
[key: string]: unknown;
|
package/dist/leader/event-bus.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { EventEmitter } from "node:events";
|
|
2
2
|
const ALL_EVENT_TYPES = [
|
|
3
|
-
"worker_joined", "worker_left", "worker_status_changed",
|
|
3
|
+
"worker_joined", "worker_left", "worker_status_changed", "worker_message_received",
|
|
4
4
|
"task_created", "task_claimed", "task_completed", "task_blocked", "task_failed", "task_recovered",
|
|
5
5
|
"message_received", "message_processed", "chain_activated", "chain_closed", "debug_info",
|
|
6
|
+
"stream_start", "stream_chunk", "stream_end",
|
|
6
7
|
];
|
|
7
8
|
export class LeaderEventBus {
|
|
8
9
|
emitter = new EventEmitter();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/leader/event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/leader/event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA2B3C,MAAM,eAAe,GAAsB;IACzC,eAAe,EAAE,aAAa,EAAE,uBAAuB,EAAE,yBAAyB;IAClF,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB;IACjG,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY;IACxF,cAAc,EAAE,cAAc,EAAE,YAAY;CAC7C,CAAC;AAEF,MAAM,OAAO,cAAc;IACjB,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IAErC,KAAK,CAAC,OAAqC;QACzC,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAkB;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,EAAE,CAAC,IAAqB,EAAE,OAAqC;QAC7D,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;CACF"}
|
package/dist/leader/index.d.ts
CHANGED
package/dist/leader/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
1
2
|
import * as os from "node:os";
|
|
3
|
+
import * as path from "node:path";
|
|
2
4
|
import { ZkClient, isNodeExists } from "../zk/client.js";
|
|
3
5
|
import { InstanceRegistry } from "../modules/registry.js";
|
|
4
6
|
import { LeaderEventBus } from "./event-bus.js";
|
|
@@ -8,12 +10,16 @@ import { TaskOrchestrator } from "./orchestrator.js";
|
|
|
8
10
|
import { TaskRecovery } from "./recovery.js";
|
|
9
11
|
import { LeaderWatcher } from "./watcher.js";
|
|
10
12
|
import { ChainRouter } from "./chain-router.js";
|
|
13
|
+
import { MergeValidator } from "./merge-validator.js";
|
|
11
14
|
import { TaskQueue } from "../modules/task-queue.js";
|
|
12
15
|
import { MessageRouter } from "../modules/message-router.js";
|
|
13
16
|
import { ClaudeRunner } from "../executor/runner.js";
|
|
14
|
-
import {
|
|
17
|
+
import { TemplateEngine } from "../executor/template.js";
|
|
18
|
+
import { loadInstanceConfig, saveInstanceId, loadConfig } from "../config.js";
|
|
15
19
|
import { Logger } from "../utils/logger.js";
|
|
20
|
+
import { captureConsoleToFile, restoreConsole } from "../utils/console-capture.js";
|
|
16
21
|
import { LeaderTui } from "./tui.js";
|
|
22
|
+
import { StreamTailer } from "./stream-tailer.js";
|
|
17
23
|
export async function startLeader(config) {
|
|
18
24
|
const logger = new Logger("Leader");
|
|
19
25
|
const zk = new ZkClient(config.zkHosts);
|
|
@@ -30,7 +36,7 @@ export async function startLeader(config) {
|
|
|
30
36
|
started_at: new Date().toISOString(),
|
|
31
37
|
host: os.hostname(),
|
|
32
38
|
pid: process.pid,
|
|
33
|
-
version: "0.
|
|
39
|
+
version: "0.4.1",
|
|
34
40
|
});
|
|
35
41
|
}
|
|
36
42
|
catch (err) {
|
|
@@ -44,20 +50,85 @@ export async function startLeader(config) {
|
|
|
44
50
|
const registry = new InstanceRegistry(zk);
|
|
45
51
|
const instance = await registry.register(leaderName, "leader", leaderId);
|
|
46
52
|
saveInstanceId(instance.id);
|
|
47
|
-
//
|
|
48
|
-
const
|
|
49
|
-
|
|
53
|
+
// Resolve cache dir from config (defaults to project-local .claude-orchestrator/sessions)
|
|
54
|
+
const resolvedConfig = loadConfig({ zookeeper: config.zkHosts });
|
|
55
|
+
// Redirect all console output to file so TUI controls the screen
|
|
56
|
+
captureConsoleToFile(resolvedConfig.cacheDir);
|
|
50
57
|
// Initialize EventBus + State
|
|
51
58
|
const eventBus = new LeaderEventBus();
|
|
52
59
|
const state = new LeaderState();
|
|
53
60
|
state.leaderName = leaderName;
|
|
54
61
|
state.leaderInstanceId = instance.id;
|
|
55
|
-
state.cacheDir =
|
|
62
|
+
state.cacheDir = resolvedConfig.cacheDir;
|
|
56
63
|
eventBus.onAll((event) => state.apply(event));
|
|
64
|
+
// Initialize TemplateEngine first — needed for identity and merge templates
|
|
65
|
+
const projectRoot = process.cwd();
|
|
66
|
+
const distTemplateDir = path.join(projectRoot, "dist", "templates");
|
|
67
|
+
const srcTemplateDir = path.join(projectRoot, "templates");
|
|
68
|
+
const templateDir = fs.existsSync(distTemplateDir) ? distTemplateDir : srcTemplateDir;
|
|
69
|
+
const agentsDir = path.join(templateDir, "agents");
|
|
70
|
+
const templateEngine = new TemplateEngine(agentsDir);
|
|
71
|
+
await templateEngine.loadAll();
|
|
72
|
+
const identityTemplate = await templateEngine.loadFile("worker-identity.md");
|
|
73
|
+
const mergeDecisionTemplate = await templateEngine.loadFile("worker-merge-decision.md");
|
|
74
|
+
// Initialize ClaudeRunner with streaming callback for TUI
|
|
75
|
+
const leaderIdentity = {
|
|
76
|
+
name: leaderName,
|
|
77
|
+
role: "leader",
|
|
78
|
+
worktreePath: process.cwd(),
|
|
79
|
+
worktreeBranch: "",
|
|
80
|
+
instanceId: instance.id,
|
|
81
|
+
};
|
|
82
|
+
const cacheRunner = new ClaudeRunner(resolvedConfig.cliCommand, resolvedConfig.cacheDir, instance.id, process.cwd(), leaderIdentity, identityTemplate, (line) => {
|
|
83
|
+
eventBus.emit({
|
|
84
|
+
type: "stream_chunk",
|
|
85
|
+
instanceId: instance.id,
|
|
86
|
+
line,
|
|
87
|
+
timestamp: new Date().toLocaleTimeString(),
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
// StreamTailer for cross-process file-based streaming
|
|
91
|
+
const streamTailer = new StreamTailer();
|
|
92
|
+
// When a worker claims a task, start tailing its log file
|
|
93
|
+
eventBus.on("task_claimed", (event) => {
|
|
94
|
+
const workerId = event.instanceId;
|
|
95
|
+
const taskId = event.taskId;
|
|
96
|
+
if (!workerId || !taskId)
|
|
97
|
+
return;
|
|
98
|
+
const logPath = cacheRunner.logPath(taskId);
|
|
99
|
+
eventBus.emit({
|
|
100
|
+
type: "stream_start",
|
|
101
|
+
instanceId: workerId,
|
|
102
|
+
logPath,
|
|
103
|
+
taskId,
|
|
104
|
+
});
|
|
105
|
+
streamTailer.start(logPath, (line) => {
|
|
106
|
+
eventBus.emit({
|
|
107
|
+
type: "stream_chunk",
|
|
108
|
+
instanceId: workerId,
|
|
109
|
+
line,
|
|
110
|
+
timestamp: new Date().toLocaleTimeString(),
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
// When a task completes, stop tailing
|
|
115
|
+
eventBus.on("task_completed", (event) => {
|
|
116
|
+
const workerId = event.instanceId;
|
|
117
|
+
if (workerId && streamTailer.isActive) {
|
|
118
|
+
streamTailer.stop();
|
|
119
|
+
eventBus.emit({
|
|
120
|
+
type: "stream_end",
|
|
121
|
+
instanceId: workerId,
|
|
122
|
+
logPath: "",
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
});
|
|
57
126
|
// Initialize TaskQueue, MessageRouter, and ChainRouter
|
|
58
127
|
const taskQueue = new TaskQueue(zk);
|
|
59
128
|
const messageRouter = new MessageRouter(zk);
|
|
60
|
-
|
|
129
|
+
// Initialize MergeValidator
|
|
130
|
+
const mergeValidator = new MergeValidator(process.cwd(), cacheRunner, eventBus, mergeDecisionTemplate);
|
|
131
|
+
const chainRouter = new ChainRouter(zk, taskQueue, messageRouter, eventBus, instance.id, leaderName, cacheRunner, templateEngine, mergeValidator);
|
|
61
132
|
// Start subsystems
|
|
62
133
|
const leaderWatcher = new LeaderWatcher(zk, eventBus, instance.id, chainRouter);
|
|
63
134
|
await leaderWatcher.start();
|
|
@@ -68,9 +139,28 @@ export async function startLeader(config) {
|
|
|
68
139
|
const recovery = new TaskRecovery(zk, eventBus);
|
|
69
140
|
recovery.start();
|
|
70
141
|
await recovery.scanOrphans();
|
|
142
|
+
// Add leader as visible worker for in-process streaming display
|
|
143
|
+
eventBus.emit({
|
|
144
|
+
type: "worker_joined",
|
|
145
|
+
instance: {
|
|
146
|
+
id: instance.id,
|
|
147
|
+
name: leaderName,
|
|
148
|
+
role: "leader",
|
|
149
|
+
status: "idle",
|
|
150
|
+
},
|
|
151
|
+
instanceId: instance.id,
|
|
152
|
+
name: leaderName,
|
|
153
|
+
});
|
|
71
154
|
// Initialize TUI
|
|
72
155
|
const tui = new LeaderTui();
|
|
73
|
-
eventBus.onAll(() =>
|
|
156
|
+
eventBus.onAll((event) => {
|
|
157
|
+
if (event.type === "stream_chunk") {
|
|
158
|
+
tui.requestRender();
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
tui.render(state);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
74
164
|
tui.render(state);
|
|
75
165
|
// Wire TUI input to send messages to leader's own queue for processing
|
|
76
166
|
tui.onInput(async (text) => {
|
|
@@ -93,6 +183,7 @@ export async function startLeader(config) {
|
|
|
93
183
|
await new Promise((resolve) => {
|
|
94
184
|
const cleanup = () => {
|
|
95
185
|
tui.destroy();
|
|
186
|
+
restoreConsole();
|
|
96
187
|
resolve();
|
|
97
188
|
};
|
|
98
189
|
process.once("SIGINT", cleanup);
|
package/dist/leader/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/leader/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/leader/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ClaudeRunner } from "../executor/runner.js";
|
|
2
|
+
import type { LeaderEventBus } from "./event-bus.js";
|
|
3
|
+
export interface MergeDecision {
|
|
4
|
+
decision: "merge" | "skip" | "review_first";
|
|
5
|
+
reason: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class MergeValidator {
|
|
8
|
+
private projectRoot;
|
|
9
|
+
private runner;
|
|
10
|
+
private eventBus;
|
|
11
|
+
private mergeDecisionTemplate?;
|
|
12
|
+
private logger;
|
|
13
|
+
constructor(projectRoot: string, runner: ClaudeRunner, eventBus: LeaderEventBus, mergeDecisionTemplate?: string | undefined);
|
|
14
|
+
validate(commitInfo: {
|
|
15
|
+
sha: string;
|
|
16
|
+
message: string;
|
|
17
|
+
branch: string;
|
|
18
|
+
taskTitle: string;
|
|
19
|
+
taskLink: string;
|
|
20
|
+
}): Promise<MergeDecision>;
|
|
21
|
+
private getMainBranch;
|
|
22
|
+
private isCommitMerged;
|
|
23
|
+
private askMergeDecision;
|
|
24
|
+
private execGit;
|
|
25
|
+
}
|