agent-relay 1.0.7 → 1.0.9

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 (140) hide show
  1. package/README.md +176 -6
  2. package/dist/bridge/config.d.ts +41 -0
  3. package/dist/bridge/config.d.ts.map +1 -0
  4. package/dist/bridge/config.js +143 -0
  5. package/dist/bridge/config.js.map +1 -0
  6. package/dist/bridge/index.d.ts +10 -0
  7. package/dist/bridge/index.d.ts.map +1 -0
  8. package/dist/bridge/index.js +10 -0
  9. package/dist/bridge/index.js.map +1 -0
  10. package/dist/bridge/multi-project-client.d.ts +99 -0
  11. package/dist/bridge/multi-project-client.d.ts.map +1 -0
  12. package/dist/bridge/multi-project-client.js +386 -0
  13. package/dist/bridge/multi-project-client.js.map +1 -0
  14. package/dist/bridge/spawner.d.ts +46 -0
  15. package/dist/bridge/spawner.d.ts.map +1 -0
  16. package/dist/bridge/spawner.js +223 -0
  17. package/dist/bridge/spawner.js.map +1 -0
  18. package/dist/bridge/types.d.ts +55 -0
  19. package/dist/bridge/types.d.ts.map +1 -0
  20. package/dist/bridge/types.js +6 -0
  21. package/dist/bridge/types.js.map +1 -0
  22. package/dist/bridge/utils.d.ts +30 -0
  23. package/dist/bridge/utils.d.ts.map +1 -0
  24. package/dist/bridge/utils.js +54 -0
  25. package/dist/bridge/utils.js.map +1 -0
  26. package/dist/cli/index.d.ts +2 -0
  27. package/dist/cli/index.d.ts.map +1 -1
  28. package/dist/cli/index.js +906 -6
  29. package/dist/cli/index.js.map +1 -1
  30. package/dist/daemon/agent-registry.d.ts +60 -0
  31. package/dist/daemon/agent-registry.d.ts.map +1 -0
  32. package/dist/daemon/agent-registry.js +163 -0
  33. package/dist/daemon/agent-registry.js.map +1 -0
  34. package/dist/daemon/connection.d.ts +33 -1
  35. package/dist/daemon/connection.d.ts.map +1 -1
  36. package/dist/daemon/connection.js +86 -11
  37. package/dist/daemon/connection.js.map +1 -1
  38. package/dist/daemon/index.d.ts +2 -0
  39. package/dist/daemon/index.d.ts.map +1 -1
  40. package/dist/daemon/index.js +2 -0
  41. package/dist/daemon/index.js.map +1 -1
  42. package/dist/daemon/registry.d.ts +9 -0
  43. package/dist/daemon/registry.d.ts.map +1 -0
  44. package/dist/daemon/registry.js +9 -0
  45. package/dist/daemon/registry.js.map +1 -0
  46. package/dist/daemon/router.d.ts +61 -2
  47. package/dist/daemon/router.d.ts.map +1 -1
  48. package/dist/daemon/router.js +219 -4
  49. package/dist/daemon/router.js.map +1 -1
  50. package/dist/daemon/server.d.ts +9 -0
  51. package/dist/daemon/server.d.ts.map +1 -1
  52. package/dist/daemon/server.js +135 -16
  53. package/dist/daemon/server.js.map +1 -1
  54. package/dist/dashboard/metrics.d.ts +105 -0
  55. package/dist/dashboard/metrics.d.ts.map +1 -0
  56. package/dist/dashboard/metrics.js +192 -0
  57. package/dist/dashboard/metrics.js.map +1 -0
  58. package/dist/dashboard/needs-attention.d.ts +24 -0
  59. package/dist/dashboard/needs-attention.d.ts.map +1 -0
  60. package/dist/dashboard/needs-attention.js +78 -0
  61. package/dist/dashboard/needs-attention.js.map +1 -0
  62. package/dist/dashboard/public/bridge.html +1272 -0
  63. package/dist/dashboard/public/index.html +2094 -347
  64. package/dist/dashboard/public/js/app.js +184 -0
  65. package/dist/dashboard/public/js/app.js.map +7 -0
  66. package/dist/dashboard/public/metrics.html +999 -0
  67. package/dist/dashboard/server.d.ts +14 -1
  68. package/dist/dashboard/server.d.ts.map +1 -1
  69. package/dist/dashboard/server.js +689 -16
  70. package/dist/dashboard/server.js.map +1 -1
  71. package/dist/dashboard/start.js +1 -1
  72. package/dist/dashboard/start.js.map +1 -1
  73. package/dist/dashboard-v2/index.d.ts +10 -0
  74. package/dist/dashboard-v2/index.d.ts.map +1 -0
  75. package/dist/dashboard-v2/index.js +54 -0
  76. package/dist/dashboard-v2/index.js.map +1 -0
  77. package/dist/dashboard-v2/lib/api.d.ts +95 -0
  78. package/dist/dashboard-v2/lib/api.d.ts.map +1 -0
  79. package/dist/dashboard-v2/lib/api.js +270 -0
  80. package/dist/dashboard-v2/lib/api.js.map +1 -0
  81. package/dist/dashboard-v2/lib/colors.d.ts +61 -0
  82. package/dist/dashboard-v2/lib/colors.d.ts.map +1 -0
  83. package/dist/dashboard-v2/lib/colors.js +198 -0
  84. package/dist/dashboard-v2/lib/colors.js.map +1 -0
  85. package/dist/dashboard-v2/lib/hierarchy.d.ts +74 -0
  86. package/dist/dashboard-v2/lib/hierarchy.d.ts.map +1 -0
  87. package/dist/dashboard-v2/lib/hierarchy.js +196 -0
  88. package/dist/dashboard-v2/lib/hierarchy.js.map +1 -0
  89. package/dist/dashboard-v2/types/index.d.ts +154 -0
  90. package/dist/dashboard-v2/types/index.d.ts.map +1 -0
  91. package/dist/dashboard-v2/types/index.js +6 -0
  92. package/dist/dashboard-v2/types/index.js.map +1 -0
  93. package/dist/index.d.ts +1 -0
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/protocol/types.d.ts +15 -1
  96. package/dist/protocol/types.d.ts.map +1 -1
  97. package/dist/storage/adapter.d.ts +74 -1
  98. package/dist/storage/adapter.d.ts.map +1 -1
  99. package/dist/storage/adapter.js +39 -0
  100. package/dist/storage/adapter.js.map +1 -1
  101. package/dist/storage/sqlite-adapter.d.ts +92 -1
  102. package/dist/storage/sqlite-adapter.d.ts.map +1 -1
  103. package/dist/storage/sqlite-adapter.js +615 -47
  104. package/dist/storage/sqlite-adapter.js.map +1 -1
  105. package/dist/utils/agent-config.d.ts +45 -0
  106. package/dist/utils/agent-config.d.ts.map +1 -0
  107. package/dist/utils/agent-config.js +118 -0
  108. package/dist/utils/agent-config.js.map +1 -0
  109. package/dist/utils/project-namespace.d.ts.map +1 -1
  110. package/dist/utils/project-namespace.js +22 -1
  111. package/dist/utils/project-namespace.js.map +1 -1
  112. package/dist/wrapper/client.d.ts +30 -3
  113. package/dist/wrapper/client.d.ts.map +1 -1
  114. package/dist/wrapper/client.js +85 -9
  115. package/dist/wrapper/client.js.map +1 -1
  116. package/dist/wrapper/parser.d.ts +127 -4
  117. package/dist/wrapper/parser.d.ts.map +1 -1
  118. package/dist/wrapper/parser.js +622 -86
  119. package/dist/wrapper/parser.js.map +1 -1
  120. package/dist/wrapper/tmux-wrapper.d.ts +136 -10
  121. package/dist/wrapper/tmux-wrapper.d.ts.map +1 -1
  122. package/dist/wrapper/tmux-wrapper.js +599 -79
  123. package/dist/wrapper/tmux-wrapper.js.map +1 -1
  124. package/docs/AGENTS.md +132 -27
  125. package/docs/ARCHITECTURE_DECISIONS.md +175 -0
  126. package/docs/CHANGELOG.md +1 -1
  127. package/docs/COMPETITIVE_ANALYSIS.md +897 -0
  128. package/docs/DESIGN_BRIDGE_STAFFING.md +878 -0
  129. package/docs/DESIGN_V2.md +1079 -0
  130. package/docs/INTEGRATION-GUIDE.md +926 -0
  131. package/docs/MONETIZATION.md +1679 -0
  132. package/docs/PROPOSAL-trajectories.md +1582 -0
  133. package/docs/PROTOCOL.md +3 -3
  134. package/docs/SCALING_ANALYSIS.md +280 -0
  135. package/docs/TMUX_IMPLEMENTATION_NOTES.md +9 -9
  136. package/docs/TMUX_IMPROVEMENTS.md +968 -0
  137. package/docs/agent-relay-snippet.md +61 -0
  138. package/docs/competitive-analysis-mcp-agent-mail.md +389 -0
  139. package/docs/dashboard-v2-plan.md +179 -0
  140. package/package.json +10 -3
