@adamancyzhang/claude-orchestrator 0.3.0 → 0.3.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 +179 -186
- package/dist/cli/commands.d.ts +6 -17
- package/dist/cli/commands.js +106 -172
- package/dist/cli/commands.js.map +1 -1
- package/dist/config.d.ts +22 -14
- package/dist/config.js +47 -20
- package/dist/config.js.map +1 -1
- package/dist/index.js +110 -246
- package/dist/index.js.map +1 -1
- package/dist/leader/decision-engine.d.ts +35 -0
- package/dist/leader/decision-engine.js +102 -0
- package/dist/leader/decision-engine.js.map +1 -0
- package/dist/leader/index.js +12 -2
- package/dist/leader/index.js.map +1 -1
- package/dist/leader/recovery.d.ts +2 -0
- package/dist/leader/recovery.js +37 -22
- package/dist/leader/recovery.js.map +1 -1
- package/dist/leader/state.d.ts +2 -1
- package/dist/leader/state.js +39 -2
- package/dist/leader/state.js.map +1 -1
- package/dist/leader/task-generator.d.ts +34 -0
- package/dist/leader/task-generator.js +93 -0
- package/dist/leader/task-generator.js.map +1 -0
- package/dist/leader/tui.js +8 -5
- package/dist/leader/tui.js.map +1 -1
- package/dist/leader/watcher.d.ts +3 -1
- package/dist/leader/watcher.js +14 -2
- package/dist/leader/watcher.js.map +1 -1
- package/dist/models/schemas.d.ts +60 -96
- package/dist/models/schemas.js +27 -44
- package/dist/models/schemas.js.map +1 -1
- package/dist/modules/message-router.d.ts +1 -3
- package/dist/modules/message-router.js +3 -26
- package/dist/modules/message-router.js.map +1 -1
- package/dist/modules/registry.js +3 -3
- package/dist/modules/registry.js.map +1 -1
- package/dist/modules/task-queue.d.ts +1 -1
- package/dist/modules/task-queue.js +28 -2
- package/dist/modules/task-queue.js.map +1 -1
- package/dist/skills/CLAUDE.md +155 -0
- package/dist/skills/claude-code-developer/SKILL.md +325 -0
- package/dist/skills/claude-orchestrator/SKILL.md +180 -0
- package/dist/skills/task-acceptance/SKILL.md +201 -0
- package/dist/skills/task-execution/SKILL.md +142 -0
- package/dist/skills/task-planning/SKILL.md +188 -0
- package/dist/skills/task-review/SKILL.md +220 -0
- package/dist/skills/task-traceability/SKILL.md +154 -0
- package/dist/skills/task-verification/SKILL.md +194 -0
- package/dist/templates/leader-decide.md +59 -0
- package/dist/templates/leader-decompose.md +69 -0
- package/dist/templates/worker-accept.md +46 -0
- package/dist/templates/worker-build.md +45 -0
- package/dist/templates/worker-plan.md +43 -0
- package/dist/templates/worker-review.md +46 -0
- package/dist/templates/worker-verify.md +47 -0
- package/dist/utils/exec.d.ts +5 -0
- package/dist/utils/exec.js +25 -0
- package/dist/utils/exec.js.map +1 -1
- package/dist/worker/watcher.d.ts +3 -0
- package/dist/worker/watcher.js +72 -2
- package/dist/worker/watcher.js.map +1 -1
- package/dist/zk/client.d.ts +0 -5
- package/dist/zk/client.js +0 -27
- package/dist/zk/client.js.map +1 -1
- package/dist/zk/paths.d.ts +8 -10
- package/dist/zk/paths.js +1 -6
- package/dist/zk/paths.js.map +1 -1
- package/dist/zk/watcher.d.ts +0 -2
- package/dist/zk/watcher.js +0 -3
- package/dist/zk/watcher.js.map +1 -1
- package/package.json +2 -2
- package/dist/modules/context-store.d.ts +0 -10
- package/dist/modules/context-store.js +0 -25
- package/dist/modules/context-store.js.map +0 -1
- package/dist/templates/leader.md +0 -10
- package/dist/templates/worker.md +0 -8
package/dist/leader/watcher.js
CHANGED
|
@@ -9,14 +9,16 @@ export class LeaderWatcher {
|
|
|
9
9
|
leaderInstanceId;
|
|
10
10
|
command;
|
|
11
11
|
cacheDir;
|
|
12
|
+
decisionEngine;
|
|
12
13
|
inFlight = new Set();
|
|
13
14
|
stopped = false;
|
|
14
|
-
constructor(zk, eventBus, leaderInstanceId, command, cacheDir) {
|
|
15
|
+
constructor(zk, eventBus, leaderInstanceId, command, cacheDir, decisionEngine) {
|
|
15
16
|
this.zk = zk;
|
|
16
17
|
this.eventBus = eventBus;
|
|
17
18
|
this.leaderInstanceId = leaderInstanceId;
|
|
18
19
|
this.command = command;
|
|
19
20
|
this.cacheDir = cacheDir;
|
|
21
|
+
this.decisionEngine = decisionEngine;
|
|
20
22
|
}
|
|
21
23
|
async start() {
|
|
22
24
|
await this.zk.mkdirp(paths.messageDirPath(this.leaderInstanceId));
|
|
@@ -59,7 +61,17 @@ export class LeaderWatcher {
|
|
|
59
61
|
});
|
|
60
62
|
const resolvedCacheDir = expandHomeDir(this.cacheDir);
|
|
61
63
|
const logPath = path.join(resolvedCacheDir, this.leaderInstanceId, `${uniqueKey}.log`);
|
|
62
|
-
|
|
64
|
+
// Use DecisionEngine for Worker completion reports (messages with link field)
|
|
65
|
+
if (this.decisionEngine && msg.link) {
|
|
66
|
+
await this.decisionEngine.evaluate(msg, {
|
|
67
|
+
teamStatus: {},
|
|
68
|
+
taskQueues: {},
|
|
69
|
+
chainStatus: {},
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
await execWithTee(this.command, msg.content, logPath);
|
|
74
|
+
}
|
|
63
75
|
try {
|
|
64
76
|
msg.read = true;
|
|
65
77
|
await this.zk.updateMessage(this.leaderInstanceId, msgId, msg);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/leader/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/leader/watcher.ts"],"names":[],"mappings":"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"}
|
package/dist/models/schemas.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export declare const InstanceStatus: z.ZodEnum<["idle", "busy"]>;
|
|
3
3
|
export type InstanceStatus = z.infer<typeof InstanceStatus>;
|
|
4
|
-
export declare const InstanceRole: z.ZodEnum<["
|
|
4
|
+
export declare const InstanceRole: z.ZodEnum<["planner", "builder", "verifier", "reviewer", "accepter", "leader"]>;
|
|
5
5
|
export type InstanceRole = z.infer<typeof InstanceRole>;
|
|
6
|
-
export declare const
|
|
6
|
+
export declare const TaskLink: z.ZodEnum<["plan", "build", "verify", "review", "accept"]>;
|
|
7
|
+
export type TaskLink = z.infer<typeof TaskLink>;
|
|
8
|
+
export declare const TaskStatus: z.ZodEnum<["pending", "claimed", "completed", "blocked", "failed"]>;
|
|
7
9
|
export type TaskStatus = z.infer<typeof TaskStatus>;
|
|
8
10
|
export declare const TaskPriority: z.ZodNumber;
|
|
9
11
|
export type TaskPriority = z.infer<typeof TaskPriority>;
|
|
@@ -13,7 +15,7 @@ export type MessageType = z.infer<typeof MessageType>;
|
|
|
13
15
|
export declare const InstanceSchema: z.ZodObject<{
|
|
14
16
|
id: z.ZodString;
|
|
15
17
|
name: z.ZodString;
|
|
16
|
-
role: z.ZodDefault<z.ZodEnum<["
|
|
18
|
+
role: z.ZodDefault<z.ZodEnum<["planner", "builder", "verifier", "reviewer", "accepter", "leader"]>>;
|
|
17
19
|
status: z.ZodDefault<z.ZodEnum<["idle", "busy"]>>;
|
|
18
20
|
current_task_id: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
19
21
|
connected_since: z.ZodString;
|
|
@@ -22,7 +24,7 @@ export declare const InstanceSchema: z.ZodObject<{
|
|
|
22
24
|
status: "idle" | "busy";
|
|
23
25
|
id: string;
|
|
24
26
|
name: string;
|
|
25
|
-
role: "
|
|
27
|
+
role: "planner" | "builder" | "verifier" | "reviewer" | "accepter" | "leader";
|
|
26
28
|
current_task_id: string | null;
|
|
27
29
|
connected_since: string;
|
|
28
30
|
work_dir: string | null;
|
|
@@ -31,7 +33,7 @@ export declare const InstanceSchema: z.ZodObject<{
|
|
|
31
33
|
name: string;
|
|
32
34
|
connected_since: string;
|
|
33
35
|
status?: "idle" | "busy" | undefined;
|
|
34
|
-
role?: "
|
|
36
|
+
role?: "planner" | "builder" | "verifier" | "reviewer" | "accepter" | "leader" | undefined;
|
|
35
37
|
current_task_id?: string | null | undefined;
|
|
36
38
|
work_dir?: string | null | undefined;
|
|
37
39
|
}>;
|
|
@@ -41,7 +43,7 @@ export declare const TaskSchema: z.ZodObject<{
|
|
|
41
43
|
title: z.ZodString;
|
|
42
44
|
description: z.ZodDefault<z.ZodString>;
|
|
43
45
|
priority: z.ZodDefault<z.ZodNumber>;
|
|
44
|
-
status: z.ZodDefault<z.ZodEnum<["pending", "claimed", "
|
|
46
|
+
status: z.ZodDefault<z.ZodEnum<["pending", "claimed", "completed", "blocked", "failed"]>>;
|
|
45
47
|
created_by: z.ZodDefault<z.ZodString>;
|
|
46
48
|
assigned_to: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
47
49
|
created_at: z.ZodString;
|
|
@@ -49,6 +51,8 @@ export declare const TaskSchema: z.ZodObject<{
|
|
|
49
51
|
completed_at: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
50
52
|
claimed_by: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
51
53
|
result: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
54
|
+
link: z.ZodDefault<z.ZodNullable<z.ZodEnum<["plan", "build", "verify", "review", "accept"]>>>;
|
|
55
|
+
chain_id: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
52
56
|
retry_count: z.ZodDefault<z.ZodNumber>;
|
|
53
57
|
blocked_reason: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
54
58
|
fail_reason: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
@@ -56,8 +60,11 @@ export declare const TaskSchema: z.ZodObject<{
|
|
|
56
60
|
assigned_to_name: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
57
61
|
completed_by_name: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
58
62
|
duration_seconds: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
63
|
+
depends_on: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
64
|
+
blocked_by: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
59
65
|
}, "strip", z.ZodTypeAny, {
|
|
60
|
-
|
|
66
|
+
link: "plan" | "build" | "verify" | "review" | "accept" | null;
|
|
67
|
+
status: "pending" | "claimed" | "completed" | "blocked" | "failed";
|
|
61
68
|
id: string;
|
|
62
69
|
title: string;
|
|
63
70
|
description: string;
|
|
@@ -69,6 +76,7 @@ export declare const TaskSchema: z.ZodObject<{
|
|
|
69
76
|
completed_at: string | null;
|
|
70
77
|
claimed_by: string | null;
|
|
71
78
|
result: string | null;
|
|
79
|
+
chain_id: string | null;
|
|
72
80
|
retry_count: number;
|
|
73
81
|
blocked_reason: string | null;
|
|
74
82
|
fail_reason: string | null;
|
|
@@ -76,10 +84,13 @@ export declare const TaskSchema: z.ZodObject<{
|
|
|
76
84
|
assigned_to_name: string | null;
|
|
77
85
|
completed_by_name: string | null;
|
|
78
86
|
duration_seconds: number | null;
|
|
87
|
+
depends_on: string[];
|
|
88
|
+
blocked_by: string[];
|
|
79
89
|
}, {
|
|
80
90
|
title: string;
|
|
81
91
|
created_at: string;
|
|
82
|
-
|
|
92
|
+
link?: "plan" | "build" | "verify" | "review" | "accept" | null | undefined;
|
|
93
|
+
status?: "pending" | "claimed" | "completed" | "blocked" | "failed" | undefined;
|
|
83
94
|
id?: string | undefined;
|
|
84
95
|
description?: string | undefined;
|
|
85
96
|
priority?: number | undefined;
|
|
@@ -89,6 +100,7 @@ export declare const TaskSchema: z.ZodObject<{
|
|
|
89
100
|
completed_at?: string | null | undefined;
|
|
90
101
|
claimed_by?: string | null | undefined;
|
|
91
102
|
result?: string | null | undefined;
|
|
103
|
+
chain_id?: string | null | undefined;
|
|
92
104
|
retry_count?: number | undefined;
|
|
93
105
|
blocked_reason?: string | null | undefined;
|
|
94
106
|
fail_reason?: string | null | undefined;
|
|
@@ -96,6 +108,8 @@ export declare const TaskSchema: z.ZodObject<{
|
|
|
96
108
|
assigned_to_name?: string | null | undefined;
|
|
97
109
|
completed_by_name?: string | null | undefined;
|
|
98
110
|
duration_seconds?: number | null | undefined;
|
|
111
|
+
depends_on?: string[] | undefined;
|
|
112
|
+
blocked_by?: string[] | undefined;
|
|
99
113
|
}>;
|
|
100
114
|
export type Task = z.infer<typeof TaskSchema>;
|
|
101
115
|
export declare const MessageSchema: z.ZodObject<{
|
|
@@ -109,10 +123,15 @@ export declare const MessageSchema: z.ZodObject<{
|
|
|
109
123
|
content: z.ZodString;
|
|
110
124
|
created_at: z.ZodString;
|
|
111
125
|
read: z.ZodDefault<z.ZodBoolean>;
|
|
126
|
+
link: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
127
|
+
task_title: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
128
|
+
task_description: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
129
|
+
task_criteria: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
112
130
|
task_doc_path: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
113
131
|
result_path: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
114
132
|
reply_to: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
115
133
|
}, "strip", z.ZodTypeAny, {
|
|
134
|
+
link: string | null;
|
|
116
135
|
type: "direct" | "broadcast" | "help";
|
|
117
136
|
id: string;
|
|
118
137
|
created_at: string;
|
|
@@ -123,12 +142,16 @@ export declare const MessageSchema: z.ZodObject<{
|
|
|
123
142
|
to_name: string | null;
|
|
124
143
|
content: string;
|
|
125
144
|
read: boolean;
|
|
145
|
+
task_title: string | null;
|
|
146
|
+
task_description: string | null;
|
|
147
|
+
task_criteria: string | null;
|
|
126
148
|
task_doc_path: string | null;
|
|
127
149
|
result_path: string | null;
|
|
128
150
|
reply_to: string | null;
|
|
129
151
|
}, {
|
|
130
152
|
created_at: string;
|
|
131
153
|
content: string;
|
|
154
|
+
link?: string | null | undefined;
|
|
132
155
|
type?: "direct" | "broadcast" | "help" | undefined;
|
|
133
156
|
id?: string | undefined;
|
|
134
157
|
from_instance?: string | undefined;
|
|
@@ -137,28 +160,14 @@ export declare const MessageSchema: z.ZodObject<{
|
|
|
137
160
|
to_instance?: string | null | undefined;
|
|
138
161
|
to_name?: string | null | undefined;
|
|
139
162
|
read?: boolean | undefined;
|
|
163
|
+
task_title?: string | null | undefined;
|
|
164
|
+
task_description?: string | null | undefined;
|
|
165
|
+
task_criteria?: string | null | undefined;
|
|
140
166
|
task_doc_path?: string | null | undefined;
|
|
141
167
|
result_path?: string | null | undefined;
|
|
142
168
|
reply_to?: string | null | undefined;
|
|
143
169
|
}>;
|
|
144
170
|
export type Message = z.infer<typeof MessageSchema>;
|
|
145
|
-
export declare const ContextEntrySchema: z.ZodObject<{
|
|
146
|
-
key: z.ZodString;
|
|
147
|
-
value: z.ZodString;
|
|
148
|
-
updated_by: z.ZodDefault<z.ZodString>;
|
|
149
|
-
updated_at: z.ZodString;
|
|
150
|
-
}, "strip", z.ZodTypeAny, {
|
|
151
|
-
value: string;
|
|
152
|
-
key: string;
|
|
153
|
-
updated_by: string;
|
|
154
|
-
updated_at: string;
|
|
155
|
-
}, {
|
|
156
|
-
value: string;
|
|
157
|
-
key: string;
|
|
158
|
-
updated_at: string;
|
|
159
|
-
updated_by?: string | undefined;
|
|
160
|
-
}>;
|
|
161
|
-
export type ContextEntry = z.infer<typeof ContextEntrySchema>;
|
|
162
171
|
export declare function createInstance(overrides: {
|
|
163
172
|
id?: string;
|
|
164
173
|
name: string;
|
|
@@ -173,6 +182,10 @@ export declare function createTask(overrides: {
|
|
|
173
182
|
assigned_to?: string | null;
|
|
174
183
|
created_by_name?: string;
|
|
175
184
|
assigned_to_name?: string | null;
|
|
185
|
+
link?: string | null;
|
|
186
|
+
chain_id?: string | null;
|
|
187
|
+
depends_on?: string[];
|
|
188
|
+
blocked_by?: string[];
|
|
176
189
|
}): Task;
|
|
177
190
|
export declare function createMessage(overrides: {
|
|
178
191
|
type?: MessageType;
|
|
@@ -185,54 +198,52 @@ export declare function createMessage(overrides: {
|
|
|
185
198
|
task_doc_path?: string | null;
|
|
186
199
|
result_path?: string | null;
|
|
187
200
|
reply_to?: string | null;
|
|
201
|
+
task_title?: string | null;
|
|
202
|
+
task_description?: string | null;
|
|
203
|
+
task_criteria?: string | null;
|
|
204
|
+
link?: string | null;
|
|
188
205
|
}): Message;
|
|
189
|
-
export declare function createContextEntry(overrides: {
|
|
190
|
-
key: string;
|
|
191
|
-
value: string;
|
|
192
|
-
updated_by?: string;
|
|
193
|
-
}): ContextEntry;
|
|
194
206
|
export declare const RegisterInstanceInput: z.ZodObject<{
|
|
195
207
|
name: z.ZodString;
|
|
196
|
-
role: z.
|
|
208
|
+
role: z.ZodEnum<["planner", "builder", "verifier", "reviewer", "accepter", "leader"]>;
|
|
197
209
|
instance_id: z.ZodOptional<z.ZodString>;
|
|
198
|
-
work_dir: z.ZodOptional<z.ZodString>;
|
|
199
210
|
}, "strip", z.ZodTypeAny, {
|
|
200
211
|
name: string;
|
|
201
|
-
role: "
|
|
202
|
-
work_dir?: string | undefined;
|
|
212
|
+
role: "planner" | "builder" | "verifier" | "reviewer" | "accepter" | "leader";
|
|
203
213
|
instance_id?: string | undefined;
|
|
204
214
|
}, {
|
|
205
215
|
name: string;
|
|
206
|
-
role
|
|
207
|
-
work_dir?: string | undefined;
|
|
216
|
+
role: "planner" | "builder" | "verifier" | "reviewer" | "accepter" | "leader";
|
|
208
217
|
instance_id?: string | undefined;
|
|
209
218
|
}>;
|
|
210
|
-
export declare const HeartbeatInput: z.ZodObject<{
|
|
211
|
-
instance_id: z.ZodString;
|
|
212
|
-
current_task: z.ZodOptional<z.ZodString>;
|
|
213
|
-
}, "strip", z.ZodTypeAny, {
|
|
214
|
-
instance_id: string;
|
|
215
|
-
current_task?: string | undefined;
|
|
216
|
-
}, {
|
|
217
|
-
instance_id: string;
|
|
218
|
-
current_task?: string | undefined;
|
|
219
|
-
}>;
|
|
220
219
|
export declare const PushTaskInput: z.ZodObject<{
|
|
221
220
|
title: z.ZodString;
|
|
222
221
|
description: z.ZodDefault<z.ZodString>;
|
|
223
222
|
priority: z.ZodDefault<z.ZodNumber>;
|
|
224
223
|
instance_id: z.ZodDefault<z.ZodString>;
|
|
225
224
|
assignee: z.ZodOptional<z.ZodString>;
|
|
225
|
+
link: z.ZodOptional<z.ZodString>;
|
|
226
|
+
chain_id: z.ZodOptional<z.ZodString>;
|
|
227
|
+
depends_on: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
228
|
+
blocked_by: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
226
229
|
}, "strip", z.ZodTypeAny, {
|
|
227
230
|
title: string;
|
|
228
231
|
description: string;
|
|
229
232
|
priority: number;
|
|
233
|
+
depends_on: string[];
|
|
234
|
+
blocked_by: string[];
|
|
230
235
|
instance_id: string;
|
|
236
|
+
link?: string | undefined;
|
|
237
|
+
chain_id?: string | undefined;
|
|
231
238
|
assignee?: string | undefined;
|
|
232
239
|
}, {
|
|
233
240
|
title: string;
|
|
241
|
+
link?: string | undefined;
|
|
234
242
|
description?: string | undefined;
|
|
235
243
|
priority?: number | undefined;
|
|
244
|
+
chain_id?: string | undefined;
|
|
245
|
+
depends_on?: string[] | undefined;
|
|
246
|
+
blocked_by?: string[] | undefined;
|
|
236
247
|
instance_id?: string | undefined;
|
|
237
248
|
assignee?: string | undefined;
|
|
238
249
|
}>;
|
|
@@ -269,8 +280,10 @@ export declare const SendMessageInput: z.ZodObject<{
|
|
|
269
280
|
to_instance: z.ZodOptional<z.ZodString>;
|
|
270
281
|
to_name: z.ZodOptional<z.ZodString>;
|
|
271
282
|
broadcast: z.ZodDefault<z.ZodBoolean>;
|
|
283
|
+
help: z.ZodDefault<z.ZodBoolean>;
|
|
272
284
|
}, "strip", z.ZodTypeAny, {
|
|
273
285
|
broadcast: boolean;
|
|
286
|
+
help: boolean;
|
|
274
287
|
content: string;
|
|
275
288
|
instance_id: string;
|
|
276
289
|
to_instance?: string | undefined;
|
|
@@ -279,6 +292,7 @@ export declare const SendMessageInput: z.ZodObject<{
|
|
|
279
292
|
content: string;
|
|
280
293
|
instance_id: string;
|
|
281
294
|
broadcast?: boolean | undefined;
|
|
295
|
+
help?: boolean | undefined;
|
|
282
296
|
to_instance?: string | undefined;
|
|
283
297
|
to_name?: string | undefined;
|
|
284
298
|
}>;
|
|
@@ -289,16 +303,6 @@ export declare const PollMessagesInput: z.ZodObject<{
|
|
|
289
303
|
}, {
|
|
290
304
|
instance_id: string;
|
|
291
305
|
}>;
|
|
292
|
-
export declare const WaitForMessageInput: z.ZodObject<{
|
|
293
|
-
instance_id: z.ZodString;
|
|
294
|
-
timeout_seconds: z.ZodDefault<z.ZodNumber>;
|
|
295
|
-
}, "strip", z.ZodTypeAny, {
|
|
296
|
-
instance_id: string;
|
|
297
|
-
timeout_seconds: number;
|
|
298
|
-
}, {
|
|
299
|
-
instance_id: string;
|
|
300
|
-
timeout_seconds?: number | undefined;
|
|
301
|
-
}>;
|
|
302
306
|
export declare const MarkReadInput: z.ZodObject<{
|
|
303
307
|
instance_id: z.ZodString;
|
|
304
308
|
message_id: z.ZodString;
|
|
@@ -319,43 +323,3 @@ export declare const DismissMessageInput: z.ZodObject<{
|
|
|
319
323
|
instance_id: string;
|
|
320
324
|
message_id: string;
|
|
321
325
|
}>;
|
|
322
|
-
export declare const RequestHelpInput: z.ZodObject<{
|
|
323
|
-
instance_id: z.ZodString;
|
|
324
|
-
question: z.ZodString;
|
|
325
|
-
context: z.ZodOptional<z.ZodString>;
|
|
326
|
-
}, "strip", z.ZodTypeAny, {
|
|
327
|
-
instance_id: string;
|
|
328
|
-
question: string;
|
|
329
|
-
context?: string | undefined;
|
|
330
|
-
}, {
|
|
331
|
-
instance_id: string;
|
|
332
|
-
question: string;
|
|
333
|
-
context?: string | undefined;
|
|
334
|
-
}>;
|
|
335
|
-
export declare const SetContextInput: z.ZodObject<{
|
|
336
|
-
key: z.ZodString;
|
|
337
|
-
value: z.ZodString;
|
|
338
|
-
instance_id: z.ZodDefault<z.ZodString>;
|
|
339
|
-
}, "strip", z.ZodTypeAny, {
|
|
340
|
-
value: string;
|
|
341
|
-
key: string;
|
|
342
|
-
instance_id: string;
|
|
343
|
-
}, {
|
|
344
|
-
value: string;
|
|
345
|
-
key: string;
|
|
346
|
-
instance_id?: string | undefined;
|
|
347
|
-
}>;
|
|
348
|
-
export declare const GetContextInput: z.ZodObject<{
|
|
349
|
-
key: z.ZodString;
|
|
350
|
-
}, "strip", z.ZodTypeAny, {
|
|
351
|
-
key: string;
|
|
352
|
-
}, {
|
|
353
|
-
key: string;
|
|
354
|
-
}>;
|
|
355
|
-
export declare const DeleteContextInput: z.ZodObject<{
|
|
356
|
-
key: z.ZodString;
|
|
357
|
-
}, "strip", z.ZodTypeAny, {
|
|
358
|
-
key: string;
|
|
359
|
-
}, {
|
|
360
|
-
key: string;
|
|
361
|
-
}>;
|
package/dist/models/schemas.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
// ── Enums ──
|
|
3
3
|
export const InstanceStatus = z.enum(["idle", "busy"]);
|
|
4
|
-
export const InstanceRole = z.enum(["
|
|
5
|
-
export const
|
|
4
|
+
export const InstanceRole = z.enum(["planner", "builder", "verifier", "reviewer", "accepter", "leader"]);
|
|
5
|
+
export const TaskLink = z.enum(["plan", "build", "verify", "review", "accept"]);
|
|
6
|
+
export const TaskStatus = z.enum(["pending", "claimed", "completed", "blocked", "failed"]);
|
|
6
7
|
export const TaskPriority = z.number().int().min(0).max(2);
|
|
7
8
|
export const TaskPriorityName = {
|
|
8
9
|
0: "HIGH",
|
|
@@ -17,7 +18,7 @@ function utcNow() {
|
|
|
17
18
|
export const InstanceSchema = z.object({
|
|
18
19
|
id: z.string(),
|
|
19
20
|
name: z.string(),
|
|
20
|
-
role: InstanceRole.default("
|
|
21
|
+
role: InstanceRole.default("builder"),
|
|
21
22
|
status: InstanceStatus.default("idle"),
|
|
22
23
|
current_task_id: z.string().nullable().default(null),
|
|
23
24
|
connected_since: z.string(),
|
|
@@ -36,6 +37,8 @@ export const TaskSchema = z.object({
|
|
|
36
37
|
completed_at: z.string().nullable().default(null),
|
|
37
38
|
claimed_by: z.string().nullable().default(null),
|
|
38
39
|
result: z.string().nullable().default(null),
|
|
40
|
+
link: TaskLink.nullable().default(null),
|
|
41
|
+
chain_id: z.string().nullable().default(null),
|
|
39
42
|
retry_count: z.number().int().default(0),
|
|
40
43
|
blocked_reason: z.string().nullable().default(null),
|
|
41
44
|
fail_reason: z.string().nullable().default(null),
|
|
@@ -43,6 +46,8 @@ export const TaskSchema = z.object({
|
|
|
43
46
|
assigned_to_name: z.string().nullable().default(null),
|
|
44
47
|
completed_by_name: z.string().nullable().default(null),
|
|
45
48
|
duration_seconds: z.number().nullable().default(null),
|
|
49
|
+
depends_on: z.array(z.string()).default([]),
|
|
50
|
+
blocked_by: z.array(z.string()).default([]),
|
|
46
51
|
});
|
|
47
52
|
export const MessageSchema = z.object({
|
|
48
53
|
id: z.string().default(""),
|
|
@@ -55,22 +60,20 @@ export const MessageSchema = z.object({
|
|
|
55
60
|
content: z.string(),
|
|
56
61
|
created_at: z.string(),
|
|
57
62
|
read: z.boolean().default(false),
|
|
63
|
+
link: z.string().nullable().default(null),
|
|
64
|
+
task_title: z.string().nullable().default(null),
|
|
65
|
+
task_description: z.string().nullable().default(null),
|
|
66
|
+
task_criteria: z.string().nullable().default(null),
|
|
58
67
|
task_doc_path: z.string().nullable().default(null),
|
|
59
68
|
result_path: z.string().nullable().default(null),
|
|
60
69
|
reply_to: z.string().nullable().default(null),
|
|
61
70
|
});
|
|
62
|
-
export const ContextEntrySchema = z.object({
|
|
63
|
-
key: z.string(),
|
|
64
|
-
value: z.string(),
|
|
65
|
-
updated_by: z.string().default(""),
|
|
66
|
-
updated_at: z.string(),
|
|
67
|
-
});
|
|
68
71
|
// ── Factory helpers (mirrors Python Field(default_factory=...)) ──
|
|
69
72
|
export function createInstance(overrides) {
|
|
70
73
|
return InstanceSchema.parse({
|
|
71
74
|
id: overrides.id ?? crypto.randomUUID().replace(/-/g, ""),
|
|
72
75
|
name: overrides.name,
|
|
73
|
-
role: overrides.role ?? "
|
|
76
|
+
role: overrides.role ?? "builder",
|
|
74
77
|
status: "idle",
|
|
75
78
|
current_task_id: null,
|
|
76
79
|
connected_since: utcNow(),
|
|
@@ -91,6 +94,8 @@ export function createTask(overrides) {
|
|
|
91
94
|
completed_at: null,
|
|
92
95
|
claimed_by: null,
|
|
93
96
|
result: null,
|
|
97
|
+
link: overrides.link ?? null,
|
|
98
|
+
chain_id: overrides.chain_id ?? null,
|
|
94
99
|
retry_count: 0,
|
|
95
100
|
blocked_reason: null,
|
|
96
101
|
fail_reason: null,
|
|
@@ -98,6 +103,8 @@ export function createTask(overrides) {
|
|
|
98
103
|
assigned_to_name: overrides.assigned_to_name ?? null,
|
|
99
104
|
completed_by_name: null,
|
|
100
105
|
duration_seconds: null,
|
|
106
|
+
depends_on: overrides.depends_on ?? [],
|
|
107
|
+
blocked_by: overrides.blocked_by ?? [],
|
|
101
108
|
});
|
|
102
109
|
}
|
|
103
110
|
export function createMessage(overrides) {
|
|
@@ -112,29 +119,20 @@ export function createMessage(overrides) {
|
|
|
112
119
|
content: overrides.content,
|
|
113
120
|
created_at: utcNow(),
|
|
114
121
|
read: false,
|
|
122
|
+
link: overrides.link ?? null,
|
|
123
|
+
task_title: overrides.task_title ?? null,
|
|
124
|
+
task_description: overrides.task_description ?? null,
|
|
125
|
+
task_criteria: overrides.task_criteria ?? null,
|
|
115
126
|
task_doc_path: overrides.task_doc_path ?? null,
|
|
116
127
|
result_path: overrides.result_path ?? null,
|
|
117
128
|
reply_to: overrides.reply_to ?? null,
|
|
118
129
|
});
|
|
119
130
|
}
|
|
120
|
-
export function createContextEntry(overrides) {
|
|
121
|
-
return ContextEntrySchema.parse({
|
|
122
|
-
key: overrides.key,
|
|
123
|
-
value: overrides.value,
|
|
124
|
-
updated_by: overrides.updated_by ?? "",
|
|
125
|
-
updated_at: utcNow(),
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
131
|
// ── Tool input schemas ──
|
|
129
132
|
export const RegisterInstanceInput = z.object({
|
|
130
133
|
name: z.string().min(1),
|
|
131
|
-
role: InstanceRole
|
|
134
|
+
role: InstanceRole,
|
|
132
135
|
instance_id: z.string().optional(),
|
|
133
|
-
work_dir: z.string().optional(),
|
|
134
|
-
});
|
|
135
|
-
export const HeartbeatInput = z.object({
|
|
136
|
-
instance_id: z.string(),
|
|
137
|
-
current_task: z.string().optional(),
|
|
138
136
|
});
|
|
139
137
|
export const PushTaskInput = z.object({
|
|
140
138
|
title: z.string().min(1),
|
|
@@ -142,6 +140,10 @@ export const PushTaskInput = z.object({
|
|
|
142
140
|
priority: TaskPriority.default(1),
|
|
143
141
|
instance_id: z.string().default(""),
|
|
144
142
|
assignee: z.string().optional(),
|
|
143
|
+
link: z.string().optional(),
|
|
144
|
+
chain_id: z.string().optional(),
|
|
145
|
+
depends_on: z.array(z.string()).default([]),
|
|
146
|
+
blocked_by: z.array(z.string()).default([]),
|
|
145
147
|
});
|
|
146
148
|
export const ClaimTaskInput = z.object({
|
|
147
149
|
instance_id: z.string(),
|
|
@@ -160,14 +162,11 @@ export const SendMessageInput = z.object({
|
|
|
160
162
|
to_instance: z.string().optional(),
|
|
161
163
|
to_name: z.string().optional(),
|
|
162
164
|
broadcast: z.boolean().default(false),
|
|
165
|
+
help: z.boolean().default(false),
|
|
163
166
|
});
|
|
164
167
|
export const PollMessagesInput = z.object({
|
|
165
168
|
instance_id: z.string(),
|
|
166
169
|
});
|
|
167
|
-
export const WaitForMessageInput = z.object({
|
|
168
|
-
instance_id: z.string(),
|
|
169
|
-
timeout_seconds: z.number().int().min(1).default(30),
|
|
170
|
-
});
|
|
171
170
|
export const MarkReadInput = z.object({
|
|
172
171
|
instance_id: z.string(),
|
|
173
172
|
message_id: z.string(),
|
|
@@ -176,20 +175,4 @@ export const DismissMessageInput = z.object({
|
|
|
176
175
|
instance_id: z.string(),
|
|
177
176
|
message_id: z.string(),
|
|
178
177
|
});
|
|
179
|
-
export const RequestHelpInput = z.object({
|
|
180
|
-
instance_id: z.string(),
|
|
181
|
-
question: z.string().min(1),
|
|
182
|
-
context: z.string().optional(),
|
|
183
|
-
});
|
|
184
|
-
export const SetContextInput = z.object({
|
|
185
|
-
key: z.string().min(1),
|
|
186
|
-
value: z.string(),
|
|
187
|
-
instance_id: z.string().default(""),
|
|
188
|
-
});
|
|
189
|
-
export const GetContextInput = z.object({
|
|
190
|
-
key: z.string(),
|
|
191
|
-
});
|
|
192
|
-
export const DeleteContextInput = z.object({
|
|
193
|
-
key: z.string(),
|
|
194
|
-
});
|
|
195
178
|
//# sourceMappingURL=schemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/models/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,cAAc;AAEd,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAGvD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/models/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,10 @@ import { type Message } from "../models/schemas.js";
|
|
|
3
3
|
export declare class MessageRouter {
|
|
4
4
|
private zk;
|
|
5
5
|
constructor(zk: ZkClient);
|
|
6
|
-
send(fromInstance: string, fromName: string, content: string, toInstance?: string, broadcast?: boolean, toName?: string): Promise<Message[]>;
|
|
6
|
+
send(fromInstance: string, fromName: string, content: string, toInstance?: string, broadcast?: boolean, toName?: string, help?: boolean): Promise<Message[]>;
|
|
7
7
|
poll(instanceId: string): Promise<Message[]>;
|
|
8
8
|
waitForMessage(instanceId: string, timeoutSeconds?: number): Promise<Message[]>;
|
|
9
9
|
markRead(instanceId: string, messageId: string): Promise<void>;
|
|
10
10
|
dismissMessage(instanceId: string, messageId: string): Promise<void>;
|
|
11
|
-
sendWithTemplate(fromInstance: string, fromName: string, fromRole: string, content: string, templateName: "leader.md" | "worker.md", variables: Record<string, string>, templateDir: string, toInstance?: string, broadcast?: boolean, toName?: string): Promise<Message[]>;
|
|
12
|
-
requestHelp(fromInstance: string, fromName: string, question: string, ctx?: string): Promise<Message[]>;
|
|
13
11
|
}
|
|
14
12
|
export declare function renderTemplate(templatePath: string, variables: Record<string, string>): Promise<string>;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
|
-
import * as path from "node:path";
|
|
3
2
|
import { MessageSchema, createMessage, } from "../models/schemas.js";
|
|
4
3
|
function utcNow() {
|
|
5
4
|
return new Date().toISOString();
|
|
@@ -9,7 +8,7 @@ export class MessageRouter {
|
|
|
9
8
|
constructor(zk) {
|
|
10
9
|
this.zk = zk;
|
|
11
10
|
}
|
|
12
|
-
async send(fromInstance, fromName, content, toInstance, broadcast = false, toName) {
|
|
11
|
+
async send(fromInstance, fromName, content, toInstance, broadcast = false, toName, help = false) {
|
|
13
12
|
const messages = [];
|
|
14
13
|
// Name-based addressing: resolve to_name to instance_id
|
|
15
14
|
if (toName) {
|
|
@@ -26,9 +25,9 @@ export class MessageRouter {
|
|
|
26
25
|
toInstance = match.id;
|
|
27
26
|
}
|
|
28
27
|
}
|
|
29
|
-
let msgType = broadcast ? "broadcast" : "direct";
|
|
28
|
+
let msgType = help ? "help" : (broadcast ? "broadcast" : "direct");
|
|
30
29
|
let targets;
|
|
31
|
-
if (broadcast) {
|
|
30
|
+
if (broadcast || help) {
|
|
32
31
|
const instances = await this.zk.listInstances();
|
|
33
32
|
targets = instances
|
|
34
33
|
.map((i) => i.id)
|
|
@@ -93,28 +92,6 @@ export class MessageRouter {
|
|
|
93
92
|
async dismissMessage(instanceId, messageId) {
|
|
94
93
|
await this.zk.deleteMessage(instanceId, messageId);
|
|
95
94
|
}
|
|
96
|
-
async sendWithTemplate(fromInstance, fromName, fromRole, content, templateName, variables, templateDir, toInstance, broadcast = false, toName) {
|
|
97
|
-
const templatePath = path.join(templateDir, "agents", templateName);
|
|
98
|
-
const rendered = await renderTemplate(templatePath, {
|
|
99
|
-
...variables,
|
|
100
|
-
content,
|
|
101
|
-
});
|
|
102
|
-
return this.send(fromInstance, fromName, rendered, toInstance, broadcast, toName);
|
|
103
|
-
}
|
|
104
|
-
async requestHelp(fromInstance, fromName, question, ctx) {
|
|
105
|
-
let content = question;
|
|
106
|
-
if (ctx) {
|
|
107
|
-
content = `${question}\n\nContext:\n${ctx}`;
|
|
108
|
-
}
|
|
109
|
-
// Set message type to "help" by modifying after creation
|
|
110
|
-
const messages = await this.send(fromInstance, fromName, content, undefined, true);
|
|
111
|
-
// Update type to "help" for each message
|
|
112
|
-
for (const msg of messages) {
|
|
113
|
-
msg.type = "help";
|
|
114
|
-
await this.zk.updateMessage(msg.to_instance, msg.id, msg);
|
|
115
|
-
}
|
|
116
|
-
return messages;
|
|
117
|
-
}
|
|
118
95
|
}
|
|
119
96
|
export async function renderTemplate(templatePath, variables) {
|
|
120
97
|
let content = await fs.promises.readFile(templatePath, "utf-8");
|