@animalabs/agent-framework 0.32.0 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/README.md +340 -22
  2. package/dist/src/admission/admit.d.ts +18 -0
  3. package/dist/src/admission/admit.d.ts.map +1 -1
  4. package/dist/src/admission/admit.js +16 -3
  5. package/dist/src/admission/admit.js.map +1 -1
  6. package/dist/src/agent.d.ts +208 -80
  7. package/dist/src/agent.d.ts.map +1 -1
  8. package/dist/src/agent.js +345 -113
  9. package/dist/src/agent.js.map +1 -1
  10. package/dist/src/api/mcp-server-core.d.ts.map +1 -1
  11. package/dist/src/api/mcp-server-core.js +50 -12
  12. package/dist/src/api/mcp-server-core.js.map +1 -1
  13. package/dist/src/api/server.d.ts.map +1 -1
  14. package/dist/src/api/server.js +4 -20
  15. package/dist/src/api/server.js.map +1 -1
  16. package/dist/src/append-all.d.ts +5 -0
  17. package/dist/src/append-all.d.ts.map +1 -0
  18. package/dist/src/append-all.js +8 -0
  19. package/dist/src/append-all.js.map +1 -0
  20. package/dist/src/code-execution/isolate/scripts.d.ts +12 -8
  21. package/dist/src/code-execution/isolate/scripts.d.ts.map +1 -1
  22. package/dist/src/code-execution/isolate/scripts.js +24 -0
  23. package/dist/src/code-execution/isolate/scripts.js.map +1 -1
  24. package/dist/src/config-checks.d.ts +7 -0
  25. package/dist/src/config-checks.d.ts.map +1 -1
  26. package/dist/src/config-checks.js +14 -0
  27. package/dist/src/config-checks.js.map +1 -1
  28. package/dist/src/context-manager-errors.d.ts +25 -0
  29. package/dist/src/context-manager-errors.d.ts.map +1 -0
  30. package/dist/src/context-manager-errors.js +31 -0
  31. package/dist/src/context-manager-errors.js.map +1 -0
  32. package/dist/src/context-options.d.ts +70 -0
  33. package/dist/src/context-options.d.ts.map +1 -0
  34. package/dist/src/context-options.js +90 -0
  35. package/dist/src/context-options.js.map +1 -0
  36. package/dist/src/cut-off-round.js +4 -4
  37. package/dist/src/deferred-import.d.ts +93 -0
  38. package/dist/src/deferred-import.d.ts.map +1 -0
  39. package/dist/src/deferred-import.js +177 -0
  40. package/dist/src/deferred-import.js.map +1 -0
  41. package/dist/src/dendrite/audience.d.ts +223 -0
  42. package/dist/src/dendrite/audience.d.ts.map +1 -0
  43. package/dist/src/dendrite/audience.js +202 -0
  44. package/dist/src/dendrite/audience.js.map +1 -0
  45. package/dist/src/dendrite/index.d.ts +5 -3
  46. package/dist/src/dendrite/index.d.ts.map +1 -1
  47. package/dist/src/dendrite/index.js +2 -1
  48. package/dist/src/dendrite/index.js.map +1 -1
  49. package/dist/src/dendrite/presets.d.ts +10 -5
  50. package/dist/src/dendrite/presets.d.ts.map +1 -1
  51. package/dist/src/dendrite/presets.js +17 -5
  52. package/dist/src/dendrite/presets.js.map +1 -1
  53. package/dist/src/dendrite/registry.d.ts +62 -7
  54. package/dist/src/dendrite/registry.d.ts.map +1 -1
  55. package/dist/src/dendrite/registry.js +183 -12
  56. package/dist/src/dendrite/registry.js.map +1 -1
  57. package/dist/src/dendrite/types.d.ts +91 -8
  58. package/dist/src/dendrite/types.d.ts.map +1 -1
  59. package/dist/src/failure-text.d.ts +36 -0
  60. package/dist/src/failure-text.d.ts.map +1 -0
  61. package/dist/src/failure-text.js +89 -0
  62. package/dist/src/failure-text.js.map +1 -0
  63. package/dist/src/foreign-rounds.d.ts +69 -0
  64. package/dist/src/foreign-rounds.d.ts.map +1 -0
  65. package/dist/src/foreign-rounds.js +152 -0
  66. package/dist/src/foreign-rounds.js.map +1 -0
  67. package/dist/src/framework.d.ts +2064 -842
  68. package/dist/src/framework.d.ts.map +1 -1
  69. package/dist/src/framework.js +8586 -3739
  70. package/dist/src/framework.js.map +1 -1
  71. package/dist/src/gate/event-gate.d.ts +125 -21
  72. package/dist/src/gate/event-gate.d.ts.map +1 -1
  73. package/dist/src/gate/event-gate.js +487 -72
  74. package/dist/src/gate/event-gate.js.map +1 -1
  75. package/dist/src/gate/index.d.ts +1 -1
  76. package/dist/src/gate/index.d.ts.map +1 -1
  77. package/dist/src/gate/index.js.map +1 -1
  78. package/dist/src/gate/reply-judge.d.ts +4 -0
  79. package/dist/src/gate/reply-judge.d.ts.map +1 -1
  80. package/dist/src/gate/reply-judge.js +12 -3
  81. package/dist/src/gate/reply-judge.js.map +1 -1
  82. package/dist/src/gate/rule-scope.d.ts +30 -0
  83. package/dist/src/gate/rule-scope.d.ts.map +1 -0
  84. package/dist/src/gate/rule-scope.js +41 -0
  85. package/dist/src/gate/rule-scope.js.map +1 -0
  86. package/dist/src/gate/suppress-script-worker.d.ts +2 -0
  87. package/dist/src/gate/suppress-script-worker.d.ts.map +1 -0
  88. package/dist/src/gate/suppress-script-worker.js +103 -0
  89. package/dist/src/gate/suppress-script-worker.js.map +1 -0
  90. package/dist/src/gate/suppress-scripts.d.ts +105 -0
  91. package/dist/src/gate/suppress-scripts.d.ts.map +1 -0
  92. package/dist/src/gate/suppress-scripts.js +403 -0
  93. package/dist/src/gate/suppress-scripts.js.map +1 -0
  94. package/dist/src/gate/suppression-review.d.ts +143 -0
  95. package/dist/src/gate/suppression-review.d.ts.map +1 -0
  96. package/dist/src/gate/suppression-review.js +463 -0
  97. package/dist/src/gate/suppression-review.js.map +1 -0
  98. package/dist/src/gate/suppression-stats.d.ts +125 -0
  99. package/dist/src/gate/suppression-stats.d.ts.map +1 -0
  100. package/dist/src/gate/suppression-stats.js +214 -0
  101. package/dist/src/gate/suppression-stats.js.map +1 -0
  102. package/dist/src/gate/types.d.ts +142 -7
  103. package/dist/src/gate/types.d.ts.map +1 -1
  104. package/dist/src/gate/wake-onboarding.d.ts +119 -0
  105. package/dist/src/gate/wake-onboarding.d.ts.map +1 -0
  106. package/dist/src/gate/wake-onboarding.js +277 -0
  107. package/dist/src/gate/wake-onboarding.js.map +1 -0
  108. package/dist/src/heartbeat/heartbeat.js +1 -1
  109. package/dist/src/heartbeat/heartbeat.js.map +1 -1
  110. package/dist/src/held-writes.d.ts +31 -23
  111. package/dist/src/held-writes.d.ts.map +1 -1
  112. package/dist/src/held-writes.js +44 -59
  113. package/dist/src/held-writes.js.map +1 -1
  114. package/dist/src/index.d.ts +6 -2
  115. package/dist/src/index.d.ts.map +1 -1
  116. package/dist/src/index.js +4 -0
  117. package/dist/src/index.js.map +1 -1
  118. package/dist/src/inference-bounds.d.ts +2 -1
  119. package/dist/src/inference-bounds.d.ts.map +1 -1
  120. package/dist/src/inference-bounds.js +9 -6
  121. package/dist/src/inference-bounds.js.map +1 -1
  122. package/dist/src/jsonrpc-envelope.d.ts +69 -0
  123. package/dist/src/jsonrpc-envelope.d.ts.map +1 -0
  124. package/dist/src/jsonrpc-envelope.js +66 -0
  125. package/dist/src/jsonrpc-envelope.js.map +1 -0
  126. package/dist/src/mcpl/channel-registry.d.ts +188 -28
  127. package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
  128. package/dist/src/mcpl/channel-registry.js +426 -70
  129. package/dist/src/mcpl/channel-registry.js.map +1 -1
  130. package/dist/src/mcpl/checkpoint-manager.d.ts +2 -4
  131. package/dist/src/mcpl/checkpoint-manager.d.ts.map +1 -1
  132. package/dist/src/mcpl/checkpoint-manager.js.map +1 -1
  133. package/dist/src/mcpl/feature-set-manager.d.ts +2 -4
  134. package/dist/src/mcpl/feature-set-manager.d.ts.map +1 -1
  135. package/dist/src/mcpl/feature-set-manager.js.map +1 -1
  136. package/dist/src/mcpl/inbound-source.d.ts +2 -1
  137. package/dist/src/mcpl/inbound-source.d.ts.map +1 -1
  138. package/dist/src/mcpl/inbound-source.js +2 -1
  139. package/dist/src/mcpl/inbound-source.js.map +1 -1
  140. package/dist/src/mcpl/inference-router.d.ts +6 -6
  141. package/dist/src/mcpl/inference-router.d.ts.map +1 -1
  142. package/dist/src/mcpl/inference-router.js.map +1 -1
  143. package/dist/src/mcpl/modern-connection.d.ts +109 -15
  144. package/dist/src/mcpl/modern-connection.d.ts.map +1 -1
  145. package/dist/src/mcpl/modern-connection.js +593 -86
  146. package/dist/src/mcpl/modern-connection.js.map +1 -1
  147. package/dist/src/mcpl/protocol-family.d.ts +3 -1
  148. package/dist/src/mcpl/protocol-family.d.ts.map +1 -1
  149. package/dist/src/mcpl/protocol-family.js +15 -9
  150. package/dist/src/mcpl/protocol-family.js.map +1 -1
  151. package/dist/src/mcpl/push-coalescer.d.ts +132 -22
  152. package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
  153. package/dist/src/mcpl/push-coalescer.js +105 -15
  154. package/dist/src/mcpl/push-coalescer.js.map +1 -1
  155. package/dist/src/mcpl/push-handler.d.ts +9 -7
  156. package/dist/src/mcpl/push-handler.d.ts.map +1 -1
  157. package/dist/src/mcpl/push-handler.js.map +1 -1
  158. package/dist/src/mcpl/server-connection.d.ts +50 -28
  159. package/dist/src/mcpl/server-connection.d.ts.map +1 -1
  160. package/dist/src/mcpl/server-connection.js +165 -72
  161. package/dist/src/mcpl/server-connection.js.map +1 -1
  162. package/dist/src/mcpl/tool-classes.d.ts.map +1 -1
  163. package/dist/src/mcpl/tool-classes.js +3 -0
  164. package/dist/src/mcpl/tool-classes.js.map +1 -1
  165. package/dist/src/mcpl/tool-presence.d.ts.map +1 -1
  166. package/dist/src/mcpl/tool-presence.js +10 -6
  167. package/dist/src/mcpl/tool-presence.js.map +1 -1
  168. package/dist/src/mcpl/toolset-host.d.ts.map +1 -1
  169. package/dist/src/mcpl/toolset-host.js +7 -6
  170. package/dist/src/mcpl/toolset-host.js.map +1 -1
  171. package/dist/src/mcpl/toolsets-module.d.ts.map +1 -1
  172. package/dist/src/mcpl/toolsets-module.js +2 -1
  173. package/dist/src/mcpl/toolsets-module.js.map +1 -1
  174. package/dist/src/mcpl/types.d.ts +33 -6
  175. package/dist/src/mcpl/types.d.ts.map +1 -1
  176. package/dist/src/mcpl/types.js.map +1 -1
  177. package/dist/src/module-registry.d.ts +24 -1
  178. package/dist/src/module-registry.d.ts.map +1 -1
  179. package/dist/src/module-registry.js +68 -18
  180. package/dist/src/module-registry.js.map +1 -1
  181. package/dist/src/modules/discord/index.d.ts +45 -8
  182. package/dist/src/modules/discord/index.d.ts.map +1 -1
  183. package/dist/src/modules/discord/index.js +238 -87
  184. package/dist/src/modules/discord/index.js.map +1 -1
  185. package/dist/src/modules/health/index.js +2 -2
  186. package/dist/src/modules/health/index.js.map +1 -1
  187. package/dist/src/modules/history/index.d.ts +59 -0
  188. package/dist/src/modules/history/index.d.ts.map +1 -1
  189. package/dist/src/modules/history/index.js +432 -67
  190. package/dist/src/modules/history/index.js.map +1 -1
  191. package/dist/src/modules/history/semantic.d.ts +6 -5
  192. package/dist/src/modules/history/semantic.d.ts.map +1 -1
  193. package/dist/src/modules/history/semantic.js +18 -25
  194. package/dist/src/modules/history/semantic.js.map +1 -1
  195. package/dist/src/modules/workspace/disk-agreement.d.ts +1 -1
  196. package/dist/src/modules/workspace/disk-agreement.js +1 -1
  197. package/dist/src/modules/workspace/index.d.ts +28 -7
  198. package/dist/src/modules/workspace/index.d.ts.map +1 -1
  199. package/dist/src/modules/workspace/index.js +80 -25
  200. package/dist/src/modules/workspace/index.js.map +1 -1
  201. package/dist/src/modules/workspace/observe.d.ts.map +1 -1
  202. package/dist/src/modules/workspace/observe.js +2 -1
  203. package/dist/src/modules/workspace/observe.js.map +1 -1
  204. package/dist/src/modules/workspace/reconcile.d.ts.map +1 -1
  205. package/dist/src/modules/workspace/reconcile.js +3 -2
  206. package/dist/src/modules/workspace/reconcile.js.map +1 -1
  207. package/dist/src/notice-tags.d.ts +20 -9
  208. package/dist/src/notice-tags.d.ts.map +1 -1
  209. package/dist/src/notice-tags.js +20 -9
  210. package/dist/src/notice-tags.js.map +1 -1
  211. package/dist/src/operator-log.d.ts +36 -3
  212. package/dist/src/operator-log.d.ts.map +1 -1
  213. package/dist/src/operator-log.js +2 -2
  214. package/dist/src/operator-log.js.map +1 -1
  215. package/dist/src/presentation.d.ts +747 -0
  216. package/dist/src/presentation.d.ts.map +1 -0
  217. package/dist/src/presentation.js +1437 -0
  218. package/dist/src/presentation.js.map +1 -0
  219. package/dist/src/prose-drafts.d.ts +15 -11
  220. package/dist/src/prose-drafts.d.ts.map +1 -1
  221. package/dist/src/prose-drafts.js +16 -12
  222. package/dist/src/prose-drafts.js.map +1 -1
  223. package/dist/src/read-marks.d.ts +192 -0
  224. package/dist/src/read-marks.d.ts.map +1 -0
  225. package/dist/src/read-marks.js +242 -0
  226. package/dist/src/read-marks.js.map +1 -0
  227. package/dist/src/reasoning-loss.d.ts +5 -0
  228. package/dist/src/reasoning-loss.d.ts.map +1 -0
  229. package/dist/src/reasoning-loss.js +8 -0
  230. package/dist/src/reasoning-loss.js.map +1 -0
  231. package/dist/src/recovery/offline-branch.d.ts +91 -6
  232. package/dist/src/recovery/offline-branch.d.ts.map +1 -1
  233. package/dist/src/recovery/offline-branch.js +277 -32
  234. package/dist/src/recovery/offline-branch.js.map +1 -1
  235. package/dist/src/recovery/recover-cli.js +24 -4
  236. package/dist/src/recovery/recover-cli.js.map +1 -1
  237. package/dist/src/send-tools.d.ts +5 -9
  238. package/dist/src/send-tools.d.ts.map +1 -1
  239. package/dist/src/send-tools.js +40 -7
  240. package/dist/src/send-tools.js.map +1 -1
  241. package/dist/src/sent-rows.js +1 -1
  242. package/dist/src/stored-injections.d.ts +2 -2
  243. package/dist/src/stored-injections.js +2 -2
  244. package/dist/src/stored-removal.d.ts +17 -4
  245. package/dist/src/stored-removal.d.ts.map +1 -1
  246. package/dist/src/stored-removal.js +29 -5
  247. package/dist/src/stored-removal.js.map +1 -1
  248. package/dist/src/supplied-text.d.ts +1 -1
  249. package/dist/src/supplied-text.js +3 -3
  250. package/dist/src/supplied-text.js.map +1 -1
  251. package/dist/src/thinking-drops.d.ts +2 -0
  252. package/dist/src/thinking-drops.d.ts.map +1 -1
  253. package/dist/src/thinking-drops.js.map +1 -1
  254. package/dist/src/tool-presentation.d.ts.map +1 -1
  255. package/dist/src/tool-presentation.js +38 -9
  256. package/dist/src/tool-presentation.js.map +1 -1
  257. package/dist/src/tool-result-guard.d.ts +12 -1
  258. package/dist/src/tool-result-guard.d.ts.map +1 -1
  259. package/dist/src/tool-result-guard.js +42 -8
  260. package/dist/src/tool-result-guard.js.map +1 -1
  261. package/dist/src/tune-out/coordinator.d.ts +1170 -81
  262. package/dist/src/tune-out/coordinator.d.ts.map +1 -1
  263. package/dist/src/tune-out/coordinator.js +3732 -369
  264. package/dist/src/tune-out/coordinator.js.map +1 -1
  265. package/dist/src/tune-out/tools.d.ts +114 -17
  266. package/dist/src/tune-out/tools.d.ts.map +1 -1
  267. package/dist/src/tune-out/tools.js +89 -28
  268. package/dist/src/tune-out/tools.js.map +1 -1
  269. package/dist/src/tune-out/window-anchor.d.ts +143 -0
  270. package/dist/src/tune-out/window-anchor.d.ts.map +1 -0
  271. package/dist/src/tune-out/window-anchor.js +202 -0
  272. package/dist/src/tune-out/window-anchor.js.map +1 -0
  273. package/dist/src/types/agent.d.ts +121 -25
  274. package/dist/src/types/agent.d.ts.map +1 -1
  275. package/dist/src/types/events.d.ts +2 -0
  276. package/dist/src/types/events.d.ts.map +1 -1
  277. package/dist/src/types/framework.d.ts +72 -17
  278. package/dist/src/types/framework.d.ts.map +1 -1
  279. package/dist/src/types/inference-log.d.ts +1 -0
  280. package/dist/src/types/inference-log.d.ts.map +1 -1
  281. package/dist/src/types/module.d.ts +180 -69
  282. package/dist/src/types/module.d.ts.map +1 -1
  283. package/dist/src/types/trace.d.ts +573 -39
  284. package/dist/src/types/trace.d.ts.map +1 -1
  285. package/package.json +4 -4
  286. package/src/admission/admit.ts +32 -3
  287. package/src/agent.ts +392 -132
  288. package/src/api/mcp-server-core.ts +54 -17
  289. package/src/api/server.ts +4 -23
  290. package/src/append-all.ts +6 -0
  291. package/src/code-execution/isolate/scripts.ts +28 -3
  292. package/src/config-checks.ts +14 -0
  293. package/src/context-manager-errors.ts +37 -0
  294. package/src/context-options.ts +106 -0
  295. package/src/cut-off-round.ts +4 -4
  296. package/src/deferred-import.ts +239 -0
  297. package/src/dendrite/audience.ts +315 -0
  298. package/src/dendrite/index.ts +14 -2
  299. package/src/dendrite/presets.ts +18 -6
  300. package/src/dendrite/registry.ts +213 -14
  301. package/src/dendrite/types.ts +92 -8
  302. package/src/failure-text.ts +88 -0
  303. package/src/foreign-rounds.ts +199 -0
  304. package/src/framework.ts +8796 -3813
  305. package/src/gate/event-gate.ts +518 -91
  306. package/src/gate/index.ts +3 -0
  307. package/src/gate/reply-judge.ts +12 -3
  308. package/src/gate/rule-scope.ts +45 -0
  309. package/src/gate/suppress-script-worker.ts +89 -0
  310. package/src/gate/suppress-scripts.ts +414 -0
  311. package/src/gate/suppression-review.ts +517 -0
  312. package/src/gate/suppression-stats.ts +314 -0
  313. package/src/gate/types.ts +148 -7
  314. package/src/gate/wake-onboarding.ts +309 -0
  315. package/src/heartbeat/heartbeat.ts +1 -1
  316. package/src/held-writes.ts +49 -60
  317. package/src/index.ts +10 -2
  318. package/src/inference-bounds.ts +11 -6
  319. package/src/jsonrpc-envelope.ts +81 -0
  320. package/src/mcpl/channel-registry.ts +513 -116
  321. package/src/mcpl/checkpoint-manager.ts +3 -2
  322. package/src/mcpl/feature-set-manager.ts +2 -1
  323. package/src/mcpl/inbound-source.ts +2 -1
  324. package/src/mcpl/inference-router.ts +7 -4
  325. package/src/mcpl/modern-connection.ts +629 -91
  326. package/src/mcpl/protocol-family.ts +15 -9
  327. package/src/mcpl/push-coalescer.ts +193 -34
  328. package/src/mcpl/push-handler.ts +10 -5
  329. package/src/mcpl/server-connection.ts +169 -75
  330. package/src/mcpl/tool-classes.ts +3 -0
  331. package/src/mcpl/tool-presence.ts +10 -5
  332. package/src/mcpl/toolset-host.ts +7 -6
  333. package/src/mcpl/toolsets-module.ts +2 -1
  334. package/src/mcpl/types.ts +33 -6
  335. package/src/module-registry.ts +73 -17
  336. package/src/modules/discord/index.ts +230 -82
  337. package/src/modules/health/index.ts +2 -2
  338. package/src/modules/history/index.ts +439 -70
  339. package/src/modules/history/semantic.ts +18 -24
  340. package/src/modules/workspace/disk-agreement.ts +1 -1
  341. package/src/modules/workspace/index.ts +89 -26
  342. package/src/modules/workspace/observe.ts +2 -1
  343. package/src/modules/workspace/reconcile.ts +3 -2
  344. package/src/notice-tags.ts +21 -9
  345. package/src/operator-log.ts +36 -3
  346. package/src/presentation.ts +1678 -0
  347. package/src/prose-drafts.ts +16 -12
  348. package/src/read-marks.ts +328 -0
  349. package/src/reasoning-loss.ts +7 -0
  350. package/src/recovery/offline-branch.ts +350 -35
  351. package/src/recovery/recover-cli.ts +23 -4
  352. package/src/send-tools.ts +40 -7
  353. package/src/sent-rows.ts +1 -1
  354. package/src/stored-injections.ts +2 -2
  355. package/src/stored-removal.ts +31 -7
  356. package/src/supplied-text.ts +3 -3
  357. package/src/thinking-drops.ts +2 -0
  358. package/src/tool-presentation.ts +34 -9
  359. package/src/tool-result-guard.ts +41 -7
  360. package/src/tune-out/coordinator.ts +4121 -472
  361. package/src/tune-out/tools.ts +162 -44
  362. package/src/tune-out/window-anchor.ts +277 -0
  363. package/src/types/agent.ts +122 -25
  364. package/src/types/events.ts +2 -0
  365. package/src/types/framework.ts +73 -17
  366. package/src/types/inference-log.ts +1 -0
  367. package/src/types/module.ts +181 -68
  368. package/src/types/trace.ts +607 -43
