@luckydraw/cumulus 0.30.31 → 0.31.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 (39) hide show
  1. package/CHANGELOG.md +13 -2
  2. package/dist/cli/cumulus.js +0 -0
  3. package/dist/gateway/adapters/webchat.d.ts +1 -1
  4. package/dist/gateway/adapters/webchat.d.ts.map +1 -1
  5. package/dist/gateway/adapters/webchat.js +1 -3
  6. package/dist/gateway/adapters/webchat.js.map +1 -1
  7. package/dist/gateway/daemon.js +0 -1
  8. package/dist/gateway/daemon.js.map +1 -1
  9. package/dist/gateway/hooks.d.ts +0 -2
  10. package/dist/gateway/hooks.d.ts.map +1 -1
  11. package/dist/gateway/hooks.js +0 -1
  12. package/dist/gateway/hooks.js.map +1 -1
  13. package/dist/gateway/server.d.ts +0 -5
  14. package/dist/gateway/server.d.ts.map +1 -1
  15. package/dist/gateway/server.js +3 -128
  16. package/dist/gateway/server.js.map +1 -1
  17. package/dist/index.d.ts +0 -4
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +0 -6
  20. package/dist/index.js.map +1 -1
  21. package/dist/lib/config.d.ts +0 -8
  22. package/dist/lib/config.d.ts.map +1 -1
  23. package/dist/lib/config.js +0 -60
  24. package/dist/lib/config.js.map +1 -1
  25. package/dist/lib/gateway.d.ts +1 -13
  26. package/dist/lib/gateway.d.ts.map +1 -1
  27. package/dist/lib/gateway.js +8 -143
  28. package/dist/lib/gateway.js.map +1 -1
  29. package/dist/mcp/index.js +0 -0
  30. package/package.json +2 -2
  31. package/dist/gateway/device-mcp.d.ts +0 -21
  32. package/dist/gateway/device-mcp.d.ts.map +0 -1
  33. package/dist/gateway/device-mcp.js +0 -165
  34. package/dist/gateway/device-mcp.js.map +0 -1
  35. package/dist/lib/executor.d.ts +0 -168
  36. package/dist/lib/executor.d.ts.map +0 -1
  37. package/dist/lib/executor.js +0 -284
  38. package/dist/lib/executor.js.map +0 -1
  39. package/dist/lib/projects.d.ts.map +0 -1
