@animalabs/agent-framework 0.22.2 → 0.22.4

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 (940) hide show
  1. package/README.md +3 -1
  2. package/dist/src/agent.d.ts +77 -12
  3. package/dist/src/agent.d.ts.map +1 -1
  4. package/dist/src/agent.js +143 -41
  5. package/dist/src/agent.js.map +1 -1
  6. package/dist/src/api/mcp-server-core.js +1 -1
  7. package/dist/src/api/mcp-server-core.js.map +1 -1
  8. package/dist/src/api/server.d.ts.map +1 -1
  9. package/dist/src/api/server.js +5 -1
  10. package/dist/src/api/server.js.map +1 -1
  11. package/dist/src/api/types.d.ts +1 -1
  12. package/dist/src/api/types.d.ts.map +1 -1
  13. package/dist/src/branch-names.d.ts +14 -0
  14. package/dist/src/branch-names.d.ts.map +1 -0
  15. package/dist/src/branch-names.js +22 -0
  16. package/dist/src/branch-names.js.map +1 -0
  17. package/dist/src/closest-names.d.ts +28 -0
  18. package/dist/src/closest-names.d.ts.map +1 -0
  19. package/dist/src/closest-names.js +98 -0
  20. package/dist/src/closest-names.js.map +1 -0
  21. package/dist/src/code-execution/py-runner.d.ts +16 -5
  22. package/dist/src/code-execution/py-runner.d.ts.map +1 -1
  23. package/dist/src/code-execution/py-runner.js +186 -74
  24. package/dist/src/code-execution/py-runner.js.map +1 -1
  25. package/dist/src/code-execution/runtime-py.d.ts.map +1 -1
  26. package/dist/src/code-execution/runtime-py.js +49 -3
  27. package/dist/src/code-execution/runtime-py.js.map +1 -1
  28. package/dist/src/code-execution/tool-definition.d.ts +12 -1
  29. package/dist/src/code-execution/tool-definition.d.ts.map +1 -1
  30. package/dist/src/code-execution/tool-definition.js +21 -3
  31. package/dist/src/code-execution/tool-definition.js.map +1 -1
  32. package/dist/src/config-checks.d.ts +28 -0
  33. package/dist/src/config-checks.d.ts.map +1 -0
  34. package/dist/src/config-checks.js +52 -0
  35. package/dist/src/config-checks.js.map +1 -0
  36. package/dist/src/deadline-timer.d.ts +21 -0
  37. package/dist/src/deadline-timer.d.ts.map +1 -0
  38. package/dist/src/deadline-timer.js +43 -0
  39. package/dist/src/deadline-timer.js.map +1 -0
  40. package/dist/src/error-message.d.ts +30 -0
  41. package/dist/src/error-message.d.ts.map +1 -0
  42. package/dist/src/error-message.js +50 -0
  43. package/dist/src/error-message.js.map +1 -0
  44. package/dist/src/framework.d.ts +828 -88
  45. package/dist/src/framework.d.ts.map +1 -1
  46. package/dist/src/framework.js +5011 -1326
  47. package/dist/src/framework.js.map +1 -1
  48. package/dist/src/gate/event-gate.d.ts +8 -0
  49. package/dist/src/gate/event-gate.d.ts.map +1 -1
  50. package/dist/src/gate/event-gate.js +27 -3
  51. package/dist/src/gate/event-gate.js.map +1 -1
  52. package/dist/src/index.d.ts +4 -2
  53. package/dist/src/index.d.ts.map +1 -1
  54. package/dist/src/index.js +4 -2
  55. package/dist/src/index.js.map +1 -1
  56. package/dist/src/mcpl/channel-registry.d.ts +144 -6
  57. package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
  58. package/dist/src/mcpl/channel-registry.js +424 -263
  59. package/dist/src/mcpl/channel-registry.js.map +1 -1
  60. package/dist/src/mcpl/checkpoint-manager.d.ts +21 -1
  61. package/dist/src/mcpl/checkpoint-manager.d.ts.map +1 -1
  62. package/dist/src/mcpl/checkpoint-manager.js +91 -30
  63. package/dist/src/mcpl/checkpoint-manager.js.map +1 -1
  64. package/dist/src/mcpl/conversation-router.d.ts +19 -3
  65. package/dist/src/mcpl/conversation-router.d.ts.map +1 -1
  66. package/dist/src/mcpl/conversation-router.js +23 -8
  67. package/dist/src/mcpl/conversation-router.js.map +1 -1
  68. package/dist/src/mcpl/convert-block.d.ts +20 -0
  69. package/dist/src/mcpl/convert-block.d.ts.map +1 -0
  70. package/dist/src/mcpl/convert-block.js +89 -0
  71. package/dist/src/mcpl/convert-block.js.map +1 -0
  72. package/dist/src/mcpl/errors.d.ts +13 -0
  73. package/dist/src/mcpl/errors.d.ts.map +1 -1
  74. package/dist/src/mcpl/errors.js +28 -0
  75. package/dist/src/mcpl/errors.js.map +1 -1
  76. package/dist/src/mcpl/hook-orchestrator.d.ts +23 -0
  77. package/dist/src/mcpl/hook-orchestrator.d.ts.map +1 -1
  78. package/dist/src/mcpl/hook-orchestrator.js +83 -72
  79. package/dist/src/mcpl/hook-orchestrator.js.map +1 -1
  80. package/dist/src/mcpl/inbound-source.d.ts +114 -0
  81. package/dist/src/mcpl/inbound-source.d.ts.map +1 -0
  82. package/dist/src/mcpl/inbound-source.js +83 -0
  83. package/dist/src/mcpl/inbound-source.js.map +1 -0
  84. package/dist/src/mcpl/index.d.ts +3 -1
  85. package/dist/src/mcpl/index.d.ts.map +1 -1
  86. package/dist/src/mcpl/index.js +3 -1
  87. package/dist/src/mcpl/index.js.map +1 -1
  88. package/dist/src/mcpl/inference-router.d.ts +15 -11
  89. package/dist/src/mcpl/inference-router.d.ts.map +1 -1
  90. package/dist/src/mcpl/inference-router.js +153 -84
  91. package/dist/src/mcpl/inference-router.js.map +1 -1
  92. package/dist/src/mcpl/push-coalescer.d.ts +33 -11
  93. package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
  94. package/dist/src/mcpl/push-coalescer.js +52 -20
  95. package/dist/src/mcpl/push-coalescer.js.map +1 -1
  96. package/dist/src/mcpl/push-handler.d.ts +16 -9
  97. package/dist/src/mcpl/push-handler.d.ts.map +1 -1
  98. package/dist/src/mcpl/push-handler.js +18 -83
  99. package/dist/src/mcpl/push-handler.js.map +1 -1
  100. package/dist/src/mcpl/reference-fetcher.d.ts +14 -2
  101. package/dist/src/mcpl/reference-fetcher.d.ts.map +1 -1
  102. package/dist/src/mcpl/reference-fetcher.js +72 -30
  103. package/dist/src/mcpl/reference-fetcher.js.map +1 -1
  104. package/dist/src/mcpl/references.d.ts +47 -12
  105. package/dist/src/mcpl/references.d.ts.map +1 -1
  106. package/dist/src/mcpl/references.js +74 -21
  107. package/dist/src/mcpl/references.js.map +1 -1
  108. package/dist/src/mcpl/server-connection.d.ts +89 -10
  109. package/dist/src/mcpl/server-connection.d.ts.map +1 -1
  110. package/dist/src/mcpl/server-connection.js +405 -129
  111. package/dist/src/mcpl/server-connection.js.map +1 -1
  112. package/dist/src/mcpl/server-registry.d.ts +10 -1
  113. package/dist/src/mcpl/server-registry.d.ts.map +1 -1
  114. package/dist/src/mcpl/server-registry.js +14 -3
  115. package/dist/src/mcpl/server-registry.js.map +1 -1
  116. package/dist/src/mcpl/skip-reply-wake.d.ts +36 -0
  117. package/dist/src/mcpl/skip-reply-wake.d.ts.map +1 -0
  118. package/dist/src/mcpl/skip-reply-wake.js +55 -0
  119. package/dist/src/mcpl/skip-reply-wake.js.map +1 -0
  120. package/dist/src/mcpl/transport.d.ts +51 -2
  121. package/dist/src/mcpl/transport.d.ts.map +1 -1
  122. package/dist/src/mcpl/transport.js +114 -20
  123. package/dist/src/mcpl/transport.js.map +1 -1
  124. package/dist/src/mcpl/types.d.ts +14 -3
  125. package/dist/src/mcpl/types.d.ts.map +1 -1
  126. package/dist/src/mcpl/types.js.map +1 -1
  127. package/dist/src/mcpl/visible-content.d.ts +15 -0
  128. package/dist/src/mcpl/visible-content.d.ts.map +1 -1
  129. package/dist/src/mcpl/visible-content.js +25 -0
  130. package/dist/src/mcpl/visible-content.js.map +1 -1
  131. package/dist/src/module-registry.d.ts +19 -1
  132. package/dist/src/module-registry.d.ts.map +1 -1
  133. package/dist/src/module-registry.js +54 -25
  134. package/dist/src/module-registry.js.map +1 -1
  135. package/dist/src/modules/api/index.js +1 -1
  136. package/dist/src/modules/api/index.js.map +1 -1
  137. package/dist/src/modules/discord/discord-js-client.d.ts +1 -0
  138. package/dist/src/modules/discord/discord-js-client.d.ts.map +1 -1
  139. package/dist/src/modules/discord/discord-js-client.js +25 -9
  140. package/dist/src/modules/discord/discord-js-client.js.map +1 -1
  141. package/dist/src/modules/discord/index.d.ts +29 -3
  142. package/dist/src/modules/discord/index.d.ts.map +1 -1
  143. package/dist/src/modules/discord/index.js +379 -143
  144. package/dist/src/modules/discord/index.js.map +1 -1
  145. package/dist/src/modules/discord/types.d.ts +14 -1
  146. package/dist/src/modules/discord/types.d.ts.map +1 -1
  147. package/dist/src/modules/health/index.d.ts.map +1 -1
  148. package/dist/src/modules/health/index.js +2 -1
  149. package/dist/src/modules/health/index.js.map +1 -1
  150. package/dist/src/modules/history/index.d.ts +3 -1
  151. package/dist/src/modules/history/index.d.ts.map +1 -1
  152. package/dist/src/modules/history/index.js +359 -127
  153. package/dist/src/modules/history/index.js.map +1 -1
  154. package/dist/src/modules/history/semantic.d.ts +28 -1
  155. package/dist/src/modules/history/semantic.d.ts.map +1 -1
  156. package/dist/src/modules/history/semantic.js +177 -32
  157. package/dist/src/modules/history/semantic.js.map +1 -1
  158. package/dist/src/modules/unknown-tool.d.ts +10 -0
  159. package/dist/src/modules/unknown-tool.d.ts.map +1 -0
  160. package/dist/src/modules/unknown-tool.js +17 -0
  161. package/dist/src/modules/unknown-tool.js.map +1 -0
  162. package/dist/src/modules/workspace/disk-agreement.d.ts +32 -2
  163. package/dist/src/modules/workspace/disk-agreement.d.ts.map +1 -1
  164. package/dist/src/modules/workspace/disk-agreement.js +30 -2
  165. package/dist/src/modules/workspace/disk-agreement.js.map +1 -1
  166. package/dist/src/modules/workspace/effects.d.ts +64 -6
  167. package/dist/src/modules/workspace/effects.d.ts.map +1 -1
  168. package/dist/src/modules/workspace/effects.js +291 -44
  169. package/dist/src/modules/workspace/effects.js.map +1 -1
  170. package/dist/src/modules/workspace/index.d.ts +119 -23
  171. package/dist/src/modules/workspace/index.d.ts.map +1 -1
  172. package/dist/src/modules/workspace/index.js +793 -247
  173. package/dist/src/modules/workspace/index.js.map +1 -1
  174. package/dist/src/modules/workspace/observe.d.ts +75 -8
  175. package/dist/src/modules/workspace/observe.d.ts.map +1 -1
  176. package/dist/src/modules/workspace/observe.js +174 -14
  177. package/dist/src/modules/workspace/observe.js.map +1 -1
  178. package/dist/src/modules/workspace/reconcile.d.ts +58 -7
  179. package/dist/src/modules/workspace/reconcile.d.ts.map +1 -1
  180. package/dist/src/modules/workspace/reconcile.js +521 -56
  181. package/dist/src/modules/workspace/reconcile.js.map +1 -1
  182. package/dist/src/modules/workspace/types.d.ts +18 -4
  183. package/dist/src/modules/workspace/types.d.ts.map +1 -1
  184. package/dist/src/modules/workspace/types.js.map +1 -1
  185. package/dist/src/modules/workspace/watcher.d.ts +7 -2
  186. package/dist/src/modules/workspace/watcher.d.ts.map +1 -1
  187. package/dist/src/modules/workspace/watcher.js +28 -4
  188. package/dist/src/modules/workspace/watcher.js.map +1 -1
  189. package/dist/src/prose-drafts.d.ts +240 -0
  190. package/dist/src/prose-drafts.d.ts.map +1 -0
  191. package/dist/src/prose-drafts.js +362 -0
  192. package/dist/src/prose-drafts.js.map +1 -0
  193. package/dist/src/prose-segments.d.ts +21 -2
  194. package/dist/src/prose-segments.d.ts.map +1 -1
  195. package/dist/src/prose-segments.js +46 -9
  196. package/dist/src/prose-segments.js.map +1 -1
  197. package/dist/src/recovery/offline-branch.d.ts +1 -0
  198. package/dist/src/recovery/offline-branch.d.ts.map +1 -1
  199. package/dist/src/recovery/offline-branch.js +3 -1
  200. package/dist/src/recovery/offline-branch.js.map +1 -1
  201. package/dist/src/safe-slice.d.ts +5 -1
  202. package/dist/src/safe-slice.d.ts.map +1 -1
  203. package/dist/src/safe-slice.js +9 -1
  204. package/dist/src/safe-slice.js.map +1 -1
  205. package/dist/src/thinking-token-stamp.d.ts +12 -0
  206. package/dist/src/thinking-token-stamp.d.ts.map +1 -1
  207. package/dist/src/thinking-token-stamp.js +34 -3
  208. package/dist/src/thinking-token-stamp.js.map +1 -1
  209. package/dist/src/tool-image-ledger.d.ts +87 -19
  210. package/dist/src/tool-image-ledger.d.ts.map +1 -1
  211. package/dist/src/tool-image-ledger.js +135 -32
  212. package/dist/src/tool-image-ledger.js.map +1 -1
  213. package/dist/src/tool-presentation.d.ts +9 -0
  214. package/dist/src/tool-presentation.d.ts.map +1 -1
  215. package/dist/src/tool-presentation.js +257 -60
  216. package/dist/src/tool-presentation.js.map +1 -1
  217. package/dist/src/tool-result-guard.d.ts.map +1 -1
  218. package/dist/src/tool-result-guard.js +7 -10
  219. package/dist/src/tool-result-guard.js.map +1 -1
  220. package/dist/src/tool-result-history.d.ts +32 -3
  221. package/dist/src/tool-result-history.d.ts.map +1 -1
  222. package/dist/src/tool-result-history.js +106 -19
  223. package/dist/src/tool-result-history.js.map +1 -1
  224. package/dist/src/tune-out/coordinator.d.ts +25 -1
  225. package/dist/src/tune-out/coordinator.d.ts.map +1 -1
  226. package/dist/src/tune-out/coordinator.js +260 -65
  227. package/dist/src/tune-out/coordinator.js.map +1 -1
  228. package/dist/src/types/agent.d.ts +17 -5
  229. package/dist/src/types/agent.d.ts.map +1 -1
  230. package/dist/src/types/events.d.ts +17 -0
  231. package/dist/src/types/events.d.ts.map +1 -1
  232. package/dist/src/types/framework.d.ts +21 -5
  233. package/dist/src/types/framework.d.ts.map +1 -1
  234. package/dist/src/types/inference-log.d.ts +1 -1
  235. package/dist/src/types/inference-log.d.ts.map +1 -1
  236. package/dist/src/types/module.d.ts +23 -4
  237. package/dist/src/types/module.d.ts.map +1 -1
  238. package/dist/src/types/trace.d.ts +95 -6
  239. package/dist/src/types/trace.d.ts.map +1 -1
  240. package/dist/src/usage/usage-tracker.d.ts +5 -0
  241. package/dist/src/usage/usage-tracker.d.ts.map +1 -1
  242. package/dist/src/usage/usage-tracker.js +35 -8
  243. package/dist/src/usage/usage-tracker.js.map +1 -1
  244. package/package.json +6 -4
  245. package/src/agent.ts +169 -41
  246. package/src/api/mcp-server-core.ts +1 -1
  247. package/src/api/server.ts +4 -1
  248. package/src/api/types.ts +1 -1
  249. package/src/branch-names.ts +19 -0
  250. package/src/closest-names.ts +94 -0
  251. package/src/code-execution/py-runner.ts +200 -76
  252. package/src/code-execution/runtime-py.ts +49 -3
  253. package/src/code-execution/tool-definition.ts +28 -4
  254. package/src/config-checks.ts +48 -0
  255. package/src/deadline-timer.ts +44 -0
  256. package/src/error-message.ts +48 -0
  257. package/src/framework.ts +5352 -1388
  258. package/src/gate/event-gate.ts +28 -3
  259. package/src/index.ts +11 -2
  260. package/src/mcpl/channel-registry.ts +517 -286
  261. package/src/mcpl/checkpoint-manager.ts +104 -29
  262. package/src/mcpl/conversation-router.ts +28 -8
  263. package/src/mcpl/convert-block.ts +97 -0
  264. package/src/mcpl/errors.ts +28 -0
  265. package/src/mcpl/hook-orchestrator.ts +84 -77
  266. package/src/mcpl/inbound-source.ts +156 -0
  267. package/src/mcpl/index.ts +10 -1
  268. package/src/mcpl/inference-router.ts +174 -99
  269. package/src/mcpl/push-coalescer.ts +60 -24
  270. package/src/mcpl/push-handler.ts +20 -90
  271. package/src/mcpl/reference-fetcher.ts +71 -26
  272. package/src/mcpl/references.ts +81 -22
  273. package/src/mcpl/server-connection.ts +427 -132
  274. package/src/mcpl/server-registry.ts +15 -4
  275. package/src/mcpl/skip-reply-wake.ts +73 -0
  276. package/src/mcpl/transport.ts +120 -18
  277. package/src/mcpl/types.ts +14 -3
  278. package/src/mcpl/visible-content.ts +27 -0
  279. package/src/module-registry.ts +58 -23
  280. package/src/modules/api/index.ts +1 -1
  281. package/src/modules/discord/discord-js-client.ts +26 -10
  282. package/src/modules/discord/index.ts +391 -158
  283. package/src/modules/discord/types.ts +15 -2
  284. package/src/modules/health/index.ts +2 -1
  285. package/src/modules/history/index.ts +410 -120
  286. package/src/modules/history/semantic.ts +189 -32
  287. package/src/modules/unknown-tool.ts +16 -0
  288. package/src/modules/workspace/disk-agreement.ts +51 -3
  289. package/src/modules/workspace/effects.ts +279 -35
  290. package/src/modules/workspace/index.ts +810 -260
  291. package/src/modules/workspace/observe.ts +194 -20
  292. package/src/modules/workspace/reconcile.ts +619 -64
  293. package/src/modules/workspace/types.ts +18 -4
  294. package/src/modules/workspace/watcher.ts +27 -4
  295. package/src/prose-drafts.ts +481 -0
  296. package/src/prose-segments.ts +51 -8
  297. package/src/recovery/offline-branch.ts +4 -1
  298. package/src/safe-slice.ts +9 -1
  299. package/src/thinking-token-stamp.ts +34 -3
  300. package/src/tool-image-ledger.ts +153 -34
  301. package/src/tool-presentation.ts +224 -40
  302. package/src/tool-result-guard.ts +7 -8
  303. package/src/tool-result-history.ts +124 -20
  304. package/src/tune-out/coordinator.ts +259 -65
  305. package/src/types/agent.ts +17 -7
  306. package/src/types/events.ts +17 -0
  307. package/src/types/framework.ts +21 -5
  308. package/src/types/inference-log.ts +1 -1
  309. package/src/types/module.ts +24 -4
  310. package/src/types/trace.ts +101 -6
  311. package/src/usage/usage-tracker.ts +32 -8
  312. package/dist/test/activation-request-sanitize.test.d.ts +0 -2
  313. package/dist/test/activation-request-sanitize.test.d.ts.map +0 -1
  314. package/dist/test/activation-request-sanitize.test.js +0 -89
  315. package/dist/test/activation-request-sanitize.test.js.map +0 -1
  316. package/dist/test/agent-cache-ttl.test.d.ts +0 -2
  317. package/dist/test/agent-cache-ttl.test.d.ts.map +0 -1
  318. package/dist/test/agent-cache-ttl.test.js +0 -41
  319. package/dist/test/agent-cache-ttl.test.js.map +0 -1
  320. package/dist/test/agent-runtime-settings.test.d.ts +0 -2
  321. package/dist/test/agent-runtime-settings.test.d.ts.map +0 -1
  322. package/dist/test/agent-runtime-settings.test.js +0 -1598
  323. package/dist/test/agent-runtime-settings.test.js.map +0 -1
  324. package/dist/test/api-admin-gate.test.d.ts +0 -2
  325. package/dist/test/api-admin-gate.test.d.ts.map +0 -1
  326. package/dist/test/api-admin-gate.test.js +0 -116
  327. package/dist/test/api-admin-gate.test.js.map +0 -1
  328. package/dist/test/assistant-persist-refusal.test.d.ts +0 -2
  329. package/dist/test/assistant-persist-refusal.test.d.ts.map +0 -1
  330. package/dist/test/assistant-persist-refusal.test.js +0 -63
  331. package/dist/test/assistant-persist-refusal.test.js.map +0 -1
  332. package/dist/test/batched-wake-locus.test.d.ts +0 -2
  333. package/dist/test/batched-wake-locus.test.d.ts.map +0 -1
  334. package/dist/test/batched-wake-locus.test.js +0 -166
  335. package/dist/test/batched-wake-locus.test.js.map +0 -1
  336. package/dist/test/busy-agent-scheduler.test.d.ts +0 -2
  337. package/dist/test/busy-agent-scheduler.test.d.ts.map +0 -1
  338. package/dist/test/busy-agent-scheduler.test.js +0 -92
  339. package/dist/test/busy-agent-scheduler.test.js.map +0 -1
  340. package/dist/test/channel-incoming-targeting.test.d.ts +0 -2
  341. package/dist/test/channel-incoming-targeting.test.d.ts.map +0 -1
  342. package/dist/test/channel-incoming-targeting.test.js +0 -81
  343. package/dist/test/channel-incoming-targeting.test.js.map +0 -1
  344. package/dist/test/channel-label-history.test.d.ts +0 -2
  345. package/dist/test/channel-label-history.test.d.ts.map +0 -1
  346. package/dist/test/channel-label-history.test.js +0 -424
  347. package/dist/test/channel-label-history.test.js.map +0 -1
  348. package/dist/test/channel-lifecycle-provenance.test.d.ts +0 -2
  349. package/dist/test/channel-lifecycle-provenance.test.d.ts.map +0 -1
  350. package/dist/test/channel-lifecycle-provenance.test.js +0 -47
  351. package/dist/test/channel-lifecycle-provenance.test.js.map +0 -1
  352. package/dist/test/channel-registry-routing.test.d.ts +0 -2
  353. package/dist/test/channel-registry-routing.test.d.ts.map +0 -1
  354. package/dist/test/channel-registry-routing.test.js +0 -446
  355. package/dist/test/channel-registry-routing.test.js.map +0 -1
  356. package/dist/test/channel-registry-typing.test.d.ts +0 -2
  357. package/dist/test/channel-registry-typing.test.d.ts.map +0 -1
  358. package/dist/test/channel-registry-typing.test.js +0 -91
  359. package/dist/test/channel-registry-typing.test.js.map +0 -1
  360. package/dist/test/channels-changed-respond-first.test.d.ts +0 -2
  361. package/dist/test/channels-changed-respond-first.test.d.ts.map +0 -1
  362. package/dist/test/channels-changed-respond-first.test.js +0 -74
  363. package/dist/test/channels-changed-respond-first.test.js.map +0 -1
  364. package/dist/test/checkpoint-attribution.test.d.ts +0 -2
  365. package/dist/test/checkpoint-attribution.test.d.ts.map +0 -1
  366. package/dist/test/checkpoint-attribution.test.js +0 -200
  367. package/dist/test/checkpoint-attribution.test.js.map +0 -1
  368. package/dist/test/code-execution.test.d.ts +0 -11
  369. package/dist/test/code-execution.test.d.ts.map +0 -1
  370. package/dist/test/code-execution.test.js +0 -1272
  371. package/dist/test/code-execution.test.js.map +0 -1
  372. package/dist/test/component-defaults.test.d.ts +0 -2
  373. package/dist/test/component-defaults.test.d.ts.map +0 -1
  374. package/dist/test/component-defaults.test.js +0 -54
  375. package/dist/test/component-defaults.test.js.map +0 -1
  376. package/dist/test/conversation-fork-injection-scoping.test.d.ts +0 -2
  377. package/dist/test/conversation-fork-injection-scoping.test.d.ts.map +0 -1
  378. package/dist/test/conversation-fork-injection-scoping.test.js +0 -200
  379. package/dist/test/conversation-fork-injection-scoping.test.js.map +0 -1
  380. package/dist/test/conversation-router.test.d.ts +0 -2
  381. package/dist/test/conversation-router.test.d.ts.map +0 -1
  382. package/dist/test/conversation-router.test.js +0 -174
  383. package/dist/test/conversation-router.test.js.map +0 -1
  384. package/dist/test/conversation-routing.test.d.ts +0 -7
  385. package/dist/test/conversation-routing.test.d.ts.map +0 -1
  386. package/dist/test/conversation-routing.test.js +0 -621
  387. package/dist/test/conversation-routing.test.js.map +0 -1
  388. package/dist/test/deferred-wake-integrity.test.d.ts +0 -29
  389. package/dist/test/deferred-wake-integrity.test.d.ts.map +0 -1
  390. package/dist/test/deferred-wake-integrity.test.js +0 -320
  391. package/dist/test/deferred-wake-integrity.test.js.map +0 -1
  392. package/dist/test/discord-awareness-outbox.test.d.ts +0 -2
  393. package/dist/test/discord-awareness-outbox.test.d.ts.map +0 -1
  394. package/dist/test/discord-awareness-outbox.test.js +0 -371
  395. package/dist/test/discord-awareness-outbox.test.js.map +0 -1
  396. package/dist/test/discord-history-delete-window.test.d.ts +0 -2
  397. package/dist/test/discord-history-delete-window.test.d.ts.map +0 -1
  398. package/dist/test/discord-history-delete-window.test.js +0 -81
  399. package/dist/test/discord-history-delete-window.test.js.map +0 -1
  400. package/dist/test/discord-history-sync.test.d.ts +0 -2
  401. package/dist/test/discord-history-sync.test.d.ts.map +0 -1
  402. package/dist/test/discord-history-sync.test.js +0 -56
  403. package/dist/test/discord-history-sync.test.js.map +0 -1
  404. package/dist/test/discord-typing-keepalive.test.d.ts +0 -2
  405. package/dist/test/discord-typing-keepalive.test.d.ts.map +0 -1
  406. package/dist/test/discord-typing-keepalive.test.js +0 -77
  407. package/dist/test/discord-typing-keepalive.test.js.map +0 -1
  408. package/dist/test/ephemeral-settle.test.d.ts +0 -2
  409. package/dist/test/ephemeral-settle.test.d.ts.map +0 -1
  410. package/dist/test/ephemeral-settle.test.js +0 -354
  411. package/dist/test/ephemeral-settle.test.js.map +0 -1
  412. package/dist/test/event-gate-passthrough.test.d.ts +0 -15
  413. package/dist/test/event-gate-passthrough.test.d.ts.map +0 -1
  414. package/dist/test/event-gate-passthrough.test.js +0 -289
  415. package/dist/test/event-gate-passthrough.test.js.map +0 -1
  416. package/dist/test/event-gate-policy-mutation.test.d.ts +0 -2
  417. package/dist/test/event-gate-policy-mutation.test.d.ts.map +0 -1
  418. package/dist/test/event-gate-policy-mutation.test.js +0 -137
  419. package/dist/test/event-gate-policy-mutation.test.js.map +0 -1
  420. package/dist/test/event-gate-rate-limit.test.d.ts +0 -2
  421. package/dist/test/event-gate-rate-limit.test.d.ts.map +0 -1
  422. package/dist/test/event-gate-rate-limit.test.js +0 -627
  423. package/dist/test/event-gate-rate-limit.test.js.map +0 -1
  424. package/dist/test/event-gate-script.test.d.ts +0 -2
  425. package/dist/test/event-gate-script.test.d.ts.map +0 -1
  426. package/dist/test/event-gate-script.test.js +0 -95
  427. package/dist/test/event-gate-script.test.js.map +0 -1
  428. package/dist/test/event-gate-selfwake.test.d.ts +0 -15
  429. package/dist/test/event-gate-selfwake.test.d.ts.map +0 -1
  430. package/dist/test/event-gate-selfwake.test.js +0 -125
  431. package/dist/test/event-gate-selfwake.test.js.map +0 -1
  432. package/dist/test/event-gate-tags.test.d.ts +0 -2
  433. package/dist/test/event-gate-tags.test.d.ts.map +0 -1
  434. package/dist/test/event-gate-tags.test.js +0 -76
  435. package/dist/test/event-gate-tags.test.js.map +0 -1
  436. package/dist/test/event-gate.test.d.ts +0 -2
  437. package/dist/test/event-gate.test.d.ts.map +0 -1
  438. package/dist/test/event-gate.test.js +0 -919
  439. package/dist/test/event-gate.test.js.map +0 -1
  440. package/dist/test/explicit-prose-routing.test.d.ts +0 -11
  441. package/dist/test/explicit-prose-routing.test.d.ts.map +0 -1
  442. package/dist/test/explicit-prose-routing.test.js +0 -1715
  443. package/dist/test/explicit-prose-routing.test.js.map +0 -1
  444. package/dist/test/framework.test.d.ts +0 -5
  445. package/dist/test/framework.test.d.ts.map +0 -1
  446. package/dist/test/framework.test.js +0 -1048
  447. package/dist/test/framework.test.js.map +0 -1
  448. package/dist/test/gather-context-timeout.test.d.ts +0 -2
  449. package/dist/test/gather-context-timeout.test.d.ts.map +0 -1
  450. package/dist/test/gather-context-timeout.test.js +0 -120
  451. package/dist/test/gather-context-timeout.test.js.map +0 -1
  452. package/dist/test/health-snapshot.test.d.ts +0 -2
  453. package/dist/test/health-snapshot.test.d.ts.map +0 -1
  454. package/dist/test/health-snapshot.test.js +0 -74
  455. package/dist/test/health-snapshot.test.js.map +0 -1
  456. package/dist/test/helpers/coalescing-fixture.d.ts +0 -74
  457. package/dist/test/helpers/coalescing-fixture.d.ts.map +0 -1
  458. package/dist/test/helpers/coalescing-fixture.js +0 -152
  459. package/dist/test/helpers/coalescing-fixture.js.map +0 -1
  460. package/dist/test/helpers/coalescing-kill-child.d.ts +0 -2
  461. package/dist/test/helpers/coalescing-kill-child.d.ts.map +0 -1
  462. package/dist/test/helpers/coalescing-kill-child.js +0 -24
  463. package/dist/test/helpers/coalescing-kill-child.js.map +0 -1
  464. package/dist/test/helpers/mock-membrane.d.ts +0 -53
  465. package/dist/test/helpers/mock-membrane.d.ts.map +0 -1
  466. package/dist/test/helpers/mock-membrane.js +0 -168
  467. package/dist/test/helpers/mock-membrane.js.map +0 -1
  468. package/dist/test/helpers/pytc-stop-rows.d.ts +0 -11
  469. package/dist/test/helpers/pytc-stop-rows.d.ts.map +0 -1
  470. package/dist/test/helpers/pytc-stop-rows.js +0 -143
  471. package/dist/test/helpers/pytc-stop-rows.js.map +0 -1
  472. package/dist/test/helpers/quiesce-crash-child.d.ts +0 -2
  473. package/dist/test/helpers/quiesce-crash-child.d.ts.map +0 -1
  474. package/dist/test/helpers/quiesce-crash-child.js +0 -156
  475. package/dist/test/helpers/quiesce-crash-child.js.map +0 -1
  476. package/dist/test/hide-then-turn.test.d.ts +0 -2
  477. package/dist/test/hide-then-turn.test.d.ts.map +0 -1
  478. package/dist/test/hide-then-turn.test.js +0 -101
  479. package/dist/test/hide-then-turn.test.js.map +0 -1
  480. package/dist/test/history-module-overview.test.d.ts +0 -2
  481. package/dist/test/history-module-overview.test.d.ts.map +0 -1
  482. package/dist/test/history-module-overview.test.js +0 -711
  483. package/dist/test/history-module-overview.test.js.map +0 -1
  484. package/dist/test/history-module-realstore.test.d.ts +0 -2
  485. package/dist/test/history-module-realstore.test.d.ts.map +0 -1
  486. package/dist/test/history-module-realstore.test.js +0 -363
  487. package/dist/test/history-module-realstore.test.js.map +0 -1
  488. package/dist/test/history-module-semantic.test.d.ts +0 -2
  489. package/dist/test/history-module-semantic.test.d.ts.map +0 -1
  490. package/dist/test/history-module-semantic.test.js +0 -213
  491. package/dist/test/history-module-semantic.test.js.map +0 -1
  492. package/dist/test/history-module-ux.test.d.ts +0 -2
  493. package/dist/test/history-module-ux.test.d.ts.map +0 -1
  494. package/dist/test/history-module-ux.test.js +0 -304
  495. package/dist/test/history-module-ux.test.js.map +0 -1
  496. package/dist/test/history-module.test.d.ts +0 -2
  497. package/dist/test/history-module.test.d.ts.map +0 -1
  498. package/dist/test/history-module.test.js +0 -619
  499. package/dist/test/history-module.test.js.map +0 -1
  500. package/dist/test/history-semantic-review-findings.test.d.ts +0 -2
  501. package/dist/test/history-semantic-review-findings.test.d.ts.map +0 -1
  502. package/dist/test/history-semantic-review-findings.test.js +0 -338
  503. package/dist/test/history-semantic-review-findings.test.js.map +0 -1
  504. package/dist/test/history-semantic-sync-converges.test.d.ts +0 -2
  505. package/dist/test/history-semantic-sync-converges.test.d.ts.map +0 -1
  506. package/dist/test/history-semantic-sync-converges.test.js +0 -109
  507. package/dist/test/history-semantic-sync-converges.test.js.map +0 -1
  508. package/dist/test/host-quiesce.test.d.ts +0 -2
  509. package/dist/test/host-quiesce.test.d.ts.map +0 -1
  510. package/dist/test/host-quiesce.test.js +0 -988
  511. package/dist/test/host-quiesce.test.js.map +0 -1
  512. package/dist/test/inference-exhaustion-rewind.test.d.ts +0 -2
  513. package/dist/test/inference-exhaustion-rewind.test.d.ts.map +0 -1
  514. package/dist/test/inference-exhaustion-rewind.test.js +0 -387
  515. package/dist/test/inference-exhaustion-rewind.test.js.map +0 -1
  516. package/dist/test/inference-failure-bounds.test.d.ts +0 -2
  517. package/dist/test/inference-failure-bounds.test.d.ts.map +0 -1
  518. package/dist/test/inference-failure-bounds.test.js +0 -1202
  519. package/dist/test/inference-failure-bounds.test.js.map +0 -1
  520. package/dist/test/inference-failure-observability.test.d.ts +0 -2
  521. package/dist/test/inference-failure-observability.test.d.ts.map +0 -1
  522. package/dist/test/inference-failure-observability.test.js +0 -84
  523. package/dist/test/inference-failure-observability.test.js.map +0 -1
  524. package/dist/test/journal-tool.test.d.ts +0 -2
  525. package/dist/test/journal-tool.test.d.ts.map +0 -1
  526. package/dist/test/journal-tool.test.js +0 -33
  527. package/dist/test/journal-tool.test.js.map +0 -1
  528. package/dist/test/kv-unified-open-flight-retry.test.d.ts +0 -2
  529. package/dist/test/kv-unified-open-flight-retry.test.d.ts.map +0 -1
  530. package/dist/test/kv-unified-open-flight-retry.test.js +0 -189
  531. package/dist/test/kv-unified-open-flight-retry.test.js.map +0 -1
  532. package/dist/test/kv-unified-wiring.test.d.ts +0 -2
  533. package/dist/test/kv-unified-wiring.test.d.ts.map +0 -1
  534. package/dist/test/kv-unified-wiring.test.js +0 -95
  535. package/dist/test/kv-unified-wiring.test.js.map +0 -1
  536. package/dist/test/late-events-after-stop.test.d.ts +0 -2
  537. package/dist/test/late-events-after-stop.test.d.ts.map +0 -1
  538. package/dist/test/late-events-after-stop.test.js +0 -122
  539. package/dist/test/late-events-after-stop.test.js.map +0 -1
  540. package/dist/test/liveness-watchdog.test.d.ts +0 -2
  541. package/dist/test/liveness-watchdog.test.d.ts.map +0 -1
  542. package/dist/test/liveness-watchdog.test.js +0 -94
  543. package/dist/test/liveness-watchdog.test.js.map +0 -1
  544. package/dist/test/machine-close-provenance.test.d.ts +0 -2
  545. package/dist/test/machine-close-provenance.test.d.ts.map +0 -1
  546. package/dist/test/machine-close-provenance.test.js +0 -116
  547. package/dist/test/machine-close-provenance.test.js.map +0 -1
  548. package/dist/test/maintenance-timer.test.d.ts +0 -2
  549. package/dist/test/maintenance-timer.test.d.ts.map +0 -1
  550. package/dist/test/maintenance-timer.test.js +0 -1827
  551. package/dist/test/maintenance-timer.test.js.map +0 -1
  552. package/dist/test/mcp-server-bin.test.d.ts +0 -2
  553. package/dist/test/mcp-server-bin.test.d.ts.map +0 -1
  554. package/dist/test/mcp-server-bin.test.js +0 -142
  555. package/dist/test/mcp-server-bin.test.js.map +0 -1
  556. package/dist/test/mcpl-access-provider.test.d.ts +0 -2
  557. package/dist/test/mcpl-access-provider.test.d.ts.map +0 -1
  558. package/dist/test/mcpl-access-provider.test.js +0 -20
  559. package/dist/test/mcpl-access-provider.test.js.map +0 -1
  560. package/dist/test/mcpl-awareness-barrier.test.d.ts +0 -2
  561. package/dist/test/mcpl-awareness-barrier.test.d.ts.map +0 -1
  562. package/dist/test/mcpl-awareness-barrier.test.js +0 -769
  563. package/dist/test/mcpl-awareness-barrier.test.js.map +0 -1
  564. package/dist/test/mcpl-capability-grant.test.d.ts +0 -10
  565. package/dist/test/mcpl-capability-grant.test.d.ts.map +0 -1
  566. package/dist/test/mcpl-capability-grant.test.js +0 -111
  567. package/dist/test/mcpl-capability-grant.test.js.map +0 -1
  568. package/dist/test/mcpl-capability-scoping.test.d.ts +0 -2
  569. package/dist/test/mcpl-capability-scoping.test.d.ts.map +0 -1
  570. package/dist/test/mcpl-capability-scoping.test.js +0 -266
  571. package/dist/test/mcpl-capability-scoping.test.js.map +0 -1
  572. package/dist/test/mcpl-child-env.test.d.ts +0 -2
  573. package/dist/test/mcpl-child-env.test.d.ts.map +0 -1
  574. package/dist/test/mcpl-child-env.test.js +0 -158
  575. package/dist/test/mcpl-child-env.test.js.map +0 -1
  576. package/dist/test/mcpl-coalesced-content-parity.test.d.ts +0 -2
  577. package/dist/test/mcpl-coalesced-content-parity.test.d.ts.map +0 -1
  578. package/dist/test/mcpl-coalesced-content-parity.test.js +0 -532
  579. package/dist/test/mcpl-coalesced-content-parity.test.js.map +0 -1
  580. package/dist/test/mcpl-coalescing.test.d.ts +0 -2
  581. package/dist/test/mcpl-coalescing.test.d.ts.map +0 -1
  582. package/dist/test/mcpl-coalescing.test.js +0 -1125
  583. package/dist/test/mcpl-coalescing.test.js.map +0 -1
  584. package/dist/test/mcpl-config-diagnostics.test.d.ts +0 -2
  585. package/dist/test/mcpl-config-diagnostics.test.d.ts.map +0 -1
  586. package/dist/test/mcpl-config-diagnostics.test.js +0 -452
  587. package/dist/test/mcpl-config-diagnostics.test.js.map +0 -1
  588. package/dist/test/mcpl-empty-content.test.d.ts +0 -2
  589. package/dist/test/mcpl-empty-content.test.d.ts.map +0 -1
  590. package/dist/test/mcpl-empty-content.test.js +0 -368
  591. package/dist/test/mcpl-empty-content.test.js.map +0 -1
  592. package/dist/test/mcpl-gate-roundtrip.test.d.ts +0 -2
  593. package/dist/test/mcpl-gate-roundtrip.test.d.ts.map +0 -1
  594. package/dist/test/mcpl-gate-roundtrip.test.js +0 -285
  595. package/dist/test/mcpl-gate-roundtrip.test.js.map +0 -1
  596. package/dist/test/mcpl-list-status.test.d.ts +0 -2
  597. package/dist/test/mcpl-list-status.test.d.ts.map +0 -1
  598. package/dist/test/mcpl-list-status.test.js +0 -82
  599. package/dist/test/mcpl-list-status.test.js.map +0 -1
  600. package/dist/test/mcpl-manifest-changed.test.d.ts +0 -2
  601. package/dist/test/mcpl-manifest-changed.test.d.ts.map +0 -1
  602. package/dist/test/mcpl-manifest-changed.test.js +0 -178
  603. package/dist/test/mcpl-manifest-changed.test.js.map +0 -1
  604. package/dist/test/mcpl-push-convert.test.d.ts +0 -2
  605. package/dist/test/mcpl-push-convert.test.d.ts.map +0 -1
  606. package/dist/test/mcpl-push-convert.test.js +0 -42
  607. package/dist/test/mcpl-push-convert.test.js.map +0 -1
  608. package/dist/test/mcpl-reconnect-events.test.d.ts +0 -2
  609. package/dist/test/mcpl-reconnect-events.test.d.ts.map +0 -1
  610. package/dist/test/mcpl-reconnect-events.test.js +0 -144
  611. package/dist/test/mcpl-reconnect-events.test.js.map +0 -1
  612. package/dist/test/mcpl-reconnect-reregistration.test.d.ts +0 -2
  613. package/dist/test/mcpl-reconnect-reregistration.test.d.ts.map +0 -1
  614. package/dist/test/mcpl-reconnect-reregistration.test.js +0 -238
  615. package/dist/test/mcpl-reconnect-reregistration.test.js.map +0 -1
  616. package/dist/test/mcpl-reference-fetcher.test.d.ts +0 -2
  617. package/dist/test/mcpl-reference-fetcher.test.d.ts.map +0 -1
  618. package/dist/test/mcpl-reference-fetcher.test.js +0 -427
  619. package/dist/test/mcpl-reference-fetcher.test.js.map +0 -1
  620. package/dist/test/mcpl-reference-fields.test.d.ts +0 -2
  621. package/dist/test/mcpl-reference-fields.test.d.ts.map +0 -1
  622. package/dist/test/mcpl-reference-fields.test.js +0 -149
  623. package/dist/test/mcpl-reference-fields.test.js.map +0 -1
  624. package/dist/test/mcpl-rejection-log-lines.test.d.ts +0 -2
  625. package/dist/test/mcpl-rejection-log-lines.test.d.ts.map +0 -1
  626. package/dist/test/mcpl-rejection-log-lines.test.js +0 -349
  627. package/dist/test/mcpl-rejection-log-lines.test.js.map +0 -1
  628. package/dist/test/mcpl-request-timeout.test.d.ts +0 -2
  629. package/dist/test/mcpl-request-timeout.test.d.ts.map +0 -1
  630. package/dist/test/mcpl-request-timeout.test.js +0 -138
  631. package/dist/test/mcpl-request-timeout.test.js.map +0 -1
  632. package/dist/test/mcpl-runtime-lifecycle.test.d.ts +0 -7
  633. package/dist/test/mcpl-runtime-lifecycle.test.d.ts.map +0 -1
  634. package/dist/test/mcpl-runtime-lifecycle.test.js +0 -142
  635. package/dist/test/mcpl-runtime-lifecycle.test.js.map +0 -1
  636. package/dist/test/mcpl-stderr-tail.test.d.ts +0 -2
  637. package/dist/test/mcpl-stderr-tail.test.d.ts.map +0 -1
  638. package/dist/test/mcpl-stderr-tail.test.js +0 -210
  639. package/dist/test/mcpl-stderr-tail.test.js.map +0 -1
  640. package/dist/test/mcpl-tool-class-listing.test.d.ts +0 -2
  641. package/dist/test/mcpl-tool-class-listing.test.d.ts.map +0 -1
  642. package/dist/test/mcpl-tool-class-listing.test.js +0 -147
  643. package/dist/test/mcpl-tool-class-listing.test.js.map +0 -1
  644. package/dist/test/mcpl-tool-classes.test.d.ts +0 -7
  645. package/dist/test/mcpl-tool-classes.test.d.ts.map +0 -1
  646. package/dist/test/mcpl-tool-classes.test.js +0 -80
  647. package/dist/test/mcpl-tool-classes.test.js.map +0 -1
  648. package/dist/test/mcpl-tool-lifecycle-e2e.test.d.ts +0 -2
  649. package/dist/test/mcpl-tool-lifecycle-e2e.test.d.ts.map +0 -1
  650. package/dist/test/mcpl-tool-lifecycle-e2e.test.js +0 -237
  651. package/dist/test/mcpl-tool-lifecycle-e2e.test.js.map +0 -1
  652. package/dist/test/mcpl-tool-lifecycle-emitter.test.d.ts +0 -11
  653. package/dist/test/mcpl-tool-lifecycle-emitter.test.d.ts.map +0 -1
  654. package/dist/test/mcpl-tool-lifecycle-emitter.test.js +0 -412
  655. package/dist/test/mcpl-tool-lifecycle-emitter.test.js.map +0 -1
  656. package/dist/test/mcpl-tool-lifecycle-script.test.d.ts +0 -2
  657. package/dist/test/mcpl-tool-lifecycle-script.test.d.ts.map +0 -1
  658. package/dist/test/mcpl-tool-lifecycle-script.test.js +0 -288
  659. package/dist/test/mcpl-tool-lifecycle-script.test.js.map +0 -1
  660. package/dist/test/mcpl-tool-lifecycle.test.d.ts +0 -11
  661. package/dist/test/mcpl-tool-lifecycle.test.d.ts.map +0 -1
  662. package/dist/test/mcpl-tool-lifecycle.test.js +0 -270
  663. package/dist/test/mcpl-tool-lifecycle.test.js.map +0 -1
  664. package/dist/test/mcpl-transport-close.test.d.ts +0 -2
  665. package/dist/test/mcpl-transport-close.test.d.ts.map +0 -1
  666. package/dist/test/mcpl-transport-close.test.js +0 -373
  667. package/dist/test/mcpl-transport-close.test.js.map +0 -1
  668. package/dist/test/mcpl-transport-spawn.test.d.ts +0 -2
  669. package/dist/test/mcpl-transport-spawn.test.d.ts.map +0 -1
  670. package/dist/test/mcpl-transport-spawn.test.js +0 -58
  671. package/dist/test/mcpl-transport-spawn.test.js.map +0 -1
  672. package/dist/test/mcpl-ws-transport.test.d.ts +0 -2
  673. package/dist/test/mcpl-ws-transport.test.d.ts.map +0 -1
  674. package/dist/test/mcpl-ws-transport.test.js +0 -259
  675. package/dist/test/mcpl-ws-transport.test.js.map +0 -1
  676. package/dist/test/module-context-integration.test.d.ts +0 -18
  677. package/dist/test/module-context-integration.test.d.ts.map +0 -1
  678. package/dist/test/module-context-integration.test.js +0 -181
  679. package/dist/test/module-context-integration.test.js.map +0 -1
  680. package/dist/test/offline-recovery-branch.test.d.ts +0 -2
  681. package/dist/test/offline-recovery-branch.test.d.ts.map +0 -1
  682. package/dist/test/offline-recovery-branch.test.js +0 -570
  683. package/dist/test/offline-recovery-branch.test.js.map +0 -1
  684. package/dist/test/operator-surgery.test.d.ts +0 -2
  685. package/dist/test/operator-surgery.test.d.ts.map +0 -1
  686. package/dist/test/operator-surgery.test.js +0 -595
  687. package/dist/test/operator-surgery.test.js.map +0 -1
  688. package/dist/test/ops-alert.test.d.ts +0 -2
  689. package/dist/test/ops-alert.test.d.ts.map +0 -1
  690. package/dist/test/ops-alert.test.js +0 -153
  691. package/dist/test/ops-alert.test.js.map +0 -1
  692. package/dist/test/overbudget-drain-breaker.test.d.ts +0 -2
  693. package/dist/test/overbudget-drain-breaker.test.d.ts.map +0 -1
  694. package/dist/test/overbudget-drain-breaker.test.js +0 -198
  695. package/dist/test/overbudget-drain-breaker.test.js.map +0 -1
  696. package/dist/test/pack-installs-alone.test.d.ts +0 -2
  697. package/dist/test/pack-installs-alone.test.d.ts.map +0 -1
  698. package/dist/test/pack-installs-alone.test.js +0 -284
  699. package/dist/test/pack-installs-alone.test.js.map +0 -1
  700. package/dist/test/per-agent-delivery.test.d.ts +0 -2
  701. package/dist/test/per-agent-delivery.test.d.ts.map +0 -1
  702. package/dist/test/per-agent-delivery.test.js +0 -108
  703. package/dist/test/per-agent-delivery.test.js.map +0 -1
  704. package/dist/test/physical-window-restart.test.d.ts +0 -16
  705. package/dist/test/physical-window-restart.test.d.ts.map +0 -1
  706. package/dist/test/physical-window-restart.test.js +0 -487
  707. package/dist/test/physical-window-restart.test.js.map +0 -1
  708. package/dist/test/placed-reaction-baseline.test.d.ts +0 -2
  709. package/dist/test/placed-reaction-baseline.test.d.ts.map +0 -1
  710. package/dist/test/placed-reaction-baseline.test.js +0 -312
  711. package/dist/test/placed-reaction-baseline.test.js.map +0 -1
  712. package/dist/test/present-while-acting.test.d.ts +0 -19
  713. package/dist/test/present-while-acting.test.d.ts.map +0 -1
  714. package/dist/test/present-while-acting.test.js +0 -1649
  715. package/dist/test/present-while-acting.test.js.map +0 -1
  716. package/dist/test/prose-segments.test.d.ts +0 -2
  717. package/dist/test/prose-segments.test.d.ts.map +0 -1
  718. package/dist/test/prose-segments.test.js +0 -52
  719. package/dist/test/prose-segments.test.js.map +0 -1
  720. package/dist/test/prose-stream-router.test.d.ts +0 -2
  721. package/dist/test/prose-stream-router.test.d.ts.map +0 -1
  722. package/dist/test/prose-stream-router.test.js +0 -171
  723. package/dist/test/prose-stream-router.test.js.map +0 -1
  724. package/dist/test/provider-acceleration-cooldown.test.d.ts +0 -2
  725. package/dist/test/provider-acceleration-cooldown.test.d.ts.map +0 -1
  726. package/dist/test/provider-acceleration-cooldown.test.js +0 -435
  727. package/dist/test/provider-acceleration-cooldown.test.js.map +0 -1
  728. package/dist/test/provider-waits.test.d.ts +0 -2
  729. package/dist/test/provider-waits.test.d.ts.map +0 -1
  730. package/dist/test/provider-waits.test.js +0 -2259
  731. package/dist/test/provider-waits.test.js.map +0 -1
  732. package/dist/test/puppet-tool-call.test.d.ts +0 -2
  733. package/dist/test/puppet-tool-call.test.d.ts.map +0 -1
  734. package/dist/test/puppet-tool-call.test.js +0 -226
  735. package/dist/test/puppet-tool-call.test.js.map +0 -1
  736. package/dist/test/puppet-turn-reservation.test.d.ts +0 -2
  737. package/dist/test/puppet-turn-reservation.test.d.ts.map +0 -1
  738. package/dist/test/puppet-turn-reservation.test.js +0 -139
  739. package/dist/test/puppet-turn-reservation.test.js.map +0 -1
  740. package/dist/test/reaction-baseline-platform.test.d.ts +0 -2
  741. package/dist/test/reaction-baseline-platform.test.d.ts.map +0 -1
  742. package/dist/test/reaction-baseline-platform.test.js +0 -124
  743. package/dist/test/reaction-baseline-platform.test.js.map +0 -1
  744. package/dist/test/record-journal.test.d.ts +0 -6
  745. package/dist/test/record-journal.test.d.ts.map +0 -1
  746. package/dist/test/record-journal.test.js +0 -269
  747. package/dist/test/record-journal.test.js.map +0 -1
  748. package/dist/test/refusal-reaction-baseline.test.d.ts +0 -2
  749. package/dist/test/refusal-reaction-baseline.test.d.ts.map +0 -1
  750. package/dist/test/refusal-reaction-baseline.test.js +0 -81
  751. package/dist/test/refusal-reaction-baseline.test.js.map +0 -1
  752. package/dist/test/refusal-rewind.test.d.ts +0 -2
  753. package/dist/test/refusal-rewind.test.d.ts.map +0 -1
  754. package/dist/test/refusal-rewind.test.js +0 -117
  755. package/dist/test/refusal-rewind.test.js.map +0 -1
  756. package/dist/test/refusal-single-call.test.d.ts +0 -2
  757. package/dist/test/refusal-single-call.test.d.ts.map +0 -1
  758. package/dist/test/refusal-single-call.test.js +0 -177
  759. package/dist/test/refusal-single-call.test.js.map +0 -1
  760. package/dist/test/release-bump.test.d.ts +0 -2
  761. package/dist/test/release-bump.test.d.ts.map +0 -1
  762. package/dist/test/release-bump.test.js +0 -248
  763. package/dist/test/release-bump.test.js.map +0 -1
  764. package/dist/test/release-changelog.test.d.ts +0 -2
  765. package/dist/test/release-changelog.test.d.ts.map +0 -1
  766. package/dist/test/release-changelog.test.js +0 -159
  767. package/dist/test/release-changelog.test.js.map +0 -1
  768. package/dist/test/release-holds.test.d.ts +0 -2
  769. package/dist/test/release-holds.test.d.ts.map +0 -1
  770. package/dist/test/release-holds.test.js +0 -456
  771. package/dist/test/release-holds.test.js.map +0 -1
  772. package/dist/test/same-round-think-policy.test.d.ts +0 -2
  773. package/dist/test/same-round-think-policy.test.d.ts.map +0 -1
  774. package/dist/test/same-round-think-policy.test.js +0 -853
  775. package/dist/test/same-round-think-policy.test.js.map +0 -1
  776. package/dist/test/save-recent-image.test.d.ts +0 -26
  777. package/dist/test/save-recent-image.test.d.ts.map +0 -1
  778. package/dist/test/save-recent-image.test.js +0 -974
  779. package/dist/test/save-recent-image.test.js.map +0 -1
  780. package/dist/test/shutdown-errors.test.d.ts +0 -2
  781. package/dist/test/shutdown-errors.test.d.ts.map +0 -1
  782. package/dist/test/shutdown-errors.test.js +0 -662
  783. package/dist/test/shutdown-errors.test.js.map +0 -1
  784. package/dist/test/silent-heartbeat-rows.test.d.ts +0 -2
  785. package/dist/test/silent-heartbeat-rows.test.d.ts.map +0 -1
  786. package/dist/test/silent-heartbeat-rows.test.js +0 -451
  787. package/dist/test/silent-heartbeat-rows.test.js.map +0 -1
  788. package/dist/test/silent-heartbeat.test.d.ts +0 -2
  789. package/dist/test/silent-heartbeat.test.d.ts.map +0 -1
  790. package/dist/test/silent-heartbeat.test.js +0 -165
  791. package/dist/test/silent-heartbeat.test.js.map +0 -1
  792. package/dist/test/state-scaling-e2e.test.d.ts +0 -22
  793. package/dist/test/state-scaling-e2e.test.d.ts.map +0 -1
  794. package/dist/test/state-scaling-e2e.test.js +0 -206
  795. package/dist/test/state-scaling-e2e.test.js.map +0 -1
  796. package/dist/test/state-scaling.test.d.ts +0 -12
  797. package/dist/test/state-scaling.test.d.ts.map +0 -1
  798. package/dist/test/state-scaling.test.js +0 -251
  799. package/dist/test/state-scaling.test.js.map +0 -1
  800. package/dist/test/stop-with-host-operations.test.d.ts +0 -20
  801. package/dist/test/stop-with-host-operations.test.d.ts.map +0 -1
  802. package/dist/test/stop-with-host-operations.test.js +0 -1174
  803. package/dist/test/stop-with-host-operations.test.js.map +0 -1
  804. package/dist/test/stop-with-work-in-flight.test.d.ts +0 -23
  805. package/dist/test/stop-with-work-in-flight.test.d.ts.map +0 -1
  806. package/dist/test/stop-with-work-in-flight.test.js +0 -784
  807. package/dist/test/stop-with-work-in-flight.test.js.map +0 -1
  808. package/dist/test/surgery-marks-receipt.test.d.ts +0 -2
  809. package/dist/test/surgery-marks-receipt.test.d.ts.map +0 -1
  810. package/dist/test/surgery-marks-receipt.test.js +0 -540
  811. package/dist/test/surgery-marks-receipt.test.js.map +0 -1
  812. package/dist/test/thinking-token-stamp.test.d.ts +0 -12
  813. package/dist/test/thinking-token-stamp.test.d.ts.map +0 -1
  814. package/dist/test/thinking-token-stamp.test.js +0 -129
  815. package/dist/test/thinking-token-stamp.test.js.map +0 -1
  816. package/dist/test/timezone.test.d.ts +0 -2
  817. package/dist/test/timezone.test.d.ts.map +0 -1
  818. package/dist/test/timezone.test.js +0 -18
  819. package/dist/test/timezone.test.js.map +0 -1
  820. package/dist/test/tool-batch-hook.test.d.ts +0 -8
  821. package/dist/test/tool-batch-hook.test.d.ts.map +0 -1
  822. package/dist/test/tool-batch-hook.test.js +0 -275
  823. package/dist/test/tool-batch-hook.test.js.map +0 -1
  824. package/dist/test/tool-policy.test.d.ts +0 -2
  825. package/dist/test/tool-policy.test.d.ts.map +0 -1
  826. package/dist/test/tool-policy.test.js +0 -51
  827. package/dist/test/tool-policy.test.js.map +0 -1
  828. package/dist/test/tool-presentation.test.d.ts +0 -2
  829. package/dist/test/tool-presentation.test.d.ts.map +0 -1
  830. package/dist/test/tool-presentation.test.js +0 -268
  831. package/dist/test/tool-presentation.test.js.map +0 -1
  832. package/dist/test/tool-result-content.test.d.ts +0 -2
  833. package/dist/test/tool-result-content.test.d.ts.map +0 -1
  834. package/dist/test/tool-result-content.test.js +0 -37
  835. package/dist/test/tool-result-content.test.js.map +0 -1
  836. package/dist/test/tool-result-guard.test.d.ts +0 -2
  837. package/dist/test/tool-result-guard.test.d.ts.map +0 -1
  838. package/dist/test/tool-result-guard.test.js +0 -3729
  839. package/dist/test/tool-result-guard.test.js.map +0 -1
  840. package/dist/test/tool-result-history.test.d.ts +0 -7
  841. package/dist/test/tool-result-history.test.d.ts.map +0 -1
  842. package/dist/test/tool-result-history.test.js +0 -156
  843. package/dist/test/tool-result-history.test.js.map +0 -1
  844. package/dist/test/tool-result-spill.test.d.ts +0 -13
  845. package/dist/test/tool-result-spill.test.d.ts.map +0 -1
  846. package/dist/test/tool-result-spill.test.js +0 -586
  847. package/dist/test/tool-result-spill.test.js.map +0 -1
  848. package/dist/test/tool-wrapper-prose-guard-integration.test.d.ts +0 -2
  849. package/dist/test/tool-wrapper-prose-guard-integration.test.d.ts.map +0 -1
  850. package/dist/test/tool-wrapper-prose-guard-integration.test.js +0 -485
  851. package/dist/test/tool-wrapper-prose-guard-integration.test.js.map +0 -1
  852. package/dist/test/tool-wrapper-prose-guard.test.d.ts +0 -2
  853. package/dist/test/tool-wrapper-prose-guard.test.d.ts.map +0 -1
  854. package/dist/test/tool-wrapper-prose-guard.test.js +0 -34
  855. package/dist/test/tool-wrapper-prose-guard.test.js.map +0 -1
  856. package/dist/test/tools-observe-parser-conformance.test.d.ts +0 -2
  857. package/dist/test/tools-observe-parser-conformance.test.d.ts.map +0 -1
  858. package/dist/test/tools-observe-parser-conformance.test.js +0 -129
  859. package/dist/test/tools-observe-parser-conformance.test.js.map +0 -1
  860. package/dist/test/trunk-channel-routing.test.d.ts +0 -19
  861. package/dist/test/trunk-channel-routing.test.d.ts.map +0 -1
  862. package/dist/test/trunk-channel-routing.test.js +0 -652
  863. package/dist/test/trunk-channel-routing.test.js.map +0 -1
  864. package/dist/test/tune-out-e2e.test.d.ts +0 -2
  865. package/dist/test/tune-out-e2e.test.d.ts.map +0 -1
  866. package/dist/test/tune-out-e2e.test.js +0 -142
  867. package/dist/test/tune-out-e2e.test.js.map +0 -1
  868. package/dist/test/tune-out-gate-composition.test.d.ts +0 -2
  869. package/dist/test/tune-out-gate-composition.test.d.ts.map +0 -1
  870. package/dist/test/tune-out-gate-composition.test.js +0 -221
  871. package/dist/test/tune-out-gate-composition.test.js.map +0 -1
  872. package/dist/test/tune-out-lifecycle.test.d.ts +0 -2
  873. package/dist/test/tune-out-lifecycle.test.d.ts.map +0 -1
  874. package/dist/test/tune-out-lifecycle.test.js +0 -121
  875. package/dist/test/tune-out-lifecycle.test.js.map +0 -1
  876. package/dist/test/turn-trigger-provenance.test.d.ts +0 -2
  877. package/dist/test/turn-trigger-provenance.test.d.ts.map +0 -1
  878. package/dist/test/turn-trigger-provenance.test.js +0 -137
  879. package/dist/test/turn-trigger-provenance.test.js.map +0 -1
  880. package/dist/test/unconvertible-tool-result.test.d.ts +0 -2
  881. package/dist/test/unconvertible-tool-result.test.d.ts.map +0 -1
  882. package/dist/test/unconvertible-tool-result.test.js +0 -358
  883. package/dist/test/unconvertible-tool-result.test.js.map +0 -1
  884. package/dist/test/unsent-compiles.test.d.ts +0 -2
  885. package/dist/test/unsent-compiles.test.d.ts.map +0 -1
  886. package/dist/test/unsent-compiles.test.js +0 -139
  887. package/dist/test/unsent-compiles.test.js.map +0 -1
  888. package/dist/test/usage-accounting.test.d.ts +0 -2
  889. package/dist/test/usage-accounting.test.d.ts.map +0 -1
  890. package/dist/test/usage-accounting.test.js +0 -13
  891. package/dist/test/usage-accounting.test.js.map +0 -1
  892. package/dist/test/usage-tracker.test.d.ts +0 -2
  893. package/dist/test/usage-tracker.test.d.ts.map +0 -1
  894. package/dist/test/usage-tracker.test.js +0 -129
  895. package/dist/test/usage-tracker.test.js.map +0 -1
  896. package/dist/test/utils-surface.test.d.ts +0 -2
  897. package/dist/test/utils-surface.test.d.ts.map +0 -1
  898. package/dist/test/utils-surface.test.js +0 -145
  899. package/dist/test/utils-surface.test.js.map +0 -1
  900. package/dist/test/workspace-branch-continuation.test.d.ts +0 -15
  901. package/dist/test/workspace-branch-continuation.test.d.ts.map +0 -1
  902. package/dist/test/workspace-branch-continuation.test.js +0 -183
  903. package/dist/test/workspace-branch-continuation.test.js.map +0 -1
  904. package/dist/test/workspace-materialize-freshness.test.d.ts +0 -16
  905. package/dist/test/workspace-materialize-freshness.test.d.ts.map +0 -1
  906. package/dist/test/workspace-materialize-freshness.test.js +0 -252
  907. package/dist/test/workspace-materialize-freshness.test.js.map +0 -1
  908. package/dist/test/workspace-path-containment.test.d.ts +0 -19
  909. package/dist/test/workspace-path-containment.test.d.ts.map +0 -1
  910. package/dist/test/workspace-path-containment.test.js +0 -91
  911. package/dist/test/workspace-path-containment.test.js.map +0 -1
  912. package/dist/test/workspace-read-file-from-disk.test.d.ts +0 -17
  913. package/dist/test/workspace-read-file-from-disk.test.d.ts.map +0 -1
  914. package/dist/test/workspace-read-file-from-disk.test.js +0 -174
  915. package/dist/test/workspace-read-file-from-disk.test.js.map +0 -1
  916. package/dist/test/workspace-read-image.test.d.ts +0 -2
  917. package/dist/test/workspace-read-image.test.d.ts.map +0 -1
  918. package/dist/test/workspace-read-image.test.js +0 -597
  919. package/dist/test/workspace-read-image.test.js.map +0 -1
  920. package/dist/test/workspace-read-text.test.d.ts +0 -2
  921. package/dist/test/workspace-read-text.test.d.ts.map +0 -1
  922. package/dist/test/workspace-read-text.test.js +0 -101
  923. package/dist/test/workspace-read-text.test.js.map +0 -1
  924. package/dist/test/workspace-restore-order.test.d.ts +0 -16
  925. package/dist/test/workspace-restore-order.test.d.ts.map +0 -1
  926. package/dist/test/workspace-restore-order.test.js +0 -140
  927. package/dist/test/workspace-restore-order.test.js.map +0 -1
  928. package/dist/test/workspace-three-way.test.d.ts +0 -12
  929. package/dist/test/workspace-three-way.test.d.ts.map +0 -1
  930. package/dist/test/workspace-three-way.test.js +0 -4094
  931. package/dist/test/workspace-three-way.test.js.map +0 -1
  932. package/dist/test/workspace-watcher.test.d.ts +0 -2
  933. package/dist/test/workspace-watcher.test.d.ts.map +0 -1
  934. package/dist/test/workspace-watcher.test.js +0 -281
  935. package/dist/test/workspace-watcher.test.js.map +0 -1
  936. package/dist/test/xml-round-persist.test.d.ts +0 -19
  937. package/dist/test/xml-round-persist.test.d.ts.map +0 -1
  938. package/dist/test/xml-round-persist.test.js +0 -235
  939. package/dist/test/xml-round-persist.test.js.map +0 -1
  940. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"stop-with-work-in-flight.test.js","sourceRoot":"","sources":["../../test/stop-with-work-in-flight.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=surgery-marks-receipt.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"surgery-marks-receipt.test.d.ts","sourceRoot":"","sources":["../../test/surgery-marks-receipt.test.ts"],"names":[],"mappings":""}
@@ -1,540 +0,0 @@
1
- /**
2
- * Live surgery reports its body change apart from the Discord awareness marks
3
- * it schedules, and does not wait on Discord to accept them.
4
- *
5
- * Field incident (2026-10-07): a web-UI rollback removed 918 Discord messages
6
- * from a resident's context. rollbackToMessage awaited the serial reaction
7
- * drain inside its store reservation, so the operator's surgery-result never
8
- * arrived within the client's 60 s, the store stayed reserved, and every MCPL
9
- * data plane stayed paused for the whole drain. These tests hold the fake
10
- * server's reaction replies to model that drain.
11
- *
12
- * The receipt is a scheduling statement (`markers`), never a delivery claim,
13
- * and a ledger failure after the body change landed is reported as
14
- * `not-scheduled` instead of a failed surgery an operator might retry.
15
- */
16
- import { describe, it, beforeEach, afterEach } from 'node:test';
17
- import assert from 'node:assert/strict';
18
- import { fileURLToPath } from 'node:url';
19
- import { existsSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
20
- import { tmpdir } from 'node:os';
21
- import { join } from 'node:path';
22
- import { AgentFramework, ApiServer, DiscordAwarenessOutbox } from '../src/index.js';
23
- import { MockMembrane } from './helpers/mock-membrane.js';
24
- const FIXTURE = fileURLToPath(new URL('./fixtures/surgery-marks-mcpl-server.mjs', import.meta.url));
25
- function jsonl(path) {
26
- if (!existsSync(path))
27
- return [];
28
- return readFileSync(path, 'utf8').split('\n').filter(Boolean).map((line) => JSON.parse(line));
29
- }
30
- async function waitFor(description, predicate, timeoutMs = 5_000) {
31
- const deadline = Date.now() + timeoutMs;
32
- while (Date.now() < deadline) {
33
- if (predicate())
34
- return;
35
- await new Promise((resolve) => setTimeout(resolve, 10));
36
- }
37
- assert.fail(`timed out waiting for ${description}`);
38
- }
39
- /** Resolve with the promise's value, or fail if it is still pending after ms. */
40
- async function settlesWithin(promise, ms, what) {
41
- let timer;
42
- try {
43
- return await Promise.race([
44
- promise,
45
- new Promise((_, reject) => {
46
- timer = setTimeout(() => reject(new Error(`${what} still pending after ${ms} ms`)), ms);
47
- }),
48
- ]);
49
- }
50
- finally {
51
- if (timer)
52
- clearTimeout(timer);
53
- }
54
- }
55
- describe('surgery marker receipt', () => {
56
- let dir;
57
- let storePath;
58
- let callsPath;
59
- let eventsPath;
60
- let holdPath;
61
- let answerLimitPath;
62
- let probePath;
63
- let framework;
64
- const cm = () => framework.getAgent('resident').getContextManager();
65
- const outboxPath = () => join(storePath, 'recovery', 'discord-awareness-outbox.json');
66
- const ledger = () => new DiscordAwarenessOutbox(outboxPath()).batches();
67
- const internals = () => framework;
68
- /** The delivery gate is up: a generation that requires it, and discord's data plane paused. */
69
- const assertGateUp = (when) => {
70
- assert.equal(internals().discordAwarenessBarrier?.requiresBarrier, true, `${when}: an awareness generation requires the gate`);
71
- assert.equal(internals().mcplServerRegistry?.getServer('discord')?.dataPlaneReady, false, `${when}: discord's data plane is paused`);
72
- };
73
- const probeAnswer = () => jsonl(eventsPath).find((e) => e.event === 'probe-answered');
74
- /** The kinds of the Discord-awareness ops alerts raised from now on, in order. */
75
- const awarenessAlerts = () => {
76
- const kinds = [];
77
- framework.onTrace((event) => {
78
- const alert = event;
79
- if (alert.type === 'ops:alert' && alert.kind?.startsWith('discord-awareness'))
80
- kinds.push(alert.kind);
81
- });
82
- return kinds;
83
- };
84
- /** With `appStore`, the framework gets an app-owned store and no storePath, so its outbox is disabled. */
85
- async function start(withDiscord, appStore, membrane = new MockMembrane()) {
86
- framework = await AgentFramework.create({
87
- ...(appStore ? { store: appStore } : { storePath }),
88
- membrane: membrane.asMembrane(),
89
- agents: [{ name: 'resident', model: 'test-model', systemPrompt: 'You are a resident.' }],
90
- modules: [],
91
- maintenanceIntervalMs: 0,
92
- ...(withDiscord ? {
93
- mcplServers: [{
94
- id: 'discord',
95
- command: process.execPath,
96
- args: [FIXTURE],
97
- env: {
98
- CALLS_PATH: callsPath,
99
- EVENTS_PATH: eventsPath,
100
- HOLD_PATH: holdPath,
101
- ANSWER_LIMIT_PATH: answerLimitPath,
102
- PROBE_PATH: probePath,
103
- },
104
- enabledFeatureSets: ['chat'],
105
- }],
106
- } : {}),
107
- });
108
- }
109
- /** A kept message, the rollback target, then `n` addressable messages. */
110
- function seed(n) {
111
- cm().addMessage('Operator', [{ type: 'text', text: 'kept' }], {
112
- serverId: 'discord', channelId: 'discord:g1:dm', messageId: 'kept',
113
- });
114
- const tail = String(cm().addMessage('Operator', [{ type: 'text', text: 'last good' }], {
115
- serverId: 'discord', channelId: 'discord:g1:dm', messageId: 'tail',
116
- }));
117
- const removed = [];
118
- for (let i = 0; i < n; i++) {
119
- removed.push(String(cm().addMessage(`Member${i}`, [{ type: 'text', text: `ambient ${i}` }], {
120
- serverId: 'discord', channelId: 'discord:g1:c1', messageId: `amb-${i}`,
121
- })));
122
- }
123
- return { tail, removed };
124
- }
125
- beforeEach(() => {
126
- dir = mkdtempSync(join(tmpdir(), 'surgery-marks-'));
127
- storePath = join(dir, 'store');
128
- callsPath = join(dir, 'calls.jsonl');
129
- eventsPath = join(dir, 'events.jsonl');
130
- holdPath = join(dir, 'release-reactions');
131
- answerLimitPath = join(dir, 'answer-limit');
132
- probePath = join(dir, 'send-probe');
133
- });
134
- afterEach(async () => {
135
- writeFileSync(holdPath, '1');
136
- await framework?.stop();
137
- rmSync(dir, { recursive: true, force: true });
138
- });
139
- it('rollback returns once the batch is active, before Discord has accepted any reaction', async () => {
140
- await start(true);
141
- const { tail } = seed(3);
142
- const result = await settlesWithin(framework.rollbackToMessage('resident', { messageId: tail }), 3_000, 'rollbackToMessage with reactions held');
143
- assert.equal(result.messagesRemoved, 3);
144
- assert.equal(result.markers.status, 'queued');
145
- assert.equal(result.markers.queued, 3);
146
- const [batch] = ledger();
147
- assert.equal(batch.status, 'active', 'the batch is durably active before the call returns');
148
- assert.equal(result.markers.status === 'queued' && result.markers.batchId, batch.id);
149
- assert.equal(jsonl(eventsPath).filter((e) => e.event === 'reaction-answered').length, 0, 'no reaction had been accepted when the rollback returned');
150
- // Delivery continues in the background and completes once Discord answers.
151
- writeFileSync(holdPath, '1');
152
- await waitFor('all three reactions answered', () => jsonl(eventsPath).filter((e) => e.event === 'reaction-answered').length === 3);
153
- await framework.syncDiscordAwarenessMarkers();
154
- const entries = ledger()[0].refs;
155
- assert.deepEqual(entries.map((ref) => ref.deliveryStatus), ['applied', 'applied', 'applied']);
156
- assert.deepEqual(jsonl(callsPath).map((call) => `${call.name}:${call.args.emoji}`), ['add_reaction:💤', 'add_reaction:💤', 'add_reaction:💤']);
157
- const logged = new Map(framework.getOperatorLog({ limit: 10 }).map((entry) => [entry.kind, entry]));
158
- assert.deepEqual(logged.get('rollback')?.result?.markers, result.markers);
159
- });
160
- it('releases the store while delivery runs, but keeps MCPL traffic behind the delivery gate', async () => {
161
- await start(true);
162
- const { removed } = seed(4);
163
- await settlesWithin(framework.rollbackToMessage('resident', { messageId: removed[1] }), 3_000, 'rollbackToMessage with reactions held');
164
- await waitFor('the first reaction call to reach the server', () => jsonl(callsPath).length >= 1);
165
- // The store reservation is released: a second surgery is admitted while
166
- // the first one's reactions are still unanswered.
167
- const second = await settlesWithin(framework.suppressMessages('resident', { messageIds: [removed[0]] }), 3_000, 'a second surgery during delivery');
168
- assert.equal(second.messagesRemoved, 1);
169
- assert.equal(second.markers.status, 'queued');
170
- // The gate was installed before release: ordinary channel traffic sent
171
- // during delivery is not answered until the reactions are.
172
- assertGateUp('during the first surgery\'s delivery');
173
- writeFileSync(probePath, '1');
174
- await waitFor('the probe to be sent', () => jsonl(eventsPath).some((e) => e.event === 'probe-sent'));
175
- await new Promise((resolve) => setTimeout(resolve, 200));
176
- assert.equal(jsonl(eventsPath).some((e) => e.event === 'probe-answered'), false, 'channel traffic waits behind the delivery gate');
177
- writeFileSync(holdPath, '1');
178
- await waitFor('the probe to be answered after delivery', () => jsonl(eventsPath).some((e) => e.event === 'probe-answered'));
179
- assert.equal(probeAnswer()?.error, null, 'the probe was answered, not refused');
180
- // The server's own event order, not timestamps (two events can share a
181
- // millisecond), and every expected reaction by id: one compared only with
182
- // the reactions that happened to be answered would pass if the second
183
- // surgery's batch were never delivered.
184
- const events = jsonl(eventsPath);
185
- const probeIndex = events.findIndex((e) => e.event === 'probe-answered');
186
- const answeredBeforeProbe = events.slice(0, probeIndex)
187
- .filter((e) => e.event === 'reaction-answered')
188
- .map((e) => e.messageId)
189
- .sort();
190
- assert.deepEqual(answeredBeforeProbe, ['amb-0', 'amb-2', 'amb-3'], 'both surgeries\' reactions are answered before channel traffic is released');
191
- });
192
- it('restoring the source while delivery runs keeps traffic gated until the running drain is done', async () => {
193
- await start(true);
194
- const { tail } = seed(3);
195
- const rollback = await settlesWithin(framework.rollbackToMessage('resident', { messageId: tail }), 3_000, 'rollbackToMessage with reactions held');
196
- await waitFor('the first reaction call to reach the server', () => jsonl(callsPath).length >= 1);
197
- // The operator restores the source the way the branch-switch API does
198
- // (store switch, then synchronization) while the first add_reaction still
199
- // waits for its reply. Reconciliation makes every mark undesired, and the
200
- // held one is not present yet, so the ledger shows nothing pending: only
201
- // the running drain knows it will still send its saved adds.
202
- framework.getStore().switchBranch(rollback.sourceBranch);
203
- const restored = framework.syncDiscordAwarenessMarkers();
204
- // Nothing pending for discord: only the running drain keeps the gate up.
205
- assert.equal(new DiscordAwarenessOutbox(outboxPath()).pending('discord').length, 0, 'the ledger shows nothing pending');
206
- assertGateUp('after the restore');
207
- writeFileSync(probePath, '1');
208
- await waitFor('the probe to be sent', () => jsonl(eventsPath).some((e) => e.event === 'probe-sent'));
209
- await new Promise((resolve) => setTimeout(resolve, 200));
210
- assert.equal(jsonl(eventsPath).some((e) => e.event === 'probe-answered'), false, 'channel traffic waits for the running drain even though nothing appears pending');
211
- writeFileSync(holdPath, '1');
212
- await settlesWithin(restored, 5_000, "the restore's synchronization");
213
- await waitFor('the probe to be answered after delivery', () => jsonl(eventsPath).some((e) => e.event === 'probe-answered'));
214
- assert.equal(probeAnswer()?.error, null, 'the probe was answered, not refused');
215
- // Every reaction request the drain made, including the removals the
216
- // restore needs, was answered before channel traffic was released, and
217
- // the restore leaves no mark behind.
218
- const events = jsonl(eventsPath);
219
- const probeIndex = events.findIndex((e) => e.event === 'probe-answered');
220
- const answered = (from, to) => events.slice(from, to).filter((e) => e.event === 'reaction-answered').length;
221
- assert.equal(answered(0, probeIndex), jsonl(callsPath).length, 'every reaction call answered before the probe');
222
- assert.equal(answered(probeIndex), 0, 'no reaction answered after the probe');
223
- assert.deepEqual(ledger()[0].refs.map((ref) => [ref.messageId, ref.desired, ref.markerPresent, ref.deliveryStatus]), [['amb-0', false, false, 'applied'], ['amb-1', false, false, 'applied'], ['amb-2', false, false, 'applied']]);
224
- });
225
- it('a rollback whose marker bookkeeping fails after the switch reports the body as applied', async () => {
226
- await start(true);
227
- const { tail } = seed(2);
228
- const alerts = awarenessAlerts();
229
- const original = DiscordAwarenessOutbox.prototype.activate;
230
- DiscordAwarenessOutbox.prototype.activate = function () {
231
- throw new Error('injected ledger failure');
232
- };
233
- let result;
234
- try {
235
- result = await framework.rollbackToMessage('resident', { messageId: tail });
236
- }
237
- finally {
238
- DiscordAwarenessOutbox.prototype.activate = original;
239
- }
240
- assert.equal(cm().currentBranch().name, result.targetBranch, 'the rollback stands');
241
- assert.equal(result.messagesRemoved, 2);
242
- assert.equal(result.markers.status, 'not-scheduled');
243
- assert.match(result.markers.status === 'not-scheduled' ? result.markers.error : '', /injected ledger failure/);
244
- const entry = framework.getOperatorLog({ limit: 10 }).find((e) => e.kind === 'rollback');
245
- assert.equal(entry?.error, undefined, 'logged as an applied rollback, not a failure');
246
- assert.equal(entry?.result?.markers?.status, 'not-scheduled');
247
- assert.deepEqual(alerts, ['discord-awareness-not-scheduled'], 'the operator is told its marks were not scheduled');
248
- // "Not scheduled" holds across the reconciliation delivery runs and
249
- // across a restart: the batch was retired, so nothing can promote it.
250
- writeFileSync(holdPath, '1');
251
- await framework.syncDiscordAwarenessMarkers();
252
- assert.deepEqual(ledger(), []);
253
- await framework.stop();
254
- await start(true);
255
- await framework.syncDiscordAwarenessMarkers();
256
- assert.deepEqual(ledger(), []);
257
- assert.equal(jsonl(callsPath).length, 0, 'no reaction was ever sent');
258
- });
259
- it('reports unresolved bookkeeping when the batch can be neither activated nor retired', async () => {
260
- await start(false);
261
- const { tail } = seed(2);
262
- const alerts = awarenessAlerts();
263
- const activate = DiscordAwarenessOutbox.prototype.activate;
264
- const discard = DiscordAwarenessOutbox.prototype.discard;
265
- DiscordAwarenessOutbox.prototype.activate = function () {
266
- throw new Error('injected ledger failure');
267
- };
268
- DiscordAwarenessOutbox.prototype.discard = function () {
269
- throw new Error('injected retire failure');
270
- };
271
- let result;
272
- try {
273
- result = await framework.rollbackToMessage('resident', { messageId: tail });
274
- }
275
- finally {
276
- DiscordAwarenessOutbox.prototype.activate = activate;
277
- DiscordAwarenessOutbox.prototype.discard = discard;
278
- }
279
- assert.equal(cm().currentBranch().name, result.targetBranch, 'the rollback stands');
280
- // The receipt promises nothing about this batch: it is still in the
281
- // ledger, and a reconciliation may promote and deliver it.
282
- assert.equal(result.markers.status, 'unresolved');
283
- const batches = ledger();
284
- assert.equal(batches.length, 1);
285
- assert.equal(result.markers.status === 'unresolved' && result.markers.batchId, batches[0].id);
286
- assert.match(result.markers.status === 'unresolved' ? result.markers.error : '', /injected ledger failure/);
287
- assert.deepEqual(alerts, ['discord-awareness-unresolved'], 'the operator is told the batch may still be delivered');
288
- });
289
- it('a suppression whose marker bookkeeping fails after the last redaction stands', async () => {
290
- await start(false);
291
- const { removed } = seed(3);
292
- const alerts = awarenessAlerts();
293
- const original = DiscordAwarenessOutbox.prototype.activate;
294
- DiscordAwarenessOutbox.prototype.activate = function () {
295
- throw new Error('injected ledger failure');
296
- };
297
- let result;
298
- try {
299
- result = await framework.suppressMessages('resident', { messageIds: [removed[1]] });
300
- }
301
- finally {
302
- DiscordAwarenessOutbox.prototype.activate = original;
303
- }
304
- assert.equal(cm().currentBranch().name, result.targetBranch, 'the suppression is not undone');
305
- assert.deepEqual(result.removedIds, [removed[1]]);
306
- assert.ok(!cm().getAllMessages().some((m) => String(m.id) === removed[1]));
307
- assert.equal(result.markers.status, 'not-scheduled');
308
- assert.deepEqual(ledger(), [], 'every interval committed, so the retired journal loses nothing');
309
- const entry = framework.getOperatorLog({ limit: 10 }).find((e) => e.kind === 'suppress');
310
- assert.equal(entry?.error, undefined, 'logged as an applied suppression');
311
- assert.deepEqual(entry?.result?.markers, result.markers);
312
- assert.deepEqual(alerts, ['discord-awareness-not-scheduled']);
313
- });
314
- it('installs the delivery gate before the surgery releases the store', async () => {
315
- await start(true);
316
- const { tail } = seed(2);
317
- const atRelease = [];
318
- const reserve = internals().reserveStoreForSurgery.bind(framework);
319
- internals().reserveStoreForSurgery = (verb, agentName) => {
320
- const release = reserve(verb, agentName);
321
- return () => {
322
- const barrier = internals().discordAwarenessBarrier;
323
- atRelease.push({ installed: barrier !== null, requires: barrier?.requiresBarrier });
324
- release();
325
- };
326
- };
327
- await settlesWithin(framework.rollbackToMessage('resident', { messageId: tail }), 3_000, 'rollback with reactions held');
328
- assert.deepEqual(atRelease, [{ installed: true, requires: true }]);
329
- });
330
- it('a switch, an undo, a redo and a turn undo during a running drain each start delivery and return while replies are held', async () => {
331
- await start(true);
332
- internals().recordTurnCheckpoint('resident');
333
- const { tail } = seed(3);
334
- const rollback = await settlesWithin(framework.rollbackToMessage('resident', { messageId: tail }), 3_000, 'rollbackToMessage with reactions held');
335
- await waitFor('the first reaction call to reach the server', () => jsonl(callsPath).length >= 1);
336
- // The web API's commands, called as its WebSocket dispatch calls them.
337
- const server = new ApiServer(framework, { port: 0 });
338
- // Each command starts delivery of the marks it moved before it returns: it
339
- // arms a newer generation, which holds traffic, and doesn't wait for it.
340
- let generation = internals().discordAwarenessBarrier.generation;
341
- const startedDelivery = (when) => {
342
- assertGateUp(when);
343
- const current = internals().discordAwarenessBarrier.generation;
344
- assert.ok(current > generation, `${when}: a newer generation, the delivery the command started`);
345
- generation = current;
346
- };
347
- const switched = await settlesWithin(server.cmdBranchSwitch({ name: rollback.sourceBranch }), 3_000, 'web branch switch');
348
- assert.equal(switched.switched, true);
349
- startedDelivery('after the switch');
350
- const undone = await settlesWithin(server.cmdUndo({ agentName: 'resident' }), 3_000, 'web undo');
351
- assert.equal(undone.undone, true);
352
- startedDelivery('after the undo');
353
- const redone = await settlesWithin(server.cmdRedo({ agentName: 'resident' }), 3_000, 'web redo');
354
- assert.equal(redone.redone, true);
355
- startedDelivery('after the redo');
356
- const turnUndo = await settlesWithin(internals().handleHostCommand('discord', { command: 'undo', agentName: 'resident', turns: 1 }), 3_000, 'host/command turn undo');
357
- assert.equal(turnUndo.undone, 1);
358
- startedDelivery('after the turn undo');
359
- // None of them waited for Discord: no reaction has been answered.
360
- assert.equal(jsonl(eventsPath).filter((e) => e.event === 'reaction-answered').length, 0);
361
- // Once Discord answers, the deliveries the commands started finish on
362
- // their own, with no further sync, and leave nothing pending.
363
- writeFileSync(holdPath, '1');
364
- await waitFor('the deliveries the commands started to finish', () => internals().discordAwarenessBarrier === null);
365
- assert.equal(new DiscordAwarenessOutbox(outboxPath()).pending().length, 0, 'every mark the moves needed was delivered');
366
- });
367
- it('a rollback, its restore and a redo during one drain: every mark is sent before traffic is released', async () => {
368
- await start(true);
369
- const { tail } = seed(2);
370
- const rollback = await settlesWithin(framework.rollbackToMessage('resident', { messageId: tail }), 3_000, 'rollbackToMessage with reactions held');
371
- await waitFor('the first add to reach the server', () => jsonl(callsPath).length >= 1);
372
- // The source is restored while the first add waits for its reply.
373
- framework.getStore().switchBranch(rollback.sourceBranch);
374
- const restored = framework.syncDiscordAwarenessMarkers();
375
- // The drain sends both adds, then the removals the restore needs. The
376
- // first removal is held.
377
- writeFileSync(answerLimitPath, '2');
378
- writeFileSync(holdPath, '1');
379
- await waitFor('the first removal to reach the server', () => jsonl(callsPath).some((call) => call.name === 'remove_reaction'));
380
- // The rollback is redone while that removal is in flight. The drain has
381
- // already attempted both adds, so it won't send them again itself.
382
- framework.getStore().switchBranch(rollback.targetBranch);
383
- const redone = framework.syncDiscordAwarenessMarkers();
384
- writeFileSync(probePath, '1');
385
- await waitFor('the probe to be sent', () => jsonl(eventsPath).some((e) => e.event === 'probe-sent'));
386
- assertGateUp('after the redo');
387
- writeFileSync(answerLimitPath, '99');
388
- await settlesWithin(Promise.all([restored, redone]), 5_000, 'the restore and redo synchronizations');
389
- await waitFor('the probe to be answered after delivery', () => probeAnswer() !== undefined);
390
- assert.equal(probeAnswer()?.error, null, 'the probe was answered, not refused');
391
- assert.deepEqual(ledger()[0].refs.map((ref) => [ref.messageId, ref.desired, ref.markerPresent]), [['amb-0', true, true], ['amb-1', true, true]], 'the redo\'s marks are on Discord');
392
- const events = jsonl(eventsPath);
393
- const probeIndex = events.findIndex((e) => e.event === 'probe-answered');
394
- assert.deepEqual(events.slice(0, probeIndex).filter((e) => e.event === 'reaction-answered').map((e) => `${e.name}:${e.messageId}`), [
395
- 'add_reaction:amb-0', 'add_reaction:amb-1',
396
- 'remove_reaction:amb-0', 'remove_reaction:amb-1',
397
- 'add_reaction:amb-0', 'add_reaction:amb-1',
398
- ], 'the redo\'s adds were sent again, before channel traffic was released');
399
- });
400
- it('a turn for channel traffic admitted before the gate may start before the drain completes', async () => {
401
- // Accepted, and stated in the changelog: the surgery's store reservation
402
- // ends once the gate is up, so no operator command waits on Discord, and
403
- // the gate holds only traffic that arrives after it. Before this change
404
- // the reservation held such a turn until the whole drain had finished.
405
- // This pins that accepted boundary: holding pre-gate work by some other
406
- // means would be a deliberate change to it, made together with the text.
407
- const membrane = new MockMembrane();
408
- await start(true, undefined, membrane);
409
- framework.start();
410
- const { tail } = seed(3);
411
- // The switch the rollback awaits goes on only once one ordinary channel
412
- // message has been admitted and answered, before any gate is up.
413
- const switchBranch = cm().switchBranch.bind(cm());
414
- cm().switchBranch = async (name) => {
415
- writeFileSync(probePath, '1');
416
- await waitFor('the channel message answered during the switch', () => probeAnswer() !== undefined);
417
- return switchBranch(name);
418
- };
419
- const turnsBefore = membrane.calls.length;
420
- await settlesWithin(framework.rollbackToMessage('resident', { messageId: tail }), 3_000, 'rollbackToMessage with reactions held');
421
- assert.equal(probeAnswer()?.error, null, 'the channel message was admitted');
422
- await waitFor('a turn for the channel message', () => membrane.calls.length > turnsBefore);
423
- // The turn started while the drain still runs: the first reaction request
424
- // is on the wire, but every reply is still held and the gate is still up.
425
- await waitFor('the first reaction request to reach the server', () => jsonl(callsPath).length >= 1);
426
- assert.equal(jsonl(eventsPath).filter((e) => e.event === 'reaction-answered').length, 0, 'no reaction reply has been answered');
427
- assertGateUp('while that turn runs');
428
- assert.ok(JSON.stringify(membrane.calls[turnsBefore]).includes('ordinary traffic while marks are delivered'), 'the turn carries the channel message');
429
- });
430
- it('with the awareness outbox disabled, a rollback schedules no marks and puts up no gate', async () => {
431
- const { JsStore } = await import('@animalabs/chronicle');
432
- await start(true, JsStore.openOrCreate({ path: join(dir, 'app-store') }));
433
- const { tail } = seed(2);
434
- const result = await settlesWithin(framework.rollbackToMessage('resident', { messageId: tail }), 3_000, 'rollbackToMessage without an outbox');
435
- assert.equal(result.messagesRemoved, 2);
436
- assert.equal(result.removedRefs.length, 2, 'it removed addressable Discord messages');
437
- assert.deepEqual(result.markers, { status: 'none', queued: 0 });
438
- assert.equal(internals().discordAwarenessBarrier, null, 'no gate');
439
- // Reactions are still held, and none is needed: traffic flows at once.
440
- writeFileSync(probePath, '1');
441
- await waitFor('the probe to be answered with no gate', () => probeAnswer() !== undefined);
442
- assert.equal(probeAnswer()?.error, null);
443
- assert.equal(jsonl(callsPath).length, 0, 'no reaction was sent');
444
- });
445
- it('a delivery that fails to start raises an ops alert and leaves no unhandled rejection', async () => {
446
- await start(true);
447
- const { tail } = seed(2);
448
- const alerts = [];
449
- framework.onTrace((event) => {
450
- if (event.type === 'ops:alert')
451
- alerts.push(event);
452
- });
453
- const unhandled = [];
454
- const onUnhandled = (reason) => { unhandled.push(reason); };
455
- process.on('unhandledRejection', onUnhandled);
456
- const reconcile = DiscordAwarenessOutbox.prototype.reconcileForBranch;
457
- DiscordAwarenessOutbox.prototype.reconcileForBranch = function () {
458
- throw new Error('injected ledger read failure');
459
- };
460
- let result;
461
- try {
462
- result = await settlesWithin(framework.rollbackToMessage('resident', { messageId: tail }), 3_000, 'rollbackToMessage whose delivery fails to start');
463
- await waitFor('the delivery alert', () => alerts.some((alert) => alert.kind === 'discord-awareness-delivery'));
464
- await new Promise((resolve) => setTimeout(resolve, 50));
465
- }
466
- finally {
467
- DiscordAwarenessOutbox.prototype.reconcileForBranch = reconcile;
468
- process.off('unhandledRejection', onUnhandled);
469
- }
470
- assert.deepEqual(unhandled, [], 'the background failure is handled');
471
- assert.match(alerts.find((alert) => alert.kind === 'discord-awareness-delivery').message, /after rollback failed: .*injected ledger read failure/);
472
- // Scheduling succeeded: the batch stays durably active for the next sync.
473
- assert.equal(result.markers.status, 'queued');
474
- assert.equal(ledger()[0].status, 'active');
475
- });
476
- it('a suppression with nothing addressable reports none, whether or not its journal can be closed', async () => {
477
- await start(false);
478
- const alerts = awarenessAlerts();
479
- const local = String(cm().addMessage('resident', [{ type: 'text', text: 'local only' }], {}));
480
- const other = String(cm().addMessage('resident', [{ type: 'text', text: 'also local' }], {}));
481
- cm().addMessage('resident', [{ type: 'text', text: 'after' }], {});
482
- const closed = await framework.suppressMessages('resident', { messageIds: [local] });
483
- assert.deepEqual(closed.markers, { status: 'none', queued: 0 });
484
- const [journal] = ledger();
485
- assert.equal(journal?.status, 'active', 'activated, which closes the resume journal');
486
- assert.deepEqual(journal.refs, []);
487
- // When the journal can be neither activated nor retired, it still
488
- // schedules nothing, and the receipt says none, not unresolved.
489
- const activate = DiscordAwarenessOutbox.prototype.activate;
490
- const discard = DiscordAwarenessOutbox.prototype.discard;
491
- DiscordAwarenessOutbox.prototype.activate = function () { throw new Error('injected ledger failure'); };
492
- DiscordAwarenessOutbox.prototype.discard = function () { throw new Error('injected retire failure'); };
493
- let stuck;
494
- try {
495
- stuck = await framework.suppressMessages('resident', { messageIds: [other] });
496
- }
497
- finally {
498
- DiscordAwarenessOutbox.prototype.activate = activate;
499
- DiscordAwarenessOutbox.prototype.discard = discard;
500
- }
501
- assert.deepEqual(stuck.markers, { status: 'none', queued: 0 });
502
- assert.equal(ledger().filter((batch) => batch.status === 'prepared').length, 1, 'its journal is left prepared');
503
- assert.deepEqual(alerts, [], 'no marks were at stake, so no alert');
504
- });
505
- it('a suppression whose batch can be neither activated nor retired reports unresolved', async () => {
506
- await start(false);
507
- const { removed } = seed(3);
508
- const alerts = awarenessAlerts();
509
- const activate = DiscordAwarenessOutbox.prototype.activate;
510
- const discard = DiscordAwarenessOutbox.prototype.discard;
511
- DiscordAwarenessOutbox.prototype.activate = function () { throw new Error('injected ledger failure'); };
512
- DiscordAwarenessOutbox.prototype.discard = function () { throw new Error('injected retire failure'); };
513
- let result;
514
- try {
515
- result = await framework.suppressMessages('resident', { messageIds: [removed[1]] });
516
- }
517
- finally {
518
- DiscordAwarenessOutbox.prototype.activate = activate;
519
- DiscordAwarenessOutbox.prototype.discard = discard;
520
- }
521
- assert.equal(cm().currentBranch().name, result.targetBranch, 'the suppression stands');
522
- assert.equal(result.markers.status, 'unresolved');
523
- const [batch] = ledger();
524
- assert.equal(batch.status, 'prepared');
525
- assert.equal(result.markers.status === 'unresolved' && result.markers.batchId, batch.id);
526
- const entry = framework.getOperatorLog({ limit: 10 }).find((e) => e.kind === 'suppress');
527
- assert.deepEqual(entry?.result?.markers, result.markers);
528
- assert.deepEqual(alerts, ['discord-awareness-unresolved']);
529
- });
530
- it('a surgery that removes nothing addressable schedules no marks', async () => {
531
- await start(false);
532
- const keep = String(cm().addMessage('Operator', [{ type: 'text', text: 'kept' }], {}));
533
- cm().addMessage('resident', [{ type: 'text', text: 'local only' }], {});
534
- const result = await framework.rollbackToMessage('resident', { messageId: keep });
535
- assert.equal(result.messagesRemoved, 1, 'the rollback did change the body');
536
- assert.deepEqual(result.markers, { status: 'none', queued: 0 });
537
- assert.equal(ledger().length, 0);
538
- });
539
- });
540
- //# sourceMappingURL=surgery-marks-receipt.test.js.map