@@ -0,0 +1,242 @@
1
+ const HEAD = Symbol('read-mark head');
2
+ const LENGTH = Symbol('read-mark length');
3
+ function mark(branch, head, length) {
4
+ return Object.freeze({ branch, [HEAD]: head, [LENGTH]: length });
5
+ }
6
+ /**
7
+ * A mark of where `cm` stands now: its branch, the store's head (the
8
+ * chronicle head, not the slot's last row: in legacy mode a compile reads
9
+ * everything stored on the branch that its view keeps, rows merged in from
10
+ * another slot included; a double without a store gives its last row's
11
+ * sequence), and
12
+ * its index length when it is in presented mode, where a compile reads the
13
+ * window and the mark covers by that length, not by the head. Null for a
14
+ * double that can't say, or when reading throws.
15
+ */
16
+ export function readMarkOf(cm) {
17
+ try {
18
+ const head = storeHeadOf(cm);
19
+ if (head === null)
20
+ return null;
21
+ const presented = typeof cm.windowMode === 'function' && cm.windowMode() === 'presented'
22
+ && typeof cm.indexLength === 'function';
23
+ return mark(cm.currentBranch().name, head, presented ? cm.indexLength() : null);
24
+ }
25
+ catch {
26
+ return null;
27
+ }
28
+ }
29
+ /**
30
+ * The store's head as `cm` reads it now, the head a mark readMarkOf takes
31
+ * keeps: the chronicle head, not the slot's last message, since in legacy
32
+ * mode a compile reads everything stored on the branch so far, rows merged
33
+ * in from another slot included (in presented mode it reads the window,
34
+ * which a mark covers by its index length). A record sequence, on the
35
+ * branch `cm` is on: for a reader
36
+ * that compares stored rows' sequences with it on that branch (Agent's
37
+ * branchHead), not a cover of the window. Null for a context double that
38
+ * can't say.
39
+ */
40
+ export function storeHeadOf(cm) {
41
+ try {
42
+ if (typeof cm.currentBranch !== 'function' || typeof cm.getAllMessages !== 'function')
43
+ return null;
44
+ const store = typeof cm.getStore === 'function' ? cm.getStore() : undefined;
45
+ let head = typeof store?.currentSequence === 'function' ? store.currentSequence() : undefined;
46
+ if (head === undefined) {
47
+ const count = typeof cm.getMessageCount === 'function' ? cm.getMessageCount() : cm.getAllMessages().length;
48
+ head = count > 0 ? cm.getAllMessages().at(-1)?.sequence ?? 0 : 0;
49
+ }
50
+ return head;
51
+ }
52
+ catch {
53
+ return null;
54
+ }
55
+ }
56
+ /**
57
+ * A mark of where `cm` stands now, as readMarkOf takes one, that covers its
58
+ * window only below `length` (an index length of that window, at most its
59
+ * own): for a redo on the window (AgentFramework.redo), which puts back,
60
+ * at new ordinals and in their order, rows a mark covered before they were
61
+ * undone and rows it didn't, so the mark it gives again covers the first
62
+ * and not the rest. Null where readMarkOf gives null, and in legacy mode,
63
+ * where a mark has no length.
64
+ */
65
+ export function readMarkThrough(cm, length) {
66
+ const now = readMarkOf(cm);
67
+ if (!now || now[LENGTH] === null)
68
+ return null;
69
+ return mark(now.branch, now[HEAD], Math.min(length, now[LENGTH]));
70
+ }
71
+ /**
72
+ * Whether a mark was taken in presented mode: it keeps the window's index
73
+ * length, and covers rows by their ordinals there, so a row taken out of the
74
+ * window and presented again, at a new ordinal past its length, leaves it.
75
+ * A mark taken in legacy mode keeps none: it covers by sequence while its
76
+ * window is the record, and, once the window is written down, by ordinal
77
+ * too, below the first row the window didn't hold by its head (coverTest),
78
+ * so a row presented again after it leaves it in the same way.
79
+ */
80
+ export function coversByOrdinal(mark) {
81
+ return !!mark && mark[LENGTH] !== null;
82
+ }
83
+ /**
84
+ * A test of many rows against one mark, read against `reader` (the manager
85
+ * whose window the mark is of), which reads the reader's branch and mode
86
+ * once. The rules:
87
+ *
88
+ * - no mark: doubt;
89
+ * - a mark on another branch than the reader's: doubt, except that a mark
90
+ * taken in legacy mode, read `across` a branch point (`partAt`, the last
91
+ * sequence the two branches share), reads as one on the reader's branch
92
+ * (below) through the lower of its head and the branch point;
93
+ * - a mark taken in legacy mode, read against a reader in legacy mode: a
94
+ * row at or below its head is covered;
95
+ * - a mark taken in legacy mode, read against a reader in presented mode:
96
+ * a row the window has held where it stands since the head or before is
97
+ * covered (windowLengthAt: the window's rows below the ordinal of its first
98
+ * row a branch cut at the head wouldn't keep), and no other: not a row
99
+ * stored after the head, out of the window, or presented after the head,
100
+ * again or for the first time. A reader that can't say where its window
101
+ * held a row (a double without ordinalOf, getPresentedMessages,
102
+ * branchSequenceOf or indexLength) is read by sequence, as in legacy
103
+ * mode; a read of the window that throws is doubt for the rows at or
104
+ * below the head;
105
+ * - a mark taken in presented mode, read against a reader no longer in it:
106
+ * doubt;
107
+ * - else a row is covered when its ordinal is below the mark's length:
108
+ * strictly, since the length is the ordinal the next row would take. A row
109
+ * out of the window (never presented, or taken out) is not covered.
110
+ */
111
+ export function coverTest(mark, reader, across) {
112
+ if (!mark)
113
+ return () => 'doubt';
114
+ let branch;
115
+ let presented = false;
116
+ try {
117
+ branch = typeof reader.currentBranch === 'function' ? reader.currentBranch().name : undefined;
118
+ presented = typeof reader.windowMode === 'function' && reader.windowMode() === 'presented';
119
+ }
120
+ catch {
121
+ return () => 'doubt';
122
+ }
123
+ const head = mark[HEAD];
124
+ const length = mark[LENGTH];
125
+ if (branch !== mark.branch) {
126
+ if (!across || length !== null)
127
+ return () => 'doubt';
128
+ return legacyCover(reader, presented, Math.min(head, across.partAt));
129
+ }
130
+ if (length === null)
131
+ return legacyCover(reader, presented, head);
132
+ if (!presented || typeof reader.ordinalOf !== 'function')
133
+ return () => 'doubt';
134
+ return byOrdinal(reader.ordinalOf.bind(reader), length);
135
+ }
136
+ function byOrdinal(ordinalOf, length) {
137
+ return (row) => {
138
+ const ordinal = ordinalOf(row.id);
139
+ return ordinal !== undefined && ordinal < length ? 'covered' : 'not-covered';
140
+ };
141
+ }
142
+ /**
143
+ * How a mark taken in legacy mode covers through `through` (its head, or the
144
+ * lower of its head and a branch point): by sequence against a reader in
145
+ * legacy mode, or one that can't say where its window held a row; against
146
+ * one in presented mode, by ordinal below windowLengthAt(reader, through),
147
+ * read once, at the first row that needs it. A row stored after `through`
148
+ * entered the window after it, wherever it stands, so it is not covered
149
+ * without that read.
150
+ */
151
+ function legacyCover(reader, presented, through) {
152
+ const bySequence = (row) => (row.sequence <= through ? 'covered' : 'not-covered');
153
+ if (!presented || typeof reader.ordinalOf !== 'function' || typeof reader.getPresentedMessages !== 'function'
154
+ || typeof reader.branchSequenceOf !== 'function' || typeof reader.indexLength !== 'function') {
155
+ return bySequence;
156
+ }
157
+ let cover;
158
+ return (row) => {
159
+ if (row.sequence > through)
160
+ return 'not-covered';
161
+ if (!cover) {
162
+ const length = windowLengthAt(reader, through);
163
+ cover = length === null ? () => 'doubt' : byOrdinal(reader.ordinalOf.bind(reader), length);
164
+ }
165
+ return cover(row);
166
+ };
167
+ }
168
+ /**
169
+ * The index length a mark taken in presented mode would hold to cover the
170
+ * rows `reader`'s window (in presented mode) has held, where they stand
171
+ * now, since sequence `through` or before: the ordinal of the window's first
172
+ * row that a branch cut at `through` wouldn't keep in its window, or the
173
+ * index length when such a cut keeps them all. A cut keeps a row when its
174
+ * branchSequenceOf (the sequence a cut has to reach for its window to hold
175
+ * the row) is at or below `through`: a row's own sequence (its body's last
176
+ * shard's) for a row the write-down put in the window, which lists the
177
+ * record in record order, and the write that presented it for any other,
178
+ * which comes after the write-down and after every write that presented a
179
+ * row before it. So that sequence only grows along the window, and the
180
+ * first row past `through` is found by a binary search over it: a few reads
181
+ * per mark, whatever the window's length. Null when a read throws.
182
+ */
183
+ function windowLengthAt(reader, through) {
184
+ try {
185
+ const window = reader.getPresentedMessages();
186
+ let low = 0;
187
+ let high = window.length;
188
+ while (low < high) {
189
+ const middle = (low + high) >>> 1;
190
+ if (reader.branchSequenceOf(window[middle].id) <= through)
191
+ low = middle + 1;
192
+ else
193
+ high = middle;
194
+ }
195
+ if (low === window.length)
196
+ return reader.indexLength();
197
+ return reader.ordinalOf(window[low].id) ?? null;
198
+ }
199
+ catch {
200
+ return null;
201
+ }
202
+ }
203
+ /** Whether `mark` covers `row` in `reader`'s window (see coverTest for the rules). */
204
+ export function covers(mark, reader, row, across) {
205
+ return coverTest(mark, reader, across)(row);
206
+ }
207
+ /**
208
+ * Whether mark `a` was taken at or after mark `b`: on one branch, by the
209
+ * window's index length when both keep one, which only grows there and
210
+ * grows at every presentation, and by the store's head, which only grows
211
+ * there too, where the lengths are equal or either mark keeps none;
212
+ * `'other-branch'` when they are on two. Two marks at one head can keep two
213
+ * lengths: a mark readMarkThrough gives (a redo's) covers less of the window
214
+ * than one taken at the same head, and a double without a store reads its
215
+ * head from its last row, which no presentation moves. The one with the
216
+ * greater length is the later: a publish noted with it (Agent.notePublished)
217
+ * is credited with the rows presented between.
218
+ */
219
+ export function markAtOrAfter(a, b) {
220
+ if (a.branch !== b.branch)
221
+ return 'other-branch';
222
+ const [aLength, bLength] = [a[LENGTH], b[LENGTH]];
223
+ if (aLength !== null && bLength !== null && aLength !== bLength)
224
+ return aLength > bLength;
225
+ return a[HEAD] >= b[HEAD];
226
+ }
227
+ /** A mark for a log line or a test's message: `main@412` in legacy mode, `main@412#57` with its index length. */
228
+ export function describeReadMark(mark) {
229
+ if (!mark)
230
+ return 'no mark';
231
+ return `${mark.branch}@${mark[HEAD]}${mark[LENGTH] === null ? '' : `#${mark[LENGTH]}`}`;
232
+ }
233
+ /**
234
+ * A mark built from its parts, for a test that needs one taken at a given
235
+ * place. Production code takes marks with readMarkOf.
236
+ *
237
+ * @internal
238
+ */
239
+ export function readMarkForTest(branch, head, length) {
240
+ return mark(branch, head, length);
241
+ }
242
+ //# sourceMappingURL=read-marks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-marks.js","sourceRoot":"","sources":["../../src/read-marks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** #973: #938 stopped writing these notices, but old stores retain them.
2
+ * Exclude deterministically before selection, compression and thinking binding;
3
+ * never match text or change stored history. */
4
+ export declare function isReasoningLoss(metadata: unknown): boolean;
5
+ //# sourceMappingURL=reasoning-loss.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reasoning-loss.d.ts","sourceRoot":"","sources":["../../src/reasoning-loss.ts"],"names":[],"mappings":"AAAA;;iDAEiD;AACjD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAG1D"}
@@ -0,0 +1,8 @@
1
+ /** #973: #938 stopped writing these notices, but old stores retain them.
2
+ * Exclude deterministically before selection, compression and thinking binding;
3
+ * never match text or change stored history. */
4
+ export function isReasoningLoss(metadata) {
5
+ const mark = metadata;
6
+ return mark?.kind === 'reasoning-loss' && mark.system === true;
7
+ }
8
+ //# sourceMappingURL=reasoning-loss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reasoning-loss.js","sourceRoot":"","sources":["../../src/reasoning-loss.ts"],"names":[],"mappings":"AAAA;;iDAEiD;AACjD,MAAM,UAAU,eAAe,CAAC,QAAiB;IAC/C,MAAM,IAAI,GAAG,QAAmE,CAAC;IACjF,OAAO,IAAI,EAAE,IAAI,KAAK,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;AACjE,CAAC"}
@@ -3,12 +3,45 @@ import { type DiscordAwarenessMarks, type DiscordAwarenessRef } from './discord-
3
3
  export interface OfflineRecoveryBranchOptions {
4
4
  storePath: string;
5
5
  agentName: string;
6
- /** Preferred: Discord message that remains as the last visible anchor. */
6
+ /**
7
+ * Preferred: Discord message that remains as the last visible anchor. On
8
+ * an agent's window that was presented (#291) the branch is cut at the
9
+ * write that presented the anchor, so rows stored after the anchor and
10
+ * before that write stay on the branch: those the window took after the
11
+ * anchor enter it again at the agent's next presentation point, after the
12
+ * anchor, and the rows that one write presented together with the anchor
13
+ * stay after it in the window. Only rows stored after the cut are removed
14
+ * and counted. A
15
+ * suppression may name any row the branch keeps that has a Discord
16
+ * message id, one the cut keeps after the anchor too; one without (an
17
+ * agent's round, a tool row) takes the live suppressMessages, by its row
18
+ * id. A recovery on that window that would change nothing (no
19
+ * row removed, none an arrival again, no suppression) is refused, as the
20
+ * live rollback refuses it.
21
+ */
7
22
  messageId?: string;
8
- /** Exact internal ContextManager message ID that remains as the anchor. */
23
+ /** Exact internal ContextManager message ID that remains as the anchor (the cut as for `messageId`). */
9
24
  contextId?: string;
10
- /** Backward-compatible alternative: remove the newest N context entries. */
25
+ /**
26
+ * Backward-compatible alternative: remove the newest N context entries,
27
+ * counted in the agent's window once it was presented (#291), over the
28
+ * rows of its own slot, and in the record before that; the anchor is the
29
+ * entry before them, cut as for `messageId`.
30
+ */
11
31
  messages?: number;
32
+ /**
33
+ * Remove every row a suppress rule hid (`metadata.suppressed`) on the new
34
+ * branch, which needs no anchor: the branch then starts from the newest row.
35
+ * For rolling back to a release that doesn't read the stamp, where a row
36
+ * hidden between messages a summary covers makes that summary non-contiguous,
37
+ * and the store is refused at open. The source branch keeps them. Once this
38
+ * release has made a window write of two or more rows (the first
39
+ * write-down of a window that holds a row, as at the first boot on a store
40
+ * with history, or a presentation of more than one row: MANIFEST version
41
+ * 2), no earlier release opens the store at all, and only a copy taken
42
+ * before the upgrade goes back.
43
+ */
44
+ removeSuppressed?: boolean;
12
45
  /** Exact Discord messages to suppress on the new branch. */
13
46
  suppressMessageIds?: string[];
14
47
  /** Inclusive context-order ranges between Discord message endpoints. */
@@ -38,6 +71,20 @@ export interface OfflineRecoveryBranchResult {
38
71
  targetBranch: string;
39
72
  messagesRemoved: number;
40
73
  messagesSuppressed: number;
74
+ /**
75
+ * On a presented window (#291): the rows after the anchor in the agent's
76
+ * window that the cut keeps in the record (stored before the write that
77
+ * presented the anchor, presented after it), as the live rollback counts
78
+ * them, of the agent's own slot: the recovery reads that slot alone, so a
79
+ * row of a slot the agent observes (the residents' rows in a persistent
80
+ * subconscious's window), which the live rollback counts, isn't counted
81
+ * here, and the check of a cut that would change nothing doesn't see it. They leave the window as arrived and not presented, and enter it
82
+ * again at the agent's next presentation point, after the anchor. Not
83
+ * removed, so not counted in `messagesRemoved`, and not marked; a row the
84
+ * same recovery suppresses is counted there instead. 0 for a run with no
85
+ * anchor; absent on a window that is still the record.
86
+ */
87
+ returnedToArrivals?: number;
41
88
  /** Removed messages that carry a Discord address. */
42
89
  discordAddressable: number;
43
90
  /** The publication scope recorded for this recovery. */
@@ -63,9 +110,47 @@ export interface OfflineRecoveryBranchResult {
63
110
  /**
64
111
  * Create a safe Chronicle branch while the normal agent host is stopped.
65
112
  *
66
- * History is scanned in bounded windows and blobs are not re-inlined. The
67
- * affected messages are never compiled and their content is never written to
68
- * the recovery outbox; only Discord addressing metadata leaves Chronicle.
113
+ * History is scanned in bounded windows and blobs are not re-inlined, but a
114
+ * presented window (#291) is read whole where its order counts: for a
115
+ * `messages` count, and for the rows after the anchor that the cut returns
116
+ * to the arrivals or keeps (windowAfterCut). The affected messages are never
117
+ * compiled and their content is never written to the recovery outbox; only
118
+ * Discord addressing metadata leaves Chronicle.
69
119
  */
70
120
  export declare function createOfflineRecoveryBranch(options: OfflineRecoveryBranchOptions): Promise<OfflineRecoveryBranchResult>;
121
+ /**
122
+ * Of the rows a no-op cut keeps after its anchor (`kept`), those holding a
123
+ * result of a call in a row of the agent's window at or before the anchor,
124
+ * which a suppression would leave without its result: a tool boundary
125
+ * presents a round's reply and its results in one write, and so does a
126
+ * write-down for rows stored together. With them, the earliest such call's
127
+ * row and the window row before it, where a cut keeps the call and its
128
+ * results together. Undefined where no kept row answers such a call, or the
129
+ * anchor isn't in `window`. The live rollback's refusal reads it too.
130
+ */
131
+ export declare function resultsOfAnchoredCalls<R extends {
132
+ id: unknown;
133
+ content: readonly unknown[];
134
+ }>(window: readonly R[], anchorId: unknown, kept: readonly R[]): {
135
+ rows: R[];
136
+ call: R;
137
+ before?: R;
138
+ } | undefined;
139
+ /**
140
+ * A refusal's advice for the kept rows that answer a call at or before the
141
+ * anchor (resultsOfAnchoredCalls): `verb` (anchor the recovery, roll back)
142
+ * before the call's row, naming the row before it (`to`: at, to), and why
143
+ * they aren't to be suppressed.
144
+ */
145
+ export declare function anchorBefore(split: {
146
+ rows: ReadonlyArray<{
147
+ id: unknown;
148
+ }>;
149
+ call: {
150
+ id: unknown;
151
+ };
152
+ before?: {
153
+ id: unknown;
154
+ };
155
+ }, verb: string, to: string): string;
71
156
  //# sourceMappingURL=offline-branch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"offline-branch.d.ts","sourceRoot":"","sources":["../../../src/recovery/offline-branch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAI/D,OAAO,EAQL,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EAEzB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,wEAAwE;IACxE,cAAc,CAAC,EAAE,KAAK,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,sHAAsH;IACtH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qDAAqD;IACrD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wDAAwD;IACxD,UAAU,EAAE,MAAM,GAAG,WAAW,GAAG,KAAK,CAAC;IACzC,yEAAyE;IACzE,oBAAoB,EAAE,MAAM,CAAC;IAC7B;2DACuD;IACvD,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,qEAAqE;IACrE,IAAI,EAAE,mBAAmB,EAAE,CAAC;IAC5B;4EACwE;IACxE,QAAQ,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB;iEAC6D;IAC7D,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,2BAA2B,CAAC,CAqRtC"}
1
+ {"version":3,"file":"offline-branch.d.ts","sourceRoot":"","sources":["../../../src/recovery/offline-branch.ts"],"names":[],"mappings":"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"}