@animalabs/agent-framework 0.32.0 → 0.33.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 (288) hide show
  1. package/README.md +204 -14
  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 +185 -78
  7. package/dist/src/agent.d.ts.map +1 -1
  8. package/dist/src/agent.js +279 -102
  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/code-execution/isolate/scripts.d.ts +12 -8
  17. package/dist/src/code-execution/isolate/scripts.d.ts.map +1 -1
  18. package/dist/src/code-execution/isolate/scripts.js +24 -0
  19. package/dist/src/code-execution/isolate/scripts.js.map +1 -1
  20. package/dist/src/config-checks.d.ts +7 -0
  21. package/dist/src/config-checks.d.ts.map +1 -1
  22. package/dist/src/config-checks.js +14 -0
  23. package/dist/src/config-checks.js.map +1 -1
  24. package/dist/src/context-manager-errors.d.ts +25 -0
  25. package/dist/src/context-manager-errors.d.ts.map +1 -0
  26. package/dist/src/context-manager-errors.js +31 -0
  27. package/dist/src/context-manager-errors.js.map +1 -0
  28. package/dist/src/context-options.d.ts +67 -0
  29. package/dist/src/context-options.d.ts.map +1 -0
  30. package/dist/src/context-options.js +85 -0
  31. package/dist/src/context-options.js.map +1 -0
  32. package/dist/src/deferred-import.d.ts +93 -0
  33. package/dist/src/deferred-import.d.ts.map +1 -0
  34. package/dist/src/deferred-import.js +177 -0
  35. package/dist/src/deferred-import.js.map +1 -0
  36. package/dist/src/dendrite/audience.d.ts +223 -0
  37. package/dist/src/dendrite/audience.d.ts.map +1 -0
  38. package/dist/src/dendrite/audience.js +202 -0
  39. package/dist/src/dendrite/audience.js.map +1 -0
  40. package/dist/src/dendrite/index.d.ts +5 -3
  41. package/dist/src/dendrite/index.d.ts.map +1 -1
  42. package/dist/src/dendrite/index.js +2 -1
  43. package/dist/src/dendrite/index.js.map +1 -1
  44. package/dist/src/dendrite/presets.d.ts +10 -5
  45. package/dist/src/dendrite/presets.d.ts.map +1 -1
  46. package/dist/src/dendrite/presets.js +17 -5
  47. package/dist/src/dendrite/presets.js.map +1 -1
  48. package/dist/src/dendrite/registry.d.ts +62 -7
  49. package/dist/src/dendrite/registry.d.ts.map +1 -1
  50. package/dist/src/dendrite/registry.js +179 -10
  51. package/dist/src/dendrite/registry.js.map +1 -1
  52. package/dist/src/dendrite/types.d.ts +91 -8
  53. package/dist/src/dendrite/types.d.ts.map +1 -1
  54. package/dist/src/foreign-rounds.d.ts +69 -0
  55. package/dist/src/foreign-rounds.d.ts.map +1 -0
  56. package/dist/src/foreign-rounds.js +152 -0
  57. package/dist/src/foreign-rounds.js.map +1 -0
  58. package/dist/src/framework.d.ts +1976 -818
  59. package/dist/src/framework.d.ts.map +1 -1
  60. package/dist/src/framework.js +7566 -3422
  61. package/dist/src/framework.js.map +1 -1
  62. package/dist/src/gate/event-gate.d.ts +85 -15
  63. package/dist/src/gate/event-gate.d.ts.map +1 -1
  64. package/dist/src/gate/event-gate.js +421 -47
  65. package/dist/src/gate/event-gate.js.map +1 -1
  66. package/dist/src/gate/index.d.ts +1 -1
  67. package/dist/src/gate/index.d.ts.map +1 -1
  68. package/dist/src/gate/index.js.map +1 -1
  69. package/dist/src/gate/rule-scope.d.ts +30 -0
  70. package/dist/src/gate/rule-scope.d.ts.map +1 -0
  71. package/dist/src/gate/rule-scope.js +41 -0
  72. package/dist/src/gate/rule-scope.js.map +1 -0
  73. package/dist/src/gate/suppress-script-worker.d.ts +2 -0
  74. package/dist/src/gate/suppress-script-worker.d.ts.map +1 -0
  75. package/dist/src/gate/suppress-script-worker.js +103 -0
  76. package/dist/src/gate/suppress-script-worker.js.map +1 -0
  77. package/dist/src/gate/suppress-scripts.d.ts +105 -0
  78. package/dist/src/gate/suppress-scripts.d.ts.map +1 -0
  79. package/dist/src/gate/suppress-scripts.js +403 -0
  80. package/dist/src/gate/suppress-scripts.js.map +1 -0
  81. package/dist/src/gate/suppression-review.d.ts +143 -0
  82. package/dist/src/gate/suppression-review.d.ts.map +1 -0
  83. package/dist/src/gate/suppression-review.js +463 -0
  84. package/dist/src/gate/suppression-review.js.map +1 -0
  85. package/dist/src/gate/suppression-stats.d.ts +125 -0
  86. package/dist/src/gate/suppression-stats.d.ts.map +1 -0
  87. package/dist/src/gate/suppression-stats.js +214 -0
  88. package/dist/src/gate/suppression-stats.js.map +1 -0
  89. package/dist/src/gate/types.d.ts +135 -7
  90. package/dist/src/gate/types.d.ts.map +1 -1
  91. package/dist/src/gate/wake-onboarding.d.ts +119 -0
  92. package/dist/src/gate/wake-onboarding.d.ts.map +1 -0
  93. package/dist/src/gate/wake-onboarding.js +277 -0
  94. package/dist/src/gate/wake-onboarding.js.map +1 -0
  95. package/dist/src/held-writes.d.ts +31 -23
  96. package/dist/src/held-writes.d.ts.map +1 -1
  97. package/dist/src/held-writes.js +44 -59
  98. package/dist/src/held-writes.js.map +1 -1
  99. package/dist/src/index.d.ts +5 -2
  100. package/dist/src/index.d.ts.map +1 -1
  101. package/dist/src/index.js +3 -0
  102. package/dist/src/index.js.map +1 -1
  103. package/dist/src/jsonrpc-envelope.d.ts +69 -0
  104. package/dist/src/jsonrpc-envelope.d.ts.map +1 -0
  105. package/dist/src/jsonrpc-envelope.js +66 -0
  106. package/dist/src/jsonrpc-envelope.js.map +1 -0
  107. package/dist/src/mcpl/channel-registry.d.ts +131 -15
  108. package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
  109. package/dist/src/mcpl/channel-registry.js +290 -46
  110. package/dist/src/mcpl/channel-registry.js.map +1 -1
  111. package/dist/src/mcpl/checkpoint-manager.d.ts +2 -4
  112. package/dist/src/mcpl/checkpoint-manager.d.ts.map +1 -1
  113. package/dist/src/mcpl/checkpoint-manager.js.map +1 -1
  114. package/dist/src/mcpl/feature-set-manager.d.ts +2 -4
  115. package/dist/src/mcpl/feature-set-manager.d.ts.map +1 -1
  116. package/dist/src/mcpl/feature-set-manager.js.map +1 -1
  117. package/dist/src/mcpl/inbound-source.d.ts +2 -1
  118. package/dist/src/mcpl/inbound-source.d.ts.map +1 -1
  119. package/dist/src/mcpl/inbound-source.js +2 -1
  120. package/dist/src/mcpl/inbound-source.js.map +1 -1
  121. package/dist/src/mcpl/inference-router.d.ts +6 -6
  122. package/dist/src/mcpl/inference-router.d.ts.map +1 -1
  123. package/dist/src/mcpl/inference-router.js.map +1 -1
  124. package/dist/src/mcpl/push-coalescer.d.ts +132 -22
  125. package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
  126. package/dist/src/mcpl/push-coalescer.js +105 -15
  127. package/dist/src/mcpl/push-coalescer.js.map +1 -1
  128. package/dist/src/mcpl/push-handler.d.ts +9 -7
  129. package/dist/src/mcpl/push-handler.d.ts.map +1 -1
  130. package/dist/src/mcpl/push-handler.js.map +1 -1
  131. package/dist/src/mcpl/server-connection.d.ts +13 -10
  132. package/dist/src/mcpl/server-connection.d.ts.map +1 -1
  133. package/dist/src/mcpl/server-connection.js +134 -56
  134. package/dist/src/mcpl/server-connection.js.map +1 -1
  135. package/dist/src/mcpl/tool-classes.d.ts.map +1 -1
  136. package/dist/src/mcpl/tool-classes.js +3 -0
  137. package/dist/src/mcpl/tool-classes.js.map +1 -1
  138. package/dist/src/mcpl/types.d.ts +8 -2
  139. package/dist/src/mcpl/types.d.ts.map +1 -1
  140. package/dist/src/mcpl/types.js.map +1 -1
  141. package/dist/src/module-registry.d.ts +24 -1
  142. package/dist/src/module-registry.d.ts.map +1 -1
  143. package/dist/src/module-registry.js +68 -18
  144. package/dist/src/module-registry.js.map +1 -1
  145. package/dist/src/modules/discord/index.d.ts +45 -8
  146. package/dist/src/modules/discord/index.d.ts.map +1 -1
  147. package/dist/src/modules/discord/index.js +237 -86
  148. package/dist/src/modules/discord/index.js.map +1 -1
  149. package/dist/src/modules/history/index.d.ts +59 -0
  150. package/dist/src/modules/history/index.d.ts.map +1 -1
  151. package/dist/src/modules/history/index.js +432 -67
  152. package/dist/src/modules/history/index.js.map +1 -1
  153. package/dist/src/modules/history/semantic.d.ts +6 -5
  154. package/dist/src/modules/history/semantic.d.ts.map +1 -1
  155. package/dist/src/modules/history/semantic.js +15 -22
  156. package/dist/src/modules/history/semantic.js.map +1 -1
  157. package/dist/src/modules/workspace/disk-agreement.d.ts +1 -1
  158. package/dist/src/modules/workspace/disk-agreement.js +1 -1
  159. package/dist/src/modules/workspace/index.d.ts +28 -7
  160. package/dist/src/modules/workspace/index.d.ts.map +1 -1
  161. package/dist/src/modules/workspace/index.js +76 -22
  162. package/dist/src/modules/workspace/index.js.map +1 -1
  163. package/dist/src/notice-tags.d.ts +10 -1
  164. package/dist/src/notice-tags.d.ts.map +1 -1
  165. package/dist/src/notice-tags.js +10 -1
  166. package/dist/src/notice-tags.js.map +1 -1
  167. package/dist/src/operator-log.d.ts +36 -3
  168. package/dist/src/operator-log.d.ts.map +1 -1
  169. package/dist/src/operator-log.js +2 -2
  170. package/dist/src/operator-log.js.map +1 -1
  171. package/dist/src/presentation.d.ts +746 -0
  172. package/dist/src/presentation.d.ts.map +1 -0
  173. package/dist/src/presentation.js +1435 -0
  174. package/dist/src/presentation.js.map +1 -0
  175. package/dist/src/prose-drafts.d.ts +15 -11
  176. package/dist/src/prose-drafts.d.ts.map +1 -1
  177. package/dist/src/prose-drafts.js +16 -12
  178. package/dist/src/prose-drafts.js.map +1 -1
  179. package/dist/src/read-marks.d.ts +192 -0
  180. package/dist/src/read-marks.d.ts.map +1 -0
  181. package/dist/src/read-marks.js +242 -0
  182. package/dist/src/read-marks.js.map +1 -0
  183. package/dist/src/recovery/offline-branch.d.ts +91 -6
  184. package/dist/src/recovery/offline-branch.d.ts.map +1 -1
  185. package/dist/src/recovery/offline-branch.js +273 -29
  186. package/dist/src/recovery/offline-branch.js.map +1 -1
  187. package/dist/src/recovery/recover-cli.js +22 -3
  188. package/dist/src/recovery/recover-cli.js.map +1 -1
  189. package/dist/src/send-tools.d.ts +5 -9
  190. package/dist/src/send-tools.d.ts.map +1 -1
  191. package/dist/src/send-tools.js +40 -7
  192. package/dist/src/send-tools.js.map +1 -1
  193. package/dist/src/stored-injections.d.ts +2 -2
  194. package/dist/src/stored-injections.js +2 -2
  195. package/dist/src/stored-removal.d.ts +17 -4
  196. package/dist/src/stored-removal.d.ts.map +1 -1
  197. package/dist/src/stored-removal.js +29 -5
  198. package/dist/src/stored-removal.js.map +1 -1
  199. package/dist/src/tool-result-guard.d.ts +12 -1
  200. package/dist/src/tool-result-guard.d.ts.map +1 -1
  201. package/dist/src/tool-result-guard.js +42 -8
  202. package/dist/src/tool-result-guard.js.map +1 -1
  203. package/dist/src/tune-out/coordinator.d.ts +1159 -79
  204. package/dist/src/tune-out/coordinator.d.ts.map +1 -1
  205. package/dist/src/tune-out/coordinator.js +3709 -363
  206. package/dist/src/tune-out/coordinator.js.map +1 -1
  207. package/dist/src/tune-out/tools.d.ts +114 -17
  208. package/dist/src/tune-out/tools.d.ts.map +1 -1
  209. package/dist/src/tune-out/tools.js +87 -27
  210. package/dist/src/tune-out/tools.js.map +1 -1
  211. package/dist/src/tune-out/window-anchor.d.ts +143 -0
  212. package/dist/src/tune-out/window-anchor.d.ts.map +1 -0
  213. package/dist/src/tune-out/window-anchor.js +202 -0
  214. package/dist/src/tune-out/window-anchor.js.map +1 -0
  215. package/dist/src/types/agent.d.ts +82 -20
  216. package/dist/src/types/agent.d.ts.map +1 -1
  217. package/dist/src/types/events.d.ts +2 -0
  218. package/dist/src/types/events.d.ts.map +1 -1
  219. package/dist/src/types/framework.d.ts +32 -12
  220. package/dist/src/types/framework.d.ts.map +1 -1
  221. package/dist/src/types/module.d.ts +180 -69
  222. package/dist/src/types/module.d.ts.map +1 -1
  223. package/dist/src/types/trace.d.ts +510 -36
  224. package/dist/src/types/trace.d.ts.map +1 -1
  225. package/package.json +3 -3
  226. package/src/admission/admit.ts +32 -3
  227. package/src/agent.ts +323 -120
  228. package/src/api/mcp-server-core.ts +54 -17
  229. package/src/api/server.ts +4 -23
  230. package/src/code-execution/isolate/scripts.ts +28 -3
  231. package/src/config-checks.ts +14 -0
  232. package/src/context-manager-errors.ts +37 -0
  233. package/src/context-options.ts +96 -0
  234. package/src/deferred-import.ts +239 -0
  235. package/src/dendrite/audience.ts +315 -0
  236. package/src/dendrite/index.ts +14 -2
  237. package/src/dendrite/presets.ts +18 -6
  238. package/src/dendrite/registry.ts +209 -12
  239. package/src/dendrite/types.ts +92 -8
  240. package/src/foreign-rounds.ts +199 -0
  241. package/src/framework.ts +7804 -3546
  242. package/src/gate/event-gate.ts +428 -65
  243. package/src/gate/index.ts +3 -0
  244. package/src/gate/rule-scope.ts +45 -0
  245. package/src/gate/suppress-script-worker.ts +89 -0
  246. package/src/gate/suppress-scripts.ts +414 -0
  247. package/src/gate/suppression-review.ts +517 -0
  248. package/src/gate/suppression-stats.ts +314 -0
  249. package/src/gate/types.ts +141 -7
  250. package/src/gate/wake-onboarding.ts +309 -0
  251. package/src/held-writes.ts +49 -60
  252. package/src/index.ts +9 -2
  253. package/src/jsonrpc-envelope.ts +81 -0
  254. package/src/mcpl/channel-registry.ts +353 -85
  255. package/src/mcpl/checkpoint-manager.ts +3 -2
  256. package/src/mcpl/feature-set-manager.ts +2 -1
  257. package/src/mcpl/inbound-source.ts +2 -1
  258. package/src/mcpl/inference-router.ts +7 -4
  259. package/src/mcpl/push-coalescer.ts +193 -34
  260. package/src/mcpl/push-handler.ts +10 -5
  261. package/src/mcpl/server-connection.ts +141 -60
  262. package/src/mcpl/tool-classes.ts +3 -0
  263. package/src/mcpl/types.ts +8 -2
  264. package/src/module-registry.ts +73 -17
  265. package/src/modules/discord/index.ts +229 -81
  266. package/src/modules/history/index.ts +439 -70
  267. package/src/modules/history/semantic.ts +15 -21
  268. package/src/modules/workspace/disk-agreement.ts +1 -1
  269. package/src/modules/workspace/index.ts +85 -23
  270. package/src/notice-tags.ts +10 -1
  271. package/src/operator-log.ts +36 -3
  272. package/src/presentation.ts +1676 -0
  273. package/src/prose-drafts.ts +16 -12
  274. package/src/read-marks.ts +328 -0
  275. package/src/recovery/offline-branch.ts +346 -32
  276. package/src/recovery/recover-cli.ts +21 -3
  277. package/src/send-tools.ts +40 -7
  278. package/src/stored-injections.ts +2 -2
  279. package/src/stored-removal.ts +31 -7
  280. package/src/tool-result-guard.ts +41 -7
  281. package/src/tune-out/coordinator.ts +4089 -457
  282. package/src/tune-out/tools.ts +160 -43
  283. package/src/tune-out/window-anchor.ts +277 -0
  284. package/src/types/agent.ts +86 -20
  285. package/src/types/events.ts +2 -0
  286. package/src/types/framework.ts +32 -12
  287. package/src/types/module.ts +181 -68
  288. package/src/types/trace.ts +542 -40