@@ -1,4 +1,6 @@
1
1
  export * from './server.js';
2
2
  export * from './router.js';
3
3
  export * from './connection.js';
4
+ export * from './agent-registry.js';
5
+ export * from './registry.js';
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC"}
@@ -1,4 +1,6 @@
1
1
  export * from './server.js';
2
2
  export * from './router.js';
3
3
  export * from './connection.js';
4
+ export * from './agent-registry.js';
5
+ export * from './registry.js';
4
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Agent Registry (public entrypoint)
3
+ * Persists agent metadata across daemon restarts.
4
+ *
5
+ * This file mirrors docs/TMUX_IMPROVEMENTS.md guidance and re-exports the
6
+ * implementation from agent-registry.ts so both import paths work.
7
+ */
8
+ export { AgentRegistry, type AgentRecord } from './agent-registry.js';
9
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/daemon/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Agent Registry (public entrypoint)
3
+ * Persists agent metadata across daemon restarts.
4
+ *
5
+ * This file mirrors docs/TMUX_IMPROVEMENTS.md guidance and re-exports the
6
+ * implementation from agent-registry.ts so both import paths work.
7
+ */
8
+ export { AgentRegistry } from './agent-registry.js';
9
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/daemon/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAoB,MAAM,qBAAqB,CAAC"}
@@ -2,24 +2,45 @@
2
2
  * Message router for the agent relay daemon.
