@studiomopoke/crosschat 1.8.2 → 2.0.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 (82) hide show
  1. package/README.md +48 -118
  2. package/bin/cli.cjs +37 -57
  3. package/crosschat.md +73 -104
  4. package/dashboard/dist/assets/index-BY-IQhma.js +49 -0
  5. package/dashboard/dist/assets/index-CI8v9PKQ.css +1 -0
  6. package/dashboard/dist/index.html +2 -2
  7. package/dist/hub/_hub-section-1-infra.d.ts +8 -0
  8. package/dist/hub/_hub-section-1-infra.d.ts.map +1 -0
  9. package/dist/hub/_hub-section-1-infra.js +152 -0
  10. package/dist/hub/_hub-section-1-infra.js.map +1 -0
  11. package/dist/hub/_hub-section-2-handlers.d.ts +2 -0
  12. package/dist/hub/_hub-section-2-handlers.d.ts.map +1 -0
  13. package/dist/hub/_hub-section-2-handlers.js +514 -0
  14. package/dist/hub/_hub-section-2-handlers.js.map +1 -0
  15. package/dist/hub/_hub-section-3-rest.d.ts +2 -0
  16. package/dist/hub/_hub-section-3-rest.d.ts.map +1 -0
  17. package/dist/hub/_hub-section-3-rest.js +418 -0
  18. package/dist/hub/_hub-section-3-rest.js.map +1 -0
  19. package/dist/hub/_hub-section-4-ws.d.ts +2 -0
  20. package/dist/hub/_hub-section-4-ws.d.ts.map +1 -0
  21. package/dist/hub/_hub-section-4-ws.js +367 -0
  22. package/dist/hub/_hub-section-4-ws.js.map +1 -0
  23. package/dist/hub/agent-connection.d.ts +38 -62
  24. package/dist/hub/agent-connection.d.ts.map +1 -1
  25. package/dist/hub/agent-connection.js +146 -229
  26. package/dist/hub/agent-connection.js.map +1 -1
  27. package/dist/hub/hub-server.d.ts +1 -1
  28. package/dist/hub/hub-server.d.ts.map +1 -1
  29. package/dist/hub/hub-server.js +389 -685
  30. package/dist/hub/hub-server.js.map +1 -1
  31. package/dist/hub/message-manager.d.ts +158 -0
  32. package/dist/hub/message-manager.d.ts.map +1 -0
  33. package/dist/hub/message-manager.js +443 -0
  34. package/dist/hub/message-manager.js.map +1 -0
  35. package/dist/hub/protocol.d.ts +73 -131
  36. package/dist/hub/protocol.d.ts.map +1 -1
  37. package/dist/hub/protocol.js +3 -0
  38. package/dist/hub/protocol.js.map +1 -1
  39. package/dist/lifecycle.d.ts.map +1 -1
  40. package/dist/lifecycle.js +15 -89
  41. package/dist/lifecycle.js.map +1 -1
  42. package/dist/server.d.ts.map +1 -1
  43. package/dist/server.js +22 -33
  44. package/dist/server.js.map +1 -1
  45. package/dist/tools/add-badge.d.ts +4 -0
  46. package/dist/tools/add-badge.d.ts.map +1 -0
  47. package/dist/tools/add-badge.js +29 -0
  48. package/dist/tools/add-badge.js.map +1 -0
  49. package/dist/tools/claim-task.js +5 -5
  50. package/dist/tools/claim-task.js.map +1 -1
  51. package/dist/tools/clear-session.d.ts +1 -2
  52. package/dist/tools/clear-session.d.ts.map +1 -1
  53. package/dist/tools/clear-session.js +7 -22
  54. package/dist/tools/clear-session.js.map +1 -1
  55. package/dist/tools/flag-as-task.d.ts +4 -0
  56. package/dist/tools/flag-as-task.d.ts.map +1 -0
  57. package/dist/tools/flag-as-task.js +31 -0
  58. package/dist/tools/flag-as-task.js.map +1 -0
  59. package/dist/tools/get-messages.d.ts +2 -1
  60. package/dist/tools/get-messages.d.ts.map +1 -1
  61. package/dist/tools/get-messages.js +19 -6
  62. package/dist/tools/get-messages.js.map +1 -1
  63. package/dist/tools/list-peers.d.ts.map +1 -1
  64. package/dist/tools/list-peers.js +1 -4
  65. package/dist/tools/list-peers.js.map +1 -1
  66. package/dist/tools/resolve-task.d.ts +4 -0
  67. package/dist/tools/resolve-task.d.ts.map +1 -0
  68. package/dist/tools/resolve-task.js +29 -0
  69. package/dist/tools/resolve-task.js.map +1 -0
  70. package/dist/tools/send-message.d.ts.map +1 -1
  71. package/dist/tools/send-message.js +6 -5
  72. package/dist/tools/send-message.js.map +1 -1
  73. package/dist/tools/set-status.js +3 -3
  74. package/dist/tools/set-status.js.map +1 -1
  75. package/dist/tools/wait-for-messages.js +1 -1
  76. package/dist/tools/wait-for-messages.js.map +1 -1
  77. package/dist/types.d.ts +4 -3
  78. package/dist/types.d.ts.map +1 -1
  79. package/hooks/permission-hook.sh +19 -18
  80. package/package.json +1 -1
  81. package/dashboard/dist/assets/index-BR-2rRm6.css +0 -1
  82. package/dashboard/dist/assets/index-Ci2ihChN.js +0 -49
