@animalabs/agent-framework 0.22.0 → 0.22.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/README.md +12 -5
  2. package/dist/src/agent.d.ts +192 -19
  3. package/dist/src/agent.d.ts.map +1 -1
  4. package/dist/src/agent.js +407 -66
  5. package/dist/src/agent.js.map +1 -1
  6. package/dist/src/api/mcp-server-core.d.ts +41 -0
  7. package/dist/src/api/mcp-server-core.d.ts.map +1 -0
  8. package/dist/src/api/mcp-server-core.js +593 -0
  9. package/dist/src/api/mcp-server-core.js.map +1 -0
  10. package/dist/src/api/mcp-server.d.ts +2 -36
  11. package/dist/src/api/mcp-server.d.ts.map +1 -1
  12. package/dist/src/api/mcp-server.js +15 -595
  13. package/dist/src/api/mcp-server.js.map +1 -1
  14. package/dist/src/api/server.d.ts +9 -1
  15. package/dist/src/api/server.d.ts.map +1 -1
  16. package/dist/src/api/server.js +84 -23
  17. package/dist/src/api/server.js.map +1 -1
  18. package/dist/src/api/types.d.ts +9 -1
  19. package/dist/src/api/types.d.ts.map +1 -1
  20. package/dist/src/code-execution/py-runner.d.ts.map +1 -1
  21. package/dist/src/code-execution/py-runner.js.map +1 -1
  22. package/dist/src/framework.d.ts +682 -103
  23. package/dist/src/framework.d.ts.map +1 -1
  24. package/dist/src/framework.js +3202 -718
  25. package/dist/src/framework.js.map +1 -1
  26. package/dist/src/gate/event-gate.d.ts.map +1 -1
  27. package/dist/src/gate/gate-script.d.ts.map +1 -1
  28. package/dist/src/gate/gate-script.js.map +1 -1
  29. package/dist/src/index.d.ts +4 -4
  30. package/dist/src/index.d.ts.map +1 -1
  31. package/dist/src/index.js +2 -2
  32. package/dist/src/index.js.map +1 -1
  33. package/dist/src/mcpl/capability-grant.d.ts.map +1 -1
  34. package/dist/src/mcpl/channel-registry.d.ts +26 -7
  35. package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
  36. package/dist/src/mcpl/channel-registry.js +102 -22
  37. package/dist/src/mcpl/channel-registry.js.map +1 -1
  38. package/dist/src/mcpl/checkpoint-manager.d.ts.map +1 -1
  39. package/dist/src/mcpl/checkpoint-manager.js.map +1 -1
  40. package/dist/src/mcpl/conversation-router.d.ts.map +1 -1
  41. package/dist/src/mcpl/errors.js.map +1 -1
  42. package/dist/src/mcpl/feature-set-manager.d.ts.map +1 -1
  43. package/dist/src/mcpl/feature-set-manager.js +4 -3
  44. package/dist/src/mcpl/feature-set-manager.js.map +1 -1
  45. package/dist/src/mcpl/hook-orchestrator.d.ts.map +1 -1
  46. package/dist/src/mcpl/index.d.ts +2 -0
  47. package/dist/src/mcpl/index.d.ts.map +1 -1
  48. package/dist/src/mcpl/index.js.map +1 -1
  49. package/dist/src/mcpl/inference-router.d.ts.map +1 -1
  50. package/dist/src/mcpl/log-value.d.ts +54 -0
  51. package/dist/src/mcpl/log-value.d.ts.map +1 -0
  52. package/dist/src/mcpl/log-value.js +109 -0
  53. package/dist/src/mcpl/log-value.js.map +1 -0
  54. package/dist/src/mcpl/prose-stream-router.d.ts +6 -6
  55. package/dist/src/mcpl/prose-stream-router.d.ts.map +1 -1
  56. package/dist/src/mcpl/prose-stream-router.js +4 -4
  57. package/dist/src/mcpl/prose-stream-router.js.map +1 -1
  58. package/dist/src/mcpl/push-coalescer.d.ts +38 -3
  59. package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
  60. package/dist/src/mcpl/push-coalescer.js +81 -16
  61. package/dist/src/mcpl/push-coalescer.js.map +1 -1
  62. package/dist/src/mcpl/push-handler.d.ts +26 -3
  63. package/dist/src/mcpl/push-handler.d.ts.map +1 -1
  64. package/dist/src/mcpl/push-handler.js +87 -23
  65. package/dist/src/mcpl/push-handler.js.map +1 -1
  66. package/dist/src/mcpl/reference-fetcher.d.ts +2 -1
  67. package/dist/src/mcpl/reference-fetcher.d.ts.map +1 -1
  68. package/dist/src/mcpl/reference-fetcher.js +20 -9
  69. package/dist/src/mcpl/reference-fetcher.js.map +1 -1
  70. package/dist/src/mcpl/references.d.ts +29 -6
  71. package/dist/src/mcpl/references.d.ts.map +1 -1
  72. package/dist/src/mcpl/references.js +57 -16
  73. package/dist/src/mcpl/references.js.map +1 -1
  74. package/dist/src/mcpl/refusal-lines.d.ts +37 -0
  75. package/dist/src/mcpl/refusal-lines.d.ts.map +1 -0
  76. package/dist/src/mcpl/refusal-lines.js +61 -0
  77. package/dist/src/mcpl/refusal-lines.js.map +1 -0
  78. package/dist/src/mcpl/scope-manager.d.ts.map +1 -1
  79. package/dist/src/mcpl/server-connection.d.ts +46 -3
  80. package/dist/src/mcpl/server-connection.d.ts.map +1 -1
  81. package/dist/src/mcpl/server-connection.js +98 -15
  82. package/dist/src/mcpl/server-connection.js.map +1 -1
  83. package/dist/src/mcpl/server-registry.d.ts.map +1 -1
  84. package/dist/src/mcpl/tool-classes.d.ts +1 -1
  85. package/dist/src/mcpl/tool-classes.d.ts.map +1 -1
  86. package/dist/src/mcpl/tool-classes.js +3 -2
  87. package/dist/src/mcpl/tool-classes.js.map +1 -1
  88. package/dist/src/mcpl/tool-lifecycle.d.ts.map +1 -1
  89. package/dist/src/mcpl/tool-lifecycle.js.map +1 -1
  90. package/dist/src/mcpl/transport.d.ts +23 -5
  91. package/dist/src/mcpl/transport.d.ts.map +1 -1
  92. package/dist/src/mcpl/transport.js +103 -10
  93. package/dist/src/mcpl/transport.js.map +1 -1
  94. package/dist/src/mcpl/types.d.ts +30 -26
  95. package/dist/src/mcpl/types.d.ts.map +1 -1
  96. package/dist/src/mcpl/types.js.map +1 -1
  97. package/dist/src/module-registry.d.ts +9 -3
  98. package/dist/src/module-registry.d.ts.map +1 -1
  99. package/dist/src/module-registry.js +3 -2
  100. package/dist/src/module-registry.js.map +1 -1
  101. package/dist/src/modules/api/index.d.ts.map +1 -1
  102. package/dist/src/modules/discord/discord-js-client.d.ts.map +1 -1
  103. package/dist/src/modules/discord/discord-js-client.js.map +1 -1
  104. package/dist/src/modules/discord/index.d.ts.map +1 -1
  105. package/dist/src/modules/discord/index.js +4 -2
  106. package/dist/src/modules/discord/index.js.map +1 -1
  107. package/dist/src/modules/health/index.d.ts.map +1 -1
  108. package/dist/src/modules/health/index.js.map +1 -1
  109. package/dist/src/modules/history/index.d.ts.map +1 -1
  110. package/dist/src/modules/history/index.js.map +1 -1
  111. package/dist/src/modules/history/semantic.d.ts.map +1 -1
  112. package/dist/src/modules/history/semantic.js.map +1 -1
  113. package/dist/src/modules/workspace/branch-intent.d.ts.map +1 -1
  114. package/dist/src/modules/workspace/branch-intent.js.map +1 -1
  115. package/dist/src/modules/workspace/disk-agreement.d.ts +22 -4
  116. package/dist/src/modules/workspace/disk-agreement.d.ts.map +1 -1
  117. package/dist/src/modules/workspace/disk-agreement.js +63 -25
  118. package/dist/src/modules/workspace/disk-agreement.js.map +1 -1
  119. package/dist/src/modules/workspace/effects.d.ts.map +1 -1
  120. package/dist/src/modules/workspace/index.d.ts +8 -4
  121. package/dist/src/modules/workspace/index.d.ts.map +1 -1
  122. package/dist/src/modules/workspace/index.js +85 -16
  123. package/dist/src/modules/workspace/index.js.map +1 -1
  124. package/dist/src/modules/workspace/observe.d.ts +56 -11
  125. package/dist/src/modules/workspace/observe.d.ts.map +1 -1
  126. package/dist/src/modules/workspace/observe.js +288 -43
  127. package/dist/src/modules/workspace/observe.js.map +1 -1
  128. package/dist/src/modules/workspace/reconcile.d.ts +31 -1
  129. package/dist/src/modules/workspace/reconcile.d.ts.map +1 -1
  130. package/dist/src/modules/workspace/reconcile.js +63 -12
  131. package/dist/src/modules/workspace/reconcile.js.map +1 -1
  132. package/dist/src/modules/workspace/types.d.ts +27 -2
  133. package/dist/src/modules/workspace/types.d.ts.map +1 -1
  134. package/dist/src/modules/workspace/types.js.map +1 -1
  135. package/dist/src/modules/workspace/watcher.d.ts.map +1 -1
  136. package/dist/src/modules/workspace/watcher.js.map +1 -1
  137. package/dist/src/operator-log.d.ts +41 -0
  138. package/dist/src/operator-log.d.ts.map +1 -1
  139. package/dist/src/operator-log.js.map +1 -1
  140. package/dist/src/provider-waits.d.ts +216 -0
  141. package/dist/src/provider-waits.d.ts.map +1 -0
  142. package/dist/src/provider-waits.js +482 -0
  143. package/dist/src/provider-waits.js.map +1 -0
  144. package/dist/src/queue.d.ts.map +1 -1
  145. package/dist/src/record-journal.d.ts.map +1 -1
  146. package/dist/src/record-journal.js.map +1 -1
  147. package/dist/src/recovery/discord-awareness-outbox.d.ts.map +1 -1
  148. package/dist/src/recovery/discord-awareness-outbox.js.map +1 -1
  149. package/dist/src/recovery/offline-branch.d.ts.map +1 -1
  150. package/dist/src/recovery/offline-branch.js +29 -24
  151. package/dist/src/recovery/offline-branch.js.map +1 -1
  152. package/dist/src/recovery/recover-cli.js.map +1 -1
  153. package/dist/src/refusal-reactions.d.ts +14 -12
  154. package/dist/src/refusal-reactions.d.ts.map +1 -1
  155. package/dist/src/refusal-reactions.js +14 -12
  156. package/dist/src/refusal-reactions.js.map +1 -1
  157. package/dist/src/runtime/liveness-watchdog.d.ts.map +1 -1
  158. package/dist/src/runtime/liveness-watchdog.js.map +1 -1
  159. package/dist/src/shutdown.d.ts.map +1 -1
  160. package/dist/src/shutdown.js.map +1 -1
  161. package/dist/src/stored-removal.d.ts +73 -0
  162. package/dist/src/stored-removal.d.ts.map +1 -0
  163. package/dist/src/stored-removal.js +100 -0
  164. package/dist/src/stored-removal.js.map +1 -0
  165. package/dist/src/thinking-token-stamp.js.map +1 -1
  166. package/dist/src/tool-image-ledger.d.ts.map +1 -1
  167. package/dist/src/tool-image-ledger.js.map +1 -1
  168. package/dist/src/tool-presentation.d.ts.map +1 -1
  169. package/dist/src/tool-presentation.js.map +1 -1
  170. package/dist/src/tool-result-guard.d.ts +30 -13
  171. package/dist/src/tool-result-guard.d.ts.map +1 -1
  172. package/dist/src/tool-result-guard.js +71 -25
  173. package/dist/src/tool-result-guard.js.map +1 -1
  174. package/dist/src/tune-out/coordinator.d.ts.map +1 -1
  175. package/dist/src/tune-out/coordinator.js.map +1 -1
  176. package/dist/src/tune-out/tools.d.ts +1 -1
  177. package/dist/src/tune-out/tools.d.ts.map +1 -1
  178. package/dist/src/types/agent.d.ts +42 -6
  179. package/dist/src/types/agent.d.ts.map +1 -1
  180. package/dist/src/types/events.d.ts +12 -0
  181. package/dist/src/types/events.d.ts.map +1 -1
  182. package/dist/src/types/framework.d.ts +10 -0
  183. package/dist/src/types/framework.d.ts.map +1 -1
  184. package/dist/src/types/module.d.ts +20 -8
  185. package/dist/src/types/module.d.ts.map +1 -1
  186. package/dist/src/types/trace.d.ts +75 -13
  187. package/dist/src/types/trace.d.ts.map +1 -1
  188. package/dist/src/usage/usage-tracker.d.ts.map +1 -1
  189. package/dist/test/agent-runtime-settings.test.js +1139 -3
  190. package/dist/test/agent-runtime-settings.test.js.map +1 -1
  191. package/dist/test/batched-wake-locus.test.js.map +1 -1
  192. package/dist/test/channel-label-history.test.js.map +1 -1
  193. package/dist/test/code-execution.test.js.map +1 -1
  194. package/dist/test/conversation-fork-injection-scoping.test.js.map +1 -1
  195. package/dist/test/conversation-router.test.js.map +1 -1
  196. package/dist/test/conversation-routing.test.js +240 -6
  197. package/dist/test/conversation-routing.test.js.map +1 -1
  198. package/dist/test/discord-awareness-outbox.test.js +107 -0
  199. package/dist/test/discord-awareness-outbox.test.js.map +1 -1
  200. package/dist/test/discord-typing-keepalive.test.d.ts +2 -0
  201. package/dist/test/discord-typing-keepalive.test.d.ts.map +1 -0
  202. package/dist/test/discord-typing-keepalive.test.js +77 -0
  203. package/dist/test/discord-typing-keepalive.test.js.map +1 -0
  204. package/dist/test/ephemeral-settle.test.js.map +1 -1
  205. package/dist/test/event-gate-passthrough.test.js.map +1 -1
  206. package/dist/test/event-gate-policy-mutation.test.js.map +1 -1
  207. package/dist/test/event-gate-rate-limit.test.js.map +1 -1
  208. package/dist/test/event-gate-script.test.js.map +1 -1
  209. package/dist/test/event-gate-selfwake.test.js.map +1 -1
  210. package/dist/test/event-gate-tags.test.js.map +1 -1
  211. package/dist/test/event-gate.test.js.map +1 -1
  212. package/dist/test/explicit-prose-routing.test.js +363 -44
  213. package/dist/test/explicit-prose-routing.test.js.map +1 -1
  214. package/dist/test/framework.test.js +160 -1
  215. package/dist/test/framework.test.js.map +1 -1
  216. package/dist/test/helpers/coalescing-fixture.d.ts +2 -0
  217. package/dist/test/helpers/coalescing-fixture.d.ts.map +1 -1
  218. package/dist/test/helpers/coalescing-fixture.js +11 -4
  219. package/dist/test/helpers/coalescing-fixture.js.map +1 -1
  220. package/dist/test/helpers/mock-membrane.d.ts.map +1 -1
  221. package/dist/test/helpers/mock-membrane.js.map +1 -1
  222. package/dist/test/hide-then-turn.test.d.ts +2 -0
  223. package/dist/test/hide-then-turn.test.d.ts.map +1 -0
  224. package/dist/test/hide-then-turn.test.js +101 -0
  225. package/dist/test/hide-then-turn.test.js.map +1 -0
  226. package/dist/test/history-module-overview.test.js.map +1 -1
  227. package/dist/test/history-module-semantic.test.js.map +1 -1
  228. package/dist/test/history-module.test.js.map +1 -1
  229. package/dist/test/history-semantic-review-findings.test.js.map +1 -1
  230. package/dist/test/host-quiesce.test.js +125 -0
  231. package/dist/test/host-quiesce.test.js.map +1 -1
  232. package/dist/test/inference-exhaustion-rewind.test.js +220 -14
  233. package/dist/test/inference-exhaustion-rewind.test.js.map +1 -1
  234. package/dist/test/inference-failure-bounds.test.d.ts +2 -0
  235. package/dist/test/inference-failure-bounds.test.d.ts.map +1 -0
  236. package/dist/test/inference-failure-bounds.test.js +1202 -0
  237. package/dist/test/inference-failure-bounds.test.js.map +1 -0
  238. package/dist/test/kv-unified-open-flight-retry.test.js.map +1 -1
  239. package/dist/test/late-events-after-stop.test.d.ts +2 -0
  240. package/dist/test/late-events-after-stop.test.d.ts.map +1 -0
  241. package/dist/test/late-events-after-stop.test.js +122 -0
  242. package/dist/test/late-events-after-stop.test.js.map +1 -0
  243. package/dist/test/liveness-watchdog.test.js.map +1 -1
  244. package/dist/test/maintenance-timer.test.js +1564 -2
  245. package/dist/test/maintenance-timer.test.js.map +1 -1
  246. package/dist/test/mcp-server-bin.test.d.ts +2 -0
  247. package/dist/test/mcp-server-bin.test.d.ts.map +1 -0
  248. package/dist/test/mcp-server-bin.test.js +142 -0
  249. package/dist/test/mcp-server-bin.test.js.map +1 -0
  250. package/dist/test/mcpl-awareness-barrier.test.js +141 -0
  251. package/dist/test/mcpl-awareness-barrier.test.js.map +1 -1
  252. package/dist/test/mcpl-child-env.test.js +1 -1
  253. package/dist/test/mcpl-child-env.test.js.map +1 -1
  254. package/dist/test/mcpl-coalesced-content-parity.test.d.ts +2 -0
  255. package/dist/test/mcpl-coalesced-content-parity.test.d.ts.map +1 -0
  256. package/dist/test/mcpl-coalesced-content-parity.test.js +532 -0
  257. package/dist/test/mcpl-coalesced-content-parity.test.js.map +1 -0
  258. package/dist/test/mcpl-coalescing.test.js +78 -16
  259. package/dist/test/mcpl-coalescing.test.js.map +1 -1
  260. package/dist/test/mcpl-config-diagnostics.test.js +6 -3
  261. package/dist/test/mcpl-config-diagnostics.test.js.map +1 -1
  262. package/dist/test/mcpl-gate-roundtrip.test.js.map +1 -1
  263. package/dist/test/mcpl-manifest-changed.test.js +2 -1
  264. package/dist/test/mcpl-manifest-changed.test.js.map +1 -1
  265. package/dist/test/mcpl-reconnect-events.test.js.map +1 -1
  266. package/dist/test/mcpl-reconnect-reregistration.test.js +2 -0
  267. package/dist/test/mcpl-reconnect-reregistration.test.js.map +1 -1
  268. package/dist/test/mcpl-reference-fetcher.test.js +232 -4
  269. package/dist/test/mcpl-reference-fetcher.test.js.map +1 -1
  270. package/dist/test/mcpl-reference-fields.test.js +69 -2
  271. package/dist/test/mcpl-reference-fields.test.js.map +1 -1
  272. package/dist/test/mcpl-rejection-log-lines.test.d.ts +2 -0
  273. package/dist/test/mcpl-rejection-log-lines.test.d.ts.map +1 -0
  274. package/dist/test/mcpl-rejection-log-lines.test.js +349 -0
  275. package/dist/test/mcpl-rejection-log-lines.test.js.map +1 -0
  276. package/dist/test/mcpl-stderr-tail.test.d.ts +2 -0
  277. package/dist/test/mcpl-stderr-tail.test.d.ts.map +1 -0
  278. package/dist/test/mcpl-stderr-tail.test.js +210 -0
  279. package/dist/test/mcpl-stderr-tail.test.js.map +1 -0
  280. package/dist/test/mcpl-tool-lifecycle-e2e.test.js.map +1 -1
  281. package/dist/test/mcpl-tool-lifecycle-emitter.test.js.map +1 -1
  282. package/dist/test/mcpl-tool-lifecycle-script.test.js.map +1 -1
  283. package/dist/test/mcpl-tool-lifecycle.test.js.map +1 -1
  284. package/dist/test/mcpl-transport-close.test.d.ts +2 -0
  285. package/dist/test/mcpl-transport-close.test.d.ts.map +1 -0
  286. package/dist/test/mcpl-transport-close.test.js +373 -0
  287. package/dist/test/mcpl-transport-close.test.js.map +1 -0
  288. package/dist/test/mcpl-transport-spawn.test.d.ts +2 -0
  289. package/dist/test/mcpl-transport-spawn.test.d.ts.map +1 -0
  290. package/dist/test/mcpl-transport-spawn.test.js +58 -0
  291. package/dist/test/mcpl-transport-spawn.test.js.map +1 -0
  292. package/dist/test/mcpl-ws-transport.test.js +104 -0
  293. package/dist/test/mcpl-ws-transport.test.js.map +1 -1
  294. package/dist/test/offline-recovery-branch.test.js +344 -0
  295. package/dist/test/offline-recovery-branch.test.js.map +1 -1
  296. package/dist/test/operator-surgery.test.js +197 -0
  297. package/dist/test/operator-surgery.test.js.map +1 -1
  298. package/dist/test/ops-alert.test.js +2 -1
  299. package/dist/test/ops-alert.test.js.map +1 -1
  300. package/dist/test/overbudget-drain-breaker.test.js +1 -0
  301. package/dist/test/overbudget-drain-breaker.test.js.map +1 -1
  302. package/dist/test/pack-installs-alone.test.d.ts +2 -0
  303. package/dist/test/pack-installs-alone.test.d.ts.map +1 -0
  304. package/dist/test/pack-installs-alone.test.js +284 -0
  305. package/dist/test/pack-installs-alone.test.js.map +1 -0
  306. package/dist/test/physical-window-restart.test.d.ts +6 -4
  307. package/dist/test/physical-window-restart.test.d.ts.map +1 -1
  308. package/dist/test/physical-window-restart.test.js +275 -10
  309. package/dist/test/physical-window-restart.test.js.map +1 -1
  310. package/dist/test/placed-reaction-baseline.test.d.ts +2 -0
  311. package/dist/test/placed-reaction-baseline.test.d.ts.map +1 -0
  312. package/dist/test/placed-reaction-baseline.test.js +312 -0
  313. package/dist/test/placed-reaction-baseline.test.js.map +1 -0
  314. package/dist/test/present-while-acting.test.js +949 -6
  315. package/dist/test/present-while-acting.test.js.map +1 -1
  316. package/dist/test/provider-acceleration-cooldown.test.js +5 -1
  317. package/dist/test/provider-acceleration-cooldown.test.js.map +1 -1
  318. package/dist/test/provider-waits.test.d.ts +2 -0
  319. package/dist/test/provider-waits.test.d.ts.map +1 -0
  320. package/dist/test/provider-waits.test.js +2259 -0
  321. package/dist/test/provider-waits.test.js.map +1 -0
  322. package/dist/test/puppet-tool-call.test.js +2 -0
  323. package/dist/test/puppet-tool-call.test.js.map +1 -1
  324. package/dist/test/reaction-baseline-platform.test.d.ts +2 -0
  325. package/dist/test/reaction-baseline-platform.test.d.ts.map +1 -0
  326. package/dist/test/reaction-baseline-platform.test.js +124 -0
  327. package/dist/test/reaction-baseline-platform.test.js.map +1 -0
  328. package/dist/test/record-journal.test.js.map +1 -1
  329. package/dist/test/refusal-reaction-baseline.test.js +10 -3
  330. package/dist/test/refusal-reaction-baseline.test.js.map +1 -1
  331. package/dist/test/refusal-rewind.test.js +9 -0
  332. package/dist/test/refusal-rewind.test.js.map +1 -1
  333. package/dist/test/refusal-single-call.test.js.map +1 -1
  334. package/dist/test/release-bump.test.d.ts +2 -0
  335. package/dist/test/release-bump.test.d.ts.map +1 -0
  336. package/dist/test/release-bump.test.js +248 -0
  337. package/dist/test/release-bump.test.js.map +1 -0
  338. package/dist/test/release-changelog.test.js.map +1 -1
  339. package/dist/test/release-holds.test.d.ts +2 -0
  340. package/dist/test/release-holds.test.d.ts.map +1 -0
  341. package/dist/test/release-holds.test.js +456 -0
  342. package/dist/test/release-holds.test.js.map +1 -0
  343. package/dist/test/same-round-think-policy.test.js.map +1 -1
  344. package/dist/test/save-recent-image.test.js +138 -2
  345. package/dist/test/save-recent-image.test.js.map +1 -1
  346. package/dist/test/shutdown-errors.test.js.map +1 -1
  347. package/dist/test/silent-heartbeat-rows.test.js.map +1 -1
  348. package/dist/test/stop-with-host-operations.test.d.ts +20 -0
  349. package/dist/test/stop-with-host-operations.test.d.ts.map +1 -0
  350. package/dist/test/stop-with-host-operations.test.js +1174 -0
  351. package/dist/test/stop-with-host-operations.test.js.map +1 -0
  352. package/dist/test/stop-with-work-in-flight.test.js +162 -50
  353. package/dist/test/stop-with-work-in-flight.test.js.map +1 -1
  354. package/dist/test/surgery-marks-receipt.test.d.ts +2 -0
  355. package/dist/test/surgery-marks-receipt.test.d.ts.map +1 -0
  356. package/dist/test/surgery-marks-receipt.test.js +540 -0
  357. package/dist/test/surgery-marks-receipt.test.js.map +1 -0
  358. package/dist/test/tool-batch-hook.test.js.map +1 -1
  359. package/dist/test/tool-result-guard.test.js +352 -16
  360. package/dist/test/tool-result-guard.test.js.map +1 -1
  361. package/dist/test/tool-result-spill.test.js.map +1 -1
  362. package/dist/test/tool-wrapper-prose-guard-integration.test.js.map +1 -1
  363. package/dist/test/trunk-channel-routing.test.js +330 -7
  364. package/dist/test/trunk-channel-routing.test.js.map +1 -1
  365. package/dist/test/tune-out-e2e.test.js.map +1 -1
  366. package/dist/test/unconvertible-tool-result.test.js.map +1 -1
  367. package/dist/test/unsent-compiles.test.d.ts +2 -0
  368. package/dist/test/unsent-compiles.test.d.ts.map +1 -0
  369. package/dist/test/unsent-compiles.test.js +139 -0
  370. package/dist/test/unsent-compiles.test.js.map +1 -0
  371. package/dist/test/workspace-branch-continuation.test.js.map +1 -1
  372. package/dist/test/workspace-materialize-freshness.test.js.map +1 -1
  373. package/dist/test/workspace-read-text.test.js.map +1 -1
  374. package/dist/test/workspace-three-way.test.js +1022 -7
  375. package/dist/test/workspace-three-way.test.js.map +1 -1
  376. package/dist/test/workspace-watcher.test.js.map +1 -1
  377. package/dist/test/xml-round-persist.test.js.map +1 -1
  378. package/dist/tsconfig.tsbuildinfo +1 -1
  379. package/package.json +8 -6
  380. package/src/agent.ts +415 -67
  381. package/src/api/mcp-server-core.ts +681 -0
  382. package/src/api/mcp-server.ts +16 -685
  383. package/src/api/server.ts +87 -26
  384. package/src/api/types.ts +9 -1
  385. package/src/framework.ts +3389 -782
  386. package/src/index.ts +9 -4
  387. package/src/mcpl/channel-registry.ts +126 -31
  388. package/src/mcpl/feature-set-manager.ts +4 -3
  389. package/src/mcpl/index.ts +2 -0
  390. package/src/mcpl/log-value.ts +116 -0
  391. package/src/mcpl/prose-stream-router.ts +6 -6
  392. package/src/mcpl/push-coalescer.ts +76 -12
  393. package/src/mcpl/push-handler.ts +95 -23
  394. package/src/mcpl/reference-fetcher.ts +18 -8
  395. package/src/mcpl/references.ts +57 -13
  396. package/src/mcpl/refusal-lines.ts +59 -0
  397. package/src/mcpl/server-connection.ts +125 -15
  398. package/src/mcpl/tool-classes.ts +3 -2
  399. package/src/mcpl/transport.ts +105 -14
  400. package/src/mcpl/types.ts +5 -1
  401. package/src/module-registry.ts +17 -9
  402. package/src/modules/discord/index.ts +4 -2
  403. package/src/modules/workspace/disk-agreement.ts +74 -18
  404. package/src/modules/workspace/index.ts +85 -15
  405. package/src/modules/workspace/observe.ts +295 -43
  406. package/src/modules/workspace/reconcile.ts +90 -12
  407. package/src/modules/workspace/types.ts +26 -1
  408. package/src/operator-log.ts +30 -0
  409. package/src/provider-waits.ts +523 -0
  410. package/src/recovery/offline-branch.ts +32 -28
  411. package/src/refusal-reactions.ts +14 -12
  412. package/src/stored-removal.ts +126 -0
  413. package/src/tool-result-guard.ts +72 -24
  414. package/src/types/agent.ts +42 -6
  415. package/src/types/events.ts +12 -0
  416. package/src/types/framework.ts +10 -0
  417. package/src/types/module.ts +20 -8
  418. package/src/types/trace.ts +76 -14