@@ -1,3 +1,4 @@
1
+ import { suppressionRecordOf } from '../gate/suppression-stats.js';
1
2
  import { JsStore } from '@animalabs/chronicle';
2
3
  import { ContextManager, continuesBody } from '@animalabs/context-manager';
3
4
  import { removeStoredInterval } from '../stored-removal.js';
@@ -6,15 +7,18 @@ import { DEFAULT_DISCORD_AWARENESS_EMOJI, DiscordAwarenessOutbox, boundDiscordAw
6
7
  /**
7
8
  * Create a safe Chronicle branch while the normal agent host is stopped.
8
9
  *
9
- * History is scanned in bounded windows and blobs are not re-inlined. The
10
- * affected messages are never compiled and their content is never written to
11
- * the recovery outbox; only Discord addressing metadata leaves Chronicle.
10
+ * History is scanned in bounded windows and blobs are not re-inlined, but a
11
+ * presented window (#291) is read whole where its order counts: for a
12
+ * `messages` count, and for the rows after the anchor that the cut returns
13
+ * to the arrivals or keeps (windowAfterCut). The affected messages are never
14
+ * compiled and their content is never written to the recovery outbox; only
15
+ * Discord addressing metadata leaves Chronicle.
12
16
  */
13
17
  export async function createOfflineRecoveryBranch(options) {
14
18
  const anchorCount = Number(!!options.messageId)
15
19
  + Number(!!options.contextId)
16
20
  + Number(options.messages !== undefined);
17
- if (anchorCount !== 1) {
21
+ if (anchorCount !== 1 && !(anchorCount === 0 && options.removeSuppressed === true)) {
18
22
  throw new Error('Specify exactly one of messageId, contextId, or messages');
19
23
  }
20
24
  const count = options.messages === undefined ? undefined : Math.floor(options.messages);
@@ -40,6 +44,16 @@ export async function createOfflineRecoveryBranch(options) {
40
44
  let targetIndex;
41
45
  let removedCount;
42
46
  let carriers;
47
+ // Once the agent's window was presented (#291), the branch cut is the
48
+ // write that presented the anchor (branchSequenceOf), not the anchor's
49
+ // own place in the record: the rows stored after the anchor and before
50
+ // that write stay on the branch, and those the window took after the
51
+ // anchor are arrivals again there. Only the rows stored after the cut
52
+ // are removed, and only they are counted, carried and checked.
53
+ const presented = contextManager.windowMode() === 'presented';
54
+ const firstRemovedAfter = (index, anchor) => presented
55
+ ? firstIndexAfterCut(contextManager, index, total, contextManager.branchSequenceOf(anchor.id))
56
+ : index + 1;
43
57
  if (options.messageId) {
44
58
  // Search backward in bounded windows: recovery anchors are normally near
45
59
  // the tail, and even a very large Chronicle is never materialized all at
@@ -52,8 +66,9 @@ export async function createOfflineRecoveryBranch(options) {
52
66
  }
53
67
  target = located.message;
54
68
  targetIndex = located.index;
55
- removedCount = total - located.index - 1;
56
- carriers = collectDiscordCarriers(contextManager, located.index + 1, total);
69
+ const firstRemoved = firstRemovedAfter(targetIndex, target);
70
+ removedCount = total - firstRemoved;
71
+ carriers = collectDiscordCarriers(contextManager, firstRemoved, total);
57
72
  }
58
73
  else if (options.contextId) {
59
74
  const located = findInternalMessageFromTail(contextManager, total, options.contextId.trim());
@@ -62,30 +77,71 @@ export async function createOfflineRecoveryBranch(options) {
62
77
  }
63
78
  target = located.message;
64
79
  targetIndex = located.index;
65
- removedCount = total - located.index - 1;
66
- carriers = collectDiscordCarriers(contextManager, located.index + 1, total);
80
+ const firstRemoved = firstRemovedAfter(targetIndex, target);
81
+ removedCount = total - firstRemoved;
82
+ carriers = collectDiscordCarriers(contextManager, firstRemoved, total);
83
+ }
84
+ else if (presented && count !== undefined) {
85
+ // Counted back in the agent's window, whose order isn't the record's:
86
+ // the anchor is the window's row `count` before its newest. Only the
87
+ // rows of the context's own slot count, as the live undo counts them:
88
+ // the anchor is looked for in that slot, and a window index can name
89
+ // a row of a slot the agent observed (the residents' rows in a
90
+ // persistent subconscious's window). The one context opened here
91
+ // merges no other slot, so its listing holds none of those today; the
92
+ // count doesn't lean on that.
93
+ const window = contextManager.getPresentedMessages().filter((row) => contextManager.getMessage(row.id) !== null);
94
+ if (count >= window.length) {
95
+ throw new Error(`Cannot remove ${count} message(s) — history has ${window.length}; at least one must remain.`);
96
+ }
97
+ const anchor = window[window.length - 1 - count];
98
+ const located = findInternalMessageFromTail(contextManager, total, String(anchor.id));
99
+ if (!located) {
100
+ throw new Error(`The recovery anchor ${String(anchor.id)}, ${count} back in the window, is not in this context's record.`);
101
+ }
102
+ target = located.message;
103
+ targetIndex = located.index;
104
+ const firstRemoved = firstRemovedAfter(targetIndex, target);
105
+ removedCount = total - firstRemoved;
106
+ carriers = collectDiscordCarriers(contextManager, firstRemoved, total);
67
107
  }
68
108
  else {
69
109
  // Count mode remains for compatibility. Read only the target plus suffix,
70
110
  // avoiding full-history materialization and attachment blob inflation.
71
- const window = contextManager.getMessageWindow(total - count - 1, count + 1, {
111
+ // With no anchor (removeSuppressed alone), the target is the newest row,
112
+ // on a presented window too: nothing is cut, the branch starting at the
113
+ // head.
114
+ const dropping = count ?? 0;
115
+ const window = contextManager.getMessageWindow(total - dropping - 1, dropping + 1, {
72
116
  resolveBlobs: false,
73
117
  }).messages;
74
118
  const countTarget = window[0];
75
119
  const discarded = window.slice(1);
76
- if (!countTarget || discarded.length !== count) {
120
+ if (!countTarget || discarded.length !== dropping) {
77
121
  throw new Error('Could not read the requested recovery window from Chronicle');
78
122
  }
79
123
  target = countTarget;
80
- targetIndex = total - count - 1;
81
- removedCount = count;
124
+ targetIndex = total - dropping - 1;
125
+ removedCount = dropping;
82
126
  carriers = discarded.map(addressingOnly);
83
127
  }
84
128
  validateAnchorBoundary(contextManager, targetIndex, total, target);
85
- const suppression = buildSuppressionPlan(contextManager, targetIndex, options.suppressMessageIds ?? [], options.suppressRanges ?? []);
129
+ // The rows the branch keeps are the record's first `total -
130
+ // removedCount`: a suppression may name any of them, those stored after
131
+ // the anchor and kept by a presented window's cut too (in the record
132
+ // before a presentation, the last kept row is the anchor).
133
+ const suppression = buildSuppressionPlan(contextManager, total - removedCount - 1, options.suppressMessageIds ?? [], options.suppressRanges ?? [], options.removeSuppressed === true);
134
+ // A run with no anchor cuts nothing, so there is no anchor to name and
135
+ // nothing returns: one with nothing to suppress makes a branch at the
136
+ // head, as on a legacy window.
137
+ const afterCut = presented && anchorCount > 0 ? windowAfterCut(contextManager, target) : undefined;
138
+ const returnedToArrivals = afterCut?.returned.filter((id) => !suppression.ids.has(String(id))).length;
139
+ if (afterCut && removedCount === 0 && suppression.intervals.length === 0 && afterCut.returned.length === 0) {
140
+ refuseIneffectiveCut(target, afterCut.kept, options.agentName, contextManager.getPresentedMessages());
141
+ }
86
142
  validateRemovalIntegrity(contextManager, total, [
87
143
  ...(removedCount > 0 ? [{
88
- start: targetIndex + 1,
144
+ start: total - removedCount,
89
145
  end: total - 1,
90
146
  fromId: '',
91
147
  toId: '',
@@ -115,6 +171,7 @@ export async function createOfflineRecoveryBranch(options) {
115
171
  targetBranch,
116
172
  messagesRemoved: removedCount,
117
173
  messagesSuppressed: suppression.messageCount,
174
+ ...(presented ? { returnedToArrivals: returnedToArrivals ?? 0 } : {}),
118
175
  discordAddressable: addressable,
119
176
  marksScope: marks === 'none' ? 'none' : marks.scope,
120
177
  discordMarkersQueued: refs.length,
@@ -147,11 +204,15 @@ export async function createOfflineRecoveryBranch(options) {
147
204
  });
148
205
  let createdBranch;
149
206
  try {
150
- // branchAt uses the target message's origin sequence. No message
151
- // content is compiled or submitted to Membrane during this operation.
152
- // Creating the branch is part of the body: a failure here settles the
153
- // batch like a failed switch or redaction.
154
- createdBranch = contextManager.branchAt(target.id, targetBranch);
207
+ // branchAt uses the target message's origin sequence. With no anchor
208
+ // nothing is rewound, so the branch starts at the head instead: what
209
+ // was written after the newest message, a removal or a summary, stays.
210
+ // No message content is compiled or submitted to Membrane during this
211
+ // operation. Creating the branch is part of the body: a failure here
212
+ // settles the batch like a failed switch or redaction.
213
+ createdBranch = anchorCount === 0
214
+ ? store.createBranchAt(targetBranch, sourceBranch, store.currentSequence()).name
215
+ : contextManager.branchAt(target.id, targetBranch);
155
216
  await contextManager.switchBranch(createdBranch);
156
217
  // Each interval is removed by its messages' ids, so the order doesn't
157
218
  // change the result. removeStoredInterval takes a single message outside
@@ -311,6 +372,162 @@ function findInternalMessageFromTail(contextManager, total, contextId) {
311
372
  }
312
373
  return null;
313
374
  }
375
+ /**
376
+ * The first slot index after `targetIndex` whose row was stored after
377
+ * `cut`, or `total` when none was: the rows a branch cut at `cut` leaves
378
+ * behind, the slot being in store order, start there. Read in bounded,
379
+ * blob-free windows.
380
+ */
381
+ function firstIndexAfterCut(contextManager, targetIndex, total, cut) {
382
+ for (let offset = targetIndex + 1; offset < total; offset += RECOVERY_SCAN_WINDOW) {
383
+ const messages = contextManager.getMessageWindow(offset, Math.min(RECOVERY_SCAN_WINDOW, total - offset), { resolveBlobs: false }).messages;
384
+ const at = messages.findIndex((message) => message.sequence > cut);
385
+ if (at >= 0)
386
+ return offset + at;
387
+ }
388
+ return total;
389
+ }
390
+ /**
391
+ * The rows after `target` in a presented window, as the live rollback reads
392
+ * them (windowAfterCut): those the write that presented the target
393
+ * presented too (`kept`, which no branch cut separates from it), and those
394
+ * presented after that write but stored at or before it (`returned`, which
395
+ * the cut keeps in the record and makes arrivals again). Read from the
396
+ * window's newest row back to the target or the first row presented before
397
+ * the cut (every row's cut grows in window order).
398
+ */
399
+ function windowAfterCut(contextManager, target) {
400
+ const cut = contextManager.branchSequenceOf(target.id);
401
+ const window = contextManager.getPresentedMessages();
402
+ const returned = [];
403
+ const kept = [];
404
+ for (let i = window.length - 1; i >= 0; i--) {
405
+ const row = window[i];
406
+ if (row.id === target.id)
407
+ break;
408
+ const at = contextManager.branchSequenceOf(row.id);
409
+ if (at < cut)
410
+ break;
411
+ if (at === cut)
412
+ kept.unshift(row);
413
+ else if (row.sequence <= cut)
414
+ returned.unshift(row.id);
415
+ }
416
+ return { returned, kept };
417
+ }
418
+ /**
419
+ * Refuses a recovery on a presented window that would change nothing, as
420
+ * the live rollback refuses one: the cut at the write that presented the
421
+ * anchor removes no row, and no row the window took after that write
422
+ * becomes an arrival again (windowAfterCut). The rows that write presented
423
+ * after the anchor (`kept`) name the way to take them out. A row holding a
424
+ * result of a call at or before the anchor (`window`, the agent's window:
425
+ * a tool boundary presents a round's reply and its results in one write)
426
+ * isn't to be suppressed, which would leave that call without its result:
427
+ * the advice is to anchor before the call. The others are suppressed: in
428
+ * the same recovery a row by its Discord message id, each one named, which
429
+ * takes every copy of that message; and by its row id with the live
430
+ * `suppressMessages` a row with none (an agent's round, a tool row) or one
431
+ * sharing the anchor's Discord id (a retried write's copy), which the
432
+ * offline suppression would take with the anchor. No range is offered: it
433
+ * takes every record row between its ends, any agent's, rows the window
434
+ * never held among them. Each refusal says the recovery reads the agent's
435
+ * own slot alone: a row of a slot it observes, which the live rollback
436
+ * weighs, isn't weighed here.
437
+ */
438
+ function refuseIneffectiveCut(target, kept, agentName, window) {
439
+ const anchorDiscordId = discordIdOf(target);
440
+ const anchor = `${String(target.id)}${anchorDiscordId ? ` (Discord message ${anchorDiscordId})` : ''}`;
441
+ const ownSlotOnly = `. Offline, only ${agentName}'s own slot is read: a row of a slot it observes, which the live rollback weighs, isn't weighed here.`;
442
+ if (kept.length > 0) {
443
+ const n = kept.length;
444
+ const first = kept[0];
445
+ const firstDiscordId = discordIdOf(first);
446
+ const named = `${String(first.id)}${firstDiscordId ? `, Discord message ${firstDiscordId}` : ''}`;
447
+ const split = resultsOfAnchoredCalls(window, target.id, kept);
448
+ const suppressible = split ? kept.filter((row) => !split.rows.includes(row)) : kept;
449
+ const copies = suppressible.filter((row) => anchorDiscordId !== undefined && discordIdOf(row) === anchorDiscordId);
450
+ // By row id, live: every one, so following the advice leaves none of them in place.
451
+ const unaddressed = suppressible.filter((row) => discordIdOf(row) === undefined || copies.includes(row));
452
+ const addressed = suppressible.filter((row) => !unaddressed.includes(row));
453
+ const offline = `in the same recovery (--suppress / suppressMessageIds: ${addressed.map((row) => discordIdOf(row)).join(', ')})`;
454
+ const live = `by row id with the live suppressMessages (${unaddressed.map((row) => String(row.id)).join(', ')}) once the host runs, ` +
455
+ 'since the offline recovery suppresses only by Discord message id' +
456
+ (copies.length > 0 ? `, which takes every copy of a message, the anchor's own too` : '');
457
+ const m = suppressible.length;
458
+ const them = m === n ? (n === 1 ? 'it' : 'them') : 'the rest';
459
+ const how = m === 0 ? ''
460
+ : unaddressed.length === 0 ? `suppress ${them} ${offline}`
461
+ : addressed.length === 0 ? `suppress ${them} ${live}` +
462
+ (copies.length > 0 ? '' : ` and ${m === 1 ? 'it has none' : 'none of them has one'}`)
463
+ : `suppress the ${addressed.length} with a Discord message id ${offline}, and the ${unaddressed.length} ` +
464
+ `${copies.length > 0 ? `other${unaddressed.length === 1 ? '' : 's'}` : 'without one'} ${live}`;
465
+ const before = split ? anchorBefore(split, 'anchor the recovery', 'at') : '';
466
+ throw new Error(`Recovery anchor ${anchor} was presented to ${agentName} in one write with the ${n} message${n === 1 ? '' : 's'} ` +
467
+ `after it in its window (the first: ${named}), and a branch cut can't separate the rows one write presented, ` +
468
+ `so a recovery anchored there would remove nothing; to take ${n === 1 ? 'that message' : 'those messages'} out, ` +
469
+ (before && how ? `${before}; or, to keep that call and its results, ${how}` : before || how) + ownSlotOnly);
470
+ }
471
+ throw new Error(`Recovery anchor ${anchor} is already the tail of ${agentName}'s window: every message stored after it was ` +
472
+ 'stored before the write that presented it, where the branch is cut, and none entered the window after it, so ' +
473
+ 'a recovery anchored there would change nothing' + ownSlotOnly);
474
+ }
475
+ /**
476
+ * Of the rows a no-op cut keeps after its anchor (`kept`), those holding a
477
+ * result of a call in a row of the agent's window at or before the anchor,
478
+ * which a suppression would leave without its result: a tool boundary
479
+ * presents a round's reply and its results in one write, and so does a
480
+ * write-down for rows stored together. With them, the earliest such call's
481
+ * row and the window row before it, where a cut keeps the call and its
482
+ * results together. Undefined where no kept row answers such a call, or the
483
+ * anchor isn't in `window`. The live rollback's refusal reads it too.
484
+ */
485
+ export function resultsOfAnchoredCalls(window, anchorId, kept) {
486
+ const anchorAt = window.findIndex((row) => row.id === anchorId);
487
+ if (anchorAt < 0)
488
+ return undefined;
489
+ const callAt = new Map();
490
+ for (let i = 0; i <= anchorAt; i++) {
491
+ for (const raw of window[i].content) {
492
+ const block = raw;
493
+ if (block.type === 'tool_use' && typeof block.id === 'string')
494
+ callAt.set(block.id, i);
495
+ }
496
+ }
497
+ let earliest;
498
+ const rows = kept.filter((row) => {
499
+ let answers = false;
500
+ for (const raw of row.content) {
501
+ const block = raw;
502
+ const at = block.type === 'tool_result' && typeof block.toolUseId === 'string' ? callAt.get(block.toolUseId) : undefined;
503
+ if (at === undefined)
504
+ continue;
505
+ answers = true;
506
+ earliest = earliest === undefined ? at : Math.min(earliest, at);
507
+ }
508
+ return answers;
509
+ });
510
+ if (rows.length === 0 || earliest === undefined)
511
+ return undefined;
512
+ return { rows, call: window[earliest], ...(earliest > 0 ? { before: window[earliest - 1] } : {}) };
513
+ }
514
+ /**
515
+ * A refusal's advice for the kept rows that answer a call at or before the
516
+ * anchor (resultsOfAnchoredCalls): `verb` (anchor the recovery, roll back)
517
+ * before the call's row, naming the row before it (`to`: at, to), and why
518
+ * they aren't to be suppressed.
519
+ */
520
+ export function anchorBefore(split, verb, to) {
521
+ const ids = split.rows.map((row) => String(row.id)).join(', ');
522
+ const one = split.rows.length === 1;
523
+ return `${verb} before ${String(split.call.id)}, which holds the call ${one ? 'it answers' : 'they answer'}, instead` +
524
+ `${split.before ? ` (${to} ${String(split.before.id)}, the message before it in the window)` : ''}: ${ids} ${one ? 'holds a result' : 'hold results'} ` +
525
+ `of a call at or before the anchor, and suppressing ${one ? 'it' : 'them'} would leave that call without its result`;
526
+ }
527
+ function discordIdOf(message) {
528
+ const id = message.metadata?.messageId;
529
+ return id === undefined || id === null || id === '' ? undefined : String(id);
530
+ }
314
531
  function validateAnchorBoundary(contextManager, targetIndex, total, target) {
315
532
  if (targetIndex + 1 >= total)
316
533
  return;
@@ -326,7 +543,24 @@ function validateAnchorBoundary(contextManager, targetIndex, total, target) {
326
543
  function validateRemovalIntegrity(contextManager, total, intervals) {
327
544
  if (intervals.length === 0)
328
545
  return;
329
- const removed = (index) => intervals.some((interval) => index >= interval.start && index <= interval.end);
546
+ // Sorted starts with each one's running furthest end, searched per row: a
547
+ // store can hold a removal for every third row (--remove-suppressed).
548
+ const sorted = [...intervals].sort((a, b) => a.start - b.start);
549
+ const reach = [];
550
+ for (const interval of sorted)
551
+ reach.push(Math.max(interval.end, reach.at(-1) ?? -1));
552
+ const removed = (index) => {
553
+ let lo = 0;
554
+ let hi = sorted.length - 1;
555
+ while (lo < hi) {
556
+ const mid = Math.ceil((lo + hi) / 2);
557
+ if (sorted[mid].start <= index)
558
+ lo = mid;
559
+ else
560
+ hi = mid - 1;
561
+ }
562
+ return sorted[lo].start <= index && index <= reach[lo];
563
+ };
330
564
  const toolUses = new Map();
331
565
  const toolResults = new Map();
332
566
  // The message before, in store order: a selection splits a body when a
@@ -361,7 +595,7 @@ function validateRemovalIntegrity(contextManager, total, intervals) {
361
595
  }
362
596
  }
363
597
  }
364
- function buildSuppressionPlan(contextManager, targetIndex, rawMessageIds, rawRanges) {
598
+ function buildSuppressionPlan(contextManager, lastKeptIndex, rawMessageIds, rawRanges, removeSuppressed = false) {
365
599
  const messageIds = rawMessageIds.map(normalizeDiscordMessageId);
366
600
  const ranges = rawRanges.map((range) => ({
367
601
  fromMessageId: normalizeDiscordMessageId(range.fromMessageId),
@@ -371,12 +605,16 @@ function buildSuppressionPlan(contextManager, targetIndex, rawMessageIds, rawRan
371
605
  ...messageIds,
372
606
  ...ranges.flatMap((range) => [range.fromMessageId, range.toMessageId]),
373
607
  ]);
374
- if (wanted.size === 0)
375
- return { intervals: [], carriers: [], messageCount: 0 };
608
+ if (wanted.size === 0 && !removeSuppressed)
609
+ return { intervals: [], carriers: [], messageCount: 0, ids: new Set() };
610
+ const stamped = [];
376
611
  const locations = new Map();
377
- for (let offset = 0; offset <= targetIndex; offset += RECOVERY_SCAN_WINDOW) {
378
- const messages = contextManager.getMessageWindow(offset, Math.min(RECOVERY_SCAN_WINDOW, targetIndex - offset + 1), { resolveBlobs: false }).messages;
612
+ for (let offset = 0; offset <= lastKeptIndex; offset += RECOVERY_SCAN_WINDOW) {
613
+ const messages = contextManager.getMessageWindow(offset, Math.min(RECOVERY_SCAN_WINDOW, lastKeptIndex - offset + 1), { resolveBlobs: false }).messages;
379
614
  for (let i = 0; i < messages.length; i++) {
615
+ if (removeSuppressed && suppressionRecordOf(messages[i].metadata)) {
616
+ stamped.push({ start: offset + i, end: offset + i, fromId: messages[i].id, toId: messages[i].id });
617
+ }
380
618
  const externalId = String(messages[i].metadata?.messageId ?? '');
381
619
  if (!wanted.has(externalId))
382
620
  continue;
@@ -417,7 +655,7 @@ function buildSuppressionPlan(contextManager, targetIndex, rawMessageIds, rawRan
417
655
  throw new Error(`Suppression endpoint ${id} is not visible at the selected branch point.`);
418
656
  }
419
657
  }
420
- const intervals = [];
658
+ const intervals = [...stamped];
421
659
  for (const id of messageIds) {
422
660
  const location = locations.get(id);
423
661
  intervals.push(...location.runs.map((run) => ({ ...run })));
@@ -457,26 +695,32 @@ function buildSuppressionPlan(contextManager, targetIndex, rawMessageIds, rawRan
457
695
  }
458
696
  }
459
697
  const carriers = [];
698
+ const ids = new Set();
460
699
  for (const interval of merged) {
461
- carriers.push(...collectDiscordCarriers(contextManager, interval.start, interval.end + 1));
700
+ carriers.push(...collectDiscordCarriers(contextManager, interval.start, interval.end + 1, ids));
462
701
  }
463
702
  return {
464
703
  intervals: merged,
465
704
  carriers,
466
705
  messageCount: merged.reduce((sum, interval) => sum + interval.end - interval.start + 1, 0),
706
+ ids,
467
707
  };
468
708
  }
469
709
  /**
470
710
  * The addressing metadata of removed messages, read in bounded windows: only
471
711
  * the Discord address and the MCPL tags (for `addressed` selection) are kept,
472
712
  * never content. A sharded message may repeat its metadata across adjacent
473
- * records; selection dedupes by address.
713
+ * records; selection dedupes by address. Each row's id is added to `ids`
714
+ * where given.
474
715
  */
475
- function collectDiscordCarriers(contextManager, start, end) {
716
+ function collectDiscordCarriers(contextManager, start, end, ids) {
476
717
  const carriers = [];
477
718
  for (let offset = start; offset < end; offset += RECOVERY_SCAN_WINDOW) {
478
719
  const messages = contextManager.getMessageWindow(offset, Math.min(RECOVERY_SCAN_WINDOW, end - offset), { resolveBlobs: false }).messages;
479
720
  carriers.push(...messages.map(addressingOnly));
721
+ if (ids)
722
+ for (const message of messages)
723
+ ids.add(String(message.id));
480
724
  }
481
725
  return carriers;
482
726
  }
@@ -1 +1 @@
1
- {"version":3,"file":"offline-branch.js","sourceRoot":"","sources":["../../../src/recovery/offline-branch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"offline-branch.js","sourceRoot":"","sources":["../../../src/recovery/offline-branch.ts"],"names":[],"mappings":"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"}
@@ -15,8 +15,23 @@ Options:
15
15
  --message-id <id|link> Last Discord message the agent should still see
16
16
  --context-id <internal-id> Exact internal context message to retain as anchor
17
17
  --messages <count> Legacy alternative: remove N context entries
18
+ On a presented window the rows one write
19
+ presented with the anchor stay after it, a
20
+ count is over the agent's window, and a
21
+ recovery that would remove nothing is refused
18
22
  --suppress <id|link> Suppress one Discord message; repeat or comma-separate
19
23
  --suppress-range <a>..<b> Suppress an inclusive context range; repeatable
24
+ --remove-suppressed Remove every row a suppress rule hid, needing no
25
+ anchor. Run it before rolling back to a release
26
+ without suppress rules, which can refuse the
27
+ store at open otherwise; the source branch keeps
28
+ the rows. Once this release has made a window
29
+ write of two or more rows (the first write-down
30
+ of a window that holds a row, as at the first
31
+ boot on a store with history, or a presentation
32
+ of more than one row: MANIFEST version 2) no
33
+ earlier release opens the store, and only a copy
34
+ taken before the upgrade goes back
20
35
  --branch <name> Recovery branch name (generated by default)
21
36
  --namespace <namespace> Context namespace (default: agents/<agent>)
22
37
  --discord-server <id> Override/inject the Discord MCPL server id
@@ -32,7 +47,7 @@ Options:
32
47
  The agent host must be stopped before running this command.`;
33
48
  }
34
49
  function parseArgs(args) {
35
- const options = { dryRun: false, suppressMessageIds: [], suppressRanges: [], marks: 'none' };
50
+ const options = { dryRun: false, suppressMessageIds: [], suppressRanges: [], removeSuppressed: false, marks: 'none' };
36
51
  for (let i = 0; i < args.length; i++) {
37
52
  const arg = args[i];
38
53
  const value = () => {
@@ -97,6 +112,9 @@ function parseArgs(args) {
97
112
  options.marks = marks;
98
113
  break;
99
114
  }
115
+ case '--remove-suppressed':
116
+ options.removeSuppressed = true;
117
+ break;
100
118
  case '--dry-run':
101
119
  options.dryRun = true;
102
120
  break;
@@ -113,8 +131,8 @@ async function main() {
113
131
  const options = parseArgs(process.argv.slice(2));
114
132
  if (!options.storePath
115
133
  || !options.agentName
116
- || (!options.messageId && !options.contextId && options.messages === undefined)) {
117
- throw new Error(`--store, --agent, and one anchor (--message-id, --context-id, or --messages) are required\n\n${usage()}`);
134
+ || (!options.messageId && !options.contextId && options.messages === undefined && !options.removeSuppressed)) {
135
+ throw new Error(`--store, --agent, and one anchor (--message-id, --context-id, or --messages) or --remove-suppressed are required\n\n${usage()}`);
118
136
  }
119
137
  // A CLI choice and its application are the same moment (the host is
120
138
  // stopped), so the scope is evaluated now rather than frozen to refs.
@@ -127,6 +145,7 @@ async function main() {
127
145
  messages: options.messages,
128
146
  suppressMessageIds: options.suppressMessageIds,
129
147
  suppressRanges: options.suppressRanges,
148
+ removeSuppressed: options.removeSuppressed,
130
149
  branchName: options.branchName,
131
150
  namespace: options.namespace,
132
151
  discordServerId: options.discordServerId,
@@ -1 +1 @@
1
- {"version":3,"file":"recover-cli.js","sourceRoot":"","sources":["../../../src/recovery/recover-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recover-cli.js","sourceRoot":"","sources":["../../../src/recovery/recover-cli.ts"],"names":[],"mappings":"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"}