@animalabs/agent-framework 0.5.7 → 0.6.2

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 (179) hide show
  1. package/dist/src/agent.d.ts +4 -0
  2. package/dist/src/agent.d.ts.map +1 -1
  3. package/dist/src/agent.js +15 -0
  4. package/dist/src/agent.js.map +1 -1
  5. package/dist/src/framework.d.ts +243 -0
  6. package/dist/src/framework.d.ts.map +1 -1
  7. package/dist/src/framework.js +1378 -114
  8. package/dist/src/framework.js.map +1 -1
  9. package/dist/src/gate/event-gate.d.ts +64 -2
  10. package/dist/src/gate/event-gate.d.ts.map +1 -1
  11. package/dist/src/gate/event-gate.js +212 -12
  12. package/dist/src/gate/event-gate.js.map +1 -1
  13. package/dist/src/gate/gate-script-worker.d.ts +2 -0
  14. package/dist/src/gate/gate-script-worker.d.ts.map +1 -0
  15. package/dist/src/gate/gate-script-worker.js +69 -0
  16. package/dist/src/gate/gate-script-worker.js.map +1 -0
  17. package/dist/src/gate/gate-script.d.ts +44 -0
  18. package/dist/src/gate/gate-script.d.ts.map +1 -0
  19. package/dist/src/gate/gate-script.js +164 -0
  20. package/dist/src/gate/gate-script.js.map +1 -0
  21. package/dist/src/gate/types.d.ts +18 -3
  22. package/dist/src/gate/types.d.ts.map +1 -1
  23. package/dist/src/index.d.ts +3 -0
  24. package/dist/src/index.d.ts.map +1 -1
  25. package/dist/src/index.js +4 -0
  26. package/dist/src/index.js.map +1 -1
  27. package/dist/src/mcpl/channel-registry.d.ts +60 -2
  28. package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
  29. package/dist/src/mcpl/channel-registry.js +114 -9
  30. package/dist/src/mcpl/channel-registry.js.map +1 -1
  31. package/dist/src/mcpl/checkpoint-manager.d.ts +7 -0
  32. package/dist/src/mcpl/checkpoint-manager.d.ts.map +1 -1
  33. package/dist/src/mcpl/checkpoint-manager.js +15 -0
  34. package/dist/src/mcpl/checkpoint-manager.js.map +1 -1
  35. package/dist/src/mcpl/push-handler.d.ts.map +1 -1
  36. package/dist/src/mcpl/push-handler.js +5 -0
  37. package/dist/src/mcpl/push-handler.js.map +1 -1
  38. package/dist/src/mcpl/server-connection.d.ts +64 -30
  39. package/dist/src/mcpl/server-connection.d.ts.map +1 -1
  40. package/dist/src/mcpl/server-connection.js +247 -210
  41. package/dist/src/mcpl/server-connection.js.map +1 -1
  42. package/dist/src/mcpl/transport.d.ts +98 -0
  43. package/dist/src/mcpl/transport.d.ts.map +1 -0
  44. package/dist/src/mcpl/transport.js +281 -0
  45. package/dist/src/mcpl/transport.js.map +1 -0
  46. package/dist/src/mcpl/types.d.ts +59 -3
  47. package/dist/src/mcpl/types.d.ts.map +1 -1
  48. package/dist/src/mcpl/types.js.map +1 -1
  49. package/dist/src/module-registry.d.ts +17 -1
  50. package/dist/src/module-registry.d.ts.map +1 -1
  51. package/dist/src/module-registry.js +101 -6
  52. package/dist/src/module-registry.js.map +1 -1
  53. package/dist/src/prose-segments.d.ts +18 -0
  54. package/dist/src/prose-segments.d.ts.map +1 -0
  55. package/dist/src/prose-segments.js +39 -0
  56. package/dist/src/prose-segments.js.map +1 -0
  57. package/dist/src/runtime/liveness-watchdog-worker.d.ts +2 -0
  58. package/dist/src/runtime/liveness-watchdog-worker.d.ts.map +1 -0
  59. package/dist/src/runtime/liveness-watchdog-worker.js +57 -0
  60. package/dist/src/runtime/liveness-watchdog-worker.js.map +1 -0
  61. package/dist/src/runtime/liveness-watchdog.d.ts +36 -0
  62. package/dist/src/runtime/liveness-watchdog.d.ts.map +1 -0
  63. package/dist/src/runtime/liveness-watchdog.js +106 -0
  64. package/dist/src/runtime/liveness-watchdog.js.map +1 -0
  65. package/dist/src/types/agent.d.ts +47 -0
  66. package/dist/src/types/agent.d.ts.map +1 -1
  67. package/dist/src/types/framework.d.ts +14 -0
  68. package/dist/src/types/framework.d.ts.map +1 -1
  69. package/dist/src/types/module.d.ts +58 -0
  70. package/dist/src/types/module.d.ts.map +1 -1
  71. package/dist/src/types/trace.d.ts +42 -0
  72. package/dist/src/types/trace.d.ts.map +1 -1
  73. package/dist/test/agent-cache-ttl.test.d.ts +2 -0
  74. package/dist/test/agent-cache-ttl.test.d.ts.map +1 -0
  75. package/dist/test/agent-cache-ttl.test.js +25 -0
  76. package/dist/test/agent-cache-ttl.test.js.map +1 -0
  77. package/dist/test/channel-registry-routing.test.js +108 -1
  78. package/dist/test/channel-registry-routing.test.js.map +1 -1
  79. package/dist/test/checkpoint-attribution.test.d.ts +2 -0
  80. package/dist/test/checkpoint-attribution.test.d.ts.map +1 -0
  81. package/dist/test/checkpoint-attribution.test.js +40 -0
  82. package/dist/test/checkpoint-attribution.test.js.map +1 -0
  83. package/dist/test/conversation-fork-injection-scoping.test.d.ts +2 -0
  84. package/dist/test/conversation-fork-injection-scoping.test.d.ts.map +1 -0
  85. package/dist/test/conversation-fork-injection-scoping.test.js +184 -0
  86. package/dist/test/conversation-fork-injection-scoping.test.js.map +1 -0
  87. package/dist/test/event-gate-policy-mutation.test.d.ts +2 -0
  88. package/dist/test/event-gate-policy-mutation.test.d.ts.map +1 -0
  89. package/dist/test/event-gate-policy-mutation.test.js +137 -0
  90. package/dist/test/event-gate-policy-mutation.test.js.map +1 -0
  91. package/dist/test/event-gate-script.test.d.ts +2 -0
  92. package/dist/test/event-gate-script.test.d.ts.map +1 -0
  93. package/dist/test/event-gate-script.test.js +95 -0
  94. package/dist/test/event-gate-script.test.js.map +1 -0
  95. package/dist/test/event-gate-tags.test.d.ts +2 -0
  96. package/dist/test/event-gate-tags.test.d.ts.map +1 -0
  97. package/dist/test/event-gate-tags.test.js +76 -0
  98. package/dist/test/event-gate-tags.test.js.map +1 -0
  99. package/dist/test/gather-context-timeout.test.d.ts +2 -0
  100. package/dist/test/gather-context-timeout.test.d.ts.map +1 -0
  101. package/dist/test/gather-context-timeout.test.js +120 -0
  102. package/dist/test/gather-context-timeout.test.js.map +1 -0
  103. package/dist/test/inference-exhaustion-rewind.test.d.ts +2 -0
  104. package/dist/test/inference-exhaustion-rewind.test.d.ts.map +1 -0
  105. package/dist/test/inference-exhaustion-rewind.test.js +181 -0
  106. package/dist/test/inference-exhaustion-rewind.test.js.map +1 -0
  107. package/dist/test/inference-failure-observability.test.js +4 -0
  108. package/dist/test/inference-failure-observability.test.js.map +1 -1
  109. package/dist/test/liveness-watchdog.test.d.ts +2 -0
  110. package/dist/test/liveness-watchdog.test.d.ts.map +1 -0
  111. package/dist/test/liveness-watchdog.test.js +78 -0
  112. package/dist/test/liveness-watchdog.test.js.map +1 -0
  113. package/dist/test/mcpl-reconnect-events.test.d.ts +2 -0
  114. package/dist/test/mcpl-reconnect-events.test.d.ts.map +1 -0
  115. package/dist/test/mcpl-reconnect-events.test.js +119 -0
  116. package/dist/test/mcpl-reconnect-events.test.js.map +1 -0
  117. package/dist/test/mcpl-reconnect-reregistration.test.d.ts +2 -0
  118. package/dist/test/mcpl-reconnect-reregistration.test.d.ts.map +1 -0
  119. package/dist/test/mcpl-reconnect-reregistration.test.js +181 -0
  120. package/dist/test/mcpl-reconnect-reregistration.test.js.map +1 -0
  121. package/dist/test/mcpl-request-timeout.test.d.ts +2 -0
  122. package/dist/test/mcpl-request-timeout.test.d.ts.map +1 -0
  123. package/dist/test/mcpl-request-timeout.test.js +123 -0
  124. package/dist/test/mcpl-request-timeout.test.js.map +1 -0
  125. package/dist/test/mcpl-runtime-lifecycle.test.d.ts +7 -0
  126. package/dist/test/mcpl-runtime-lifecycle.test.d.ts.map +1 -0
  127. package/dist/test/mcpl-runtime-lifecycle.test.js +142 -0
  128. package/dist/test/mcpl-runtime-lifecycle.test.js.map +1 -0
  129. package/dist/test/mcpl-ws-transport.test.d.ts +2 -0
  130. package/dist/test/mcpl-ws-transport.test.d.ts.map +1 -0
  131. package/dist/test/mcpl-ws-transport.test.js +155 -0
  132. package/dist/test/mcpl-ws-transport.test.js.map +1 -0
  133. package/dist/test/prose-segments.test.d.ts +2 -0
  134. package/dist/test/prose-segments.test.d.ts.map +1 -0
  135. package/dist/test/prose-segments.test.js +52 -0
  136. package/dist/test/prose-segments.test.js.map +1 -0
  137. package/dist/test/refusal-rewind.test.d.ts +2 -0
  138. package/dist/test/refusal-rewind.test.d.ts.map +1 -0
  139. package/dist/test/refusal-rewind.test.js +108 -0
  140. package/dist/test/refusal-rewind.test.js.map +1 -0
  141. package/dist/test/state-scaling-e2e.test.d.ts +22 -0
  142. package/dist/test/state-scaling-e2e.test.d.ts.map +1 -0
  143. package/dist/test/state-scaling-e2e.test.js +200 -0
  144. package/dist/test/state-scaling-e2e.test.js.map +1 -0
  145. package/dist/test/state-scaling.test.d.ts +12 -0
  146. package/dist/test/state-scaling.test.d.ts.map +1 -0
  147. package/dist/test/state-scaling.test.js +243 -0
  148. package/dist/test/state-scaling.test.js.map +1 -0
  149. package/dist/test/tool-result-content.test.d.ts +2 -0
  150. package/dist/test/tool-result-content.test.d.ts.map +1 -0
  151. package/dist/test/tool-result-content.test.js +37 -0
  152. package/dist/test/tool-result-content.test.js.map +1 -0
  153. package/dist/test/trunk-channel-routing.test.d.ts +19 -0
  154. package/dist/test/trunk-channel-routing.test.d.ts.map +1 -0
  155. package/dist/test/trunk-channel-routing.test.js +175 -0
  156. package/dist/test/trunk-channel-routing.test.js.map +1 -0
  157. package/dist/tsconfig.tsbuildinfo +1 -1
  158. package/package.json +4 -3
  159. package/src/agent.ts +16 -0
  160. package/src/framework.ts +1576 -121
  161. package/src/gate/event-gate.ts +209 -12
  162. package/src/gate/gate-script-worker.ts +73 -0
  163. package/src/gate/gate-script.ts +180 -0
  164. package/src/gate/types.ts +19 -3
  165. package/src/index.ts +10 -0
  166. package/src/mcpl/channel-registry.ts +143 -8
  167. package/src/mcpl/checkpoint-manager.ts +16 -0
  168. package/src/mcpl/push-handler.ts +5 -0
  169. package/src/mcpl/server-connection.ts +262 -227
  170. package/src/mcpl/transport.ts +307 -0
  171. package/src/mcpl/types.ts +68 -3
  172. package/src/module-registry.ts +126 -6
  173. package/src/prose-segments.ts +42 -0
  174. package/src/runtime/liveness-watchdog-worker.ts +66 -0
  175. package/src/runtime/liveness-watchdog.ts +122 -0
  176. package/src/types/agent.ts +48 -0
  177. package/src/types/framework.ts +15 -0
  178. package/src/types/module.ts +65 -0
  179. package/src/types/trace.ts +51 -0
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mcpl/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAu6BH,+EAA+E;AAC/E,mDAAmD;AACnD,+EAA+E;AAE/E,oDAAoD;AACpD,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,8BAA8B;IAC9B,SAAS,EAAE,YAAY;IAEvB,gCAAgC;IAChC,eAAe,EAAE,yBAAyB;IAC1C,cAAc,EAAE,wBAAwB;IAExC,6DAA6D;IAC7D,gBAAgB,EAAE,mBAAmB;IACrC,cAAc,EAAE,iBAAiB;IAEjC,6BAA6B;IAC7B,SAAS,EAAE,YAAY;IAEvB,eAAe;IACf,iBAAiB,EAAE,oBAAoB;IACvC,kBAAkB,EAAE,qBAAqB;IAEzC,gCAAgC;IAChC,YAAY,EAAE,eAAe;IAE7B,mCAAmC;IACnC,aAAa,EAAE,gBAAgB;IAE/B,WAAW;IACX,gBAAgB,EAAE,mBAAmB;IACrC,eAAe,EAAE,kBAAkB;IACnC,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;IAC7B,aAAa,EAAE,gBAAgB;IAC/B,qBAAqB,EAAE,yBAAyB;IAChD,wBAAwB,EAAE,4BAA4B;IACtD,eAAe,EAAE,kBAAkB;IACnC,gBAAgB,EAAE,mBAAmB;IACrC,cAAc,EAAE,iBAAiB;CACzB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mcpl/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAw+BH,+EAA+E;AAC/E,mDAAmD;AACnD,+EAA+E;AAE/E,oDAAoD;AACpD,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,8BAA8B;IAC9B,SAAS,EAAE,YAAY;IAEvB,gCAAgC;IAChC,eAAe,EAAE,yBAAyB;IAC1C,cAAc,EAAE,wBAAwB;IAExC,6DAA6D;IAC7D,gBAAgB,EAAE,mBAAmB;IACrC,cAAc,EAAE,iBAAiB;IAEjC,6BAA6B;IAC7B,SAAS,EAAE,YAAY;IAEvB,eAAe;IACf,iBAAiB,EAAE,oBAAoB;IACvC,kBAAkB,EAAE,qBAAqB;IAEzC,gCAAgC;IAChC,YAAY,EAAE,eAAe;IAE7B,mCAAmC;IACnC,aAAa,EAAE,gBAAgB;IAE/B,WAAW;IACX,gBAAgB,EAAE,mBAAmB;IACrC,eAAe,EAAE,kBAAkB;IACnC,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;IAC7B,aAAa,EAAE,gBAAgB;IAC/B,qBAAqB,EAAE,yBAAyB;IAChD,wBAAwB,EAAE,4BAA4B;IACtD,eAAe,EAAE,kBAAkB;IACnC,gBAAgB,EAAE,mBAAmB;IACrC,cAAc,EAAE,iBAAiB;CACzB,CAAC"}
@@ -3,6 +3,13 @@ import type { ContentBlock } from '@animalabs/membrane';
3
3
  import type { MessageId, MessageMetadata, MessageQuery, MessageQueryResult, StoredMessage, ContextInjection } from '@animalabs/context-manager';
