@animalabs/agent-framework 0.5.7 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/dist/src/framework.d.ts +67 -0
  2. package/dist/src/framework.d.ts.map +1 -1
  3. package/dist/src/framework.js +469 -26
  4. package/dist/src/framework.js.map +1 -1
  5. package/dist/src/gate/event-gate.d.ts +44 -1
  6. package/dist/src/gate/event-gate.d.ts.map +1 -1
  7. package/dist/src/gate/event-gate.js +152 -8
  8. package/dist/src/gate/event-gate.js.map +1 -1
  9. package/dist/src/gate/gate-script-worker.d.ts +2 -0
  10. package/dist/src/gate/gate-script-worker.d.ts.map +1 -0
  11. package/dist/src/gate/gate-script-worker.js +69 -0
  12. package/dist/src/gate/gate-script-worker.js.map +1 -0
  13. package/dist/src/gate/gate-script.d.ts +44 -0
  14. package/dist/src/gate/gate-script.d.ts.map +1 -0
  15. package/dist/src/gate/gate-script.js +164 -0
  16. package/dist/src/gate/gate-script.js.map +1 -0
  17. package/dist/src/gate/types.d.ts +18 -3
  18. package/dist/src/gate/types.d.ts.map +1 -1
  19. package/dist/src/mcpl/channel-registry.d.ts +43 -1
  20. package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
  21. package/dist/src/mcpl/channel-registry.js +82 -8
  22. package/dist/src/mcpl/channel-registry.js.map +1 -1
  23. package/dist/src/mcpl/checkpoint-manager.d.ts +7 -0
  24. package/dist/src/mcpl/checkpoint-manager.d.ts.map +1 -1
  25. package/dist/src/mcpl/checkpoint-manager.js +15 -0
  26. package/dist/src/mcpl/checkpoint-manager.js.map +1 -1
  27. package/dist/src/mcpl/push-handler.d.ts.map +1 -1
  28. package/dist/src/mcpl/push-handler.js +1 -0
  29. package/dist/src/mcpl/push-handler.js.map +1 -1
  30. package/dist/src/mcpl/server-connection.d.ts +35 -30
  31. package/dist/src/mcpl/server-connection.d.ts.map +1 -1
  32. package/dist/src/mcpl/server-connection.js +145 -206
  33. package/dist/src/mcpl/server-connection.js.map +1 -1
  34. package/dist/src/mcpl/transport.d.ts +98 -0
  35. package/dist/src/mcpl/transport.d.ts.map +1 -0
  36. package/dist/src/mcpl/transport.js +281 -0
  37. package/dist/src/mcpl/transport.js.map +1 -0
  38. package/dist/src/mcpl/types.d.ts +42 -2
  39. package/dist/src/mcpl/types.d.ts.map +1 -1
  40. package/dist/src/mcpl/types.js.map +1 -1
  41. package/dist/src/module-registry.d.ts +2 -0
  42. package/dist/src/module-registry.d.ts.map +1 -1
  43. package/dist/src/module-registry.js +9 -2
  44. package/dist/src/module-registry.js.map +1 -1
  45. package/dist/src/prose-segments.d.ts +18 -0
  46. package/dist/src/prose-segments.d.ts.map +1 -0
  47. package/dist/src/prose-segments.js +39 -0
  48. package/dist/src/prose-segments.js.map +1 -0
  49. package/dist/src/runtime/liveness-watchdog-worker.d.ts +2 -0
  50. package/dist/src/runtime/liveness-watchdog-worker.d.ts.map +1 -0
  51. package/dist/src/runtime/liveness-watchdog-worker.js +57 -0
  52. package/dist/src/runtime/liveness-watchdog-worker.js.map +1 -0
  53. package/dist/src/runtime/liveness-watchdog.d.ts +36 -0
  54. package/dist/src/runtime/liveness-watchdog.d.ts.map +1 -0
  55. package/dist/src/runtime/liveness-watchdog.js +106 -0
  56. package/dist/src/runtime/liveness-watchdog.js.map +1 -0
  57. package/dist/src/types/agent.d.ts +10 -0
  58. package/dist/src/types/agent.d.ts.map +1 -1
  59. package/dist/src/types/framework.d.ts +14 -0
  60. package/dist/src/types/framework.d.ts.map +1 -1
  61. package/dist/src/types/module.d.ts +12 -0
  62. package/dist/src/types/module.d.ts.map +1 -1
  63. package/dist/test/channel-registry-routing.test.js +108 -1
  64. package/dist/test/channel-registry-routing.test.js.map +1 -1
  65. package/dist/test/checkpoint-attribution.test.d.ts +2 -0
  66. package/dist/test/checkpoint-attribution.test.d.ts.map +1 -0
  67. package/dist/test/checkpoint-attribution.test.js +40 -0
  68. package/dist/test/checkpoint-attribution.test.js.map +1 -0
  69. package/dist/test/event-gate-policy-mutation.test.d.ts +2 -0
  70. package/dist/test/event-gate-policy-mutation.test.d.ts.map +1 -0
  71. package/dist/test/event-gate-policy-mutation.test.js +137 -0
  72. package/dist/test/event-gate-policy-mutation.test.js.map +1 -0
  73. package/dist/test/event-gate-script.test.d.ts +2 -0
  74. package/dist/test/event-gate-script.test.d.ts.map +1 -0
  75. package/dist/test/event-gate-script.test.js +95 -0
  76. package/dist/test/event-gate-script.test.js.map +1 -0
  77. package/dist/test/event-gate-tags.test.d.ts +2 -0
  78. package/dist/test/event-gate-tags.test.d.ts.map +1 -0
  79. package/dist/test/event-gate-tags.test.js +76 -0
  80. package/dist/test/event-gate-tags.test.js.map +1 -0
  81. package/dist/test/liveness-watchdog.test.d.ts +2 -0
  82. package/dist/test/liveness-watchdog.test.d.ts.map +1 -0
  83. package/dist/test/liveness-watchdog.test.js +78 -0
  84. package/dist/test/liveness-watchdog.test.js.map +1 -0
  85. package/dist/test/mcpl-ws-transport.test.d.ts +2 -0
  86. package/dist/test/mcpl-ws-transport.test.d.ts.map +1 -0
  87. package/dist/test/mcpl-ws-transport.test.js +155 -0
  88. package/dist/test/mcpl-ws-transport.test.js.map +1 -0
  89. package/dist/test/prose-segments.test.d.ts +2 -0
  90. package/dist/test/prose-segments.test.d.ts.map +1 -0
  91. package/dist/test/prose-segments.test.js +52 -0
  92. package/dist/test/prose-segments.test.js.map +1 -0
  93. package/dist/test/trunk-channel-routing.test.d.ts +19 -0
  94. package/dist/test/trunk-channel-routing.test.d.ts.map +1 -0
  95. package/dist/test/trunk-channel-routing.test.js +175 -0
  96. package/dist/test/trunk-channel-routing.test.js.map +1 -0
  97. package/dist/tsconfig.tsbuildinfo +1 -1
  98. package/package.json +2 -2
  99. package/src/framework.ts +509 -24
  100. package/src/gate/event-gate.ts +153 -8
  101. package/src/gate/gate-script-worker.ts +73 -0
  102. package/src/gate/gate-script.ts +180 -0
  103. package/src/gate/types.ts +19 -3
  104. package/src/mcpl/channel-registry.ts +112 -8
  105. package/src/mcpl/checkpoint-manager.ts +16 -0
  106. package/src/mcpl/push-handler.ts +1 -0
  107. package/src/mcpl/server-connection.ts +153 -224
  108. package/src/mcpl/transport.ts +307 -0
  109. package/src/mcpl/types.ts +49 -2
  110. package/src/module-registry.ts +13 -2
  111. package/src/prose-segments.ts +42 -0
  112. package/src/runtime/liveness-watchdog-worker.ts +66 -0
  113. package/src/runtime/liveness-watchdog.ts +122 -0
  114. package/src/types/agent.ts +10 -0
  115. package/src/types/framework.ts +15 -0
  116. package/src/types/module.ts +13 -0