3
3
  * Handles routing messages between agents, topic subscriptions, and broadcast.
4
4
  */
5
- import { type Envelope, type SendPayload } from '../protocol/types.js';
5
+ import { type Envelope, type SendEnvelope, type AckPayload } from '../protocol/types.js';
6
6
  import type { StorageAdapter } from '../storage/adapter.js';
7
+ import type { AgentRegistry } from './agent-registry.js';
7
8
  export interface RoutableConnection {
8
9
  id: string;
9
10
  agentName?: string;
10
11
  cli?: string;
12
+ program?: string;
13
+ model?: string;
14
+ task?: string;
15
+ workingDirectory?: string;
11
16
  sessionId: string;
12
17
  close(): void;
13
18
  send(envelope: Envelope): boolean;
14
19
  getNextSeq(topic: string, peer: string): number;
15
20
  }
21
+ export interface DeliveryReliabilityOptions {
22
+ /** How long to wait for an ACK before retrying (ms) */
23
+ ackTimeoutMs: number;
24
+ /** Maximum attempts (initial send counts as attempt 1) */
25
+ maxAttempts: number;
26
+ /** How long to keep retrying before dropping (ms) */
27
+ deliveryTtlMs: number;
28
+ }
16
29
  export declare class Router {
17
30
  private storage?;
18
31
  private connections;
19
32
  private agents;
20
33
  private subscriptions;
34
+ private pendingDeliveries;
35
+ private processingAgents;
36
+ private deliveryOptions;
37
+ private registry?;
38
+ /** Default timeout for processing indicator (30 seconds) */
39
+ private static readonly PROCESSING_TIMEOUT_MS;
21
40
  constructor(options?: {
22
41
  storage?: StorageAdapter;
42
+ delivery?: Partial<DeliveryReliabilityOptions>;
43
+ registry?: AgentRegistry;
23
44
  });
24
45
  /**
25
46
  * Register a connection after successful handshake.
@@ -40,7 +61,7 @@ export declare class Router {
40
61
  /**
41
62
  * Route a SEND message to its destination(s).
42
63
  */
43
- route(from: RoutableConnection, envelope: Envelope<SendPayload>): void;
64
+ route(from: RoutableConnection, envelope: SendEnvelope): void;
44
65
  /**
45
66
  * Send a direct message to a specific agent.
46
67
  */
@@ -69,5 +90,43 @@ export declare class Router {
69
90
  * Get number of active connections.
70
91
  */
71
92
  get connectionCount(): number;
93
+ get pendingDeliveryCount(): number;
94
+ /**
95
+ * Get list of agents currently processing (thinking).
96
+ * Returns an object with agent names as keys and processing info as values.
97
+ */
98
+ getProcessingAgents(): Record<string, {
99
+ startedAt: number;
100
+ messageId: string;
101
+ }>;
102
+ /**
103
+ * Check if a specific agent is processing.
104
+ */
105
+ isAgentProcessing(agentName: string): boolean;
106
+ /**
107
+ * Mark an agent as processing (called when they receive a message).
108
+ */
109
+ private setProcessing;
110
+ /**
111
+ * Clear processing state for an agent (called when they send a message).
112
+ */
113
+ private clearProcessing;
114
+ /**
115
+ * Handle ACK for previously delivered messages.
116
+ */
117
+ handleAck(connection: RoutableConnection, envelope: Envelope<AckPayload>): void;
118
+ /**
119
+ * Clear pending deliveries for a connection (e.g., on disconnect).
120
+ */
121
+ clearPendingForConnection(connectionId: string): void;
122
+ /**
123
+ * Track a delivery and schedule retries until ACKed or TTL/attempts exhausted.
124
+ */
125
+ private trackDelivery;
126
+ private scheduleRetry;
127
+ /**
128
+ * Replay any pending (unacked) messages for a resumed session.
129
+ */
130
+ replayPending(connection: RoutableConnection): Promise<void>;
72
131
  }
73
132
  //# sourceMappingURL=router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/daemon/router.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,WAAW,EAGjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAClC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACjD;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,MAAM,CAA8C;IAC5D,OAAO,CAAC,aAAa,CAAuC;gBAEhD,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,cAAc,CAAA;KAAO;IAItD;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI;IAc9C;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI;IAehD;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IASjD;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAUnD;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI;IAqBtE;;OAEG;IACH,OAAO,CAAC,UAAU;IAkBlB;;OAEG;IACH,OAAO,CAAC,SAAS;IAqBjB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsB7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAoB9B;;OAEG;IACH,SAAS,IAAI,MAAM,EAAE;IAIrB;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIhE;;OAEG;IACH,IAAI,eAAe,IAAI,MAAM,CAE5B;CACF"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/daemon/router.ts"],"names":[],"mappings":"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"}
@@ -4,13 +4,26 @@
4
4
  */
5
5
  import { v4 as uuid } from 'uuid';
6
6
  import { PROTOCOL_VERSION, } from '../protocol/types.js';
7
+ const DEFAULT_DELIVERY_OPTIONS = {
8
+ ackTimeoutMs: 2000,
9
+ maxAttempts: 5,
10
+ deliveryTtlMs: 60_000,
11
+ };
7
12
  export class Router {
8
13
  storage;
9
14
  connections = new Map(); // connectionId -> Connection
10
15
  agents = new Map(); // agentName -> Connection
11
16
  subscriptions = new Map(); // topic -> Set<agentName>
17
+ pendingDeliveries = new Map(); // deliverId -> pending
18
+ processingAgents = new Map(); // agentName -> processing state
19
+ deliveryOptions;
20
+ registry;
21
+ /** Default timeout for processing indicator (30 seconds) */
22
+ static PROCESSING_TIMEOUT_MS = 30_000;
12
23
  constructor(options = {}) {
13
24
  this.storage = options.storage;
25
+ this.deliveryOptions = { ...DEFAULT_DELIVERY_OPTIONS, ...options.delivery };
26
+ this.registry = options.registry;
14
27
  }
15
28
  /**
16
29
  * Register a connection after successful handshake.
@@ -25,6 +38,14 @@ export class Router {
25
38
  this.connections.delete(existing.id);
26
39
  }
27
40
  this.agents.set(connection.agentName, connection);
41
+ this.registry?.registerOrUpdate({
42
+ name: connection.agentName,
43
+ cli: connection.cli,
44
+ program: connection.program,
45
+ model: connection.model,
46
+ task: connection.task,
47
+ workingDirectory: connection.workingDirectory,
48
+ });
28
49
  }
29
50
  }
30
51
  /**
@@ -41,7 +62,10 @@ export class Router {
41
62
  for (const subscribers of this.subscriptions.values()) {
42
63
  subscribers.delete(connection.agentName);
43
64
  }
65
+ // Clear processing state
66
+ this.clearProcessing(connection.agentName);
44
67
  }
68
+ this.clearPendingForConnection(connection.id);
45
69
  }
46
70
  /**
47
71
  * Subscribe an agent to a topic.
@@ -75,9 +99,12 @@ export class Router {
75
99
  console.log(`[router] Dropping message - sender has no name`);
76
100
  return;
77
101
  }
102
+ // Agent is responding - clear their processing state
103
+ this.clearProcessing(senderName);
104
+ this.registry?.recordSend(senderName);
78
105
  const to = envelope.to;
79
106
  const topic = envelope.topic;
80
- console.log(`[router] ${senderName} -> ${to}: ${envelope.payload.body?.substring(0, 50)}...`);
107
+ console.log(`[router] ${senderName} -> ${to}:${envelope.payload.body?.substring(0, 50)}...`);
81
108
  if (to === '*') {
82
109
  // Broadcast to all (except sender)
83
110
  this.broadcast(senderName, envelope, topic);
@@ -100,6 +127,12 @@ export class Router {
100
127
  const sent = target.send(deliver);
101
128
  console.log(`[router] Delivered to ${to}: ${sent ? 'success' : 'failed'}`);
102
129
  this.persistDeliverEnvelope(deliver);
130
+ if (sent) {
131
+ this.trackDelivery(target, deliver);
132
+ this.registry?.recordReceive(to);
133
+ // Mark recipient as processing
134
+ this.setProcessing(to, deliver.id);
135
+ }
103
136
  return sent;
104
137
  }
105
138
  /**
@@ -115,8 +148,14 @@ export class Router {
115
148
  const target = this.agents.get(agentName);
116
149
  if (target) {
117
150
  const deliver = this.createDeliverEnvelope(from, agentName, envelope, target);
118
- target.send(deliver);
119
- this.persistDeliverEnvelope(deliver);
151
+ const sent = target.send(deliver);
152
+ this.persistDeliverEnvelope(deliver, true); // Mark as broadcast
153
+ if (sent) {
154
+ this.trackDelivery(target, deliver);
155
+ this.registry?.recordReceive(agentName);
156
+ // Mark recipient as processing
157
+ this.setProcessing(agentName, deliver.id);
158
+ }
120
159
  }
121
160
  }
122
161
  }
@@ -133,6 +172,7 @@ export class Router {
133
172
  to,
134
173
  topic: original.topic,
135
174
  payload: original.payload,
175
+ payload_meta: original.payload_meta,
136
176
  delivery: {
137
177
  seq: target.getNextSeq(original.topic ?? 'default', from),
138
178
  session_id: target.sessionId,
@@ -142,7 +182,7 @@ export class Router {
142
182
  /**
143
183
  * Persist a delivered message if storage is configured.
144
184
  */
145
- persistDeliverEnvelope(envelope) {
185
+ persistDeliverEnvelope(envelope, isBroadcast = false) {
146
186
  if (!this.storage)
147
187
  return;
148
188
  this.storage.saveMessage({
@@ -154,9 +194,14 @@ export class Router {
154
194
  kind: envelope.payload.kind,
155
195
  body: envelope.payload.body,
156
196
  data: envelope.payload.data,
197
+ payloadMeta: envelope.payload_meta,
198
+ thread: envelope.payload.thread,
157
199
  deliverySeq: envelope.delivery.seq,
158
200
  deliverySessionId: envelope.delivery.session_id,
159
201
  sessionId: envelope.delivery.session_id,
202
+ status: 'unread',
203
+ is_urgent: false,
204
+ is_broadcast: isBroadcast || envelope.to === '*',
160
205
  }).catch((err) => {
161
206
  console.error('[router] Failed to persist message', err);
162
207
  });
@@ -179,5 +224,175 @@ export class Router {
179
224
  get connectionCount() {
180
225
  return this.connections.size;
181
226
  }
227
+ get pendingDeliveryCount() {
228
+ return this.pendingDeliveries.size;
229
+ }
230
+ /**
231
+ * Get list of agents currently processing (thinking).
232
+ * Returns an object with agent names as keys and processing info as values.
233
+ */
234
+ getProcessingAgents() {
235
+ const result = {};
236
+ for (const [name, state] of this.processingAgents.entries()) {
237
+ result[name] = { startedAt: state.startedAt, messageId: state.messageId };
238
+ }
239
+ return result;
240
+ }
241
+ /**
242
+ * Check if a specific agent is processing.
243
+ */
244
+ isAgentProcessing(agentName) {
245
+ return this.processingAgents.has(agentName);
246
+ }
247
+ /**
248
+ * Mark an agent as processing (called when they receive a message).
249
+ */
250
+ setProcessing(agentName, messageId) {
251
+ // Clear any existing processing state
252
+ this.clearProcessing(agentName);
253
+ const timer = setTimeout(() => {
254
+ this.clearProcessing(agentName);
255
+ console.log(`[router] Processing timeout for ${agentName}`);
256
+ }, Router.PROCESSING_TIMEOUT_MS);
257
+ this.processingAgents.set(agentName, {
258
+ startedAt: Date.now(),
259
+ messageId,
260
+ timer,
261
+ });
262
+ console.log(`[router] ${agentName} started processing (message: ${messageId})`);
263
+ }
264
+ /**
265
+ * Clear processing state for an agent (called when they send a message).
266
+ */
267
+ clearProcessing(agentName) {
268
+ const state = this.processingAgents.get(agentName);
269
+ if (state) {
270
+ if (state.timer) {
271
+ clearTimeout(state.timer);
272
+ }
273
+ this.processingAgents.delete(agentName);
274
+ console.log(`[router] ${agentName} finished processing`);
275
+ }
276
+ }
277
+ /**
278
+ * Handle ACK for previously delivered messages.
279
+ */
280
+ handleAck(connection, envelope) {
281
+ const ackId = envelope.payload.ack_id;
282
+ const pending = this.pendingDeliveries.get(ackId);
283
+ if (!pending)
284
+ return;
285
+ // Only accept ACKs from the same connection that received the deliver
286
+ if (pending.connectionId !== connection.id)
287
+ return;
288
+ if (pending.timer) {
289
+ clearTimeout(pending.timer);
290
+ }
291
+ this.pendingDeliveries.delete(ackId);
292
+ const statusUpdate = this.storage?.updateMessageStatus?.(ackId, 'acked');
293
+ if (statusUpdate instanceof Promise) {
294
+ statusUpdate.catch(err => {
295
+ console.error('[router] Failed to record ACK status', err);
296
+ });
297
+ }
298
+ console.log(`[router] ACK received for ${ackId}`);
299
+ }
300
+ /**
301
+ * Clear pending deliveries for a connection (e.g., on disconnect).
302
+ */
303
+ clearPendingForConnection(connectionId) {
304
+ for (const [id, pending] of this.pendingDeliveries.entries()) {
305
+ if (pending.connectionId === connectionId) {
306
+ if (pending.timer)
307
+ clearTimeout(pending.timer);
308
+ this.pendingDeliveries.delete(id);
309
+ }
310
+ }
311
+ }
312
+ /**
313
+ * Track a delivery and schedule retries until ACKed or TTL/attempts exhausted.
314
+ */
315
+ trackDelivery(target, deliver) {
316
+ const pending = {
317
+ envelope: deliver,
318
+ connectionId: target.id,
319
+ attempts: 1,
320
+ firstSentAt: Date.now(),
321
+ };
322
+ pending.timer = this.scheduleRetry(deliver.id);
323
+ this.pendingDeliveries.set(deliver.id, pending);
324
+ }
325
+ scheduleRetry(deliverId) {
326
+ return setTimeout(() => {
327
+ const pending = this.pendingDeliveries.get(deliverId);
328
+ if (!pending)
329
+ return;
330
+ const now = Date.now();
331
+ const elapsed = now - pending.firstSentAt;
332
+ if (elapsed > this.deliveryOptions.deliveryTtlMs) {
333
+ console.warn(`[router] Dropping ${deliverId} after TTL (${this.deliveryOptions.deliveryTtlMs}ms)`);
334
+ this.pendingDeliveries.delete(deliverId);
335
+ return;
336
+ }
337
+ if (pending.attempts >= this.deliveryOptions.maxAttempts) {
338
+ console.warn(`[router] Dropping ${deliverId} after max attempts (${this.deliveryOptions.maxAttempts})`);
339
+ this.pendingDeliveries.delete(deliverId);
340
+ return;
341
+ }
342
+ const target = this.connections.get(pending.connectionId);
343
+ if (!target) {
344
+ console.warn(`[router] Dropping ${deliverId} - connection unavailable`);
345
+ this.pendingDeliveries.delete(deliverId);
346
+ return;
347
+ }
348
+ pending.attempts++;
349
+ const sent = target.send(pending.envelope);
350
+ if (!sent) {
351
+ console.warn(`[router] Retry failed for ${deliverId} (attempt ${pending.attempts})`);
352
+ }
353
+ else {
354
+ console.log(`[router] Retried ${deliverId} (attempt ${pending.attempts})`);
355
+ }
356
+ pending.timer = this.scheduleRetry(deliverId);
357
+ }, this.deliveryOptions.ackTimeoutMs);
358
+ }
359
+ /**
360
+ * Replay any pending (unacked) messages for a resumed session.
361
+ */
362
+ async replayPending(connection) {
363
+ if (!this.storage?.getPendingMessagesForSession || !connection.agentName) {
364
+ return;
365
+ }
366
+ const pending = await this.storage.getPendingMessagesForSession(connection.agentName, connection.sessionId);
367
+ if (!pending.length)
368
+ return;
369
+ console.log(`[router] Replaying ${pending.length} messages to ${connection.agentName}`);
370
+ for (const msg of pending) {
371
+ const deliver = {
372
+ v: PROTOCOL_VERSION,
373
+ type: 'DELIVER',
374
+ id: msg.id,
375
+ ts: msg.ts,
376
+ from: msg.from,
377
+ to: msg.to,
378
+ topic: msg.topic,
379
+ payload: {
380
+ kind: msg.kind,
381
+ body: msg.body,
382
+ data: msg.data,
383
+ thread: msg.thread,
384
+ },
385
+ payload_meta: msg.payloadMeta,
386
+ delivery: {
387
+ seq: msg.deliverySeq ?? connection.getNextSeq(msg.topic ?? 'default', msg.from),
388
+ session_id: msg.deliverySessionId ?? connection.sessionId,
389
+ },
390
+ };
391
+ const sent = connection.send(deliver);
392
+ if (sent) {
393
+ this.trackDelivery(connection, deliver);
394
+ }
395
+ }
396
+ }
182
397
  }
183
398
  //# sourceMappingURL=router.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/daemon/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/daemon/router.ts"],"names":[],"mappings":"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"}
@@ -24,11 +24,20 @@ export declare class Daemon {
24
24
  private connections;
25
25
  private storage?;
26
26
  private storageInitialized;
27
+ private registry?;
28
+ private processingStateInterval?;
29
+ /** Interval for writing processing state file (500ms for responsive UI) */
30
+ private static readonly PROCESSING_STATE_INTERVAL_MS;
27
31
  constructor(config?: Partial<DaemonConfig>);
28
32
  /**
29
33
  * Write current agents to agents.json for dashboard consumption.
30
34
  */
31
35
  private writeAgentsFile;
36
+ /**
37
+ * Write processing state to processing-state.json for dashboard consumption.
38
+ * This file contains agents currently processing/thinking after receiving a message.
39
+ */
40
+ private writeProcessingStateFile;
32
41
  /**
33
42
  * Initialize storage adapter (called during start).
34
43
  */
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAc,KAAK,gBAAgB,EAAkB,MAAM,iBAAiB,CAAC;AAGpF,OAAO,EAAwB,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtG,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,8CAA8C;IAC9C,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAE3D,eAAO,MAAM,qBAAqB,EAAE,YAInC,CAAC;AAEF,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM;IAa9C;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;YACW,WAAW;IAiBzB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACH,SAAS,IAAI,MAAM,EAAE;IAIrB;;OAEG;IACH,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;CACF"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAc,KAAK,gBAAgB,EAAkB,MAAM,iBAAiB,CAAC;AAGpF,OAAO,EAAwB,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAKtG,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,8CAA8C;IAC9C,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAE3D,eAAO,MAAM,qBAAqB,EAAE,YAInC,CAAC;AAEF,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,uBAAuB,CAAC,CAAiB;IAEjD,2EAA2E;IAC3E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,4BAA4B,CAAO;gBAE/C,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM;IAgB9C;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAahC;;OAEG;YACW,WAAW;IAiBzB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0C5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAqC3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgIxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACH,SAAS,IAAI,MAAM,EAAE;IAIrB;;OAEG;IACH,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;CACF"}