@@ -48,6 +48,14 @@ function wsUrl(wss) {
48
48
  const port = wss.address().port;
49
49
  return `ws://127.0.0.1:${port}/mcpl`;
50
50
  }
51
+ /** Bound an event wait so a missing emission fails the test instead of hanging it. */
52
+ function withDeadline(p, ms, what) {
53
+ let timer;
54
+ const deadline = new Promise((_, reject) => {
55
+ timer = setTimeout(() => reject(new Error(`timed out after ${ms}ms waiting for ${what}`)), ms);
56
+ });
57
+ return Promise.race([p, deadline]).finally(() => clearTimeout(timer));
58
+ }
51
59
  function waitListening(wss) {
52
60
  return new Promise((resolve) => (wss.address() ? resolve() : wss.once('listening', () => resolve())));
53
61
  }
@@ -152,4 +160,100 @@ test('reconnect: an unexpected socket drop triggers a background reconnect', asy
152
160
  wss.close();
153
161
  }
154
162
  });
163
+ test("a server-side close with code 4001 surfaces on the connection 'close' event before the reconnect", async () => {
164
+ const sockets = [];
165
+ const wss = startMockMcplWsServer((ws) => sockets.push(ws));
166
+ await waitListening(wss);
167
+ let conn;
168
+ try {
169
+ // The provider hands out whatever the host currently holds. A host that
170
+ // caches its credential swaps it in the 4001 listener; the dial that the
171
+ // reconnect makes must then see the replacement — that ordering is the
172
+ // point of surfacing the close before scheduling the reconnect.
173
+ let token = 'token-1';
174
+ const dialed = [];
175
+ conn = await McplServerConnection.connect({
176
+ id: 'editor',
177
+ url: wsUrl(wss),
178
+ reconnect: true,
179
+ reconnectIntervalMs: 100,
180
+ accessProvider: async () => { dialed.push(token); return token; },
181
+ }, HOST_CAPS);
182
+ const closes = [];
183
+ conn.on('close', (code, signal, info) => {
184
+ closes.push({ code: code ?? null, signal: signal ?? null, info });
185
+ if (info?.code === 4001)
186
+ token = 'token-2';
187
+ });
188
+ const reconnected = new Promise((resolve) => conn.once('reconnect', () => resolve()));
189
+ conn.ready();
190
+ assert.deepEqual(dialed, ['token-1']);
191
+ // The server refuses/expires the credential: an application close code.
192
+ assert.equal(sockets.length, 1);
193
+ sockets[0].close(4001, 'token expired');
194
+ await withDeadline(reconnected, 5_000, "'reconnect' after a 4001 close");
195
+ // Positional (code, signal) unchanged for existing listeners; the third
196
+ // argument carries the full close info.
197
+ assert.equal(closes.length, 1);
198
+ assert.equal(closes[0].code, 4001);
199
+ assert.equal(closes[0].signal, null);
200
+ assert.deepEqual(closes[0].info, {
201
+ transport: 'websocket',
202
+ code: 4001,
203
+ signal: null,
204
+ reason: 'token expired',
205
+ reasonFromPeer: true,
206
+ byHost: false,
207
+ });
208
+ // The reconnect dialed with the credential the close listener installed.
209
+ assert.deepEqual(dialed, ['token-1', 'token-2']);
210
+ assert.equal(sockets.length, 2);
211
+ const result = await conn.sendToolsCall('echo', { text: 'after 4001' });
212
+ const block = result.content[0];
213
+ assert.equal(block.text, 'after 4001');
214
+ // A host-initiated close reports byHost with no transport code.
215
+ const hostClose = new Promise((resolve) => conn.once('close', (_code, _signal, info) => resolve(info)));
216
+ await conn.close();
217
+ const info = await withDeadline(hostClose, 5_000, "'close' after conn.close()");
218
+ assert.equal(info?.byHost, true);
219
+ assert.equal(info?.code, null);
220
+ assert.equal(info?.transport, 'websocket');
221
+ }
222
+ finally {
223
+ await conn?.close().catch(() => { });
224
+ wss.close();
225
+ }
226
+ });
227
+ test("reconnectAfterFailure() on a live transport reports byHost: true and still reconnects", async () => {
228
+ const sockets = [];
229
+ const wss = startMockMcplWsServer((ws) => sockets.push(ws));
230
+ await waitListening(wss);
231
+ let conn;
232
+ try {
233
+ conn = await McplServerConnection.connect({ id: 'editor', url: wsUrl(wss), reconnect: true, reconnectIntervalMs: 100 }, HOST_CAPS);
234
+ conn.ready();
235
+ const closed = new Promise((resolve) => conn.once('close', (_code, _signal, info) => resolve(info)));
236
+ const reconnected = new Promise((resolve) => conn.once('reconnect', () => resolve()));
237
+ await conn.reconnectAfterFailure();
238
+ const info = await withDeadline(closed, 5_000, "'close' after reconnectAfterFailure()");
239
+ assert.equal(info?.byHost, true);
240
+ assert.equal(info?.transport, 'websocket');
241
+ await withDeadline(reconnected, 5_000, "'reconnect' after reconnectAfterFailure()");
242
+ assert.equal(sockets.length, 2);
243
+ const result = await conn.sendToolsCall('echo', { text: 'after recovery' });
244
+ assert.equal(result.content[0].text, 'after recovery');
245
+ // The flag does not leak: a later remote drop is still reported as remote.
246
+ const remote = new Promise((resolve) => conn.once('close', (_code, _signal, info) => resolve(info)));
247
+ const reconnectedAgain = new Promise((resolve) => conn.once('reconnect', () => resolve()));
248
+ sockets[1].close(4001, 'token expired');
249
+ const remoteInfo = await withDeadline(remote, 5_000, "'close' after a remote 4001");
250
+ assert.equal(remoteInfo?.byHost, false);
251
+ assert.equal(remoteInfo?.code, 4001);
252
+ await withDeadline(reconnectedAgain, 5_000, "'reconnect' after a remote 4001");
253
+ }
254
+ finally {
255
+ await conn?.close().catch(() => { });
256
+ wss.close();
257
+ }
258
+ });
155
259
  //# sourceMappingURL=mcpl-ws-transport.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcpl-ws-transport.test.js","sourceRoot":"","sources":["../../test/mcpl-ws-transport.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcpl-ws-transport.test.js","sourceRoot":"","sources":["../../test/mcpl-ws-transport.test.ts"],"names":[],"mappings":"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"}