@@ -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":"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"}
@@ -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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"}
@@ -135,5 +135,15 @@ export interface InferenceRequest {
135
135
  reason: string;
136
136
  source: string;
137
137
  timestamp: number;
138
+ /**
139
+ * The MCPL channel whose message triggered this inference, if any (composite
140
+ * id, e.g. `discord:guild:channel` / `discord:dm:id`). The framework routes
141
+ * the turn's auto-published plain-text speech here so a single TRUNK agent
142
+ * replies in the channel it is answering — not the process-global most-recent-
143
+ * inbound locus, which a concurrent message elsewhere can hijack (item-3
144
+ * redux). Undefined for non-channel wakes (heartbeat, timers, module events),
145
+ * which correctly fall back to the global default channel.
146
+ */
147
+ channelId?: string;
138
148
  }
139
149
  //# sourceMappingURL=agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/types/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/types/agent.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,20 @@ export interface FrameworkConfig {
51
51
  inferenceRouting?: InferenceRoutingPolicy;
52
52
  /** EventGate config. If omitted, all events trigger inference (unchanged default). */
53
53
  gate?: GateOptions;
54
+ /**
55
+ * Liveness watchdog: fail hard (and let the supervisor restart) if the main
56
+ * thread wedges — a synchronous infinite loop or microtask flood that would
57
+ * otherwise leave the agent silently deaf. Off unless `enabled` is set.
58
+ */
59
+ watchdog?: {
60
+ enabled?: boolean;
61
+ /** Kill if no heartbeat for this long (ms). Default 30000. */
62
+ thresholdMs?: number;
63
+ /** 'abort' → SIGABRT (core dump for debugging); 'exit' → SIGKILL. Default 'abort'. */
64
+ action?: 'abort' | 'exit';
65
+ /** Optional path for a JSON wedge report written before the kill. */
66
+ reportPath?: string;
67
+ };
54
68
  /**
55
69
  * Per-channel conversation routing. When set, incoming MCPL channel
56
70
  * messages route to per-channel fork agents spawned from the template
@@ -1 +1 @@
1
- {"version":3,"file":"framework.d.ts","sourceRoot":"","sources":["../../../src/types/framework.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"framework.d.ts","sourceRoot":"","sources":["../../../src/types/framework.ts"],"names":[],"mappings":"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"}
@@ -145,6 +145,18 @@ export interface ModuleContext {
145
145
  * Unregister this module as a speech handler.
146
146
  */