@@ -1,284 +0,0 @@
1
- /**
2
- * Executor registry and dispatch — manages remote machines that can run Claude.
3
- *
4
- * The gateway always owns conversation state (history, RAG, prompt assembly).
5
- * Executors are registered machines (thundercat, mac-karl, etc.) that run Claude
6
- * subprocesses. The gateway dispatches assembled prompts to executors and
7
- * streams tokens back.
8
- */
9
- export class ExecutorRegistry {
10
- executors = new Map();
11
- pendingExecutions = new Map();
12
- pendingDeviceCalls = new Map();
13
- pingIntervals = new Map();
14
- deviceCallCounter = 0;
15
- /** Register a new executor from an incoming WebSocket connection */
16
- register(msg, ws) {
17
- const existing = this.executors.get(msg.executorId);
18
- if (existing) {
19
- // Close old connection if still open
20
- try {
21
- existing.ws.close();
22
- }
23
- catch {
24
- // ignore
25
- }
26
- this.cleanupExecutor(msg.executorId);
27
- }
28
- const executor = {
29
- executorId: msg.executorId,
30
- hostname: msg.hostname,
31
- projectRoot: msg.projectRoot,
32
- ws,
33
- connectedAt: Date.now(),
34
- activeRequests: new Set(),
35
- };
36
- this.executors.set(msg.executorId, executor);
37
- // Set up ping/pong keepalive
38
- const interval = setInterval(() => {
39
- if (ws.readyState === ws.OPEN) {
40
- this.send(ws, { type: 'ping' });
41
- }
42
- }, 30_000);
43
- this.pingIntervals.set(msg.executorId, interval);
44
- // Handle disconnect
45
- ws.on('close', () => this.handleDisconnect(msg.executorId));
46
- ws.on('error', () => this.handleDisconnect(msg.executorId));
47
- // Handle incoming messages from executor
48
- ws.on('message', (raw) => {
49
- try {
50
- const data = JSON.parse(raw.toString());
51
- this.handleExecutorMessage(msg.executorId, data);
52
- }
53
- catch {
54
- // ignore malformed messages
55
- }
56
- });
57
- // Confirm registration
58
- this.send(ws, { type: 'executor_registered', executorId: msg.executorId });
59
- console.log(`[ExecutorRegistry] Registered executor "${msg.executorId}" (${msg.hostname}), projectRoot: ${msg.projectRoot}`);
60
- }
61
- /** Unregister an executor */
62
- unregister(executorId) {
63
- const executor = this.executors.get(executorId);
64
- if (executor) {
65
- try {
66
- executor.ws.close();
67
- }
68
- catch {
69
- // ignore
70
- }
71
- }
72
- this.cleanupExecutor(executorId);
73
- }
74
- /** Check if an executor is online */
75
- isOnline(executorId) {
76
- if (executorId === 'thundercat')
77
- return true; // local executor is always online
78
- const executor = this.executors.get(executorId);
79
- return !!executor && executor.ws.readyState === executor.ws.OPEN;
80
- }
81
- /** Get executor info */
82
- getExecutor(executorId) {
83
- const executor = this.executors.get(executorId);
84
- if (!executor)
85
- return null;
86
- return { hostname: executor.hostname, projectRoot: executor.projectRoot };
87
- }
88
- /** List all registered executors with online status */
89
- listExecutors() {
90
- const result = [];
91
- // Always include thundercat as local
92
- result.push({
93
- executorId: 'thundercat',
94
- hostname: 'thundercat',
95
- projectRoot: '', // resolved at runtime
96
- online: true,
97
- connectedAt: 0,
98
- activeRequests: 0,
99
- });
100
- for (const [, executor] of this.executors) {
101
- result.push({
102
- executorId: executor.executorId,
103
- hostname: executor.hostname,
104
- projectRoot: executor.projectRoot,
105
- online: executor.ws.readyState === executor.ws.OPEN,
106
- connectedAt: executor.connectedAt,
107
- activeRequests: executor.activeRequests.size,
108
- });
109
- }
110
- return result;
111
- }
112
- /**
113
- * Dispatch an execution request to a remote executor.
114
- * Returns a promise that resolves when the executor completes.
115
- */
116
- dispatch(executorId, payload, callbacks) {
117
- const executor = this.executors.get(executorId);
118
- if (!executor) {
119
- return Promise.reject(new Error(`Executor "${executorId}" is not registered`));
120
- }
121
- if (executor.ws.readyState !== executor.ws.OPEN) {
122
- return Promise.reject(new Error(`Executor "${executorId}" is offline`));
123
- }
124
- return new Promise((resolve, reject) => {
125
- const pending = {
126
- requestId: payload.requestId,
127
- threadName: payload.threadName,
128
- executorId,
129
- resolve,
130
- reject,
131
- lines: [],
132
- onLine: callbacks?.onLine,
133
- onError: callbacks?.onError,
134
- };
135
- this.pendingExecutions.set(payload.requestId, pending);
136
- executor.activeRequests.add(payload.requestId);
137
- this.send(executor.ws, payload);
138
- });
139
- }
140
- /** Abort an in-flight execution */
141
- abort(requestId) {
142
- const pending = this.pendingExecutions.get(requestId);
143
- if (!pending)
144
- return;
145
- const executor = this.executors.get(pending.executorId);
146
- if (executor && executor.ws.readyState === executor.ws.OPEN) {
147
- this.send(executor.ws, { type: 'execute_abort', requestId });
148
- }
149
- }
150
- /**
151
- * Route a device tool call to a remote executor.
152
- * Returns a promise that resolves with the tool result.
153
- * Timeout: 60s (for long-running commands like builds).
154
- */
155
- deviceToolCall(executorId, tool, args) {
156
- const executor = this.executors.get(executorId);
157
- if (!executor) {
158
- return Promise.reject(new Error(`Device "${executorId}" is not registered`));
159
- }
160
- if (executor.ws.readyState !== executor.ws.OPEN) {
161
- return Promise.reject(new Error(`Device "${executorId}" is offline`));
162
- }
163
- const callId = `dtc-${++this.deviceCallCounter}-${Date.now()}`;
164
- return new Promise((resolve, reject) => {
165
- const timeout = setTimeout(() => {
166
- this.pendingDeviceCalls.delete(callId);
167
- reject(new Error(`Device tool call timed out after 60s: ${tool}`));
168
- }, 60_000);
169
- const pending = {
170
- callId,
171
- executorId,
172
- resolve: result => {
173
- clearTimeout(timeout);
174
- resolve(result);
175
- },
176
- reject: err => {
177
- clearTimeout(timeout);
178
- reject(err);
179
- },
180
- };
181
- this.pendingDeviceCalls.set(callId, pending);
182
- this.send(executor.ws, {
183
- type: 'device_tool_call',
184
- callId,
185
- executorId,
186
- tool,
187
- args,
188
- });
189
- });
190
- }
191
- /** Shut down all connections */
192
- shutdown() {
193
- for (const [id] of this.executors) {
194
- this.unregister(id);
195
- }
196
- for (const [, interval] of this.pingIntervals) {
197
- clearInterval(interval);
198
- }
199
- this.pingIntervals.clear();
200
- }
201
- // ─── Internal ──────────────────────────────────────────────────────────────
202
- handleExecutorMessage(executorId, msg) {
203
- switch (msg.type) {
204
- case 'execute_token': {
205
- const pending = this.pendingExecutions.get(msg.requestId);
206
- if (pending) {
207
- pending.lines.push(msg.line);
208
- pending.onLine?.(msg.line);
209
- }
210
- break;
211
- }
212
- case 'execute_done': {
213
- const pending = this.pendingExecutions.get(msg.requestId);
214
- if (pending) {
215
- this.pendingExecutions.delete(msg.requestId);
216
- const executor = this.executors.get(executorId);
217
- executor?.activeRequests.delete(msg.requestId);
218
- pending.resolve({
219
- requestId: msg.requestId,
220
- exitCode: msg.exitCode,
221
- lines: pending.lines,
222
- });
223
- }
224
- break;
225
- }
226
- case 'execute_error': {
227
- const pending = this.pendingExecutions.get(msg.requestId);
228
- if (pending) {
229
- this.pendingExecutions.delete(msg.requestId);
230
- const executor = this.executors.get(executorId);
231
- executor?.activeRequests.delete(msg.requestId);
232
- pending.onError?.(msg.error);
233
- pending.reject(new Error(msg.error));
234
- }
235
- break;
236
- }
237
- case 'pong':
238
- // keepalive response, nothing to do
239
- break;
240
- case 'device_tool_result': {
241
- const pendingCall = this.pendingDeviceCalls.get(msg.callId);
242
- if (pendingCall) {
243
- this.pendingDeviceCalls.delete(msg.callId);
244
- pendingCall.resolve({ result: msg.result, isError: msg.isError });
245
- }
246
- break;
247
- }
248
- default:
249
- break;
250
- }
251
- }
252
- handleDisconnect(executorId) {
253
- console.log(`[ExecutorRegistry] Executor "${executorId}" disconnected`);
254
- // Fail all pending executions for this executor
255
- for (const [requestId, pending] of this.pendingExecutions) {
256
- if (pending.executorId === executorId) {
257
- this.pendingExecutions.delete(requestId);
258
- pending.reject(new Error(`Executor "${executorId}" disconnected during execution`));
259
- }
260
- }
261
- // Fail all pending device tool calls for this executor
262
- for (const [callId, pending] of this.pendingDeviceCalls) {
263
- if (pending.executorId === executorId) {
264
- this.pendingDeviceCalls.delete(callId);
265
- pending.reject(new Error(`Device "${executorId}" disconnected during tool call`));
266
- }
267
- }
268
- this.cleanupExecutor(executorId);
269
- }
270
- cleanupExecutor(executorId) {
271
- this.executors.delete(executorId);
272
- const interval = this.pingIntervals.get(executorId);
273
- if (interval) {
274
- clearInterval(interval);
275
- this.pingIntervals.delete(executorId);
276
- }
277
- }
278
- send(ws, msg) {
279
- if (ws.readyState === ws.OPEN) {
280
- ws.send(JSON.stringify(msg));
281
- }
282
- }
283
- }
284
- //# sourceMappingURL=executor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/lib/executor.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/lib/projects.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrE;AA4BD;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAkE3F;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA4BlF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAUjC;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,eAAe,GAAG,WAAW,CAAC,CAAC,EAClF,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC,CAoC1B;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,YAAY,UAAQ,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC,CAS1B;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAexB"}