4
4
  import type { Module, ProcessState, ProcessQueue, ToolDefinition, ToolCall, ToolResult, SpeechContext, SpeechHandlerOptions, ProcessEvent, TraceEventListener } from './types/index.js';
5
5
  import type { Agent } from './agent.js';
6
+ /**
7
+ * True when a registerState failure means "this state id already exists" —
8
+ * the one failure that is safe to swallow on an idempotent re-registration.
9
+ * Anything else (closed store, IO error) must propagate: swallowing it defers
10
+ * the real error to a later write with far worse context.
11
+ */
12
+ export declare function isStateExistsError(err: unknown): boolean;
6
13
  /**
7
14
  * Registry for managing modules.
8
15
  */
@@ -20,6 +27,7 @@ export declare class ModuleRegistry {
20
27
  private queryMessagesFn;
21
28
  private pushEventFn;
22
29
  private onTraceFn;
30
+ private callToolFn;
23
31
  constructor(store: JsStore, queue: ProcessQueue, options: {
24
32
  getAgents: () => Agent[];
25
33
  addMessage: (participant: string, content: ContentBlock[], metadata?: MessageMetadata) => MessageId;
@@ -29,6 +37,7 @@ export declare class ModuleRegistry {
29
37
  queryMessages: (filter: MessageQuery) => MessageQueryResult;
30
38
  pushEvent: (event: ProcessEvent) => void;
31
39
  onTrace: (listener: TraceEventListener) => () => void;
40
+ callTool: (call: ToolCall) => Promise<ToolResult>;
32
41
  });
33
42
  /**
34
43
  * Register and start a module.
@@ -82,7 +91,14 @@ export declare class ModuleRegistry {
82
91
  /**
83
92
  * Gather context injections from all modules before inference.
84
93
  * Calls each module's gatherContext() in parallel with a per-module timeout.
85
- * Fail-open: timed-out or erroring modules are skipped silently.
94
+ * Fail-open: timed-out or erroring modules are skipped (with a stderr line).
95
+ *
96
+ * The per-module budget is `module.contextTimeoutMs` when declared, else the
97
+ * `timeoutMs` default (15s). Modules whose gatherContext does real work —
98
+ * e.g. a retrieval module making sequential LLM calls with backoff — should
99
+ * declare a larger `contextTimeoutMs` rather than silently losing their
100
+ * injection every turn to the shared default. The declared value is clamped
101
+ * to MAX_CONTEXT_TIMEOUT_MS so no single module can hold every turn hostage.
86
102
  * Adapted from Anarchid/agent-framework@mcpl-module-proto.
87
103
  */
88
104
  gatherContext(agentName: string, timeoutMs?: number): Promise<ContextInjection[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"module-registry.d.ts","sourceRoot":"","sources":["../../src/module-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module-registry.d.ts","sourceRoot":"","sources":["../../src/module-registry.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,21 @@
1
1
  const MODULE_STATE_PREFIX = 'modules/';
2
+ /**
3
+ * True when a registerState failure means "this state id already exists" —
4
+ * the one failure that is safe to swallow on an idempotent re-registration.
5
+ * Anything else (closed store, IO error) must propagate: swallowing it defers
6
+ * the real error to a later write with far worse context.
7
+ */
8
+ export function isStateExistsError(err) {
9
+ return err instanceof Error && err.message.includes('State already exists');
10
+ }
11
+ /**
12
+ * Hard ceiling for a single module's gatherContext budget, regardless of the
13
+ * `contextTimeoutMs` it declares. gatherContext runs on the critical path of
14
+ * every inference turn, so an unbounded self-declared budget would let one
15
+ * wedged module stall every agent. 30s is generous for legitimate work (e.g. a
16
+ * retrieval module's sequential LLM calls) while keeping the worst case bounded.
17
+ */
18
+ const MAX_CONTEXT_TIMEOUT_MS = 30_000;
2
19
  /**
3
20
  * Registry for managing modules.
4
21
  */
@@ -16,6 +33,7 @@ export class ModuleRegistry {
16
33
  queryMessagesFn;
17
34
  pushEventFn;
18
35
  onTraceFn;
36
+ callToolFn;
19
37
  constructor(store, queue, options) {
20
38
  this.store = store;
21
39
  this.queue = queue;
@@ -27,6 +45,7 @@ export class ModuleRegistry {
27
45
  this.queryMessagesFn = options.queryMessages;
28
46
  this.pushEventFn = options.pushEvent;
29
47
  this.onTraceFn = options.onTrace;
48
+ this.callToolFn = options.callTool;
30
49
  }
31
50
  /**
32
51
  * Register and start a module.
@@ -50,7 +69,7 @@ export class ModuleRegistry {
50
69
  const existingState = this.store.getStateJson(stateId);
51
70
  const isRestart = existingState !== null;
52
71
  // Create context
53
- const context = new ModuleContextImpl(module.name, this.store, stateId, this.queue, this, isRestart, this.getAgents, this.addMessageFn, this.editMessageFn, this.removeMessageFn, this.getMessageFn, this.queryMessagesFn, this.pushEventFn, this.onTraceFn);
72
+ const context = new ModuleContextImpl(module.name, this.store, stateId, this.queue, this, isRestart, this.getAgents, this.addMessageFn, this.editMessageFn, this.removeMessageFn, this.getMessageFn, this.queryMessagesFn, this.pushEventFn, this.onTraceFn, this.callToolFn);
54
73
  this.modules.set(module.name, module);
55
74
  this.moduleContexts.set(module.name, context);
56
75
  // Start the module
@@ -198,19 +217,37 @@ export class ModuleRegistry {
198
217
  /**
199
218
  * Gather context injections from all modules before inference.
200
219
  * Calls each module's gatherContext() in parallel with a per-module timeout.
201
- * Fail-open: timed-out or erroring modules are skipped silently.
220
+ * Fail-open: timed-out or erroring modules are skipped (with a stderr line).
221
+ *
222
+ * The per-module budget is `module.contextTimeoutMs` when declared, else the
223
+ * `timeoutMs` default (15s). Modules whose gatherContext does real work —
224
+ * e.g. a retrieval module making sequential LLM calls with backoff — should
225
+ * declare a larger `contextTimeoutMs` rather than silently losing their
226
+ * injection every turn to the shared default. The declared value is clamped
227
+ * to MAX_CONTEXT_TIMEOUT_MS so no single module can hold every turn hostage.
202
228
  * Adapted from Anarchid/agent-framework@mcpl-module-proto.
203
229
  */
204
- async gatherContext(agentName, timeoutMs = 5000) {
230
+ async gatherContext(agentName, timeoutMs = 15_000) {
205
231
  const injections = [];
206
232
  const promises = [];
207
233
  for (const module of this.modules.values()) {
208
234
  if (!module.gatherContext)
209
235
  continue;
236
+ // Clamp the per-module budget. A module declaring `contextTimeoutMs`
237
+ // legitimately needs more than the shared default (e.g. a retrieval
238
+ // module doing sequential LLM calls), but it must not be able to hold
239
+ // EVERY inference turn of EVERY agent hostage: the fail-open contract is
240
+ // "a wedged module never blocks inference for long", so cap the wait.
241
+ const budgetMs = Math.min(module.contextTimeoutMs ?? timeoutMs, MAX_CONTEXT_TIMEOUT_MS);
242
+ let timer;
210
243
  const promise = Promise.race([
211
244
  module.gatherContext(agentName).then(r => injections.push(...r)),
212
- new Promise((_, rej) => setTimeout(() => rej(new Error('timeout')), timeoutMs)),
213
- ]).catch(err => console.error(`[${module.name}] gatherContext:`, err));
245
+ new Promise((_, rej) => {
246
+ timer = setTimeout(() => rej(new Error(`gatherContext timed out after ${budgetMs}ms`)), budgetMs);
247
+ }),
248
+ ])
249
+ .catch(err => console.error(`[${module.name}] gatherContext:`, err))
250
+ .finally(() => clearTimeout(timer));
214
251
  promises.push(promise);
215
252
  }
216
253
  await Promise.all(promises);
@@ -257,9 +294,10 @@ class ModuleContextImpl {
257
294
  queryMessagesFn;
258
295
  pushEventFn;
259
296
  onTraceFn;
297
+ callToolFn;
260
298
  // External ID mapping stored in module state
261
299
  externalIdMap = new Map();
262
- constructor(moduleName, store, stateId, queue, registry, isRestart, getAgents, addMessage, editMessage, removeMessage, getMessage, queryMessages, pushEvent, onTrace) {
300
+ constructor(moduleName, store, stateId, queue, registry, isRestart, getAgents, addMessage, editMessage, removeMessage, getMessage, queryMessages, pushEvent, onTrace, callTool) {
263
301
  this.moduleName = moduleName;
264
302
  this.store = store;
265
303
  this.stateId = stateId;
@@ -274,6 +312,7 @@ class ModuleContextImpl {
274
312
  this.queryMessagesFn = queryMessages;
275
313
  this.pushEventFn = pushEvent;
276
314
  this.onTraceFn = onTrace;
315
+ this.callToolFn = callTool;
277
316
  // Load external ID map from state if exists
278
317
  const state = this.getState();
279
318
  if (state?.externalIdMap) {
@@ -292,12 +331,68 @@ class ModuleContextImpl {
292
331
  };
293
332
  this.store.setStateJson(this.stateId, fullState);
294
333
  }
334
+ /** Log-state names this context has registered (registerLogState is
335
+ * contract-required in start(), so this is populated before any use). */
336
+ registeredLogStates = new Set();
337
+ logStateId(name) {
338
+ if (!name || name === 'state' || name.includes('/')) {
339
+ throw new Error(`Invalid module log state name '${name}': must be non-empty, not 'state', and contain no '/'`);
340
+ }
341
+ return `${MODULE_STATE_PREFIX}${this.moduleName}/${name}`;
342
+ }
343
+ /**
344
+ * Like logStateId, but only for names that went through registerLogState.
345
+ * Chronicle happily appends to an unregistered state — it just never gets a
346
+ * snapshot strategy, so every reconstruction replays the full op chain from
347
+ * record one. A forgotten registration or a typo'd name in one call site
348
+ * must be an immediate, attributable error, not a silent O(n²)-read trap.
349
+ */
350
+ registeredLogStateId(name) {
351
+ if (!this.registeredLogStates.has(name)) {
352
+ throw new Error(`Module log state '${name}' is not registered for module '${this.moduleName}' — ` +
353
+ `call registerLogState('${name}') in start() before using it`);
354
+ }
355
+ return this.logStateId(name);
356
+ }
357
+ registerLogState(name, opts) {
358
+ const id = this.logStateId(name);
359
+ try {
360
+ this.store.registerState({
361
+ id,
362
+ strategy: 'append_log',
363
+ deltaSnapshotEvery: opts?.deltaSnapshotEvery ?? 100,
364
+ fullSnapshotEvery: opts?.fullSnapshotEvery ?? 20,
365
+ });
366
+ }
367
+ catch (err) {
368
+ if (!isStateExistsError(err))
369
+ throw err;
370
+ // Already registered (previous run) — idempotent path.
371
+ }
372
+ this.registeredLogStates.add(name);
373
+ }
374
+ appendToLog(name, item) {
375
+ this.store.appendToStateJson(this.registeredLogStateId(name), item);
376
+ }
377
+ editLogItem(name, index, item) {
378
+ this.store.editStateItem(this.registeredLogStateId(name), index, Buffer.from(JSON.stringify(item)));
379
+ }
380
+ getLog(name) {
381
+ const data = this.store.getStateJson(this.registeredLogStateId(name));
382
+ return Array.isArray(data) ? data : [];
383
+ }
384
+ getLogLength(name) {
385
+ return this.store.getStateLen(this.registeredLogStateId(name)) ?? 0;
386
+ }
295
387
  getModule(name) {
296
388
  return this.registry.getModule(name);
297
389
  }
298
390
  onTrace(listener) {
299
391
  return this.onTraceFn(listener);
300
392
  }
393
+ callTool(call) {
394
+ return this.callToolFn(call);
395
+ }
301
396
  addMessage(participant, content, metadata) {
302
397
  const id = this.addMessageFn(participant, content, metadata);
303
398
  // Track external ID if provided
@@ -1 +1 @@
1
- {"version":3,"file":"module-registry.js","sourceRoot":"","sources":["../../src/module-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module-registry.js","sourceRoot":"","sources":["../../src/module-registry.ts"],"names":[],"mappings":"AA2BA,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,OAAO,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAYtC;;GAEG;AACH,MAAM,OAAO,cAAc;IACjB,OAAO,GAAwB,IAAI,GAAG,EAAE,CAAC;IACzC,cAAc,GAAmC,IAAI,GAAG,EAAE,CAAC;IAC3D,cAAc,GAAoB,EAAE,CAAC;IACrC,KAAK,CAAU;IACf,KAAK,CAAe;IACpB,SAAS,CAAgB;IACzB,YAAY,CAA0F;IACtG,aAAa,CAAmD;IAChE,eAAe,CAA0B;IACzC,YAAY,CAA0C;IACtD,eAAe,CAA+C;IAE9D,WAAW,CAAgC;IAC3C,SAAS,CAA+C;IACxD,UAAU,CAA0C;IAE5D,YACE,KAAc,EACd,KAAmB,EACnB,OAUC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,MAAc;QAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,iCAAiC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;gBACvB,EAAE,EAAE,OAAO;gBACX,QAAQ,EAAE,UAAU;aACrB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,+CAA+C;QACjD,CAAC;QAED,4CAA4C;QAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,aAAa,KAAK,IAAI,CAAC;QAEzC,iBAAiB;QACjB,MAAM,OAAO,GAAG,IAAI,iBAAiB,CACnC,MAAM,CAAC,IAAI,EACX,IAAI,CAAC,KAAK,EACV,OAAO,EACP,IAAI,CAAC,KAAK,EACV,IAAI,EACJ,SAAS,EACT,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,UAAU,CAChB,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE9C,mBAAmB;QACnB,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,IAAY;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,SAAS,CAAmB,IAAY;QACtC,OAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAO,IAAI,IAAI,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,UAAkB,EAAE,KAAc;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc,CAAI,UAAkB;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,GAAG,CAAC,QAAQ,EAAK,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,UAAkB;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,IAAI,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,WAAW;QACT,MAAM,KAAK,GAAqB,EAAE,CAAC;QACnC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC;oBACT,GAAG,IAAI;oBACP,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;iBACrC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,IAAc;QACjC,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,6BAA6B,IAAI,CAAC,IAAI,EAAE;gBAC/C,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAEnD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,qBAAqB,UAAU,EAAE;gBACxC,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,uEAAuE;QACvE,MAAM,UAAU,GAAa;YAC3B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC;QAEF,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5E,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,qBAAqB,CACnB,UAAkB,EAClB,MAAsB,EACtB,UAAgC,EAAE;QAElC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;QAEvC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtB,2CAA2C;YAC3C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,CACnC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE3D,kCAAkC;QAClC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,UAAkB;QACxC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,CACnC,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,SAAS,GAAG,MAAM;QACvD,MAAM,UAAU,GAAuB,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAoB,EAAE,CAAC;QAErC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,aAAa;gBAAE,SAAS;YAEpC,qEAAqE;YACrE,oEAAoE;YACpE,sEAAsE;YACtE,yEAAyE;YACzE,sEAAsE;YACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,MAAM,CAAC,gBAAgB,IAAI,SAAS,EACpC,sBAAsB,CACvB,CAAC;YACF,IAAI,KAAgD,CAAC;YACrD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC3B,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChE,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;oBAC3B,KAAK,GAAG,UAAU,CAChB,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,iCAAiC,QAAQ,IAAI,CAAC,CAAC,EACnE,QAAQ,CACT,CAAC;gBACJ,CAAC,CAAC;aACH,CAAC;iBACC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,kBAAkB,EAAE,GAAG,CAAC,CAAC;iBACnE,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YAEtC,QAAQ,CAAC,IAAI,CAAC,OAAwB,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,SAAiB,EACjB,OAAuB,EACvB,OAAsB;QAEtB,sCAAsC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CACzC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CACxD,CAAC;QAEF,oBAAoB;QACpB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACpD,IAAI,MAAM,EAAE,aAAa,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC1D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CACX,kBAAkB,OAAO,CAAC,UAAU,SAAS,EAC7C,KAAK,CACN,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,UAAkB;QACnC,OAAO,GAAG,mBAAmB,GAAG,UAAU,QAAQ,CAAC;IACrD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,iBAAiB;IACb,UAAU,CAAS;IACnB,KAAK,CAAU;IACf,OAAO,CAAS;IACf,KAAK,CAAe;IACrB,QAAQ,CAAiB;IACxB,SAAS,CAAU;IACpB,WAAW,CAAgB;IAC3B,YAAY,CAA0F;IACtG,aAAa,CAAmD;IAChE,eAAe,CAA0B;IACzC,YAAY,CAA0C;IACtD,eAAe,CAA+C;IAC9D,WAAW,CAAgC;IAC3C,SAAS,CAA+C;IACxD,UAAU,CAA0C;IAE5D,6CAA6C;IACrC,aAAa,GAA2B,IAAI,GAAG,EAAE,CAAC;IAE1D,YACE,UAAkB,EAClB,KAAc,EACd,OAAe,EACf,KAAmB,EACnB,QAAwB,EACxB,SAAkB,EAClB,SAAwB,EACxB,UAAmG,EACnG,WAA6D,EAC7D,aAAsC,EACtC,UAAmD,EACnD,aAA2D,EAC3D,SAAwC,EACxC,OAAqD,EACrD,QAAiD;QAEjD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;QAE3B,4CAA4C;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAA8C,CAAC;QAC1E,IAAI,KAAK,EAAE,aAAa,EAAE,CAAC;YACzB,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,QAAQ;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpD,OAAO,KAAiB,CAAC;IAC3B,CAAC;IAED,QAAQ,CAAI,KAAQ;QAClB,mCAAmC;QACnC,MAAM,SAAS,GAAG;YAChB,GAAI,KAAgB;YACpB,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;SACtD,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC;IAED;8EAC0E;IAClE,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAExC,UAAU,CAAC,IAAY;QAC7B,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CACb,kCAAkC,IAAI,uDAAuD,CAC9F,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,mBAAmB,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;IAC5D,CAAC;IAED;;;;;;OAMG;IACK,oBAAoB,CAAC,IAAY;QACvC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,mCAAmC,IAAI,CAAC,UAAU,MAAM;gBACjF,0BAA0B,IAAI,+BAA+B,CAC9D,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,gBAAgB,CACd,IAAY,EACZ,IAAkE;QAElE,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;gBACvB,EAAE;gBACF,QAAQ,EAAE,YAAY;gBACtB,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,IAAI,GAAG;gBACnD,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE;aACjD,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAC;YACxC,uDAAuD;QACzD,CAAC;QACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,WAAW,CAAI,IAAY,EAAE,IAAO;QAClC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;IAED,WAAW,CAAI,IAAY,EAAE,KAAa,EAAE,IAAO;QACjD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtG,CAAC;IAED,MAAM,CAAI,IAAY;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,IAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IAED,SAAS,CAAmB,IAAY;QACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAI,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,CAAC,QAA4B;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,QAAQ,CAAC,IAAc;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,UAAU,CACR,WAAmB,EACnB,OAAuB,EACvB,QAAyD;QAEzD,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAE7D,gCAAgC;QAChC,IAAI,QAAQ,EAAE,QAAQ,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAChC,sBAAsB;YACtB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,WAAW,CAAC,EAAa,EAAE,OAAuB;QAChD,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,aAAa,CAAC,EAAa;QACzB,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACzB,+BAA+B;QAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9C,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBACjB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,uBAAuB,CAAC,MAAc,EAAE,UAAkB;QACxD,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IAC7C,CAAC;IAED,UAAU,CAAC,EAAa;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,aAAa,CAAC,MAAoB;QAChC,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC;IAED,qBAAqB,CACnB,MAAsB,EACtB,OAA8B;QAE9B,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IAED,uBAAuB;QACrB,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,SAAS,CAAC,KAAmB;QAC3B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAEO,oBAAoB;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAU,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC;YACZ,GAAG,YAAY;YACf,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;SACtD,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,MAAM,gBAAgB;IACZ,UAAU,CAAS;IACnB,GAAG,CAAoB;IACvB,QAAQ,CAAiB;IAEjC,YAAY,UAAkB,EAAE,GAAsB,EAAE,QAAwB;QAC9E,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAK,CAAC;IAChC,CAAC;IAED,cAAc,CAAI,IAAY;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAI,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,uBAAuB,CAAC,MAAc,EAAE,UAAkB;QACxD,OAAO,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;IAC9B,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,SAAS,CAAC,KAAmB;QAC3B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Split an assistant turn's content blocks into ordered prose segments.
3
+ *
4
+ * A single turn can interleave prose and tool calls — "msgA → [tool] → msgB →
5
+ * [tool] → msgC". The membrane accumulates the WHOLE turn (all tool rounds) into
6
+ * one `response.content` array in provider order, so a left-to-right walk that
7
+ * breaks at each tool boundary reconstructs the emission order.
8
+ *
9
+ * Host output routing used to join every text block into a single trailing post,
10
+ * collapsing those distinct messages into one (item 4). This helper instead
11
+ * yields each contiguous run of text — the segments a surface should deliver as
12
+ * separate, ordered messages. Contiguous text blocks merge into one segment;
13
+ * `tool_use` / `tool_result` blocks are segment boundaries; empty or
14
+ * whitespace-only runs are dropped.
15
+ */
16
+ import type { ContentBlock } from '@animalabs/membrane';
17
+ export declare function splitProseSegments(content: readonly ContentBlock[]): string[];
18
+ //# sourceMappingURL=prose-segments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prose-segments.d.ts","sourceRoot":"","sources":["../../src/prose-segments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,EAAE,CAuB7E"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Split an assistant turn's content blocks into ordered prose segments.
3
+ *
4
+ * A single turn can interleave prose and tool calls — "msgA → [tool] → msgB →
5
+ * [tool] → msgC". The membrane accumulates the WHOLE turn (all tool rounds) into
6
+ * one `response.content` array in provider order, so a left-to-right walk that
7
+ * breaks at each tool boundary reconstructs the emission order.
8
+ *
9
+ * Host output routing used to join every text block into a single trailing post,
10
+ * collapsing those distinct messages into one (item 4). This helper instead
11
+ * yields each contiguous run of text — the segments a surface should deliver as
12
+ * separate, ordered messages. Contiguous text blocks merge into one segment;
13
+ * `tool_use` / `tool_result` blocks are segment boundaries; empty or
14
+ * whitespace-only runs are dropped.
15
+ */
16
+ export function splitProseSegments(content) {
17
+ const segments = [];
18
+ let buf = [];
19
+ const flush = () => {
20
+ const s = buf.join('\n').trim();
21
+ if (s)
22
+ segments.push(s);
23
+ buf = [];
24
+ };
25
+ for (const block of content) {
26
+ if (block.type === 'text') {
27
+ buf.push(block.text);
28
+ }
29
+ else if (block.type === 'tool_use' || block.type === 'tool_result') {
30
+ flush();
31
+ }
32
+ // Other block types (thinking, redacted_thinking, image, …) are neither
33
+ // prose nor boundaries: they don't reach a channel and don't separate two
34
+ // prose messages, so they're skipped without flushing.
35
+ }
36
+ flush();
37
+ return segments;
38
+ }
39
+ //# sourceMappingURL=prose-segments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prose-segments.js","sourceRoot":"","sources":["../../src/prose-segments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,UAAU,kBAAkB,CAAC,OAAgC;IACjE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,GAAG,GAAa,EAAE,CAAC;IAEvB,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,GAAG,GAAG,EAAE,CAAC;IACX,CAAC,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAE,KAAyC,CAAC,IAAI,CAAC,CAAC;QAC5D,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACrE,KAAK,EAAE,CAAC;QACV,CAAC;QACD,wEAAwE;QACxE,0EAA0E;QAC1E,uDAAuD;IACzD,CAAC;IACD,KAAK,EAAE,CAAC;IAER,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=liveness-watchdog-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liveness-watchdog-worker.d.ts","sourceRoot":"","sources":["../../../src/runtime/liveness-watchdog-worker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Liveness watchdog worker — runs on its own thread, so it keeps ticking even
3
+ * when the main thread is wedged. Watches the shared heartbeat; if it goes stale
4
+ * past the threshold, writes a diagnostic and kills the whole process.
5
+ *
6
+ * Killing from a worker: process.kill(process.pid, signal) signals the whole
7
+ * process. SIGABRT → core dump (if enabled) + terminate; SIGKILL → immediate.
8
+ * Catchable signals (SIGTERM) are avoided — their handler would run on the
9
+ * wedged main thread and never fire.
10
+ */
11
+ import { workerData } from 'node:worker_threads';
12
+ import { writeFileSync } from 'node:fs';
13
+ const { sab, thresholdMs, checkMs, action, reportPath } = workerData;
14
+ const hb = new Float64Array(sab, 0, 1);
15
+ const phaseBuf = new Uint8Array(sab, 16, 48);
16
+ const dec = new TextDecoder();
17
+ function currentPhase() {
18
+ return dec.decode(phaseBuf).replace(/\0+$/, '') || 'unknown';
19
+ }
20
+ function check() {
21
+ const last = hb[0];
22
+ const age = Date.now() - last;
23
+ if (last > 0 && age > thresholdMs) {
24
+ const phase = currentPhase();
25
+ const report = {
26
+ ts: new Date().toISOString(),
27
+ event: 'main-thread-wedged',
28
+ ageMs: Math.round(age),
29
+ thresholdMs,
30
+ phase,
31
+ action,
32
+ pid: process.pid,
33
+ };
34
+ const line = `[liveness-watchdog] main thread unresponsive ${Math.round(age)}ms ` +
35
+ `(phase=${phase}) — failing hard via ${action}`;
36
+ try {
37
+ console.error(line);
38
+ }
39
+ catch {
40
+ /* ignore */
41
+ }
42
+ if (reportPath) {
43
+ try {
44
+ writeFileSync(reportPath, JSON.stringify(report) + '\n', { flag: 'a' });
45
+ }
46
+ catch {
47
+ /* best effort */
48
+ }
49
+ }
50
+ // Kill the whole process. The supervisor restarts a fresh one.
51
+ process.kill(process.pid, action === 'abort' ? 'SIGABRT' : 'SIGKILL');
52
+ return; // process is dying
53
+ }
54
+ setTimeout(check, checkMs);
55
+ }
56
+ setTimeout(check, checkMs);
57
+ //# sourceMappingURL=liveness-watchdog-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liveness-watchdog-worker.js","sourceRoot":"","sources":["../../../src/runtime/liveness-watchdog-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AASxC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,UAAkB,CAAC;AAE7E,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7C,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;AAE9B,SAAS,YAAY;IACnB,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;AAC/D,CAAC;AAED,SAAS,KAAK;IACZ,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAC9B,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,WAAW,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG;YACb,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,KAAK,EAAE,oBAAoB;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YACtB,WAAW;YACX,KAAK;YACL,MAAM;YACN,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC;QACF,MAAM,IAAI,GAAG,gDAAgD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK;YAC/E,UAAU,KAAK,wBAAwB,MAAM,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1E,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB;YACnB,CAAC;QACH,CAAC;QACD,+DAA+D;QAC/D,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACtE,OAAO,CAAC,mBAAmB;IAC7B,CAAC;IACD,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC"}
@@ -0,0 +1,36 @@
1
+ export interface WatchdogOptions {
2
+ /** Wedge threshold: kill if no heartbeat for this long. Default 30000ms. */
3
+ thresholdMs?: number;
4
+ /** Heartbeat cadence. Default 1000ms. */
5
+ heartbeatMs?: number;
6
+ /** 'abort' → SIGABRT (core dump for debugging); 'exit' → SIGKILL. Default 'abort'. */
7
+ action?: 'abort' | 'exit';
8
+ /** Optional file the worker writes a JSON wedge report to before killing. */
9
+ reportPath?: string;
10
+ /** Disable entirely. */
11
+ enabled?: boolean;
12
+ }
13
+ export declare class LivenessWatchdog {
14
+ private readonly opts;
15
+ private readonly sab;
16
+ private readonly hb;
17
+ private readonly phaseBuf;
18
+ private readonly enc;
19
+ private timer?;
20
+ private worker?;
21
+ private started;
22
+ constructor(opts?: WatchdogOptions);
23
+ start(): void;
24
+ /** Stamp liveness. Called on a timer; the worker watches for staleness. */
25
+ private beat;
26
+ /**
27
+ * Label the operation the main thread is about to run synchronously, so a
28
+ * wedge report names it (e.g. 'compression-tick', 'context-build'). Keep it
29
+ * short (truncated to 48 bytes). Reset to 'idle' when done.
30
+ */
31
+ setPhase(label: string): void;
32
+ /** Run a synchronous section under a named phase, restoring the prior phase. */
33
+ withPhase<T>(label: string, fn: () => T): T;
34
+ stop(): void;
35
+ }
36
+ //# sourceMappingURL=liveness-watchdog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liveness-watchdog.d.ts","sourceRoot":"","sources":["../../../src/runtime/liveness-watchdog.ts"],"names":[],"mappings":"AA8BA,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sFAAsF;IACtF,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,gBAAgB;IASf,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmC;IACvD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAmD;IACtE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqD;IAC9E,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqB;IACzC,OAAO,CAAC,KAAK,CAAC,CAAiC;IAC/C,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;gBAEK,IAAI,GAAE,eAAoB;IAEvD,KAAK,IAAI,IAAI;IAiCb,2EAA2E;IAC3E,OAAO,CAAC,IAAI;IAIZ;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM7B,gFAAgF;IAChF,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAS3C,IAAI,IAAI,IAAI;CAQb"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * LivenessWatchdog — detects a wedged (unresponsive) main thread and fails hard.
3
+ *
4
+ * The agent's event loop is single-threaded. A synchronous infinite loop or a
5
+ * self-rescheduling microtask flood (e.g. a pathological compression drain) can
6
+ * peg the thread for minutes: no events, no heartbeat, no recovery — the agent
7
+ * goes silently deaf. A same-thread timer can't catch this (it can't fire while
8
+ * the loop is blocked), so detection must live off-thread.
9
+ *
10
+ * Mechanism: the main thread stamps a heartbeat (and an optional phase label)
11
+ * into shared memory on a timer. A worker thread — which keeps running even when
12
+ * main is wedged — watches the heartbeat; if it goes stale past a threshold it
13
+ * writes a diagnostic and kills the whole process:
14
+ * - 'abort' → SIGABRT (core dump if enabled, for an offline stack) then dies
15
+ * - 'exit' → SIGKILL (clean, quiet; rely on the supervisor to restart)
16
+ * Either way the supervisor (launchd/systemd) restarts a fresh process instead
17
+ * of leaving a deaf one running.
18
+ */
19
+ import { Worker } from 'node:worker_threads';
20
+ import { fileURLToPath } from 'node:url';
21
+ import { dirname, join } from 'node:path';
22
+ import { phaseChannel } from '@animalabs/context-manager';
23
+ const WORKER_PATH = join(dirname(fileURLToPath(import.meta.url)), 'liveness-watchdog-worker.js');
24
+ const HEARTBEAT_OFFSET = 0; // Float64: last heartbeat (ms since epoch)
25
+ const PHASE_OFFSET = 16; // Uint8[48]: current phase label (UTF-8)
26
+ const PHASE_LEN = 48;
27
+ const SAB_SIZE = 64;
28
+ export class LivenessWatchdog {
29
+ opts;
30
+ sab = new SharedArrayBuffer(SAB_SIZE);
31
+ hb = new Float64Array(this.sab, HEARTBEAT_OFFSET, 1);
32
+ phaseBuf = new Uint8Array(this.sab, PHASE_OFFSET, PHASE_LEN);
33
+ enc = new TextEncoder();
34
+ timer;
35
+ worker;
36
+ started = false;
37
+ constructor(opts = {}) {
38
+ this.opts = opts;
39
+ }
40
+ start() {
41
+ if (this.started || this.opts.enabled === false)
42
+ return;
43
+ this.started = true;
44
+ const heartbeatMs = this.opts.heartbeatMs ?? 1000;
45
+ this.setPhase('starting');
46
+ this.beat();
47
+ this.timer = setInterval(() => this.beat(), heartbeatMs);
48
+ this.timer.unref?.();
49
+ try {
50
+ this.worker = new Worker(WORKER_PATH, {
51
+ workerData: {
52
+ sab: this.sab,
53
+ thresholdMs: this.opts.thresholdMs ?? 30_000,
54
+ checkMs: Math.min(heartbeatMs, 2000),
55
+ action: this.opts.action ?? 'abort',
56
+ reportPath: this.opts.reportPath ?? null,
57
+ },
58
+ });
59
+ this.worker.unref();
60
+ this.worker.on('error', (e) => console.error('[liveness-watchdog] worker error:', e.message));
61
+ // Wire the phase channel so labelled synchronous spans (compression,
62
+ // context-build, merge-graph walks) name themselves in a wedge report.
63
+ phaseChannel.report = (label) => this.setPhase(label);
64
+ console.error(`[liveness-watchdog] armed: threshold=${this.opts.thresholdMs ?? 30_000}ms ` +
65
+ `action=${this.opts.action ?? 'abort'}`);
66
+ }
67
+ catch (e) {
68
+ console.error('[liveness-watchdog] failed to start:', e.message);
69
+ }
70
+ this.setPhase('idle');
71
+ }
72
+ /** Stamp liveness. Called on a timer; the worker watches for staleness. */
73
+ beat() {
74
+ this.hb[0] = Date.now();
75
+ }
76
+ /**
77
+ * Label the operation the main thread is about to run synchronously, so a
78
+ * wedge report names it (e.g. 'compression-tick', 'context-build'). Keep it
79
+ * short (truncated to 48 bytes). Reset to 'idle' when done.
80
+ */
81
+ setPhase(label) {
82
+ this.phaseBuf.fill(0);
83
+ const bytes = this.enc.encode(label);
84
+ this.phaseBuf.set(bytes.subarray(0, PHASE_LEN));
85
+ }
86
+ /** Run a synchronous section under a named phase, restoring the prior phase. */
87
+ withPhase(label, fn) {
88
+ this.setPhase(label);
89
+ try {
90
+ return fn();
91
+ }
92
+ finally {
93
+ this.setPhase('idle');
94
+ }
95
+ }
96
+ stop() {
97
+ if (this.timer)
98
+ clearInterval(this.timer);
99
+ this.timer = undefined;
100
+ phaseChannel.report = () => { };
101
+ void this.worker?.terminate();
102
+ this.worker = undefined;
103
+ this.started = false;
104
+ }
105
+ }
106
+ //# sourceMappingURL=liveness-watchdog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liveness-watchdog.js","sourceRoot":"","sources":["../../../src/runtime/liveness-watchdog.ts"],"names":[],"mappings":"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"}