@adamancyzhang/claude-orchestrator 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +401 -0
  2. package/bin/claude-orchestrator +2 -17
  3. package/dist/cli/commands.d.ts +20 -0
  4. package/dist/cli/commands.js +192 -0
  5. package/dist/cli/commands.js.map +1 -0
  6. package/dist/config.d.ts +17 -0
  7. package/dist/config.js +45 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/index.d.ts +2 -0
  10. package/dist/index.js +344 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/models/schemas.d.ts +308 -0
  13. package/dist/models/schemas.js +167 -0
  14. package/dist/models/schemas.js.map +1 -0
  15. package/dist/modules/context-store.d.ts +10 -0
  16. package/dist/modules/context-store.js +25 -0
  17. package/dist/modules/context-store.js.map +1 -0
  18. package/dist/modules/message-router.d.ts +12 -0
  19. package/dist/modules/message-router.js +94 -0
  20. package/dist/modules/message-router.js.map +1 -0
  21. package/dist/modules/registry.d.ts +11 -0
  22. package/dist/modules/registry.js +53 -0
  23. package/dist/modules/registry.js.map +1 -0
  24. package/dist/modules/task-queue.d.ts +10 -0
  25. package/dist/modules/task-queue.js +103 -0
  26. package/dist/modules/task-queue.js.map +1 -0
  27. package/dist/server.d.ts +2 -0
  28. package/dist/server.js +425 -0
  29. package/dist/server.js.map +1 -0
  30. package/dist/utils/output.d.ts +1 -0
  31. package/dist/utils/output.js +10 -0
  32. package/dist/utils/output.js.map +1 -0
  33. package/dist/zk/client.d.ts +54 -0
  34. package/dist/zk/client.js +417 -0
  35. package/dist/zk/client.js.map +1 -0
  36. package/dist/zk/paths.d.ts +16 -0
  37. package/dist/zk/paths.js +40 -0
  38. package/dist/zk/paths.js.map +1 -0
  39. package/dist/zk/watcher.d.ts +11 -0
  40. package/dist/zk/watcher.js +16 -0
  41. package/dist/zk/watcher.js.map +1 -0
  42. package/package.json +23 -6
  43. package/scripts/install.js +0 -123