@@ -153,6 +153,88 @@ test('offline recovery suppresses inclusive ranges in context order', async () =
153
153
  rmSync(dir, { recursive: true, force: true });
154
154
  }
155
155
  });
156
+ test('a suppressed range takes every copy of both its messages, and leaves what was stored after the later one began', async () => {
157
+ const dir = mkdtempSync(join(tmpdir(), 'offline-recovery-range-copies-'));
158
+ const storePath = join(dir, 'agent.chronicle');
159
+ try {
160
+ const store = JsStore.openOrCreate({ path: storePath });
161
+ const cm = await ContextManager.open({ store, namespace: 'agents/cairn' });
162
+ const add = (text, messageId) => cm.addMessage('user', [{ type: 'text', text }], {
163
+ serverId: 'discord', channelId: 'discord:g1:c1', messageId,
164
+ });
165
+ add('keep', 'm-keep');
166
+ // B was stored twice, a write cut short and retried, with Z between:
167
+ // Z came after B began, so it isn't between A and B.
168
+ add('A', 'm-a');
169
+ add('B, cut short', 'm-b');
170
+ add('Z', 'm-z');
171
+ add('B, retried', 'm-b');
172
+ // C's retry was stored after D and E: it goes too, on its own.
173
+ add('C, cut short', 'm-c');
174
+ add('D', 'm-d');
175
+ add('E', 'm-e');
176
+ add('C, retried', 'm-c');
177
+ add('current anchor', 'm-current');
178
+ cm.close();
179
+ store.close();
180
+ const result = await createOfflineRecoveryBranch({
181
+ storePath,
182
+ agentName: 'cairn',
183
+ messageId: 'm-current',
184
+ suppressRanges: [
185
+ { fromMessageId: 'm-a', toMessageId: 'm-b' },
186
+ { fromMessageId: 'm-d', toMessageId: 'm-c' },
187
+ ],
188
+ branchName: 'recovery/cairn/range-copies',
189
+ });
190
+ assert.equal(result.messagesSuppressed, 6);
191
+ assert.deepEqual(result.refs.map((ref) => ref.messageId), ['m-a', 'm-b', 'm-c', 'm-d']);
192
+ const recoveredStore = JsStore.openOrCreate({ path: storePath });
193
+ const recoveredCm = await ContextManager.open({ store: recoveredStore, namespace: 'agents/cairn' });
194
+ assert.deepEqual(recoveredCm.getAllMessages().map((message) => message.metadata?.messageId), ['m-keep', 'm-z', 'm-e', 'm-current']);
195
+ recoveredCm.close();
196
+ recoveredStore.close();
197
+ }
198
+ finally {
199
+ rmSync(dir, { recursive: true, force: true });
200
+ }
201
+ });
202
+ test('a suppressed range whose two messages are stored in shards takes each whole', async () => {
203
+ const dir = mkdtempSync(join(tmpdir(), 'offline-recovery-range-shards-'));
204
+ const storePath = join(dir, 'agent.chronicle');
205
+ try {
206
+ const store = JsStore.openOrCreate({ path: storePath });
207
+ const cm = await ContextManager.open({ store, namespace: 'agents/cairn' });
208
+ const add = (text, messageId) => cm.addMessage('user', [{ type: 'text', text }], {
209
+ serverId: 'discord', channelId: 'discord:g1:c1', messageId,
210
+ });
211
+ add('keep', 'm-keep');
212
+ // Each shard of a long message carries its Discord message id.
213
+ appendShards(cm, 'body-a', ['m-a', 'm-a']);
214
+ add('between', 'm-between');
215
+ appendShards(cm, 'body-b', ['m-b', 'm-b', 'm-b']);
216
+ add('after', 'm-after');
217
+ add('current anchor', 'm-current');
218
+ cm.close();
219
+ store.close();
220
+ const result = await createOfflineRecoveryBranch({
221
+ storePath,
222
+ agentName: 'cairn',
223
+ messageId: 'm-current',
224
+ suppressRanges: [{ fromMessageId: 'm-b', toMessageId: 'm-a' }],
225
+ branchName: 'recovery/cairn/range-shards',
226
+ });
227
+ assert.equal(result.messagesSuppressed, 6, 'both bodies, every shard, and what lies between');
228
+ const recoveredStore = JsStore.openOrCreate({ path: storePath });
229
+ const recoveredCm = await ContextManager.open({ store: recoveredStore, namespace: 'agents/cairn' });
230
+ assert.deepEqual(recoveredCm.getAllMessages().map((message) => message.metadata?.messageId), ['m-keep', 'm-after', 'm-current']);
231
+ recoveredCm.close();
232
+ recoveredStore.close();
233
+ }
234
+ finally {
235
+ rmSync(dir, { recursive: true, force: true });
236
+ }
237
+ });
156
238
  test('offline recovery accepts an exact internal context ID anchor', async () => {
157
239
  const dir = mkdtempSync(join(tmpdir(), 'offline-recovery-context-id-'));
158
240
  const storePath = join(dir, 'agent.chronicle');
@@ -223,4 +305,266 @@ test('suppression rejects a range that splits a tool exchange', async () => {
223
305
  rmSync(dir, { recursive: true, force: true });
224
306
  }
225
307
  });
308
+ /** One body of `texts.length` shards, each stored with its own Discord message id. */
309
+ function appendShards(cm, group, discordIds) {
310
+ return discordIds.map((discordMessageId, shardIndex) => String(cm.messageStore.append('user', [{ type: 'text', text: `shard ${shardIndex}` }], { serverId: 'discord', channelId: 'discord:g1:c1', messageId: discordMessageId }, undefined, { bodyGroupId: group, shardIndex }).id));
311
+ }
312
+ function appendDocumentCopy(cm, discordMessageId) {
313
+ return ['part one', 'part two'].map((text, shardIndex) => String(cm.messageStore.append('user', [{ type: 'text', text }], { serverId: 'discord', channelId: 'discord:g1:c1', messageId: discordMessageId }, undefined, { bodyGroupId: 'doc-group', shardIndex }).id));
314
+ }
315
+ test('an anchor at the end of one copy of a reposted document does not split it', async () => {
316
+ const dir = mkdtempSync(join(tmpdir(), 'offline-recovery-repost-anchor-'));
317
+ const storePath = join(dir, 'agent.chronicle');
318
+ try {
319
+ const store = JsStore.openOrCreate({ path: storePath });
320
+ const cm = await ContextManager.open({ store, namespace: 'agents/cairn' });
321
+ cm.addMessage('user', [{ type: 'text', text: 'before' }], {
322
+ serverId: 'discord', channelId: 'discord:g1:c1', messageId: 'm-before',
323
+ });
324
+ const first = appendDocumentCopy(cm, 'm-doc-1');
325
+ appendDocumentCopy(cm, 'm-doc-2');
326
+ cm.close();
327
+ store.close();
328
+ const result = await createOfflineRecoveryBranch({
329
+ storePath,
330
+ agentName: 'cairn',
331
+ contextId: first[1],
332
+ branchName: 'recovery/cairn/repost-anchor',
333
+ });
334
+ assert.equal(result.messagesRemoved, 2);
335
+ assert.deepEqual(result.refs.map((ref) => ref.messageId), ['m-doc-2']);
336
+ const recoveredStore = JsStore.openOrCreate({ path: storePath });
337
+ const recoveredCm = await ContextManager.open({ store: recoveredStore, namespace: 'agents/cairn' });
338
+ assert.deepEqual(recoveredCm.getAllMessages().map((message) => message.metadata?.messageId), ['m-before', 'm-doc-1', 'm-doc-1']);
339
+ recoveredCm.close();
340
+ recoveredStore.close();
341
+ }
342
+ finally {
343
+ rmSync(dir, { recursive: true, force: true });
344
+ }
345
+ });
346
+ test('an anchor inside one copy of a document still splits its body', async () => {
347
+ const dir = mkdtempSync(join(tmpdir(), 'offline-recovery-split-anchor-'));
348
+ const storePath = join(dir, 'agent.chronicle');
349
+ try {
350
+ const store = JsStore.openOrCreate({ path: storePath });
351
+ const cm = await ContextManager.open({ store, namespace: 'agents/cairn' });
352
+ cm.addMessage('user', [{ type: 'text', text: 'before' }], {
353
+ serverId: 'discord', channelId: 'discord:g1:c1', messageId: 'm-before',
354
+ });
355
+ const first = appendDocumentCopy(cm, 'm-doc-1');
356
+ appendDocumentCopy(cm, 'm-doc-2');
357
+ cm.close();
358
+ store.close();
359
+ await assert.rejects(createOfflineRecoveryBranch({
360
+ storePath,
361
+ agentName: 'cairn',
362
+ contextId: first[0],
363
+ branchName: 'recovery/cairn/split-anchor',
364
+ }), /splits body group doc-group; choose its final shard/);
365
+ }
366
+ finally {
367
+ rmSync(dir, { recursive: true, force: true });
368
+ }
369
+ });
370
+ test('suppressing one copy of a reposted document keeps the other', async () => {
371
+ const dir = mkdtempSync(join(tmpdir(), 'offline-recovery-repost-suppress-'));
372
+ const storePath = join(dir, 'agent.chronicle');
373
+ try {
374
+ const store = JsStore.openOrCreate({ path: storePath });
375
+ const cm = await ContextManager.open({ store, namespace: 'agents/cairn' });
376
+ cm.addMessage('user', [{ type: 'text', text: 'before' }], {
377
+ serverId: 'discord', channelId: 'discord:g1:c1', messageId: 'm-before',
378
+ });
379
+ appendDocumentCopy(cm, 'm-doc-1');
380
+ appendDocumentCopy(cm, 'm-doc-2');
381
+ cm.addMessage('user', [{ type: 'text', text: 'current' }], {
382
+ serverId: 'discord', channelId: 'discord:g1:c1', messageId: 'm-current',
383
+ });
384
+ cm.close();
385
+ store.close();
386
+ const result = await createOfflineRecoveryBranch({
387
+ storePath,
388
+ agentName: 'cairn',
389
+ messageId: 'm-current',
390
+ suppressMessageIds: ['m-doc-2'],
391
+ });
392
+ assert.equal(result.messagesRemoved, 0);
393
+ assert.equal(result.messagesSuppressed, 2);
394
+ assert.deepEqual(result.refs.map((ref) => ref.messageId), ['m-doc-2']);
395
+ const recoveredStore = JsStore.openOrCreate({ path: storePath });
396
+ const recoveredCm = await ContextManager.open({ store: recoveredStore, namespace: 'agents/cairn' });
397
+ assert.deepEqual(recoveredCm.getAllMessages().map((message) => message.metadata?.messageId), ['m-before', 'm-doc-1', 'm-doc-1', 'm-current']);
398
+ recoveredCm.close();
399
+ recoveredStore.close();
400
+ }
401
+ finally {
402
+ rmSync(dir, { recursive: true, force: true });
403
+ }
404
+ });
405
+ test('a suppression that splits one copy of a document is refused', async () => {
406
+ const dir = mkdtempSync(join(tmpdir(), 'offline-recovery-split-suppress-'));
407
+ const storePath = join(dir, 'agent.chronicle');
408
+ try {
409
+ const store = JsStore.openOrCreate({ path: storePath });
410
+ const cm = await ContextManager.open({ store, namespace: 'agents/cairn' });
411
+ cm.addMessage('user', [{ type: 'text', text: 'before' }], {
412
+ serverId: 'discord', channelId: 'discord:g1:c1', messageId: 'm-before',
413
+ });
414
+ appendShards(cm, 'doc-group', ['m-s0', 'm-s1']);
415
+ appendShards(cm, 'doc-group', ['m-t0', 'm-t1']);
416
+ cm.addMessage('user', [{ type: 'text', text: 'current' }], {
417
+ serverId: 'discord', channelId: 'discord:g1:c1', messageId: 'm-current',
418
+ });
419
+ cm.close();
420
+ store.close();
421
+ await assert.rejects(createOfflineRecoveryBranch({
422
+ storePath,
423
+ agentName: 'cairn',
424
+ messageId: 'm-current',
425
+ suppressMessageIds: ['m-s1'],
426
+ }), /Recovery selection splits body group doc-group/);
427
+ }
428
+ finally {
429
+ rmSync(dir, { recursive: true, force: true });
430
+ }
431
+ });
432
+ test('a split across a scan window is refused too', async () => {
433
+ const dir = mkdtempSync(join(tmpdir(), 'offline-recovery-split-seam-'));
434
+ const storePath = join(dir, 'agent.chronicle');
435
+ try {
436
+ const store = JsStore.openOrCreate({ path: storePath });
437
+ const cm = await ContextManager.open({ store, namespace: 'agents/cairn' });
438
+ // 999 plain messages put the body's shards at positions 999 and 1000,
439
+ // on either side of the validator's 1,000-message scan window.
440
+ for (let i = 0; i < 999; i++)
441
+ cm.addMessage('user', [{ type: 'text', text: `filler ${i}` }]);
442
+ appendShards(cm, 'seam-group', ['m-s0', 'm-s1']);
443
+ cm.addMessage('user', [{ type: 'text', text: 'current' }], {
444
+ serverId: 'discord', channelId: 'discord:g1:c1', messageId: 'm-current',
445
+ });
446
+ assert.equal(cm.getMessageCount(), 1002);
447
+ cm.close();
448
+ store.close();
449
+ await assert.rejects(createOfflineRecoveryBranch({
450
+ storePath,
451
+ agentName: 'cairn',
452
+ messageId: 'm-current',
453
+ suppressMessageIds: ['m-s1'],
454
+ }), /Recovery selection splits body group seam-group/);
455
+ }
456
+ finally {
457
+ rmSync(dir, { recursive: true, force: true });
458
+ }
459
+ });
460
+ test('suppressing a one-shard copy of a reposted document keeps the other', async () => {
461
+ const dir = mkdtempSync(join(tmpdir(), 'offline-recovery-one-shard-'));
462
+ const storePath = join(dir, 'agent.chronicle');
463
+ try {
464
+ const store = JsStore.openOrCreate({ path: storePath });
465
+ const cm = await ContextManager.open({ store, namespace: 'agents/cairn' });
466
+ cm.addMessage('user', [{ type: 'text', text: 'before' }], {
467
+ serverId: 'discord', channelId: 'discord:g1:c1', messageId: 'm-before',
468
+ });
469
+ appendShards(cm, 'one-shard-group', ['m-doc-1']);
470
+ appendShards(cm, 'one-shard-group', ['m-doc-2']);
471
+ cm.addMessage('user', [{ type: 'text', text: 'current' }], {
472
+ serverId: 'discord', channelId: 'discord:g1:c1', messageId: 'm-current',
473
+ });
474
+ cm.close();
475
+ store.close();
476
+ const result = await createOfflineRecoveryBranch({
477
+ storePath,
478
+ agentName: 'cairn',
479
+ messageId: 'm-current',
480
+ suppressMessageIds: ['m-doc-2'],
481
+ });
482
+ assert.equal(result.messagesSuppressed, 1);
483
+ const recoveredStore = JsStore.openOrCreate({ path: storePath });
484
+ const recoveredCm = await ContextManager.open({ store: recoveredStore, namespace: 'agents/cairn' });
485
+ assert.deepEqual(recoveredCm.getAllMessages().map((message) => message.metadata?.messageId), ['m-before', 'm-doc-1', 'm-current']);
486
+ recoveredCm.close();
487
+ recoveredStore.close();
488
+ }
489
+ finally {
490
+ rmSync(dir, { recursive: true, force: true });
491
+ }
492
+ });
493
+ test('a suppressed message outside any body is removed alone, and a one-shard copy as a range', async (t) => {
494
+ const dir = mkdtempSync(join(tmpdir(), 'offline-recovery-removal-kind-'));
495
+ const storePath = join(dir, 'agent.chronicle');
496
+ try {
497
+ const store = JsStore.openOrCreate({ path: storePath });
498
+ const cm = await ContextManager.open({ store, namespace: 'agents/cairn' });
499
+ cm.addMessage('user', [{ type: 'text', text: 'before' }], {
500
+ serverId: 'discord', channelId: 'discord:g1:c1', messageId: 'm-before',
501
+ });
502
+ const plain = String(cm.addMessage('user', [{ type: 'text', text: 'plain' }], {
503
+ serverId: 'discord', channelId: 'discord:g1:c1', messageId: 'm-plain',
504
+ }));
505
+ appendShards(cm, 'one-shard-group', ['m-doc-1']);
506
+ const [copy] = appendShards(cm, 'one-shard-group', ['m-doc-2']);
507
+ cm.addMessage('user', [{ type: 'text', text: 'current' }], {
508
+ serverId: 'discord', channelId: 'discord:g1:c1', messageId: 'm-current',
509
+ });
510
+ cm.close();
511
+ store.close();
512
+ // removeMessage's remove event also drops the context-log entries copied
513
+ // from the message; context-manager refuses it for any shard.
514
+ const removeMessage = t.mock.method(ContextManager.prototype, 'removeMessage');
515
+ const removeMessages = t.mock.method(ContextManager.prototype, 'removeMessages');
516
+ const result = await createOfflineRecoveryBranch({
517
+ storePath,
518
+ agentName: 'cairn',
519
+ messageId: 'm-current',
520
+ suppressMessageIds: ['m-plain', 'm-doc-2'],
521
+ });
522
+ assert.equal(result.messagesSuppressed, 2);
523
+ assert.deepEqual(removeMessage.mock.calls.map((call) => String(call.arguments[0])), [plain]);
524
+ assert.deepEqual(removeMessages.mock.calls.map((call) => call.arguments.map(String)), [[copy, copy]]);
525
+ removeMessage.mock.restore();
526
+ removeMessages.mock.restore();
527
+ const recoveredStore = JsStore.openOrCreate({ path: storePath });
528
+ const recoveredCm = await ContextManager.open({ store: recoveredStore, namespace: 'agents/cairn' });
529
+ assert.deepEqual(recoveredCm.getAllMessages().map((message) => message.metadata?.messageId), ['m-before', 'm-doc-1', 'm-current']);
530
+ recoveredCm.close();
531
+ recoveredStore.close();
532
+ }
533
+ finally {
534
+ rmSync(dir, { recursive: true, force: true });
535
+ }
536
+ });
537
+ test('an anchor at the end of a write that was cut short keeps that partial body and leaves out its retry', async () => {
538
+ const dir = mkdtempSync(join(tmpdir(), 'offline-recovery-cut-short-'));
539
+ const storePath = join(dir, 'agent.chronicle');
540
+ try {
541
+ const store = JsStore.openOrCreate({ path: storePath });
542
+ const cm = await ContextManager.open({ store, namespace: 'agents/cairn' });
543
+ cm.addMessage('user', [{ type: 'text', text: 'before' }], {
544
+ serverId: 'discord', channelId: 'discord:g1:c1', messageId: 'm-before',
545
+ });
546
+ // Two of a body's shards, written before an interruption, then its retry
547
+ // from shard 0: the retry is a body of its own.
548
+ const partial = appendShards(cm, 'cut-group', ['m-cut-0', 'm-cut-1']);
549
+ appendShards(cm, 'cut-group', ['m-retry-0', 'm-retry-1', 'm-retry-2']);
550
+ cm.close();
551
+ store.close();
552
+ const result = await createOfflineRecoveryBranch({
553
+ storePath,
554
+ agentName: 'cairn',
555
+ contextId: partial[1],
556
+ branchName: 'recovery/cairn/cut-short',
557
+ });
558
+ assert.equal(result.messagesRemoved, 3);
559
+ assert.deepEqual(result.refs.map((ref) => ref.messageId), ['m-retry-0', 'm-retry-1', 'm-retry-2']);
560
+ const recoveredStore = JsStore.openOrCreate({ path: storePath });
561
+ const recoveredCm = await ContextManager.open({ store: recoveredStore, namespace: 'agents/cairn' });
562
+ assert.deepEqual(recoveredCm.getAllMessages().map((message) => message.metadata?.messageId), ['m-before', 'm-cut-0', 'm-cut-1']);
563
+ recoveredCm.close();
564
+ recoveredStore.close();
565
+ }
566
+ finally {
567
+ rmSync(dir, { recursive: true, force: true });
568
+ }
569
+ });
226
570
  //# sourceMappingURL=offline-recovery-branch.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"offline-recovery-branch.test.js","sourceRoot":"","sources":["../../test/offline-recovery-branch.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EACL,sBAAsB,EACtB,iCAAiC,GAClC,MAAM,6CAA6C,CAAC;AAErD,IAAI,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;IAC/F,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;QAC3E,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE;YACtD,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ;SACrE,CAAC,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,EAAE;YACrE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW;SACxE,CAAC,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE;YAC7D,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW;SACxE,CAAC,CAAC;QACH,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC;YAC/C,SAAS;YACT,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,2BAA2B;SACxC,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;QAEtF,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;QAC/E,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC;YAC5C,KAAK,EAAE,cAAc;YACrB,SAAS,EAAE,cAAc;SAC1B,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACpH,WAAW,CAAC,KAAK,EAAE,CAAC;QACpB,cAAc,CAAC,KAAK,EAAE,CAAC;QAEvB,MAAM,OAAO,GAAG,IAAI,sBAAsB,CACxC,iCAAiC,CAAC,SAAS,CAAC,CAC7C,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;QAElG,uEAAuE;QACvE,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAClE,YAAY,CAAC,iCAAiC,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACtE,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACtD,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IAChD,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;IAC/F,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;QAC3E,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE;YAC5D,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ;SACrE,CAAC,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE;YAC5D,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK;SAClE,CAAC,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;QACrE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE;YAC5D,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK;SAClE,CAAC,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,EAAE;YAChE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW;SACxE,CAAC,CAAC;QACH,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC;YAC/C,SAAS;YACT,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,WAAW;YACtB,kBAAkB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;YAClC,UAAU,EAAE,2BAA2B;SACxC,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAE1E,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC;YAC5C,KAAK,EAAE,cAAc;YACrB,SAAS,EAAE,cAAc;SAC1B,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CACd,WAAW,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,EACjG,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CACrC,CAAC;QAEF,MAAM,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,SAAS,CACd,WAAW,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,EACjG,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC,CACnD,CAAC;QACF,WAAW,CAAC,KAAK,EAAE,CAAC;QACpB,cAAc,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;IAC/E,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;QAC3E,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE;YAC5D,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ;SACrE,CAAC,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE;YAC7D,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ;SACrE,CAAC,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC,CAAC;QACjF,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE;YAC9D,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU;SACvE,CAAC,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE;YAC3D,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM;SACnE,CAAC,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,EAAE;YAChE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW;SACxE,CAAC,CAAC;QACH,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC;YAC/C,SAAS;YACT,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,WAAW;YACtB,uEAAuE;YACvE,cAAc,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;YAClE,UAAU,EAAE,sBAAsB;SACnC,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,SAAS,CACd,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EACvC,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAC/B,CAAC;QAEF,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC;YAC5C,KAAK,EAAE,cAAc;YACrB,SAAS,EAAE,cAAc;SAC1B,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CACd,WAAW,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,EAC1E,CAAC,QAAQ,EAAE,WAAW,CAAC,CACxB,CAAC;QACF,WAAW,CAAC,KAAK,EAAE,CAAC;QACpB,cAAc,CAAC,KAAK,EAAE,CAAC;QAEvB,MAAM,OAAO,GAAG,IAAI,sBAAsB,CACxC,iCAAiC,CAAC,SAAS,CAAC,CAC7C,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,SAAS,CACd,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EACnD,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAC/B,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;IAC9E,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,8BAA8B,CAAC,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;QAC3E,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE;YACxD,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU;SACvE,CAAC,CAAC;QACH,MAAM,mBAAmB,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;QAChG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE;YACxD,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU;SACvE,CAAC,CAAC;QACH,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC;YAC/C,SAAS;YACT,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,MAAM,CAAC,mBAAmB,CAAC;YACtC,UAAU,EAAE,gCAAgC;SAC7C,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QACxE,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC;YAC5C,KAAK,EAAE,cAAc;YACrB,SAAS,EAAE,cAAc;SAC1B,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CACd,WAAW,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAClE,CAAC,MAAM,EAAE,WAAW,CAAC,CACtB,CAAC;QACF,WAAW,CAAC,KAAK,EAAE,CAAC;QACpB,cAAc,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;IACzE,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kCAAkC,CAAC,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;QAC3E,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE;YAC7D,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ;SACrE,CAAC,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE;YACzB,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;SAC7D,CAAC,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE;YAC3D,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM;SACnE,CAAC,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE;YACpB,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;SAChE,CAAC,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE;YACzD,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW;SACxE,CAAC,CAAC;QACH,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,MAAM,MAAM,CAAC,OAAO,CAClB,2BAA2B,CAAC;YAC1B,SAAS;YACT,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,WAAW;YACtB,cAAc,EAAE,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;SACnE,CAAC,EACF,4BAA4B,CAC7B,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"offline-recovery-branch.test.js","sourceRoot":"","sources":["../../test/offline-recovery-branch.test.ts"],"names":[],"mappings":"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"}