147
147
  unregisterSpeechHandler(): void;
148
+ /**
149
+ * Execute a tool call autonomously, without agent mediation.
150
+ *
151
+ * Routes through the framework's normal tool dispatch — MCPL-prefixed names
152
+ * (e.g. `mcpl--discord--unsubscribe_channel`) hit the MCPL subsystem; module
153
+ * names hit the owning module. Unlike pushing a `tool-call` event, this does
154
+ * NOT record tool_use/tool_result into any agent's context — it's a pure
155
+ * side-effecting call whose result is returned to the caller. Used by modules
156
+ * that need to act on their own (e.g. subscription GC unsubscribing a noisy
157
+ * channel) rather than asking the agent to call the tool.
158
+ */
159
+ callTool(call: ToolCall): Promise<ToolResult>;
148
160
  /**
149
161
  * Subscribe to the framework's trace event stream for observability.
150
162
  *
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/types/module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/types/module.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { ChannelRegistry } from '../src/mcpl/channel-registry.js';
5
5
  * Build a registry with a mock server whose publish result is configurable,
6
6
  * plus capture arrays for route-failure notifications and emitted traces.
7
7
  */
8
- function makeRegistry(publishResult) {
8
+ function makeRegistry(publishResult, homeChannelResolver, activeChannelResolver) {
9
9
  const failures = [];
10
10
  const traces = [];
11
11
  const publishCalls = [];
@@ -20,6 +20,8 @@ function makeRegistry(publishResult) {
20
20
  };
21
21
  const registry = new ChannelRegistry(serverRegistry, {}, () => { }, (e) => { traces.push(e); }, {
22
22
  onRouteFailure: (info) => { failures.push(info); },
23
+ homeChannelResolver,
24
+ activeChannelResolver,
23
25
  });
24
26
  // findChannelEntry is private; reach it the same way the typing test reaches
25
27
  // the channels map — a test-only cast, not part of the public surface.
@@ -63,6 +65,42 @@ test('routeSpeech surfaces a failure when the server reports delivered:false', a
63
65
  assert.match(failures[0].reason, /delivered:false/);
64
66
  assert.ok(traces.some(t => t.type === 'mcpl:speech-route-failed'));
65
67
  });
68
+ test('routeSpeech routes a conversation fork to its HOME channel, not the global last-inbound (item 3)', async () => {
69
+ // Two channels are live. chanA registered first; then a message arrives on
70
+ // chanB, flipping the process-global defaultPublishChannel to chanB. A fork
71
+ // bound to chanA must still publish to chanA.
72
+ const homes = { 'conversation-chanA-g1': 'chanA' };
73
+ const { registry, publishCalls } = makeRegistry({ delivered: true }, (agentName) => homes[agentName]);
74
+ registry.handleIncoming('discord', incoming('chanA', 'hi from A'));
75
+ registry.handleIncoming('discord', incoming('chanB', 'hi from B'));
76
+ // Global locus is now chanB.
77
+ assert.equal(registry.getDefaultPublishChannel(), 'chanB');
78
+ const res = await registry.routeSpeech('conversation-chanA-g1', 'reply for A');
79
+ assert.deepEqual(res, { delivered: true, channelId: 'chanA' }, 'fork must route to its home channel, not the global last-inbound');
80
+ assert.equal(publishCalls.at(-1)?.channelId, 'chanA');
81
+ });
82
+ test('routeSpeech falls back to the global locus for the trunk agent (no home)', async () => {
83
+ // The trunk/primary agent has no home entry; it correctly uses the global
84
+ // most-recent-inbound channel.
85
+ const { registry, publishCalls } = makeRegistry({ delivered: true }, () => undefined);
86
+ registry.handleIncoming('discord', incoming('chanA', 'hi from A'));
87
+ registry.handleIncoming('discord', incoming('chanB', 'hi from B'));
88
+ const res = await registry.routeSpeech('trunk', 'heartbeat reply');
89
+ assert.deepEqual(res, { delivered: true, channelId: 'chanB' });
90
+ assert.equal(publishCalls.at(-1)?.channelId, 'chanB');
91
+ });
92
+ test('buildChannelContext advertises the fork home as defaultOutgoing (item 3)', () => {
93
+ const homes = { 'conversation-chanA-g1': 'chanA' };
94
+ const { registry } = makeRegistry({ delivered: true }, (agentName) => homes[agentName]);
95
+ registry.handleIncoming('discord', incoming('chanA', 'hi from A'));
96
+ registry.handleIncoming('discord', incoming('chanB', 'hi from B'));
97
+ // The fork is told chanA (where its speech actually lands)...
98
+ const forkCtx = registry.buildChannelContext('conversation-chanA-g1');
99
+ assert.equal(forkCtx?.defaultOutgoing?.channelId, 'chanA');
100
+ // ...while the trunk agent (no home) is told the global default.
101
+ const trunkCtx = registry.buildChannelContext('trunk');
102
+ assert.equal(trunkCtx?.defaultOutgoing?.channelId, 'chanB');
103
+ });
66
104
  test('routeSpeech surfaces a failure when there is no locus at all', async () => {
67
105
  const { registry, failures } = makeRegistry({ delivered: true });
68
106
  // No handleIncoming → defaultPublishChannel is null.
@@ -72,4 +110,73 @@ test('routeSpeech surfaces a failure when there is no locus at all', async () =>
72
110
  assert.equal(failures[0].channelId, null);
73
111
  assert.match(failures[0].reason, /no locus/);
74
112
  });
113
+ // ── item-3 redux: single TRUNK agents route to the turn's triggering channel ──
114
+ test('routeSpeech routes a TRUNK agent to its ACTIVE triggering channel, not the global last-inbound (item-3 redux)', async () => {
115
+ // The exact live repro: scout (a single trunk agent) is answering channel A
116
+ // when a message arrives on channel B, flipping the process-global
117
+ // defaultPublishChannel to B. The reply must still land in A. Forks (home)
118
+ // don't exist here — connectome-host never spawns them — so the ONLY thing
119
+ // keeping A's answer in A is the active-triggering-channel resolver.
120
+ const active = { scout: 'chanA' };
121
+ const { registry, publishCalls } = makeRegistry({ delivered: true }, () => undefined, // no fork homes (trunk-only, connectome-host mode)
122
+ (agentName) => active[agentName]);
123
+ registry.handleIncoming('discord', incoming('chanA', 'A: sleep && date'));
124
+ registry.handleIncoming('discord', incoming('chanB', 'B: unrelated')); // flips global to chanB
125
+ assert.equal(registry.getDefaultPublishChannel(), 'chanB');
126
+ const res = await registry.routeSpeech('scout', 'the date is ...');
127
+ assert.deepEqual(res, { delivered: true, channelId: 'chanA' }, 'trunk reply must go to the channel that triggered the turn, not the global last-inbound');
128
+ assert.equal(publishCalls.at(-1)?.channelId, 'chanA');
129
+ });
130
+ test('routeSpeech precedence: fork HOME wins over the active triggering channel', async () => {
131
+ // A fork bound to chanA must route home even if its live turn was (somehow)
132
+ // triggered from chanB — home is the strongest signal and must not regress.
133
+ const { registry, publishCalls } = makeRegistry({ delivered: true }, (n) => (n === 'conversation-chanA-g1' ? 'chanA' : undefined), () => 'chanB');
134
+ registry.handleIncoming('discord', incoming('chanA', 'hi'));
135
+ registry.handleIncoming('discord', incoming('chanB', 'hi'));
136
+ const res = await registry.routeSpeech('conversation-chanA-g1', 'reply');
137
+ assert.deepEqual(res, { delivered: true, channelId: 'chanA' });
138
+ assert.equal(publishCalls.at(-1)?.channelId, 'chanA');
139
+ });
140
+ test('buildChannelContext advertises the active triggering channel as defaultOutgoing (item-3 redux)', () => {
141
+ const active = { scout: 'chanA' };
142
+ const { registry } = makeRegistry({ delivered: true }, () => undefined, (n) => active[n]);
143
+ registry.handleIncoming('discord', incoming('chanA', 'hi from A'));
144
+ registry.handleIncoming('discord', incoming('chanB', 'hi from B')); // global → chanB
145
+ // The trunk is TOLD chanA (where its speech will actually land), matching
146
+ // what routeSpeech resolves — not the global chanB.
147
+ const ctx = registry.buildChannelContext('scout');
148
+ assert.equal(ctx?.defaultOutgoing?.channelId, 'chanA');
149
+ });
150
+ test('ensureChannelRegistered opens a DM channel so the reply can route back to it (item-3 redux DM sub-case)', async () => {
151
+ // A Discord DM arrives via push/event (channel closed), so it is never
152
+ // registered and never updates defaultPublishChannel — routeSpeech would drop
153
+ // the reply. Registering it on inbound makes it a publishable locus; the
154
+ // active resolver (the woken turn's DM) then targets it.
155
+ const dm = 'discord:dm:42';
156
+ const active = { scout: dm };
157
+ const { registry, publishCalls, lookup, traces } = makeRegistry({ delivered: true }, () => undefined, (n) => active[n]);
158
+ // No prior handleIncoming for the DM — it only ever came as a push event.
159
+ assert.equal(lookup(dm), undefined);
160
+ assert.equal(registry.getDefaultPublishChannel(), null);
161
+ registry.ensureChannelRegistered('discord', dm, 'DM with Antra');
162
+ const entry = lookup(dm);
163
+ assert.ok(entry, 'the DM channel should be registered');
164
+ assert.equal(entry.serverId, 'discord');
165
+ assert.ok(traces.some((t) => t.type === 'mcpl:channel-lazy-registered'));
166
+ const res = await registry.routeSpeech('scout', 'replying in the DM');
167
+ assert.deepEqual(res, { delivered: true, channelId: dm }, 'the DM reply must route back to the DM channel, not the global locus');
168
+ assert.equal(publishCalls.at(-1)?.channelId, dm);
169
+ });
170
+ test('ensureChannelRegistered is idempotent and re-opens a closed channel', () => {
171
+ const { registry, lookup } = makeRegistry({ delivered: true });
172
+ registry.ensureChannelRegistered('discord', 'discord:guild:7', '#cairn');
173
+ const first = lookup('discord:guild:7');
174
+ assert.ok(first);
175
+ // Force it closed, then re-ensure — should re-open, not duplicate.
176
+ first.open = false;
177
+ registry.ensureChannelRegistered('discord', 'discord:guild:7', '#cairn');
178
+ const second = lookup('discord:guild:7');
179
+ assert.equal(second, first, 'must reuse the same entry');
180
+ assert.equal(second.open, true, 'a previously-closed channel is re-opened');
181
+ });
75
182
  //# sourceMappingURL=channel-registry-routing.test.js.map