package/dist/config.js ADDED
@@ -0,0 +1,45 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ import * as os from "node:os";
4
+ const CONFIG_DIR = path.join(os.homedir(), ".claude-orchestrator");
5
+ const CONFIG_FILE = path.join(CONFIG_DIR, "config.json");
6
+ export function loadConfig(cliOpts) {
7
+ const zkHosts = cliOpts.zookeeper ||
8
+ process.env.ZK_HOSTS ||
9
+ "127.0.0.1:2181";
10
+ const port = parseInt(cliOpts.port || process.env.ORCHESTRATOR_PORT || "3100", 10);
11
+ const host = cliOpts.host || process.env.ORCHESTRATOR_HOST || "127.0.0.1";
12
+ const instanceId = cliOpts.instanceId || loadInstanceId() || undefined;
13
+ return {
14
+ zkHosts,
15
+ port,
16
+ host,
17
+ instanceId,
18
+ serverMode: cliOpts.server === true,
19
+ };
20
+ }
21
+ export function saveInstanceId(instanceId) {
22
+ fs.mkdirSync(CONFIG_DIR, { recursive: true });
23
+ fs.writeFileSync(CONFIG_FILE, JSON.stringify({ instance_id: instanceId }, null, 2));
24
+ }
25
+ export function loadInstanceId() {
26
+ try {
27
+ if (fs.existsSync(CONFIG_FILE)) {
28
+ const data = JSON.parse(fs.readFileSync(CONFIG_FILE, "utf-8"));
29
+ return data.instance_id || null;
30
+ }
31
+ }
32
+ catch {
33
+ // ignore corrupt config
34
+ }
35
+ return null;
36
+ }
37
+ export function resolveInstanceId(cliInstanceId) {
38
+ const resolved = cliInstanceId || loadInstanceId();
39
+ if (!resolved) {
40
+ throw new Error("No instance_id found. Run 'claude-orchestrator register' first, " +
41
+ "or pass --instance-id.");
42
+ }
43
+ return resolved;
44
+ }
45
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,sBAAsB,CAAC,CAAC;AACnE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAUzD,MAAM,UAAU,UAAU,CAAC,OAM1B;IACC,MAAM,OAAO,GACX,OAAO,CAAC,SAAS;QACjB,OAAO,CAAC,GAAG,CAAC,QAAQ;QACpB,gBAAgB,CAAC;IAEnB,MAAM,IAAI,GAAG,QAAQ,CACnB,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,MAAM,EACvD,EAAE,CACH,CAAC;IAEF,MAAM,IAAI,GACR,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,WAAW,CAAC;IAE/D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,cAAc,EAAE,IAAI,SAAS,CAAC;IAEvE,OAAO;QACL,OAAO;QACP,IAAI;QACJ,IAAI;QACJ,UAAU;QACV,UAAU,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC/C,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,EAAE,CAAC,aAAa,CACd,WAAW,EACX,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CACrD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC;QAClC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wBAAwB;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,aAAsB;IACtD,MAAM,QAAQ,GAAG,aAAa,IAAI,cAAc,EAAE,CAAC;IACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,kEAAkE;YAChE,wBAAwB,CAC3B,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,344 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from "commander";
3
+ import { loadConfig, loadInstanceId } from "./config.js";
4
+ import { cmdStatus, cmdRegister, cmdHeartbeat, cmdListInstances, cmdPushTask, cmdClaimTask, cmdCompleteTask, cmdListTasks, cmdSendMessage, cmdPollMessages, cmdWaitForMessage, cmdDismissMessage, cmdRequestHelp, cmdSetContext, cmdGetContext, cmdDeleteContext, cmdListContextKeys, cmdWatchContext, cmdWatchTasks, cmdUnregister, } from "./cli/commands.js";
5
+ import { output } from "./utils/output.js";
6
+ const pkg = { version: "0.2.0" };
7
+ const program = new Command();
8
+ program
9
+ .name("claude-orchestrator")
10
+ .description("Multi-agent orchestration CLI backed by ZooKeeper")
11
+ .version(pkg.version)
12
+ .option("-z, --zookeeper <hosts>", "ZooKeeper connection string (env: ZK_HOSTS)", "127.0.0.1:2181")
13
+ .option("-i, --instance-id <id>", "Instance ID (reads from ~/.claude-orchestrator/config.json if omitted)")
14
+ .option("-s, --server", "Start in MCP server mode")
15
+ .hook("preAction", (thisCmd) => {
16
+ const opts = thisCmd.opts();
17
+ if (process.env.ZK_HOSTS && (!opts.zookeeper || opts.zookeeper === "127.0.0.1:2181")) {
18
+ thisCmd.setOptionValue("zookeeper", process.env.ZK_HOSTS);
19
+ }
20
+ });
21
+ // Helper to extract typed options from a Command
22
+ function getOpts(cmd) {
23
+ return cmd.optsWithGlobals();
24
+ }
25
+ function getSubOpts(cmd) {
26
+ return cmd.opts();
27
+ }
28
+ // ── Commands ──
29
+ program
30
+ .command("status")
31
+ .description("Check server connection and ZooKeeper health")
32
+ .action(async function () {
33
+ try {
34
+ await cmdStatus(getOpts(this).zookeeper);
35
+ }
36
+ catch (e) {
37
+ output({ status: "error", zookeeper: String(e), instances_online: 0 }, true);
38
+ }
39
+ });
40
+ program
41
+ .command("register")
42
+ .description("Register this instance with the orchestrator")
43
+ .requiredOption("--name <name>", "Display name for this instance")
44
+ .option("--role <role>", "Instance role", "general")
45
+ .action(async function () {
46
+ try {
47
+ const { name, role } = getSubOpts(this);
48
+ const { zookeeper, instanceId } = getOpts(this);
49
+ await cmdRegister(zookeeper, instanceId, name, role);
50
+ }
51
+ catch (e) {
52
+ output({ error: String(e) }, true);
53
+ }
54
+ });
55
+ program
56
+ .command("heartbeat")
57
+ .description("Send heartbeat to keep registration alive")
58
+ .option("--current-task <id>", "Current task title (omit to clear)")
59
+ .action(async function () {
60
+ try {
61
+ const { currentTask } = getSubOpts(this);
62
+ const { zookeeper, instanceId } = getOpts(this);
63
+ await cmdHeartbeat(zookeeper, instanceId, currentTask);
64
+ }
65
+ catch (e) {
66
+ output({ error: String(e) }, true);
67
+ }
68
+ });
69
+ program
70
+ .command("list-instances")
71
+ .description("List all active instances")
72
+ .action(async function () {
73
+ try {
74
+ await cmdListInstances(getOpts(this).zookeeper);
75
+ }
76
+ catch (e) {
77
+ output({ error: String(e) }, true);
78
+ }
79
+ });
80
+ program
81
+ .command("push-task")
82
+ .description("Create and push a new task to the queue")
83
+ .requiredOption("--title <title>", "Task title")
84
+ .option("--description <text>", "Task description", "")
85
+ .option("--priority <n>", "Priority: 0=HIGH, 1=MEDIUM, 2=LOW", "1")
86
+ .option("--assignee <id>", "Target instance ID")
87
+ .action(async function () {
88
+ try {
89
+ const { title, description, priority, assignee } = getSubOpts(this);
90
+ const { zookeeper, instanceId } = getOpts(this);
91
+ await cmdPushTask(zookeeper, instanceId, title, description, parseInt(priority), assignee);
92
+ }
93
+ catch (e) {
94
+ output({ error: String(e) }, true);
95
+ }
96
+ });
97
+ program
98
+ .command("claim-task")
99
+ .description("Claim the highest-priority pending task")
100
+ .action(async function () {
101
+ try {
102
+ const { zookeeper, instanceId } = getOpts(this);
103
+ await cmdClaimTask(zookeeper, instanceId);
104
+ }
105
+ catch (e) {
106
+ output({ error: String(e) }, true);
107
+ }
108
+ });
109
+ program
110
+ .command("complete-task")
111
+ .description("Mark a claimed task as completed")
112
+ .requiredOption("--task-id <id>", "Task ID to complete")
113
+ .requiredOption("--result <text>", "Summary of what was accomplished")
114
+ .action(async function () {
115
+ try {
116
+ const { taskId, result } = getSubOpts(this);
117
+ const { zookeeper, instanceId } = getOpts(this);
118
+ await cmdCompleteTask(zookeeper, instanceId, taskId, result);
119
+ }
120
+ catch (e) {
121
+ output({ error: String(e) }, true);
122
+ }
123
+ });
124
+ program
125
+ .command("list-tasks")
126
+ .description("List tasks, optionally filtered by status")
127
+ .option("--status <status>", "Filter: pending, claimed, completed")
128
+ .action(async function () {
129
+ try {
130
+ const { status } = getSubOpts(this);
131
+ await cmdListTasks(getOpts(this).zookeeper, status);
132
+ }
133
+ catch (e) {
134
+ output({ error: String(e) }, true);
135
+ }
136
+ });
137
+ program
138
+ .command("send-message")
139
+ .description("Send a message to another instance or broadcast to all")
140
+ .requiredOption("--content <text>", "Message content")
141
+ .option("--to <id>", "Recipient instance ID")
142
+ .option("--broadcast", "Send to all instances", false)
143
+ .action(async function () {
144
+ try {
145
+ const { content, to, broadcast } = getSubOpts(this);
146
+ if (!to && !broadcast) {
147
+ throw new Error("Must specify --to or --broadcast");
148
+ }
149
+ const { zookeeper, instanceId } = getOpts(this);
150
+ await cmdSendMessage(zookeeper, instanceId, content, to, broadcast);
151
+ }
152
+ catch (e) {
153
+ output({ error: String(e) }, true);
154
+ }
155
+ });
156
+ program
157
+ .command("poll-messages")
158
+ .description("Check for new messages")
159
+ .action(async function () {
160
+ try {
161
+ const { zookeeper, instanceId } = getOpts(this);
162
+ await cmdPollMessages(zookeeper, instanceId);
163
+ }
164
+ catch (e) {
165
+ output({ error: String(e) }, true);
166
+ }
167
+ });
168
+ program
169
+ .command("wait-for-message")
170
+ .description("Wait for new messages (long poll)")
171
+ .option("--timeout <seconds>", "Timeout in seconds", "30")
172
+ .action(async function () {
173
+ try {
174
+ const { timeout } = getSubOpts(this);
175
+ const { zookeeper, instanceId } = getOpts(this);
176
+ await cmdWaitForMessage(zookeeper, instanceId, parseInt(timeout));
177
+ }
178
+ catch (e) {
179
+ output({ error: String(e) }, true);
180
+ }
181
+ });
182
+ program
183
+ .command("dismiss-message")
184
+ .description("Dismiss (delete) a message")
185
+ .requiredOption("--message-id <id>", "Message ID to dismiss")
186
+ .action(async function () {
187
+ try {
188
+ const { messageId } = getSubOpts(this);
189
+ const { zookeeper, instanceId } = getOpts(this);
190
+ await cmdDismissMessage(zookeeper, instanceId, messageId);
191
+ }
192
+ catch (e) {
193
+ output({ error: String(e) }, true);
194
+ }
195
+ });
196
+ program
197
+ .command("request-help")
198
+ .description("Broadcast a help request to all online instances")
199
+ .requiredOption("--question <text>", "Your question or problem description")
200
+ .option("--context <text>", "Additional context (stack traces, logs)")
201
+ .action(async function () {
202
+ try {
203
+ const { question, context } = getSubOpts(this);
204
+ const { zookeeper, instanceId } = getOpts(this);
205
+ await cmdRequestHelp(zookeeper, instanceId, question, context);
206
+ }
207
+ catch (e) {
208
+ output({ error: String(e) }, true);
209
+ }
210
+ });
211
+ program
212
+ .command("set-context")
213
+ .description("Store a shared context key-value pair")
214
+ .requiredOption("--key <key>", "Context key")
215
+ .requiredOption("--value <value>", "Context value")
216
+ .action(async function () {
217
+ try {
218
+ const { key, value } = getSubOpts(this);
219
+ const { zookeeper, instanceId } = getOpts(this);
220
+ await cmdSetContext(zookeeper, instanceId, key, value);
221
+ }
222
+ catch (e) {
223
+ output({ error: String(e) }, true);
224
+ }
225
+ });
226
+ program
227
+ .command("get-context")
228
+ .description("Retrieve a shared context value by key")
229
+ .requiredOption("--key <key>", "Context key to retrieve")
230
+ .action(async function () {
231
+ try {
232
+ const { key } = getSubOpts(this);
233
+ await cmdGetContext(getOpts(this).zookeeper, key);
234
+ }
235
+ catch (e) {
236
+ output({ error: String(e) }, true);
237
+ }
238
+ });
239
+ program
240
+ .command("delete-context")
241
+ .description("Delete a shared context key")
242
+ .requiredOption("--key <key>", "Context key to delete")
243
+ .action(async function () {
244
+ try {
245
+ const { key } = getSubOpts(this);
246
+ await cmdDeleteContext(getOpts(this).zookeeper, key);
247
+ }
248
+ catch (e) {
249
+ output({ error: String(e) }, true);
250
+ }
251
+ });
252
+ program
253
+ .command("list-context-keys")
254
+ .description("List all shared context keys")
255
+ .action(async function () {
256
+ try {
257
+ await cmdListContextKeys(getOpts(this).zookeeper);
258
+ }
259
+ catch (e) {
260
+ output({ error: String(e) }, true);
261
+ }
262
+ });
263
+ program
264
+ .command("watch-context")
265
+ .description("Watch a context key for changes (blocks until change)")
266
+ .requiredOption("--key <key>", "Context key to watch")
267
+ .action(async function () {
268
+ try {
269
+ const { key } = getSubOpts(this);
270
+ await cmdWatchContext(getOpts(this).zookeeper, key);
271
+ }
272
+ catch (e) {
273
+ output({ error: String(e) }, true);
274
+ }
275
+ });
276
+ program
277
+ .command("watch-tasks")
278
+ .description("Watch for new tasks (blocks until change)")
279
+ .action(async function () {
280
+ try {
281
+ await cmdWatchTasks(getOpts(this).zookeeper);
282
+ }
283
+ catch (e) {
284
+ output({ error: String(e) }, true);
285
+ }
286
+ });
287
+ program
288
+ .command("unregister")
289
+ .description("Explicitly unregister an instance")
290
+ .action(async function () {
291
+ try {
292
+ const { zookeeper, instanceId } = getOpts(this);
293
+ await cmdUnregister(zookeeper, instanceId);
294
+ }
295
+ catch (e) {
296
+ output({ error: String(e) }, true);
297
+ }
298
+ });
299
+ program
300
+ .command("config")
301
+ .description("Show current configuration")
302
+ .action(async function () {
303
+ const opts = getOpts(this);
304
+ const resolvedId = opts.instanceId || loadInstanceId();
305
+ output({
306
+ zookeeper: opts.zookeeper,
307
+ instance_id: resolvedId || "(not set)",
308
+ config_dir: "~/.claude-orchestrator/",
309
+ });
310
+ });
311
+ // ── Main entry ──
312
+ async function main() {
313
+ const serverIndex = process.argv.indexOf("--server");
314
+ const sIndex = process.argv.indexOf("-s");
315
+ if (serverIndex !== -1 || sIndex !== -1) {
316
+ if (serverIndex !== -1)
317
+ process.argv.splice(serverIndex, 1);
318
+ if (sIndex !== -1)
319
+ process.argv.splice(sIndex, 1);
320
+ program.parseOptions(process.argv.slice(2));
321
+ const opts = program.opts();
322
+ const { startServer } = await import("./server.js");
323
+ const config = loadConfig({
324
+ zookeeper: opts.zookeeper,
325
+ port: process.env.ORCHESTRATOR_PORT,
326
+ host: process.env.ORCHESTRATOR_HOST,
327
+ instanceId: opts.instanceId,
328
+ });
329
+ try {
330
+ await startServer(config);
331
+ }
332
+ catch (e) {
333
+ console.error("Failed to start server:", e);
334
+ process.exit(1);
335
+ }
336
+ return;
337
+ }
338
+ program.parse();
339
+ }
340
+ main().catch((err) => {
341
+ console.error("Fatal error:", err);
342
+ process.exit(1);
343
+ });
344
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}