@@ -1,3 +1,6 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import os from 'node:os';
1
4
  import WebSocket from 'ws';
2
5
  import { generateId } from '../util/id.js';
3
6
  import { log, logError } from '../util/logger.js';
@@ -22,10 +25,10 @@ export class AgentConnection {
22
25
  reconnectTimer = null;
23
26
  reconnectDelay = INITIAL_RECONNECT_DELAY_MS;
24
27
  stopped = false;
25
- currentRoomId = 'general';
28
+ currentChannelId = 'general';
26
29
  pendingRequests = new Map();
27
30
  messageCallbacks = [];
28
- taskEventCallbacks = [];
31
+ badgeCallbacks = [];
29
32
  connectedCallbacks = [];
30
33
  disconnectedCallbacks = [];
31
34
  constructor(port, peerId, name, cwd) {
@@ -35,7 +38,6 @@ export class AgentConnection {
35
38
  this.cwd = cwd;
36
39
  }
37
40
  // ─── Connection lifecycle ──────────────────────────────────────
38
- /** Open the WebSocket connection to the hub and send registration. */
39
41
  connect() {
40
42
  this.stopped = false;
41
43
  this.doConnect();
@@ -54,20 +56,20 @@ export class AgentConnection {
54
56
  this.ws.on('open', () => {
55
57
  log(`Agent connection established on port ${this.port}`);
56
58
  this.reconnectDelay = INITIAL_RECONNECT_DELAY_MS;
57
- // Register with the hub
58
59
  this.send({
59
60
  type: 'agent.register',
60
61
  peerId: this.peerId,
61
62
  name: this.name,
62
63
  cwd: this.cwd,
63
64
  pid: process.pid,
65
+ parentPid: process.ppid,
64
66
  });
65
67
  this.startHeartbeat();
66
68
  for (const cb of this.connectedCallbacks) {
67
69
  try {
68
70
  cb();
69
71
  }
70
- catch { /* swallow callback errors */ }
72
+ catch { /* swallow */ }
71
73
  }
72
74
  });
73
75
  this.ws.on('message', (raw) => {
@@ -75,8 +77,8 @@ export class AgentConnection {
75
77
  const msg = decodeMessage(raw.toString());
76
78
  this.handleServerMessage(msg);
77
79
  }
78
- catch {
79
- // Ignore malformed messages
80
+ catch (err) {
81
+ logError('Failed to handle server message', err);
80
82
  }
81
83
  });
82
84
  this.ws.on('close', () => {
@@ -86,16 +88,14 @@ export class AgentConnection {
86
88
  try {
87
89
  cb();
88
90
  }
89
- catch { /* swallow callback errors */ }
91
+ catch { /* swallow */ }
90
92
  }
91
93
  this.scheduleReconnect();
92
94
  });
93
95
  this.ws.on('error', (err) => {
94
96
  logError('Agent connection WS error', err);
95
- // 'close' fires after 'error', which triggers reconnect
96
97
  });
97
98
  }
98
- /** Gracefully close the connection without reconnecting. */
99
99
  disconnect() {
100
100
  this.stopped = true;
101
101
  this.stopHeartbeat();
@@ -103,14 +103,12 @@ export class AgentConnection {
103
103
  clearTimeout(this.reconnectTimer);
104
104
  this.reconnectTimer = null;
105
105
  }
106
- // Reject all pending requests
107
106
  for (const [id, pending] of this.pendingRequests) {
108
107
  clearTimeout(pending.timer);
109
108
  pending.reject(new Error('Connection closed'));
110
109
  this.pendingRequests.delete(id);
111
110
  }
112
111
  if (this.ws) {
113
- // Send disconnect notice before closing
114
112
  try {
115
113
  this.send({ type: 'agent.disconnect' });
116
114
  }
@@ -119,174 +117,76 @@ export class AgentConnection {
119
117
  this.ws = null;
120
118
  }
121
119
  }
122
- /** Whether the underlying WebSocket is currently open. */
123
120
  get connected() {
124
121
  return this.ws?.readyState === WebSocket.OPEN;
125
122
  }
126
123
  // ─── Outgoing message helpers ──────────────────────────────────
127
- /** Send a message to the agent's current room. */
128
- sendMessage(content, metadata, importance) {
129
- this.send({ type: 'agent.sendMessage', content, metadata, importance });
130
- }
131
- /** Update this agent's availability status. */
132
- setStatus(status, detail, taskId) {
133
- this.send({ type: 'agent.status', status, detail, taskId });
134
- }
135
- /** Get the current room ID. */
136
- getCurrentRoom() {
137
- return this.currentRoomId;
124
+ sendMessage(content, opts) {
125
+ this.send({
126
+ type: 'agent.sendMessage',
127
+ content,
128
+ threadId: opts?.threadId,
129
+ metadata: opts?.metadata,
130
+ importance: opts?.importance,
131
+ });
138
132
  }
139
- /** Join a room (implicitly leaves the current room). */
140
- joinRoom(roomId) {
141
- this.send({ type: 'agent.joinRoom', roomId });
133
+ setStatus(status, detail, taskMessageId) {
134
+ this.send({ type: 'agent.status', status, detail, taskMessageId });
142
135
  }
143
- /** Create a new room on the server. */
144
- createRoom(roomId, name) {
145
- this.send({ type: 'agent.createRoom', roomId, name });
136
+ getCurrentChannel() {
137
+ return this.currentChannelId;
146
138
  }
147
- /**
148
- * Request the list of connected peers from the hub.
149
- * Returns a Promise that resolves when the server responds.
150
- */
151
139
  listPeers() {
152
140
  const requestId = generateId();
153
141
  this.send({ type: 'agent.listPeers', requestId });
154
- return new Promise((resolve, reject) => {
155
- const timer = setTimeout(() => {
156
- this.pendingRequests.delete(requestId);
157
- reject(new Error('listPeers request timed out'));
158
- }, 10_000);
159
- timer.unref();
160
- this.pendingRequests.set(requestId, {
161
- resolve: resolve,
162
- reject,
163
- timer,
164
- });
165
- });
142
+ return this.createPendingRequest(requestId, 'listPeers');
166
143
  }
167
- /** Create a task in the current room. */
168
- createTask(description, context, filter) {
144
+ getMessages(opts) {
169
145
  const requestId = generateId();
170
- this.send({ type: 'task.create', requestId, description, context, filter });
171
- return new Promise((resolve, reject) => {
172
- const timer = setTimeout(() => {
173
- this.pendingRequests.delete(requestId);
174
- reject(new Error('createTask request timed out'));
175
- }, 10_000);
176
- timer.unref();
177
- this.pendingRequests.set(requestId, {
178
- resolve: resolve,
179
- reject,
180
- timer,
181
- });
146
+ this.send({
147
+ type: 'agent.getMessages',
148
+ requestId,
149
+ threadId: opts?.threadId,
150
+ limit: opts?.limit,
151
+ afterMessageId: opts?.afterMessageId,
182
152
  });
153
+ return this.createPendingRequest(requestId, 'getMessages');
183
154
  }
184
- /** Bid on an open task. */
185
- claimTask(taskId) {
186
- this.send({ type: 'task.claim', taskId });
187
- }
188
- /** List tasks with optional filters. Returns a Promise. */
189
- listTasks(filter) {
155
+ flagTask(messageId, filter) {
190
156
  const requestId = generateId();
191
- this.send({ type: 'agent.listTasks', requestId, ...filter });
192
- return new Promise((resolve, reject) => {
193
- const timer = setTimeout(() => {
194
- this.pendingRequests.delete(requestId);
195
- reject(new Error('listTasks request timed out'));
196
- }, 10_000);
197
- timer.unref();
198
- this.pendingRequests.set(requestId, {
199
- resolve: resolve,
200
- reject,
201
- timer,
202
- });
203
- });
157
+ this.send({ type: 'agent.flagTask', requestId, messageId, filter });
158
+ return this.createPendingRequest(requestId, 'flagTask');
204
159
  }
205
- /** Get full task details including notes. Returns a Promise. */
206
- getTask(taskId) {
160
+ claimTask(messageId) {
207
161
  const requestId = generateId();
208
- this.send({ type: 'agent.getTask', requestId, taskId });
209
- return new Promise((resolve, reject) => {
210
- const timer = setTimeout(() => {
211
- this.pendingRequests.delete(requestId);
212
- reject(new Error('getTask request timed out'));
213
- }, 10_000);
214
- timer.unref();
215
- this.pendingRequests.set(requestId, {
216
- resolve: resolve,
217
- reject,
218
- timer,
219
- });
220
- });
221
- }
222
- /** Accept a claim on a task you created. */
223
- acceptClaim(taskId, claimantId) {
224
- this.send({ type: 'task.accept', taskId, claimantId });
162
+ this.send({ type: 'agent.claimTask', requestId, messageId });
163
+ return this.createPendingRequest(requestId, 'claimTask');
225
164
  }
226
- /** Append a progress note to a task (supports markdown). */
227
- updateTask(taskId, content, status) {
228
- this.send({ type: 'task.update', taskId, content, status });
229
- }
230
- /** Mark a task as completed or failed with a result blob. */
231
- completeTask(taskId, result, status, error) {
232
- this.send({ type: 'task.complete', taskId, result, status, error });
165
+ resolveTask(messageId, status, result, error) {
166
+ const requestId = generateId();
167
+ this.send({ type: 'agent.resolveTask', requestId, messageId, status, result, error });
168
+ return this.createPendingRequest(requestId, 'resolveTask');
233
169
  }
234
- /** Clear session state: messages from current room and optionally archive completed tasks. */
235
- clearSession(opts) {
170
+ addBadge(messageId, badgeType, badgeValue, label) {
236
171
  const requestId = generateId();
237
- this.send({
238
- type: 'agent.clearSession',
239
- requestId,
240
- messages: opts?.messages,
241
- tasks: opts?.tasks,
242
- });
243
- return new Promise((resolve, reject) => {
244
- const timer = setTimeout(() => {
245
- this.pendingRequests.delete(requestId);
246
- reject(new Error('clearSession request timed out'));
247
- }, 10_000);
248
- timer.unref();
249
- this.pendingRequests.set(requestId, {
250
- resolve: resolve,
251
- reject,
252
- timer,
253
- });
254
- });
172
+ this.send({ type: 'agent.addBadge', requestId, messageId, badgeType, badgeValue, label });
173
+ return this.createPendingRequest(requestId, 'addBadge');
255
174
  }
256
- requestDigest(opts) {
175
+ clearSession(opts) {
257
176
  const requestId = generateId();
258
- this.send({
259
- type: 'agent.requestDigest',
260
- requestId,
261
- clearMessages: opts?.clearMessages,
262
- });
263
- return new Promise((resolve, reject) => {
264
- const timer = setTimeout(() => {
265
- this.pendingRequests.delete(requestId);
266
- reject(new Error('requestDigest request timed out'));
267
- }, 10_000);
268
- timer.unref();
269
- this.pendingRequests.set(requestId, {
270
- resolve: resolve,
271
- reject,
272
- timer,
273
- });
274
- });
177
+ this.send({ type: 'agent.clearSession', requestId, messages: opts?.messages });
178
+ return this.createPendingRequest(requestId, 'clearSession');
275
179
  }
276
180
  // ─── Event registration ────────────────────────────────────────
277
- /** Register a callback invoked for every incoming room message. */
278
181
  onMessage(callback) {
279
182
  this.messageCallbacks.push(callback);
280
183
  }
281
- /** Register a callback invoked for task lifecycle events. */
282
- onTaskEvent(callback) {
283
- this.taskEventCallbacks.push(callback);
184
+ onBadge(callback) {
185
+ this.badgeCallbacks.push(callback);
284
186
  }
285
- /** Register a callback invoked on (re)connection. */
286
187
  onConnected(callback) {
287
188
  this.connectedCallbacks.push(callback);
288
189
  }
289
- /** Register a callback invoked when the connection drops. */
290
190
  onDisconnected(callback) {
291
191
  this.disconnectedCallbacks.push(callback);
292
192
  }
@@ -297,72 +197,44 @@ export class AgentConnection {
297
197
  }
298
198
  this.ws.send(encodeMessage(msg));
299
199
  }
300
- /** Send without throwing — used for internal/lifecycle messages where failure is expected. */
301
200
  trySend(msg) {
302
201
  try {
303
202
  this.send(msg);
304
203
  }
305
- catch { /* connection down — expected during reconnect */ }
204
+ catch { /* connection down */ }
205
+ }
206
+ createPendingRequest(requestId, name) {
207
+ return new Promise((resolve, reject) => {
208
+ const timer = setTimeout(() => {
209
+ this.pendingRequests.delete(requestId);
210
+ reject(new Error(`${name} request timed out`));
211
+ }, 10_000);
212
+ timer.unref();
213
+ this.pendingRequests.set(requestId, {
214
+ resolve: resolve,
215
+ reject,
216
+ timer,
217
+ });
218
+ });
219
+ }
220
+ resolvePending(requestId, value) {
221
+ const pending = this.pendingRequests.get(requestId);
222
+ if (!pending)
223
+ return false;
224
+ clearTimeout(pending.timer);
225
+ this.pendingRequests.delete(requestId);
226
+ pending.resolve(value);
227
+ return true;
306
228
  }
307
229
  handleServerMessage(msg) {
308
230
  switch (msg.type) {
309
231
  case 'registered':
310
232
  log(`Registered with hub (peerId=${msg.peerId}, server=${msg.serverVersion})`);
311
233
  break;
312
- case 'peers': {
313
- const pending = this.pendingRequests.get(msg.requestId);
314
- if (pending) {
315
- clearTimeout(pending.timer);
316
- this.pendingRequests.delete(msg.requestId);
317
- pending.resolve(msg.peers);
318
- }
319
- break;
320
- }
321
- case 'task.detail': {
322
- const pending = this.pendingRequests.get(msg.requestId);
323
- if (pending) {
324
- clearTimeout(pending.timer);
325
- this.pendingRequests.delete(msg.requestId);
326
- pending.resolve(msg.task);
327
- }
234
+ case 'peers':
235
+ this.resolvePending(msg.requestId, msg.peers);
328
236
  break;
329
- }
330
- case 'tasks': {
331
- const pending = this.pendingRequests.get(msg.requestId);
332
- if (pending) {
333
- clearTimeout(pending.timer);
334
- this.pendingRequests.delete(msg.requestId);
335
- pending.resolve({ tasks: msg.tasks });
336
- }
337
- break;
338
- }
339
- case 'session.cleared': {
340
- const pending = this.pendingRequests.get(msg.requestId);
341
- if (pending) {
342
- clearTimeout(pending.timer);
343
- this.pendingRequests.delete(msg.requestId);
344
- const cleared = msg;
345
- pending.resolve({ messagesCleared: cleared.messagesCleared, tasksArchived: cleared.tasksArchived });
346
- }
347
- break;
348
- }
349
- case 'digest.requested': {
350
- const pending = this.pendingRequests.get(msg.requestId);
351
- if (pending) {
352
- clearTimeout(pending.timer);
353
- this.pendingRequests.delete(msg.requestId);
354
- pending.resolve({ taskId: msg.taskId, messageCount: msg.messageCount, messagesCleared: msg.messagesCleared });
355
- }
356
- break;
357
- }
358
- case 'room.joined':
359
- this.currentRoomId = msg.roomId;
360
- log(`Joined room "${msg.name}" (${msg.roomId})`);
361
- break;
362
- case 'room.created':
363
- log(`Room created: "${msg.name}" (${msg.roomId})`);
364
- break;
365
- case 'room.message':
237
+ case 'channel.message':
366
238
  for (const cb of this.messageCallbacks) {
367
239
  try {
368
240
  cb(msg);
@@ -370,41 +242,71 @@ export class AgentConnection {
370
242
  catch { /* swallow */ }
371
243
  }
372
244
  break;
373
- case 'task.created': {
374
- // If this is a direct response to our createTask request, resolve the pending Promise
375
- const created = msg;
376
- if (created.requestId) {
377
- const pending = this.pendingRequests.get(created.requestId);
378
- if (pending) {
379
- clearTimeout(pending.timer);
380
- this.pendingRequests.delete(created.requestId);
381
- pending.resolve(created.task);
382
- break; // Don't also fire task event callbacks for the direct response
383
- }
384
- }
385
- // Broadcast notification (no requestId) — fall through to task event callbacks
386
- for (const cb of this.taskEventCallbacks) {
245
+ case 'message.badgeAdded':
246
+ for (const cb of this.badgeCallbacks) {
387
247
  try {
388
248
  cb(msg);
389
249
  }
390
250
  catch { /* swallow */ }
391
251
  }
392
252
  break;
253
+ case 'message.updated':
254
+ // Badge array updated — notify via badge callbacks with the first badge as representative
255
+ break;
256
+ case 'messages':
257
+ this.resolvePending(msg.requestId, msg.messages);
258
+ break;
259
+ case 'task.flagged':
260
+ this.resolvePending(msg.requestId, {
261
+ messageId: msg.messageId,
262
+ badges: msg.badges,
263
+ });
264
+ break;
265
+ case 'task.claimed': {
266
+ const claimed = msg;
267
+ const resolvedClaim = claimed.requestId
268
+ ? this.resolvePending(claimed.requestId, { messageId: claimed.messageId, claimantId: claimed.claimantId })
269
+ : false;
270
+ // If not a response to our request, this is a notification to the task author
271
+ if (!resolvedClaim) {
272
+ for (const cb of this.badgeCallbacks) {
273
+ try {
274
+ cb({ type: 'message.badgeAdded', messageId: claimed.messageId, badge: { type: 'task', value: 'claimed', addedBy: claimed.claimantId, addedAt: new Date().toISOString() } });
275
+ }
276
+ catch { /* swallow */ }
277
+ }
278
+ }
279
+ break;
393
280
  }
394
- case 'task.claimed':
395
- case 'task.claimAccepted':
396
- case 'task.updated':
397
- case 'task.completed':
398
- for (const cb of this.taskEventCallbacks) {
399
- try {
400
- cb(msg);
281
+ case 'task.resolved': {
282
+ const resolved = msg;
283
+ const resolvedTask = resolved.requestId
284
+ ? this.resolvePending(resolved.requestId, { messageId: resolved.messageId, status: resolved.status })
285
+ : false;
286
+ // If not a response to our request, this is a notification to the task author
287
+ if (!resolvedTask) {
288
+ for (const cb of this.badgeCallbacks) {
289
+ try {
290
+ cb({ type: 'message.badgeAdded', messageId: resolved.messageId, badge: { type: 'task', value: resolved.status, addedBy: 'system', addedAt: new Date().toISOString() } });
291
+ }
292
+ catch { /* swallow */ }
401
293
  }
402
- catch { /* swallow */ }
403
294
  }
404
295
  break;
296
+ }
297
+ case 'badge.added':
298
+ this.resolvePending(msg.requestId, {
299
+ messageId: msg.messageId,
300
+ badge: msg.badge,
301
+ });
302
+ break;
303
+ case 'session.cleared':
304
+ this.resolvePending(msg.requestId, {
305
+ messagesCleared: msg.messagesCleared,
306
+ });
307
+ break;
405
308
  case 'error':
406
309
  logError(`Hub error: ${msg.message}${msg.requestId ? ` (requestId=${msg.requestId})` : ''}`);
407
- // If the error is tied to a pending request, reject it
408
310
  if (msg.requestId) {
409
311
  const pending = this.pendingRequests.get(msg.requestId);
410
312
  if (pending) {
@@ -429,16 +331,31 @@ export class AgentConnection {
429
331
  this.heartbeatTimer = null;
430
332
  }
431
333
  }
334
+ /** Re-read the dashboard lock file to pick up a new hub port after restart. */
335
+ async refreshPort() {
336
+ try {
337
+ const lockPath = path.join(os.homedir(), '.crosschat', 'dashboard.lock');
338
+ const content = await fs.readFile(lockPath, 'utf-8');
339
+ const lock = JSON.parse(content);
340
+ if (lock.port && lock.port !== this.port) {
341
+ log(`Hub port changed: ${this.port} -> ${lock.port}`);
342
+ this.port = lock.port;
343
+ }
344
+ }
345
+ catch {
346
+ // Lock file may not exist yet during hub restart
347
+ }
348
+ }
432
349
  scheduleReconnect() {
433
350
  if (this.stopped || this.reconnectTimer)
434
351
  return;
435
352
  log(`Reconnecting in ${this.reconnectDelay}ms...`);
436
- this.reconnectTimer = setTimeout(() => {
353
+ this.reconnectTimer = setTimeout(async () => {
437
354
  this.reconnectTimer = null;
355
+ await this.refreshPort();
438
356
  this.doConnect();
439
357
  }, this.reconnectDelay);
440
358
  this.reconnectTimer.unref();
441
- // Exponential backoff: 1s -> 2s -> 4s -> 8s -> ... -> 30s max
442
359
  this.reconnectDelay = Math.min(this.reconnectDelay * 2, MAX_RECONNECT_DELAY_MS);
443
360
  }
444
361
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent-connection.js","sourceRoot":"","sources":["../../src/hub/agent-connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-connection.js","sourceRoot":"","sources":["../../src/hub/agent-connection.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Start the hub server.
3
3
  *
4
4
  * Central hub for CrossChat: manages agent WebSocket connections, peer registry,
5
- * rooms, message routing, tasks, and serves the React dashboard frontend.
5
+ * channels, message routing, tasks (via badges), and serves the React dashboard frontend.
6
6
  */
7
7
  export declare function startHub(): Promise<void>;
8
8
  //# sourceMappingURL=hub-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hub-server.d.ts","sourceRoot":"","sources":["../../src/hub/hub-server.ts"],"names":[],"mappings":"AAkLA;;;;;GAKG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAqvD9C"}
1
+ {"version":3,"file":"hub-server.d.ts","sourceRoot":"","sources":["../../src/hub/hub-server.ts"],"names":[],"mappings":"AA6JA;;;;;GAKG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAs8C9C"}