@sema-agent/core 7.54.1 → 7.56.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 (621) hide show
  1. package/CHANGELOG.md +950 -0
  2. package/dist/agents/agent-transcript-tool.js +2 -1
  3. package/dist/agents/builtin-agents.d.ts +12 -14
  4. package/dist/agents/cascade.js +1 -1
  5. package/dist/agents/cc-peer-directory.d.ts +36 -0
  6. package/dist/agents/cc-peer-directory.js +139 -0
  7. package/dist/agents/cc-peer-wire.d.ts +105 -0
  8. package/dist/agents/cc-peer-wire.js +98 -0
  9. package/dist/agents/cc-uds-peer-channel.d.ts +40 -0
  10. package/dist/agents/cc-uds-peer-channel.js +457 -0
  11. package/dist/agents/child-model-seat.d.ts +0 -11
  12. package/dist/agents/child-model-seat.js +0 -3
  13. package/dist/agents/cross-session-envelope.d.ts +4 -1
  14. package/dist/agents/cross-session-envelope.js +8 -1
  15. package/dist/agents/cross-session-judge.d.ts +2 -2
  16. package/dist/agents/list-agents-tool.d.ts +3 -1
  17. package/dist/agents/list-agents-tool.js +9 -8
  18. package/dist/agents/observer.d.ts +4 -5
  19. package/dist/agents/observer.js +2 -1
  20. package/dist/agents/peer-admission.d.ts +6 -0
  21. package/dist/agents/peer-admission.js +4 -1
  22. package/dist/agents/peer-directory.d.ts +65 -13
  23. package/dist/agents/peer-directory.js +90 -25
  24. package/dist/agents/peer-notices.d.ts +1 -1
  25. package/dist/agents/peer-session-drain.d.ts +3 -1
  26. package/dist/agents/peer-session-drain.js +3 -2
  27. package/dist/agents/read-inbox-tool.js +2 -1
  28. package/dist/agents/repair-loop.js +2 -2
  29. package/dist/agents/retain-ledger.d.ts +1 -1
  30. package/dist/agents/roster-store.d.ts +1 -1
  31. package/dist/agents/send-message-tool.d.ts +10 -0
  32. package/dist/agents/send-message-tool.js +37 -8
  33. package/dist/agents/subagent.d.ts +39 -82
  34. package/dist/agents/subagent.js +109 -106
  35. package/dist/agents/tool-filter.d.ts +31 -46
  36. package/dist/agents/tool-filter.js +13 -33
  37. package/dist/agents/verify.d.ts +6 -5
  38. package/dist/agents/verify.js +3 -3
  39. package/dist/brain/anthropic.js +43 -81
  40. package/dist/brain/errors.d.ts +15 -0
  41. package/dist/brain/errors.js +10 -0
  42. package/dist/brain/media-degrade.d.ts +18 -7
  43. package/dist/brain/media-degrade.js +13 -2
  44. package/dist/brain/model-capability.d.ts +37 -0
  45. package/dist/brain/model-capability.js +34 -0
  46. package/dist/brain/model-presets.d.ts +6 -12
  47. package/dist/brain/model-presets.js +1 -6
  48. package/dist/brain/open-responses.js +27 -35
  49. package/dist/brain/openai.js +30 -98
  50. package/dist/brain/provider-dialect.d.ts +39 -3
  51. package/dist/brain/provider-dialect.js +28 -0
  52. package/dist/brain/reasoning-request.d.ts +96 -0
  53. package/dist/brain/reasoning-request.js +174 -0
  54. package/dist/brain/reasoning.d.ts +12 -12
  55. package/dist/brain/reasoning.js +4 -3
  56. package/dist/brain/request-params.d.ts +62 -9
  57. package/dist/brain/request-params.js +42 -7
  58. package/dist/brain/retry.d.ts +1 -1
  59. package/dist/brain/route-adjudicator.d.ts +15 -0
  60. package/dist/brain/route-adjudicator.js +15 -0
  61. package/dist/brain/status-sink.d.ts +20 -0
  62. package/dist/brain/status-sink.js +7 -0
  63. package/dist/brain/stream-engine.js +6 -5
  64. package/dist/brain/stream-shared.d.ts +1 -1
  65. package/dist/core/a2a.d.ts +2 -1
  66. package/dist/core/a2a.js +19 -13
  67. package/dist/core/advisor-verdict.d.ts +120 -0
  68. package/dist/core/advisor-verdict.js +92 -0
  69. package/dist/core/agent-definition.d.ts +17 -8
  70. package/dist/core/allow-entry.d.ts +69 -36
  71. package/dist/core/allow-entry.js +81 -52
  72. package/dist/core/allow-rule-shadow.d.ts +10 -3
  73. package/dist/core/approval-object.d.ts +2 -1
  74. package/dist/core/approval-object.js +6 -6
  75. package/dist/core/ask-origin.d.ts +127 -29
  76. package/dist/core/ask-origin.js +87 -25
  77. package/dist/core/ask-question.d.ts +51 -8
  78. package/dist/core/ask-question.js +12 -7
  79. package/dist/core/ask-unresolvable-notice.d.ts +8 -3
  80. package/dist/core/ask-unresolvable-notice.js +16 -2
  81. package/dist/core/auto-compaction.d.ts +11 -8
  82. package/dist/core/auto-compaction.js +4 -2
  83. package/dist/core/auto-mode-arming.d.ts +2 -2
  84. package/dist/core/auto-mode-defaults.d.ts +8 -8
  85. package/dist/core/auto-mode-prompt-assets.d.ts +3 -3
  86. package/dist/core/auto-mode-prompt.d.ts +1 -1
  87. package/dist/core/auto-mode.d.ts +17 -9
  88. package/dist/core/auto-mode.js +9 -6
  89. package/dist/core/background-agent-store.d.ts +3 -3
  90. package/dist/core/canonical-json.d.ts +1 -1
  91. package/dist/core/canonical-json.js +2 -2
  92. package/dist/core/checkpoint-generation.d.ts +53 -0
  93. package/dist/core/checkpoint-generation.js +35 -0
  94. package/dist/core/checkpoint-queries.d.ts +180 -0
  95. package/dist/core/checkpoint-queries.js +272 -0
  96. package/dist/core/checkpoint-requirements.d.ts +19 -4
  97. package/dist/core/checkpoint-requirements.js +8 -14
  98. package/dist/core/checkpoint-store.d.ts +165 -72
  99. package/dist/core/checkpoint-store.js +79 -82
  100. package/dist/core/child-clamp-seats.d.ts +6 -0
  101. package/dist/core/child-clamp-seats.js +3 -16
  102. package/dist/core/compliance.d.ts +2 -2
  103. package/dist/core/context-edit.d.ts +6 -7
  104. package/dist/core/cross-boundary-taint.d.ts +11 -4
  105. package/dist/core/cross-boundary-taint.js +3 -3
  106. package/dist/core/decision-receipt.d.ts +37 -3
  107. package/dist/core/decision-receipt.js +19 -19
  108. package/dist/core/delegation-not-started.d.ts +6 -0
  109. package/dist/core/delegation-not-started.js +17 -0
  110. package/dist/core/effective-path-target.d.ts +1 -1
  111. package/dist/core/engine-attestation.d.ts +93 -0
  112. package/dist/core/engine-attestation.js +70 -0
  113. package/dist/core/engine-capabilities.d.ts +4 -1
  114. package/dist/core/engine-capabilities.js +1 -1
  115. package/dist/core/engine-notice.d.ts +45 -12
  116. package/dist/core/exec-output-tail.d.ts +1 -1
  117. package/dist/core/file-history-retention.d.ts +1 -1
  118. package/dist/core/file-history-store.d.ts +147 -21
  119. package/dist/core/file-history-store.js +58 -32
  120. package/dist/core/gate-fold.d.ts +1 -1
  121. package/dist/core/gate-fold.js +24 -11
  122. package/dist/core/gate-lanes.js +81 -68
  123. package/dist/core/gate-outcome.d.ts +40 -6
  124. package/dist/core/gate-outcome.js +56 -0
  125. package/dist/core/governance-codes.d.ts +17 -3
  126. package/dist/core/governance-codes.js +16 -0
  127. package/dist/core/hands-band.d.ts +1 -1
  128. package/dist/core/hooks.d.ts +21 -20
  129. package/dist/core/hooks.js +3 -1
  130. package/dist/core/host-floor.d.ts +128 -0
  131. package/dist/core/host-floor.js +206 -0
  132. package/dist/core/host-target.d.ts +84 -0
  133. package/dist/core/host-target.js +92 -0
  134. package/dist/core/image-downsample.d.ts +1 -1
  135. package/dist/core/lsp-diagnostics.d.ts +4 -4
  136. package/dist/core/lsp.d.ts +3 -3
  137. package/dist/core/mailbox-store.d.ts +4 -0
  138. package/dist/core/mcp-connection-pool.d.ts +18 -2
  139. package/dist/core/mcp-connection-pool.js +53 -6
  140. package/dist/core/mcp-failure.d.ts +23 -4
  141. package/dist/core/mcp-failure.js +26 -11
  142. package/dist/core/mcp-listing-drift.d.ts +10 -0
  143. package/dist/core/mcp-listing-drift.js +6 -0
  144. package/dist/core/mcp-server-link.d.ts +173 -0
  145. package/dist/core/mcp-server-link.js +127 -0
  146. package/dist/core/mcp-server-spec.d.ts +4 -2
  147. package/dist/core/mcp-session-end.d.ts +26 -0
  148. package/dist/core/mcp-session-end.js +29 -0
  149. package/dist/core/mcp-startup-request.d.ts +17 -0
  150. package/dist/core/mcp-startup-request.js +17 -0
  151. package/dist/core/mcp.d.ts +17 -13
  152. package/dist/core/mcp.js +240 -189
  153. package/dist/core/media-byte-cap.d.ts +1 -1
  154. package/dist/core/memory-engine/delegation-settlement.js +15 -24
  155. package/dist/core/memory-engine/engine.d.ts +9 -9
  156. package/dist/core/memory-engine/engine.js +4 -4
  157. package/dist/core/memory-engine/layout.d.ts +60 -8
  158. package/dist/core/memory-engine/layout.js +65 -6
  159. package/dist/core/memory-engine/provenance-wording.d.ts +1 -1
  160. package/dist/core/memory-engine/tools.js +4 -1
  161. package/dist/core/mode-policy.d.ts +1 -1
  162. package/dist/core/model-seat.d.ts +10 -3
  163. package/dist/core/mods/classic-events.d.ts +67 -0
  164. package/dist/core/mods/classic-events.js +1 -0
  165. package/dist/core/mods/dollar.d.ts +13 -0
  166. package/dist/core/mods/extension-call.d.ts +31 -0
  167. package/dist/core/mods/extension-call.js +43 -0
  168. package/dist/core/mods/kernel/dispatch.d.ts +20 -3
  169. package/dist/core/mods/kernel/dispatch.js +140 -69
  170. package/dist/core/mods/kernel/events.d.ts +47 -11
  171. package/dist/core/mods/kernel/events.js +66 -42
  172. package/dist/core/mods/kernel/index.d.ts +4 -4
  173. package/dist/core/mods/kernel/index.js +2 -2
  174. package/dist/core/mods/kernel/receive.d.ts +39 -5
  175. package/dist/core/mods/kernel/receive.js +290 -17
  176. package/dist/core/mods/kernel/registration.d.ts +33 -2
  177. package/dist/core/mods/kernel/registration.js +6 -7
  178. package/dist/core/mods/kernel/site-rules.d.ts +44 -16
  179. package/dist/core/mods/kernel/site-rules.js +24 -42
  180. package/dist/core/mods/spec-seats.d.ts +69 -0
  181. package/dist/core/mods/spec-seats.js +114 -0
  182. package/dist/core/mods/stations.d.ts +28 -8
  183. package/dist/core/mods/stations.js +29 -13
  184. package/dist/core/mods/tool-call.d.ts +79 -0
  185. package/dist/core/mods/tool-call.js +152 -0
  186. package/dist/core/namespaced-rule-name.d.ts +44 -24
  187. package/dist/core/namespaced-rule-name.js +50 -43
  188. package/dist/core/output-style.d.ts +1 -1
  189. package/dist/core/param-rule-reach.d.ts +15 -0
  190. package/dist/core/param-rule-reach.js +30 -0
  191. package/dist/core/parent-spec-seat.d.ts +13 -1
  192. package/dist/core/parent-spec-seat.js +6 -0
  193. package/dist/core/park-selfcheck.js +1 -0
  194. package/dist/core/pause-registry.d.ts +16 -5
  195. package/dist/core/pause-registry.js +6 -2
  196. package/dist/core/peer-channel.d.ts +70 -0
  197. package/dist/core/peer-channel.js +1 -0
  198. package/dist/core/permission-rule-consent.d.ts +30 -5
  199. package/dist/core/permission-rule-consent.js +147 -50
  200. package/dist/core/permission-rule-model.d.ts +245 -65
  201. package/dist/core/permission-rule-model.js +421 -107
  202. package/dist/core/permission-rule-org.d.ts +6 -2
  203. package/dist/core/permission-rule-org.js +7 -3
  204. package/dist/core/permission-rule-provider.d.ts +6 -2
  205. package/dist/core/permission-rule-provider.js +41 -11
  206. package/dist/core/permission-rule-store.d.ts +22 -26
  207. package/dist/core/permission-rule-store.js +12 -6
  208. package/dist/core/permission-rule-sync.d.ts +11 -2
  209. package/dist/core/permission-rule-sync.js +11 -3
  210. package/dist/core/permission-rule-syntax.d.ts +5 -4
  211. package/dist/core/permission-rule-syntax.js +2 -2
  212. package/dist/core/permission-rules.d.ts +53 -15
  213. package/dist/core/permission-rules.js +125 -100
  214. package/dist/core/persisted-rule-arms.d.ts +6 -4
  215. package/dist/core/persisted-rule-arms.js +10 -12
  216. package/dist/core/present-plan-tool.js +3 -1
  217. package/dist/core/principal-name.d.ts +20 -0
  218. package/dist/core/principal-name.js +22 -0
  219. package/dist/core/prompt-section-seat.js +4 -6
  220. package/dist/core/protocol-http-auth.d.ts +26 -5
  221. package/dist/core/protocol-http-auth.js +137 -4
  222. package/dist/core/protocol-naming.d.ts +2 -2
  223. package/dist/core/read-only-shell-table.d.ts +1 -1
  224. package/dist/core/read-only-shell.d.ts +1 -1
  225. package/dist/core/retired-keys.d.ts +16 -0
  226. package/dist/core/retired-keys.js +16 -4
  227. package/dist/core/rewrite-rejudge.d.ts +60 -0
  228. package/dist/core/rewrite-rejudge.js +36 -0
  229. package/dist/core/roles.d.ts +34 -3
  230. package/dist/core/roles.js +66 -53
  231. package/dist/core/rule-lane-reads.d.ts +20 -15
  232. package/dist/core/rule-lane-reads.js +45 -17
  233. package/dist/core/rule-offer-read.d.ts +53 -0
  234. package/dist/core/rule-offer-read.js +146 -0
  235. package/dist/core/rule-owner.d.ts +46 -0
  236. package/dist/core/rule-owner.js +29 -0
  237. package/dist/core/runner/advisor-instructions.d.ts +70 -0
  238. package/dist/core/runner/advisor-instructions.js +61 -0
  239. package/dist/core/runner/advisor-tool.d.ts +33 -0
  240. package/dist/core/runner/advisor-tool.js +112 -0
  241. package/dist/core/runner/announce-once-ledger.d.ts +18 -26
  242. package/dist/core/runner/announce-once-ledger.js +19 -46
  243. package/dist/core/runner/approval-feedback.js +6 -3
  244. package/dist/core/runner/assemble-result.d.ts +2 -1
  245. package/dist/core/runner/assemble-result.js +1 -1
  246. package/dist/core/runner/call-hook-stations.d.ts +3 -2
  247. package/dist/core/runner/caller-roster.d.ts +21 -2
  248. package/dist/core/runner/caller-roster.js +38 -0
  249. package/dist/core/runner/capability-withheld-seat.d.ts +5 -0
  250. package/dist/core/runner/capability-withheld-seat.js +24 -0
  251. package/dist/core/runner/classifier-ladder.d.ts +33 -13
  252. package/dist/core/runner/classifier-ladder.js +15 -14
  253. package/dist/core/runner/compaction-restate.d.ts +10 -6
  254. package/dist/core/runner/compaction-restate.js +9 -3
  255. package/dist/core/runner/construction-doors.js +3 -0
  256. package/dist/core/runner/contracts.d.ts +40 -33
  257. package/dist/core/runner/conversation-segment.d.ts +28 -0
  258. package/dist/core/runner/conversation-segment.js +42 -0
  259. package/dist/core/runner/cross-boundary-lane.d.ts +21 -16
  260. package/dist/core/runner/cross-boundary-lane.js +58 -34
  261. package/dist/core/runner/decide-continuation.d.ts +7 -4
  262. package/dist/core/runner/decide-continuation.js +2 -2
  263. package/dist/core/runner/denial-limit-arms.d.ts +4 -4
  264. package/dist/core/runner/denial-limit-arms.js +1 -1
  265. package/dist/core/runner/derived-route-fallback.d.ts +24 -24
  266. package/dist/core/runner/derived-route-fallback.js +9 -7
  267. package/dist/core/runner/file-history-request.d.ts +18 -0
  268. package/dist/core/runner/file-history-request.js +21 -13
  269. package/dist/core/runner/file-history-restore.d.ts +45 -0
  270. package/dist/core/runner/file-history-restore.js +46 -0
  271. package/dist/core/runner/gate-exit.d.ts +9 -3
  272. package/dist/core/runner/gate-exit.js +11 -5
  273. package/dist/core/runner/image.d.ts +7 -17
  274. package/dist/core/runner/image.js +9 -60
  275. package/dist/core/runner/initial-run-state.js +1 -1
  276. package/dist/core/runner/permission-rule-lanes.d.ts +6 -6
  277. package/dist/core/runner/permission-rule-lanes.js +38 -15
  278. package/dist/core/runner/person-path-rows.d.ts +12 -9
  279. package/dist/core/runner/person-path-rows.js +19 -8
  280. package/dist/core/runner/prepare-advisor.d.ts +63 -0
  281. package/dist/core/runner/prepare-advisor.js +77 -0
  282. package/dist/core/runner/prepare-ask-lane.d.ts +2 -2
  283. package/dist/core/runner/prepare-ask-lane.js +5 -2
  284. package/dist/core/runner/prepare-caps-and-workflow.d.ts +4 -6
  285. package/dist/core/runner/prepare-caps-and-workflow.js +5 -4
  286. package/dist/core/runner/prepare-config-doors.d.ts +31 -38
  287. package/dist/core/runner/prepare-config-doors.js +57 -34
  288. package/dist/core/runner/prepare-defer-classify.d.ts +4 -3
  289. package/dist/core/runner/prepare-defer-classify.js +7 -8
  290. package/dist/core/runner/prepare-delegation-surface.d.ts +2 -2
  291. package/dist/core/runner/prepare-delegation-surface.js +1 -1
  292. package/dist/core/runner/prepare-file-history.d.ts +48 -8
  293. package/dist/core/runner/prepare-file-history.js +41 -73
  294. package/dist/core/runner/prepare-gate-stations.d.ts +2 -5
  295. package/dist/core/runner/prepare-gate-stations.js +12 -8
  296. package/dist/core/runner/prepare-hands-readface.d.ts +2 -8
  297. package/dist/core/runner/prepare-hands-readface.js +15 -14
  298. package/dist/core/runner/prepare-inherited-gate.d.ts +11 -7
  299. package/dist/core/runner/prepare-inherited-gate.js +8 -6
  300. package/dist/core/runner/prepare-memory-engine-session.js +1 -1
  301. package/dist/core/runner/prepare-park-ask.js +12 -12
  302. package/dist/core/runner/prepare-policy-chain.d.ts +7 -4
  303. package/dist/core/runner/prepare-policy-chain.js +68 -81
  304. package/dist/core/runner/prepare-project-context.d.ts +5 -2
  305. package/dist/core/runner/prepare-project-context.js +6 -3
  306. package/dist/core/runner/prepare-prompt-assembly.d.ts +5 -7
  307. package/dist/core/runner/prepare-prompt-assembly.js +10 -8
  308. package/dist/core/runner/prepare-prompt-inputs.d.ts +11 -9
  309. package/dist/core/runner/prepare-prompt-inputs.js +4 -6
  310. package/dist/core/runner/prepare-protocol-tools.d.ts +4 -2
  311. package/dist/core/runner/prepare-protocol-tools.js +5 -4
  312. package/dist/core/runner/prepare-safety-scan.d.ts +9 -12
  313. package/dist/core/runner/prepare-safety-scan.js +8 -23
  314. package/dist/core/runner/prepare-suspend-saga.d.ts +2 -0
  315. package/dist/core/runner/prepare-suspend-saga.js +5 -6
  316. package/dist/core/runner/prepare-task.d.ts +1 -1
  317. package/dist/core/runner/prepare-task.js +41 -35
  318. package/dist/core/runner/prepare-tool-disclosure-mount.d.ts +7 -4
  319. package/dist/core/runner/prepare-tool-disclosure-mount.js +24 -18
  320. package/dist/core/runner/prepare-turn-wiring.d.ts +0 -4
  321. package/dist/core/runner/prepare-turn-wiring.js +2 -7
  322. package/dist/core/runner/prepare-wiring-manifest.d.ts +11 -4
  323. package/dist/core/runner/prepare-wiring-manifest.js +3 -3
  324. package/dist/core/runner/resume-admission.js +1 -1
  325. package/dist/core/runner/resume-apply.js +11 -12
  326. package/dist/core/runner/resume-checkpoint-screen.js +3 -0
  327. package/dist/core/runner/resume-claim.d.ts +4 -2
  328. package/dist/core/runner/resume-claim.js +15 -8
  329. package/dist/core/runner/resume-policy-outcome.js +1 -1
  330. package/dist/core/runner/retired-runner-deps.js +2 -1
  331. package/dist/core/runner/rewind-files.d.ts +15 -0
  332. package/dist/core/runner/rewind-files.js +132 -0
  333. package/dist/core/runner/run-attachment-seats.js +2 -2
  334. package/dist/core/runner/run-brain-sinks.d.ts +4 -1
  335. package/dist/core/runner/run-brain-sinks.js +4 -2
  336. package/dist/core/runner/run-compaction-machinery.d.ts +1 -1
  337. package/dist/core/runner/run-compaction-machinery.js +2 -12
  338. package/dist/core/runner/run-git-lane.d.ts +1 -0
  339. package/dist/core/runner/run-harness-handlers.js +14 -7
  340. package/dist/core/runner/run-leg.d.ts +1 -1
  341. package/dist/core/runner/run-leg.js +43 -18
  342. package/dist/core/runner/run-settle-and-teardown.js +3 -2
  343. package/dist/core/runner/run-telemetry-and-budget-seats.js +1 -1
  344. package/dist/core/runner/run-turn-boundary.d.ts +1 -0
  345. package/dist/core/runner/run-turn-boundary.js +15 -22
  346. package/dist/core/runner/runtask.d.ts +3 -0
  347. package/dist/core/runner/runtask.js +8 -9
  348. package/dist/core/runner/session-read-file-states.d.ts +15 -0
  349. package/dist/core/runner/session-read-file-states.js +28 -0
  350. package/dist/core/runner/session-rule-policy.d.ts +22 -21
  351. package/dist/core/runner/session-rule-policy.js +17 -31
  352. package/dist/core/runner/shell-env-withheld.d.ts +33 -0
  353. package/dist/core/runner/shell-env-withheld.js +51 -0
  354. package/dist/core/runner/side-call-account.d.ts +32 -8
  355. package/dist/core/runner/side-call-account.js +23 -1
  356. package/dist/core/runner/skills-seat.js +6 -2
  357. package/dist/core/runner/stream-settle-backstop.js +1 -1
  358. package/dist/core/runner/strict-output-schema.d.ts +1 -1
  359. package/dist/core/runner/sub-agent-deny-lists.js +4 -6
  360. package/dist/core/runner/synthetic-tools.d.ts +16 -13
  361. package/dist/core/runner/synthetic-tools.js +8 -3
  362. package/dist/core/runner/tool-disclosure.d.ts +10 -12
  363. package/dist/core/runner/tool-disclosure.js +3 -4
  364. package/dist/core/runner/tool-end-body.d.ts +1 -1
  365. package/dist/core/runner/tool-end-body.js +10 -9
  366. package/dist/core/runner/tool-face-overlay.d.ts +2 -1
  367. package/dist/core/runner/tool-face-overlay.js +17 -1
  368. package/dist/core/runner/tool-not-executed.d.ts +5 -0
  369. package/dist/core/runner/tool-not-executed.js +11 -0
  370. package/dist/core/runner/tool-occurrence.d.ts +8 -0
  371. package/dist/core/runner/tool-occurrence.js +7 -0
  372. package/dist/core/runner/tool-progress-lane.d.ts +2 -2
  373. package/dist/core/runner/tool-turn-repair-seat.d.ts +3 -2
  374. package/dist/core/runner/turn-attachments.d.ts +91 -80
  375. package/dist/core/runner/turn-attachments.js +62 -37
  376. package/dist/core/runner-deps.d.ts +42 -42
  377. package/dist/core/runtime-caps.d.ts +4 -4
  378. package/dist/core/safety-axis-vocab.d.ts +6 -4
  379. package/dist/core/safety-axis-vocab.js +6 -5
  380. package/dist/core/safety-merge-corpus.js +26 -2
  381. package/dist/core/same-plain-value.d.ts +40 -0
  382. package/dist/core/same-plain-value.js +49 -0
  383. package/dist/core/scheduler.d.ts +1 -1
  384. package/dist/core/secret-env.d.ts +26 -3
  385. package/dist/core/secret-env.js +44 -8
  386. package/dist/core/select-model.js +3 -3
  387. package/dist/core/sensitive-path-policy.d.ts +1 -1
  388. package/dist/core/sensitive-path-policy.js +1 -1
  389. package/dist/core/session-policy-store.d.ts +102 -35
  390. package/dist/core/session-policy-store.js +210 -48
  391. package/dist/core/session-reconcile.d.ts +2 -2
  392. package/dist/core/session-store.d.ts +106 -37
  393. package/dist/core/session-store.js +165 -91
  394. package/dist/core/session.d.ts +101 -57
  395. package/dist/core/session.js +53 -0
  396. package/dist/core/shared-memory/tools.js +3 -1
  397. package/dist/core/shared-memory/types.d.ts +1 -1
  398. package/dist/core/shell-read-silence.d.ts +11 -12
  399. package/dist/core/shell-read-silence.js +9 -5
  400. package/dist/core/shell-run-candidates.js +3 -1
  401. package/dist/core/shell-wrapper-projection.js +1 -1
  402. package/dist/core/shell-wrapper-table.d.ts +14 -7
  403. package/dist/core/shell-wrapper-table.js +5 -4
  404. package/dist/core/side-query.d.ts +10 -0
  405. package/dist/core/side-query.js +15 -1
  406. package/dist/core/skill-grant.d.ts +7 -2
  407. package/dist/core/skill-grant.js +5 -0
  408. package/dist/core/skills-directory.js +6 -2
  409. package/dist/core/store-contracts/checkpoint-store-contract.d.ts +11 -1
  410. package/dist/core/store-contracts/checkpoint-store-contract.js +168 -3
  411. package/dist/core/store-contracts/file-history-store-contract.js +74 -4
  412. package/dist/core/store-contracts/peer-directory-contract.d.ts +7 -2
  413. package/dist/core/store-contracts/peer-directory-contract.js +14 -2
  414. package/dist/core/store-contracts/session-policy-store-contract.d.ts +7 -0
  415. package/dist/core/store-contracts/session-policy-store-contract.js +130 -0
  416. package/dist/core/store-contracts/session-repo-contract.js +176 -0
  417. package/dist/core/store-contracts/session-store-contract.d.ts +6 -8
  418. package/dist/core/store-contracts/session-store-contract.js +361 -51
  419. package/dist/core/store-contracts/workflow-journal-store-contract.js +26 -1
  420. package/dist/core/stub-env.d.ts +2 -0
  421. package/dist/core/stub-env.js +1 -0
  422. package/dist/core/surrogate-safe-slice.d.ts +3 -3
  423. package/dist/core/synthetic-read-verdict.js +3 -3
  424. package/dist/core/task-event.d.ts +42 -8
  425. package/dist/core/task-notification.d.ts +19 -15
  426. package/dist/core/task-registry-agent.d.ts +4 -4
  427. package/dist/core/task-registry-shared.d.ts +4 -4
  428. package/dist/core/task-registry-shared.js +1 -0
  429. package/dist/core/task-registry.d.ts +13 -4
  430. package/dist/core/task-registry.js +14 -2
  431. package/dist/core/task-result.d.ts +21 -3
  432. package/dist/core/task-spec.d.ts +69 -64
  433. package/dist/core/task-stream.d.ts +6 -6
  434. package/dist/core/task-tool-shape.d.ts +4 -4
  435. package/dist/core/tighten-task-spec.d.ts +1 -1
  436. package/dist/core/tighten-task-spec.js +2 -1
  437. package/dist/core/tool-catalog-entries.d.ts +36 -2
  438. package/dist/core/tool-catalog-entries.js +69 -43
  439. package/dist/core/tool-check-reading.d.ts +11 -0
  440. package/dist/core/tool-check-reading.js +11 -6
  441. package/dist/core/tool-conformance.js +1 -0
  442. package/dist/core/tool-errors.d.ts +2 -2
  443. package/dist/core/tool-face-reader.js +5 -3
  444. package/dist/core/tool-face.d.ts +21 -2
  445. package/dist/core/tool-face.js +1 -1
  446. package/dist/core/tool-model-gate.d.ts +5 -5
  447. package/dist/core/tool-name-aliases.d.ts +29 -8
  448. package/dist/core/tool-name-aliases.js +22 -4
  449. package/dist/core/tool-name-readings.d.ts +10 -43
  450. package/dist/core/tool-name-readings.js +2 -11
  451. package/dist/core/tool-policy.d.ts +85 -196
  452. package/dist/core/tool-policy.js +150 -175
  453. package/dist/core/tool-registry.d.ts +14 -7
  454. package/dist/core/tool-registry.js +17 -7
  455. package/dist/core/tool-result-store.js +5 -1
  456. package/dist/core/tool-roster.d.ts +57 -33
  457. package/dist/core/tool-roster.js +56 -68
  458. package/dist/core/tool-spec-members.js +8 -3
  459. package/dist/core/tool-spec.d.ts +53 -31
  460. package/dist/core/tools.js +51 -10
  461. package/dist/core/trace.d.ts +6 -2
  462. package/dist/core/types.d.ts +1 -1
  463. package/dist/core/untrusted-egress.d.ts +1 -1
  464. package/dist/core/untrusted-text.d.ts +1 -1
  465. package/dist/core/user-attachment.d.ts +8 -1
  466. package/dist/core/user-attachment.js +64 -4
  467. package/dist/core/warm-resume.d.ts +1 -1
  468. package/dist/core/wiring-manifest.d.ts +58 -0
  469. package/dist/core/wiring-manifest.js +14 -5
  470. package/dist/core/workflow-journal-store.d.ts +62 -0
  471. package/dist/core/workflow-journal-store.js +78 -2
  472. package/dist/core/workflow-run-store.d.ts +6 -0
  473. package/dist/core/workflow-run-store.js +2 -0
  474. package/dist/engine/compaction/compaction.d.ts +9 -9
  475. package/dist/engine/compaction/compaction.js +3 -2
  476. package/dist/engine/execution-env/node-execution-env.d.ts +26 -8
  477. package/dist/engine/execution-env/node-execution-env.js +54 -24
  478. package/dist/engine/harness/agent-harness.d.ts +39 -9
  479. package/dist/engine/harness/agent-harness.js +87 -33
  480. package/dist/engine/harness/types.d.ts +58 -9
  481. package/dist/engine/harness/types.js +12 -1
  482. package/dist/engine/llm/types.d.ts +36 -19
  483. package/dist/engine/llm/validation.d.ts +4 -1
  484. package/dist/engine/llm/validation.js +13 -1
  485. package/dist/engine/loop/agent-loop.d.ts +23 -1
  486. package/dist/engine/loop/agent-loop.js +26 -34
  487. package/dist/engine/loop/types.d.ts +31 -19
  488. package/dist/engine/lsp/node-lsp-manager.d.ts +2 -2
  489. package/dist/engine/session/memory-repo.d.ts +18 -12
  490. package/dist/engine/session/memory-repo.js +24 -9
  491. package/dist/engine/session/parent-chain-guard.d.ts +3 -2
  492. package/dist/engine/session/parent-chain-guard.js +1 -1
  493. package/dist/engine/session/repo-utils.d.ts +32 -3
  494. package/dist/engine/session/repo-utils.js +50 -5
  495. package/dist/index.d.ts +47 -23
  496. package/dist/index.js +35 -17
  497. package/dist/internal/harness-types.d.ts +1 -1
  498. package/dist/internal/harness.d.ts +3 -3
  499. package/dist/internal/harness.js +2 -2
  500. package/dist/internal/llm.d.ts +2 -2
  501. package/dist/internal/llm.js +1 -1
  502. package/dist/orchestration/goal.js +2 -2
  503. package/dist/orchestration/run-workflow-tool.d.ts +8 -6
  504. package/dist/orchestration/run-workflow-tool.js +10 -6
  505. package/dist/orchestration/workflow-size-guideline.d.ts +4 -4
  506. package/dist/orchestration/workflow-types.d.ts +18 -0
  507. package/dist/orchestration/workflow-types.js +6 -0
  508. package/dist/orchestration/workflow.d.ts +5 -13
  509. package/dist/orchestration/workflow.js +57 -49
  510. package/dist/prompt-assembly/artifact.d.ts +2 -2
  511. package/dist/prompt-assembly/artifact.js +5 -3
  512. package/dist/prompt-assembly/assemble.d.ts +3 -2
  513. package/dist/prompt-assembly/assemble.js +1 -1
  514. package/dist/prompt-assembly/catalog/schema.d.ts +43 -12
  515. package/dist/prompt-assembly/catalog/schema.js +34 -2
  516. package/dist/prompt-assembly/catalog/sections.js +0 -1
  517. package/dist/prompt-assembly/composer.d.ts +3 -1
  518. package/dist/prompt-assembly/composer.js +1 -1
  519. package/dist/prompt-assembly/event-registry.js +2 -0
  520. package/dist/prompt-assembly/overlay.js +3 -3
  521. package/dist/prompt-assembly/renderers.d.ts +1 -1
  522. package/dist/prompt-assembly/renderers.js +0 -3
  523. package/dist/prompt-assembly/role-base.d.ts +15 -0
  524. package/dist/prompt-assembly/role-base.js +9 -0
  525. package/dist/prompt-assembly/select.d.ts +39 -14
  526. package/dist/prompt-assembly/select.js +47 -16
  527. package/dist/prompt-assembly/sugar.d.ts +17 -11
  528. package/dist/prompt-assembly/sugar.js +8 -3
  529. package/dist/prompt-assembly/tool-catalog.d.ts +39 -2
  530. package/dist/prompt-assembly/tool-catalog.js +117 -4
  531. package/dist/prompt-assembly/turn-snapshot.d.ts +4 -10
  532. package/dist/prompt-assembly/turn-snapshot.js +0 -3
  533. package/dist/prompt-assembly/types.d.ts +0 -7
  534. package/dist/prompts/default.d.ts +14 -14
  535. package/dist/scenarios/full-body.d.ts +15 -15
  536. package/dist/scenarios/full-body.js +4 -3
  537. package/dist/shell/lex.js +10 -1
  538. package/dist/stores/file/adoption/adopt.d.ts +4 -3
  539. package/dist/stores/file/adoption/adopt.js +27 -33
  540. package/dist/stores/file/adoption/marker.d.ts +6 -13
  541. package/dist/stores/file/adoption/marker.js +9 -17
  542. package/dist/stores/file/checkpoint-store.d.ts +24 -0
  543. package/dist/stores/file/checkpoint-store.js +45 -7
  544. package/dist/stores/file/file-history-store.d.ts +20 -19
  545. package/dist/stores/file/file-history-store.js +157 -141
  546. package/dist/stores/file/fs-atomic.d.ts +15 -0
  547. package/dist/stores/file/fs-atomic.js +89 -14
  548. package/dist/stores/file/index.d.ts +1 -1
  549. package/dist/stores/file/index.js +2 -1
  550. package/dist/stores/file/mailbox-store.d.ts +3 -0
  551. package/dist/stores/file/mailbox-store.js +3 -1
  552. package/dist/stores/file/permission-rule-adopt.d.ts +1 -1
  553. package/dist/stores/file/permission-rule-adopt.js +18 -18
  554. package/dist/stores/file/permission-rule-store.d.ts +18 -2
  555. package/dist/stores/file/permission-rule-store.js +31 -18
  556. package/dist/stores/file/session-policy-store.d.ts +3 -3
  557. package/dist/stores/file/session-store.d.ts +54 -16
  558. package/dist/stores/file/session-store.js +114 -85
  559. package/dist/stores/file/workflow-journal-store.d.ts +10 -4
  560. package/dist/stores/file/workflow-journal-store.js +28 -13
  561. package/dist/tools/artifact/artifact-text.d.ts +1 -1
  562. package/dist/tools/artifact/artifact-tool.js +5 -3
  563. package/dist/tools/fs/bash-program-position.d.ts +19 -2
  564. package/dist/tools/fs/bash-program-position.js +56 -9
  565. package/dist/tools/fs/bash-readonly-classifier.d.ts +3 -3
  566. package/dist/tools/fs/fs-bash.d.ts +2 -2
  567. package/dist/tools/fs/fs-bash.js +8 -6
  568. package/dist/tools/fs/fs-glob.d.ts +86 -0
  569. package/dist/tools/fs/fs-glob.js +226 -0
  570. package/dist/tools/fs/fs-read.js +14 -14
  571. package/dist/tools/fs/fs-search-tools.js +7 -7
  572. package/dist/tools/fs/fs-shared.d.ts +8 -8
  573. package/dist/tools/fs/gh-rate-limit.d.ts +1 -1
  574. package/dist/tools/fs/notebook.d.ts +2 -2
  575. package/dist/tools/fs/pattern-kill-guard.d.ts +22 -0
  576. package/dist/tools/fs/pattern-kill-guard.js +397 -0
  577. package/dist/tools/fs/pdf.d.ts +9 -6
  578. package/dist/tools/fs/pdf.js +3 -3
  579. package/dist/tools/fs/program-read-model.d.ts +57 -7
  580. package/dist/tools/fs/program-read-model.js +11 -1
  581. package/dist/tools/fs/program-read-model.rows.js +78 -21
  582. package/dist/tools/fs/read-deny-home.js +3 -2
  583. package/dist/tools/fs/read-deny.d.ts +29 -7
  584. package/dist/tools/fs/read-deny.js +63 -22
  585. package/dist/tools/fs/removal-targets.d.ts +18 -8
  586. package/dist/tools/fs/removal-targets.js +47 -20
  587. package/dist/tools/fs/safety.d.ts +9 -9
  588. package/dist/tools/fs/search.d.ts +16 -6
  589. package/dist/tools/fs/search.js +20 -26
  590. package/dist/tools/fs/shell-read-argv.js +89 -12
  591. package/dist/tools/fs/shell-read-bindings.d.ts +31 -0
  592. package/dist/tools/fs/shell-read-bindings.js +41 -0
  593. package/dist/tools/fs/shell-read-check.js +12 -20
  594. package/dist/tools/fs/shell-read-environment.d.ts +5 -1
  595. package/dist/tools/fs/shell-read-environment.js +3 -2
  596. package/dist/tools/fs/shell-read-establish.d.ts +15 -0
  597. package/dist/tools/fs/shell-read-establish.js +19 -20
  598. package/dist/tools/fs/shell-read-judge.d.ts +4 -0
  599. package/dist/tools/fs/shell-read-judge.js +5 -2
  600. package/dist/tools/fs/shell-read-plan.js +24 -16
  601. package/dist/tools/fs/shell-read-start.d.ts +6 -1
  602. package/dist/tools/fs/shell-read-write-targets.d.ts +5 -1
  603. package/dist/tools/fs/shell-read-write-targets.js +2 -3
  604. package/dist/tools/fs/shell-reentry-text.d.ts +9 -0
  605. package/dist/tools/fs/shell-reentry-text.js +40 -2
  606. package/dist/tools/loop-tick.d.ts +2 -2
  607. package/dist/tools/scheduler-tools.js +5 -1
  608. package/dist/tools/task-list.d.ts +7 -7
  609. package/dist/tools/task-list.js +5 -1
  610. package/dist/tools/todo.js +65 -64
  611. package/dist/tools/web.d.ts +20 -15
  612. package/dist/tools/web.js +55 -69
  613. package/dist/tools/worktree.d.ts +3 -3
  614. package/dist/tools/worktree.js +3 -1
  615. package/package.json +1 -1
  616. package/test/export-surface.snapshot.json +5894 -5638
  617. package/wire-changes/core@7.55.0.json +3318 -0
  618. package/wire-changes/core@7.56.0.json +3891 -0
  619. package/wire-changes/mods-kernel@7.56.0.json +303 -0
  620. package/dist/core/store-contracts/session-store-incarnation-contract.d.ts +0 -39
  621. package/dist/core/store-contracts/session-store-incarnation-contract.js +0 -95
@@ -1,6 +1,8 @@
1
1
  import type { GateOutcome, HostDecisionFacts } from "./gate-outcome.js";
2
2
  import { type ExecutionOutcomeRecordWord } from "./checkpoint-execution-record.js";
3
+ import { type HolderJudge } from "./checkpoint-generation.js";
3
4
  import { type CheckpointPause } from "./pause-registry.js";
5
+ import { type CheckpointDeleteGuard, type CheckpointOverdueCursor, type CheckpointOverdueQuery, type CheckpointPage, type CheckpointRowRead, type CheckpointSessionCursor, type CheckpointSessionQuery } from "./checkpoint-queries.js";
4
6
  import type { SystemInjectionPriority } from "./task-notification.js";
5
7
  import { type SteerReplayFacet } from "./steer-replay.js";
6
8
  import type { QuestionAnswer } from "./ask-question.js";
@@ -266,12 +268,17 @@ export declare function normalizeProbeCause(value: unknown): ProbeCause | undefi
266
268
  * - (1 reserved — least-severe / informational; not expected from these gates.)
267
269
  * `egress` dominates the shell coarse-grade (an explicitly egress-marked shell tighten is still ≥3). A future
268
270
  * arm may refine this — but only with a stated reason, and the ORDERING must stay monotone in risk.
271
+ * Total over what a stored row can hold, never a throw: a value that is not a plain record ({@link isPlainRecord}) has
272
+ * no tier (`undefined`); a mark that is neither absent nor a boolean contributes nothing, the valid `true` marks give
273
+ * their floor, and "nothing tripped" (tier 2) is not claimed past a damaged mark. A caller projecting a stored row
274
+ * discloses the damage ({@link summarizeCheckpoint}'s `disclose`).
269
275
  */
270
276
  export declare function riskSeverity(axes: {
271
277
  egress?: boolean;
272
278
  irreversible?: boolean;
273
279
  shell?: boolean;
274
280
  }): 1 | 2 | 3 | 4 | 5;
281
+ export declare function riskSeverity(axes: unknown): 1 | 2 | 3 | 4 | 5 | undefined;
275
282
  /** design S1e: the char cap for the {@link CheckpointSummary.toolInput} BOUNDED raw preview of a
276
283
  * `tool_approval` pendingAction's `args` (`JSON.stringify`-ed). Caps the `listByScope` payload size; over-cap
277
284
  * is truncated with a trailing `…`. Bounded raw (NOT neutralized) — redaction is the consumer's job (echo-only). */
@@ -882,12 +889,21 @@ export type PendingAction = {
882
889
  */
883
890
  family?: import("./tool-face.js").ToolFamily;
884
891
  pathTarget?: import("./tool-face.js").ToolRosterPathTarget;
892
+ /** The URL slot the parked call's host rules were read on (`ToolCallFace.hostTarget`), off the same roster row at the same
893
+ * mint: the pre-CAS recheck judges an edit on it, and the approval object binds it (a resume whose tool now names another
894
+ * slot is vetoed, `resume.target_moved`). Absent ⇒ the tool declared none, or a row minted before the member: a deny or an
895
+ * ask by host is then judged on the catalog's slot for the name, and no allow by host reaches the call. */
896
+ hostTarget?: import("./tool-face.js").ToolHostTarget;
885
897
  /** The names the parked call answered to, copied from the face the gate judged it under (`ToolCallFace.names`: the
886
898
  * model's spelling first, then the wire name and the other aliases that resolve to it; a row minted before the
887
899
  * spelling led carries the wire name first) — the pre-CAS recheck judges an edit against rules written on any of
888
900
  * them, as the live gate judged the original, and the resume re-mints its face under the spelling while it still
889
901
  * resolves to the row's tool. Absent on a row minted before it ⇒ the row's `toolName` alone. */
890
902
  names?: readonly string[];
903
+ /** `true` iff one of the engine's own mount sites mounted the parked tool (the roster entry's fact `ToolCallFace.engineMounted`
904
+ * carries): what the identity members above cannot say (a host-mounted engine definition has the same ones). The pre-CAS
905
+ * recheck rebuilds the face from the row (`parkedCallFaceOf`); absent ⇒ judged as an ordinary tool. Word `mount_site`. */
906
+ engineMounted?: true;
891
907
  /** The approval object's TARGETS (`approvalTargetsOf`): per reading of the path slot, where it resolved when the card
892
908
  * was asked; absent ⇒ not judged. A role resolving elsewhere at the execution vetoes the call (`resume.target_moved`). */
893
909
  targets?: import("./approval-object.js").ApprovalTargets;
@@ -1021,6 +1037,9 @@ export interface CheckpointState {
1021
1037
  };
1022
1038
  /** The grant rows the run grew ({@link import("./skill-grant.js").frozenSkillGrants}); absent = none, damaged = refused pre-CAS. */
1023
1039
  skillGrants?: import("./skill-grant.js").SkillGrantRecord[];
1040
+ /** The skills active on the leg whose hooks were open (`SkillSpec.mods`; {@link import("./mods/spec-seats.js").SkillScopes}`.frozen`):
1041
+ * the resumed leg reopens them at its admission. Absent = none; damaged = refused pre-CAS. */
1042
+ skillScopes?: string[];
1024
1043
  /**
1025
1044
  * design/319 (A ticket) — the session's reminder provenance mark
1026
1045
  * ({@link import("./reminder-mint.js").mintReminderMark}), persisted so a durable resume keeps
@@ -1080,12 +1099,12 @@ export interface CheckpointState {
1080
1099
  */
1081
1100
  pendingSteerQueue?: PendingSteerEntry[];
1082
1101
  /**
1083
- * SR-7 (CC 2.1.198 orphaned-background-task notice: F6c pretty.js:698391-698398, resume leg
1084
- * :707384-707399 under the `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` gate — the cloud-worker restart
1102
+ * SR-7 (orphaned-background-task notice, resume leg
1103
+ * under the `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` gate — the cloud-worker restart
1085
1104
  * leg, exactly sema's durable-resume shape): the background tasks (pending/running, this run's
1086
1105
  * owner triple) still ALIVE at suspend. Background processes never survive a suspend (design/103
1087
1106
  * §3.7 unconditional dispose + killed receipts), so on resume any snapshot entry NOT
1088
- * alive in the resume leg's registry is an ORPHAN — aggregated into ONE CC-verbatim "The container
1107
+ * alive in the resume leg's registry is an ORPHAN — aggregated into ONE "The container
1089
1108
  * was restarted…" reminder appended to the resume continuation (single message: header +
1090
1109
  * `- description (task id)` list + re-create instruction; never a per-task barrage). A survivor
1091
1110
  * (session-resident shell / in-window monitor) is excluded — still reachable via TaskOutput/
@@ -1645,8 +1664,17 @@ export { REOPEN_REASONS, type ReopenReason } from "./resume-startup-cause.js";
1645
1664
  * (legacy callers / direct store tests) → no OCC.
1646
1665
  */
1647
1666
  export interface ResolveExpectation {
1648
- /** The monotonic {@link Checkpoint.rev} the caller observed at `get()` (absent rev ⇒ legacy `0`). */
1667
+ /** The monotonic {@link Checkpoint.rev} the caller observed at `get()`, read through {@link checkpointRevOf} (absent rev ⇒ legacy `0`). */
1649
1668
  rev: number;
1669
+ /**
1670
+ * The deployment's credential for the claim the resolving run acts under (`RunInternals.holder`, carried verbatim — the engine
1671
+ * never judges, stores or prints it). Every member of this object is a precondition the store evaluates in the SAME atomic step
1672
+ * as the flip: the CAS wins only if the grant `holder` names is still the deployment's current one at that instant (no claim
1673
+ * transfer may commit between the judgement and the flip). Judged only by a store that declares {@link CheckpointStore.fence}
1674
+ * `holder`; any other store LOSES a CAS that carries one (never ignores it — `checkpointHolderMatches`). A miss is an ordinary
1675
+ * loss: the row is untouched, so it reads `pending` at the generation the caller validated.
1676
+ */
1677
+ holder?: string;
1650
1678
  }
1651
1679
  /** design/384 slice 2 / S-25-R1 — the terminal intents a claim can carry. Deliberately the
1652
1680
  * TERMINAL pair only: `resolve` and `expire` are the two verbs that race one pending row to
@@ -1661,16 +1689,17 @@ export type TerminalClaimIntent = {
1661
1689
  };
1662
1690
  /** design/384 slice 2 / S-25-R1 — the single-round-trip answer: EITHER the claim won, OR it lost and
1663
1691
  * the SAME atomic operation reports what the row is now. `current` reuses the row's own vocabulary
1664
- * (status / rev / resolvedOutcome) — no new value domain. `status:"pending"` on a loss is the OCC
1665
- * arm only (`expect.rev` mismatch): the row is still open — re-get + re-validate, zero backoff (a
1666
- * cleanly KNOWN state is never "unknown"). */
1692
+ * (status / rev / resolvedOutcome) — no new value domain. `status:"pending"` on a loss is one of the
1693
+ * two expectation arms: a `rev` other than `expect.rev` is the OCC arm (the row is still open — re-get +
1694
+ * re-validate, zero backoff; a cleanly KNOWN state is never "unknown"); `expect.rev` itself means the
1695
+ * row did not move and the claim holder (`expect.holder`) was not current. */
1667
1696
  export type TerminalClaimOutcome = {
1668
1697
  claimed: true;
1669
1698
  } | {
1670
1699
  claimed: false;
1671
1700
  current: {
1672
1701
  status: "pending" | "resolved" | "expired";
1673
- /** `(cp.rev ?? 0)` — the absent-rev-reads-as-0 rule the OCC key already uses. */
1702
+ /** {@link checkpointRevOf} — the absent-rev-reads-as-0 rule the OCC key already uses. */
1674
1703
  rev: number;
1675
1704
  /** Row-field PASSTHROUGH on every present status: the row PRESERVES it across `reopen`
1676
1705
  * (resolved→pending rows carry it), `expire` never clears it, and a winnerless resolve
@@ -1807,7 +1836,7 @@ export interface CheckpointRow {
1807
1836
  * key ({@link ResolveExpectation}): a resume reads it at `get()` and `resolve` requires the live `rev` to
1808
1837
  * still equal it, so any resolve/reopen cycle landing in the get→resolve window loses the CAS (fail-closed).
1809
1838
  * Unlike the 2-valued `reopenReason`, it cannot ABA back to a prior value. Absent ⇒ legacy `0` (a checkpoint
1810
- * minted before this field; treated as never mutated).
1839
+ * minted before this field; treated as never mutated) — read it through {@link checkpointRevOf}.
1811
1840
  */
1812
1841
  rev?: number;
1813
1842
  /**
@@ -1883,6 +1912,43 @@ export interface CheckpointRow {
1883
1912
  /** Epoch ms the store stamped {@link executionOutcome} at. Present iff `executionOutcome` is. */
1884
1913
  executionAtMs?: number;
1885
1914
  }
1915
+ /**
1916
+ * The immutable, indexable facts of one checkpoint row: what core minted on it and nothing later moves. A backend that
1917
+ * keeps columns beside the stored row writes them from {@link checkpointIndexFacts}, the one derivation. Not here: the
1918
+ * state the CAS faces move (`status`, `rev`, `reopenReason`, the execution record), values a deployment mints (an
1919
+ * abandonment backstop), display projections a deployment bounds or redacts, and the deadline FACET — a reading of the
1920
+ * pause registry, which a stored copy would freeze ({@link import("./pause-registry.js").CARD_FACET_OVERRIDES}).
1921
+ * Every member is present; `null` = the row carries none.
1922
+ */
1923
+ export interface CheckpointIndexFacts {
1924
+ readonly token: CheckpointToken;
1925
+ readonly scope: string;
1926
+ readonly sessionId: string;
1927
+ /** {@link checkpointVersionOf}. */
1928
+ readonly version: number;
1929
+ readonly gateKind: CheckpointGate["kind"];
1930
+ /**
1931
+ * The approval gate's stored card word AS STORED: a member of `TOOL_APPROVAL_CARDS`, or a string outside it (kept, so
1932
+ * a later engine that knows the word reads the column right); `null` for a non-string, no card, or a gate that is not
1933
+ * an approval. Never a derived facet: a facet predicate over this column is generated from `CARD_FACET_OVERRIDES` (its
1934
+ * keys `IN (…)` take the key's facet, anything else the gate kind's). Read off the gate alone — independent of the
1935
+ * pending action's own members (offers, the absence word), so a backfill of one never presumes the other's.
1936
+ */
1937
+ readonly approvalCard: string | null;
1938
+ /** The pending tool call's name, id and bound input hash (a `tool_approval` pending action only). */
1939
+ readonly toolName: string | null;
1940
+ readonly toolCallId: string | null;
1941
+ readonly boundInputHash: string | null;
1942
+ readonly deadline: number | null;
1943
+ readonly createdAt: number;
1944
+ /** The approval gate's descriptor, the row's own object (display only; serialize it, do not mutate it). */
1945
+ readonly riskDescriptor: RiskDescriptor | null;
1946
+ /** The park mint's directional-control bit, presence only: `true`, or `null` — not recorded, never "clean". */
1947
+ readonly hasBidiControls: true | null;
1948
+ }
1949
+ /** Derive a row's {@link CheckpointIndexFacts}. Pure: reads no clock, writes nothing; the approval card is read
1950
+ * through {@link parkedApprovalCardOf} (the one card reading), the tool fields only off a `tool_approval` action. */
1951
+ export declare function checkpointIndexFacts(cp: Checkpoint): CheckpointIndexFacts;
1886
1952
  /**
1887
1953
  * design/80 assistant-scheduler seam #1: a LIGHTWEIGHT projection of one PENDING
1888
1954
  * checkpoint, returned in bulk by {@link CheckpointStore.listByScope} so a supervisor scheduler can list a
@@ -1905,7 +1971,9 @@ export interface CheckpointSummary {
1905
1971
  * `irreversible_ask` approval escalations), derived via {@link riskSeverity} from the descriptor's axes —
1906
1972
  * the SAME value as `gate.riskDescriptor.severity`, recomputed from the single source helper rather than
1907
1973
  * re-stored. `undefined` for a gate with no descriptor (resource_limit / needs_review / plan_review / a
1908
- * legacy human ask minted before D-E). The inbox sorts DESC by this. */
1974
+ * legacy human ask minted before D-E). The inbox sorts DESC by this. Also `undefined` for a descriptor whose axes
1975
+ * prove no tier (not a plain record, or damaged marks and no valid `true` one) — damage, not a low risk: the
1976
+ * projection then calls its `disclose` once, so such a row does not sink below the graded rows unannounced. */
1909
1977
  severity?: 1 | 2 | 3 | 4 | 5;
1910
1978
  /** Cumulative spend debited to this suspend chain ({@link ResourceLedger.spentMicroUsd}) in micro-USD —
1911
1979
  * present whenever the checkpoint carries a {@link Checkpoint.resourceLedger} (every resource_limit suspend,
@@ -2067,9 +2135,12 @@ export interface CheckpointSummary {
2067
2135
  * {@link CheckpointSummary}. Shared by every {@link CheckpointStore} impl so the projection is IDENTICAL
2068
2136
  * across the in-memory, file, and durable backends (the anti-drift guard) — `severity` always derives from the
2069
2137
  * gate's {@link RiskDescriptor} via the single {@link riskSeverity} helper, `spentMicroUsd` always reads
2070
- * {@link ResourceLedger.spentMicroUsd}. Pure; reads no clock/random.
2138
+ * {@link ResourceLedger.spentMicroUsd}. Pure; reads no clock/random. `disclose` receives one sentence for a damage the
2139
+ * projection reads past — descriptor axes that are not a plain record, or a mark that is not a boolean (the `severity`
2140
+ * is then the valid marks' floor, or omitted) — naming the row by checkpoint id and session (never its token) and the member by its
2141
+ * shape (never its value); it is called synchronously and every listing calls it again. A store hands it its own seat.
2071
2142
  */
2072
- export declare function summarizeCheckpoint(cp: Checkpoint): CheckpointSummary;
2143
+ export declare function summarizeCheckpoint(cp: Checkpoint, disclose?: (sentence: string) => void): CheckpointSummary;
2073
2144
  /**
2074
2145
  * WHICH arm of a multi-arm {@link CheckpointError} `code` fired (requested 2026-08-10: a deployment retry
2075
2146
  * policy needs to tell "a newer worker can redeem this row" from "this row is damaged/caller-declared and
@@ -2094,14 +2165,16 @@ export declare function summarizeCheckpoint(cp: Checkpoint): CheckpointSummary;
2094
2165
  * steer seat, which no worker version reads and the host decides itself, or a retired mode-seed member of
2095
2166
  * `inheritedGate`, which an engine at 7.38.x or earlier still reads once).
2096
2167
  * · `invalid_outcome` pre-CAS row-integrity arms: `"real_approval_damaged"`, `"real_approval_forged"`,
2097
- * `"read_face_damaged"`, `"read_face_forged"`, `"write_face_damaged"`, `"skill_grants_damaged"`, `"constraint_chain_missing"`, `"hands_coordinates_damaged"`, `"requirements_damaged"` (all terminal for the row's
2168
+ * `"read_face_damaged"`, `"read_face_forged"`, `"write_face_damaged"`, `"skill_grants_damaged"`, `"skill_scopes_damaged"`, `"constraint_chain_missing"`, `"hands_coordinates_damaged"`, `"requirements_damaged"` (all terminal for the row's
2098
2169
  * current bytes — no worker version redeems a damaged row).
2099
2170
  */
2100
2171
  export type CheckpointErrorReason = "version_newer" | "env_factory_missing" | "governed_unwired" | "origin_missing" | "ledger_event_unknown" | "seat_retired" | "real_approval_damaged" | "real_approval_forged" | "read_face_damaged" | "read_face_forged"
2101
2172
  /** `state.writeFace` is present but not a well-formed section. No `_forged` twin: the section is
2102
2173
  * legal-and-absent at every version, so there is no version to judge a fabrication against — and a
2103
2174
  * fabricated "open" still needs the LIVE resolution to say open too. */
2104
- | "write_face_damaged" | "skill_grants_damaged" | "constraint_chain_missing"
2175
+ | "write_face_damaged" | "skill_grants_damaged"
2176
+ /** `state.skillScopes` is present but not a list of skill names (the active skills whose hooks the resumed leg reopens). */
2177
+ | "skill_scopes_damaged" | "constraint_chain_missing"
2105
2178
  /** `state.handsRoot` / `state.handsHome` / `state.handsCwd` is present but not an absolute path (the row's hands' coordinates). */
2106
2179
  | "hands_coordinates_damaged"
2107
2180
  /** The row's reader-requirement list ({@link CheckpointRow.requires}) is missing on a v10 row, is not a list of words,
@@ -2119,10 +2192,11 @@ export type CheckpointErrorReason = "version_newer" | "env_factory_missing" | "g
2119
2192
  * wrote the leg's lists is not one (`"invalid_record"`); the roster the resume hands mounts a delegation tool under another name than it declares
2120
2193
  * (`"renamed_mount"`); the process-wide table of declared names is occupied by a value that is not the engine's (`"registry_occupied"`). */
2121
2194
  | "not_a_list" | "not_a_string" | "unknown_name" | "unsupported_pattern" | "invalid_record" | "renamed_mount" | "registry_occupied"
2122
- /** On `checkpoint.config_refused` with `detail.code` `config.unknown_role` — a role seat or a tier binding the deployment wrote that the engine cannot read:
2123
- * a word the model catalog does not hold (`"unknown_model_ref"`), or a value that is no model reference at all — a number, a boolean, a list
2124
- * (`"not_a_model_ref"`). The sentence names the seat (`roles.consolidate`, `tiers.pro`). */
2125
- | "unknown_model_ref" | "not_a_model_ref";
2195
+ /** On `config.unknown_role` (a fresh run's terminal `detail.detail.reason`; on a resume, `detail.reason` of `checkpoint.config_refused` with `detail.code` `config.unknown_role`)
2196
+ * — a model binding or a role word the engine cannot read: a word the model catalog does not hold (`"unknown_model_ref"`), a value that is
2197
+ * no model reference at all — a number, a boolean, a list (`"not_a_model_ref"`), or a role word outside the vocabulary — a `roles` key, a
2198
+ * `modelRole` value (`"unknown_role_word"`). The sentence names the seat the refusal's `field` names (`roles.consolidate`, `tiers.pro`, `TaskSpec.model`). */
2199
+ | "unknown_model_ref" | "not_a_model_ref" | "unknown_role_word";
2126
2200
  /**
2127
2201
  * The codes a RESUME's pre-claim configuration screen carries as `detail.code` of a `checkpoint.config_refused` — the words prepare's
2128
2202
  * doors throw, held unchanged so one refusal reads the same on a fresh run (`TaskResult.errorCode`) and on a resume: the mode, output-style,
@@ -2131,18 +2205,21 @@ export type CheckpointErrorReason = "version_newer" | "env_factory_missing" | "g
2131
2205
  * re-supplied config and the deployment's deps (`configValueDoors`, the rest): the retired deps seats and caller-policy members
2132
2206
  * (`config.deps_retired_key`), the peer presence, the restore selector, the microCompact knob, the prompt selectors, `resumeAt` on a resume
2133
2207
  * (`resume_at.conflicts_resume`, `resume_at.mode_without_target` — a resume carrying `resumeAt` is refused as a conflict before its mode is
2134
- * read, so `resume_at.invalid_mode` is a fresh run's word only), the containment faces, the add-only seats and the MCP / A2A `toolAxes` (`config.invalid_argument`), an MCP server's `toolFaces` (`config.tool_face_invalid`), the three memory seats,
2208
+ * read, so `resume_at.invalid_mode` is a fresh run's word only), the containment faces, the add-only seats and the MCP / A2A `toolAxes` (`config.invalid_argument`), an MCP server's `toolFaces` (`config.tool_face_invalid`), the three memory seats, the cross-boundary posture, the advisor switch and the advisor model's shape,
2135
2209
  * the auto-consolidation arming (its role key too, and the role seats and tier bindings it reads: `config.unknown_role`, `detail.reason` naming the arm), the materialize strategy and persistence flag, the lock layer (`config.locked_registry`,
2136
2210
  * `config.locked_key`), an MCP server's content class, the skills-listing seats (`config.skill_listing_budget_invalid`), the limits and the
2137
- * resource-suspend knobs, the attachment modes, the governance windows, the brain-call guardrail and the retention declaration over the stores the leg
2211
+ * resource-suspend knobs, the attachment modes, the governance windows, the brain-call guardrail, the host floor (`config.host_floor_invalid`) and the retention declaration over the stores the leg
2138
2212
  * would run on (`config.retention_policy`, `config.retention_capability`), and the checkpoint store seat itself (`config.invalid_checkpoint_store`: the
2139
2213
  * retired `null` spelling, a store that declares no execution outcome), and the skills seat and the hands band (`config.invalid_argument`;
2140
2214
  * a skill's `baseDir` by its own reader, `config.skill_base_dir_invalid`). A door not entered here (the leg's model, its rebuilt
2141
2215
  * roster, its answer face, the approval seat's value) still refuses after the claim, each for a stated reason (INTEGRATION-CORE, "A resume's two doors").
2142
2216
  */
2143
- export declare const CHECKPOINT_CONFIG_REFUSAL_CODES: readonly ["config.spec_retired_key", "config.output_style_invalid", "config.permission_mode_invalid", "config.shell_gate_value_retired", "config.approval_reach_invalid", "config.user_invoked_skill_unknown", "config.skill_deny_unreadable", "config.user_attachment_invalid", "config.tool_face_control", "config.deps_retired_key", "config.peer_presence_invalid", "config.tool_model_gate_invalid", "config.microcompact_invalid", "config.prompt_selector_invalid", "resume_at.conflicts_resume", "resume_at.mode_without_target", "config.read_face_invalid", "config.write_face_invalid", "config.invalid_argument", "config.tool_face_invalid", "config.memory_delegation_evidence", "config.memory_provenance", "config.memory_capture_policy", "config.cross_boundary_posture", "config.auto_consolidation", "config.unknown_role", "config.tool_materialize_invalid", "config.memory_persistence_invalid", "config.tool_materialize_unreachable", "config.locked_registry", "config.locked_key", "config.mcp_content_class", "config.skill_listing_budget_invalid", "config.limit_unknown_key", "config.limit_invalid", "config.attachment_invalid", "config.usage_window_invalid", "config.brain_call_guardrail_invalid", "config.retention_policy", "config.retention_capability", "config.invalid_checkpoint_store", "config.skill_base_dir_invalid"];
2217
+ export declare const CHECKPOINT_CONFIG_REFUSAL_CODES: readonly ["config.spec_retired_key", "config.output_style_invalid", "config.permission_mode_invalid", "config.shell_gate_value_retired", "config.approval_reach_invalid", "config.user_invoked_skill_unknown", "config.skill_deny_unreadable", "config.user_attachment_invalid", "config.tool_face_control", "config.deps_retired_key", "config.peer_presence_invalid", "config.tool_model_gate_invalid", "config.microcompact_invalid", "config.prompt_selector_invalid", "resume_at.conflicts_resume", "resume_at.mode_without_target", "config.read_face_invalid", "config.write_face_invalid", "config.invalid_argument", "config.tool_face_invalid", "config.memory_delegation_evidence", "config.memory_provenance", "config.memory_capture_policy", "config.cross_boundary_posture", "config.advisor_tool_invalid", "config.advisor_model_invalid", "config.auto_consolidation", "config.unknown_role", "config.tool_materialize_invalid", "config.memory_persistence_invalid", "config.tool_materialize_unreachable", "config.locked_registry", "config.locked_key", "config.mcp_content_class", "config.skill_listing_budget_invalid", "config.limit_unknown_key", "config.limit_invalid", "config.attachment_invalid", "config.usage_window_invalid", "config.brain_call_guardrail_invalid", "config.retention_policy", "config.retention_capability", "config.invalid_checkpoint_store", "config.skill_base_dir_invalid", "config.host_floor_invalid"];
2144
2218
  export type CheckpointConfigRefusalCode = (typeof CHECKPOINT_CONFIG_REFUSAL_CODES)[number];
2145
2219
  export declare const isCheckpointConfigRefusalCode: (word: unknown) => word is CheckpointConfigRefusalCode;
2220
+ /** The words of a {@link CheckpointError}'s optional `detail.field` (what each means: the `detail` member's doc). A CLOSED SET with one home, registered in
2221
+ * `docs/CLOSED-SETS.md`: a consumer holding a table over it is tsc-red on a new word until it places the word. */
2222
+ export type CheckpointErrorField = "boundCallId" | "boundInputHash" | "boundGrantDigest" | "answer" | "hostDecision" | "approver" | "feedback" | "taskConfig" | "deps" | "inheritedGate";
2146
2223
  /** A typed checkpoint-store error so callers branch on `code` (mirrors `SessionError`). */
2147
2224
  export declare class CheckpointError extends Error {
2148
2225
  readonly code: "checkpoint.already_exists" | "checkpoint.already_resolved" | "checkpoint.not_found"
@@ -2296,9 +2373,15 @@ export declare class CheckpointError extends Error {
2296
2373
  * parity) before this throw — the token is NOT redeemable, by the deployment's own permanent
2297
2374
  * verdict (a dead binding must not be redialed forever). */
2298
2375
  | "resume.preflight_rejected"
2376
+ /** The resume carried a claim holder ({@link ResolveExpectation.holder}) and lost its CAS while the row is still the one it
2377
+ * validated — same scope, `pending`, the same generation — so the holder was not the deployment's current grant: nothing was
2378
+ * applied and the row is unchanged by this resume. The run is superseded; do not retry it (the current holder delivers).
2379
+ * Read off the CAS's own loss answer on `claimTerminal`; on the two-step route off its diagnostic read (a later instant —
2380
+ * under a race the row's later state answers instead, fail-closed either way). */
2381
+ | "resume.holder_superseded"
2299
2382
  /** F-012 L3: the resume carried an approver EDIT (`updatedInput`) and a FROZEN inherited ancestor
2300
2383
  * constraint (the persisted projection chain) — or the deployment's resume-edit policy — DENIES the
2301
- * edited args. Refused PRE-CAS with fresh-redecision semantics: the checkpoint stays `pending` and
2384
+ * edited args, or the policy accepts them only rewritten (`detail.editRewritten` names that form). Refused PRE-CAS with fresh-redecision semantics: the checkpoint stays `pending` and
2302
2385
  * the same token remains decidable (approve as shown, deny, or edit differently) — the rejection
2303
2386
  * consumed the decision's INPUT, never the ask itself. */
2304
2387
  | "resume.constraint_rejected"
@@ -2318,14 +2401,15 @@ export declare class CheckpointError extends Error {
2318
2401
  * `person`/`sla_timeout`/`policy`, pair the sweep's `sla_timeout` with an allow or put it on a row a sweep does not
2319
2402
  * resolve, or try to supply the minted record), or — design/252 G-7 — `"approver"` (the attribution is not a
2320
2403
  * well-formed identifier: re-decide with a plain, bounded, control-character-free string, or omit
2321
- * it). On a `checkpoint.config_refused` `field` names which INPUT carries the refusal — `"taskConfig"`
2404
+ * it), or `"feedback"` (the allow's `feedback` is not fit to deliver — it carries the engine's `<system-reminder>` tag, is not a string, rides a deny,
2405
+ * or rides a decide a machine made: re-decide with the words changed or dropped; the binding did not change). On a `checkpoint.config_refused` `field` names which INPUT carries the refusal — `"taskConfig"`
2322
2406
  * (the re-supplied config: correct it and resume the same token), `"deps"` (the deployment's own seat — and the policies the
2323
2407
  * caller re-supplies as inherited constraints: correct them and resume the same token) or `"inheritedGate"` (the row's record: no config reaches it; expire the row). The throw
2324
2408
  * sites always knew which arm fired; this carries that fact instead of dropping it (ruled
2325
2409
  * 2026-08-03, cross-repo HITL discussion). Additive and optional — `code` remains the only REQUIRED
2326
2410
  * discriminant. */
2327
2411
  readonly detail?: {
2328
- field?: "boundCallId" | "boundInputHash" | "boundGrantDigest" | "answer" | "hostDecision" | "approver" | "taskConfig" | "deps" | "inheritedGate";
2412
+ field?: CheckpointErrorField;
2329
2413
  /** On `checkpoint.config_refused` — prepare's own code for the refusal ({@link CheckpointConfigRefusalCode}), the
2330
2414
  * word a fresh run of the same bad config reports as its `errorCode`. Absent on every other code. */
2331
2415
  code?: CheckpointConfigRefusalCode;
@@ -2347,6 +2431,9 @@ export declare class CheckpointError extends Error {
2347
2431
  * {@link SteerReplayFacet}, in that set's order; always present on that code, never empty). Absent on
2348
2432
  * every other code. The live verb's refusal carries the same value. */
2349
2433
  differs?: readonly SteerReplayFacet[];
2434
+ /** On `resume.constraint_rejected` ⇔ the resume-edit policy accepts the person's edit only rewritten: `acceptableForm`
2435
+ * is that form, the outlet a host may offer; a decide carrying it as `updatedInput` runs exactly those bytes. */
2436
+ editRewritten?: import("./rewrite-rejudge.js").EditRewritten;
2350
2437
  } | undefined;
2351
2438
  constructor(code: "checkpoint.already_exists" | "checkpoint.already_resolved" | "checkpoint.not_found"
2352
2439
  /** `runner.resume` was handed an {@link ResumeOutcome} whose `gate` arm does not match the
@@ -2499,9 +2586,15 @@ export declare class CheckpointError extends Error {
2499
2586
  * parity) before this throw — the token is NOT redeemable, by the deployment's own permanent
2500
2587
  * verdict (a dead binding must not be redialed forever). */
2501
2588
  | "resume.preflight_rejected"
2589
+ /** The resume carried a claim holder ({@link ResolveExpectation.holder}) and lost its CAS while the row is still the one it
2590
+ * validated — same scope, `pending`, the same generation — so the holder was not the deployment's current grant: nothing was
2591
+ * applied and the row is unchanged by this resume. The run is superseded; do not retry it (the current holder delivers).
2592
+ * Read off the CAS's own loss answer on `claimTerminal`; on the two-step route off its diagnostic read (a later instant —
2593
+ * under a race the row's later state answers instead, fail-closed either way). */
2594
+ | "resume.holder_superseded"
2502
2595
  /** F-012 L3: the resume carried an approver EDIT (`updatedInput`) and a FROZEN inherited ancestor
2503
2596
  * constraint (the persisted projection chain) — or the deployment's resume-edit policy — DENIES the
2504
- * edited args. Refused PRE-CAS with fresh-redecision semantics: the checkpoint stays `pending` and
2597
+ * edited args, or the policy accepts them only rewritten (`detail.editRewritten` names that form). Refused PRE-CAS with fresh-redecision semantics: the checkpoint stays `pending` and
2505
2598
  * the same token remains decidable (approve as shown, deny, or edit differently) — the rejection
2506
2599
  * consumed the decision's INPUT, never the ask itself. */
2507
2600
  | "resume.constraint_rejected"
@@ -2521,14 +2614,15 @@ export declare class CheckpointError extends Error {
2521
2614
  * `person`/`sla_timeout`/`policy`, pair the sweep's `sla_timeout` with an allow or put it on a row a sweep does not
2522
2615
  * resolve, or try to supply the minted record), or — design/252 G-7 — `"approver"` (the attribution is not a
2523
2616
  * well-formed identifier: re-decide with a plain, bounded, control-character-free string, or omit
2524
- * it). On a `checkpoint.config_refused` `field` names which INPUT carries the refusal — `"taskConfig"`
2617
+ * it), or `"feedback"` (the allow's `feedback` is not fit to deliver — it carries the engine's `<system-reminder>` tag, is not a string, rides a deny,
2618
+ * or rides a decide a machine made: re-decide with the words changed or dropped; the binding did not change). On a `checkpoint.config_refused` `field` names which INPUT carries the refusal — `"taskConfig"`
2525
2619
  * (the re-supplied config: correct it and resume the same token), `"deps"` (the deployment's own seat — and the policies the
2526
2620
  * caller re-supplies as inherited constraints: correct them and resume the same token) or `"inheritedGate"` (the row's record: no config reaches it; expire the row). The throw
2527
2621
  * sites always knew which arm fired; this carries that fact instead of dropping it (ruled
2528
2622
  * 2026-08-03, cross-repo HITL discussion). Additive and optional — `code` remains the only REQUIRED
2529
2623
  * discriminant. */
2530
2624
  detail?: {
2531
- field?: "boundCallId" | "boundInputHash" | "boundGrantDigest" | "answer" | "hostDecision" | "approver" | "taskConfig" | "deps" | "inheritedGate";
2625
+ field?: CheckpointErrorField;
2532
2626
  /** On `checkpoint.config_refused` — prepare's own code for the refusal ({@link CheckpointConfigRefusalCode}), the
2533
2627
  * word a fresh run of the same bad config reports as its `errorCode`. Absent on every other code. */
2534
2628
  code?: CheckpointConfigRefusalCode;
@@ -2550,6 +2644,9 @@ export declare class CheckpointError extends Error {
2550
2644
  * {@link SteerReplayFacet}, in that set's order; always present on that code, never empty). Absent on
2551
2645
  * every other code. The live verb's refusal carries the same value. */
2552
2646
  differs?: readonly SteerReplayFacet[];
2647
+ /** On `resume.constraint_rejected` ⇔ the resume-edit policy accepts the person's edit only rewritten: `acceptableForm`
2648
+ * is that form, the outlet a host may offer; a decide carrying it as `updatedInput` runs exactly those bytes. */
2649
+ editRewritten?: import("./rewrite-rejudge.js").EditRewritten;
2553
2650
  } | undefined);
2554
2651
  }
2555
2652
  /**
@@ -2649,41 +2746,6 @@ export declare function encodeAtFidelity(fidelity: StoreFidelity, value: unknown
2649
2746
  ok: false;
2650
2747
  cause: unknown;
2651
2748
  };
2652
- /**
2653
- * CONSERVATIVE "these two are provably the same value" for deciding whether a {@link encodeAtFidelity}
2654
- * projection moved anything, and whether a policy's rewrite names the very value about to be filed.
2655
- *
2656
- * Deliberately NOT the binding hash, which is the wrong instrument for this question in two directions:
2657
- * it folds `-0` onto `0` (a real projection change the policy may care about, invisible to the hash), and
2658
- * it is a digest, so a collision would read as sameness. `Object.is` at the leaves keeps the `-0`
2659
- * distinction; comparing own-key SETS keeps the dropped `undefined`-valued key visible.
2660
- *
2661
- * Conservative on purpose — the answer it must never give wrongly is TRUE, because both callers read
2662
- * TRUE as "nothing moved / the policy named this very value" and act by filing. So sameness has to be
2663
- * PROVED, not merely un-disproved:
2664
- * - the PROTOTYPES must match and be the plain-object or array one. `[object Object]` is not proof of
2665
- * a plain object — a class instance and a null-prototype object both report it, and a tool executing
2666
- * the arguments can observe inherited behaviour. (Neither input to the projection comparison can be
2667
- * such a value: `structuredClone` and `JSON.parse` both produce plain data. A policy's rewrite can.)
2668
- * - own keys are compared with `Reflect.ownKeys` and POSITIONALLY, so a SYMBOL key or a non-enumerable
2669
- * property on one side is a difference rather than an invisible extra, and so is a different order
2670
- * (which `Object.keys`, `JSON.stringify` and any tool iterating its arguments can see).
2671
- * - properties are compared through their DESCRIPTORS — every flag, so a frozen object is not the
2672
- * mutable value a JSON decode produces — and an accessor on either side answers FALSE without being
2673
- * read: an approval decision must not be made by running deployment code, and what a getter returns
2674
- * need not be the same twice.
2675
- * - reference TOPOLOGY counts: two properties that share one object are not two properties holding
2676
- * equal objects, and a JSON round trip is precisely what turns the first into the second.
2677
- * - what it CANNOT prove on its own is that the value it inspected answers ordinary reads the way its
2678
- * descriptors did — a Proxy reports the target's descriptors and can return anything from a `get`.
2679
- * A caller comparing a value it did not construct must first establish that it is an inert data
2680
- * graph (the capture clone does exactly that, and refuses a Proxy outright).
2681
- * - any brand outside plain object/array that is not already reference-identical answers FALSE (a Date
2682
- * is never the string a JSON codec leaves behind, a Map is never the `{}`), and so does any
2683
- * inspection that throws.
2684
- * An uncertain answer therefore costs a policy consultation or a park, never a silently filed value.
2685
- */
2686
- export declare function samePlainValue(a: unknown, b: unknown): boolean;
2687
2749
  export interface CheckpointStore {
2688
2750
  /**
2689
2751
  * Managed-retention declaration (ruled 2026-08-05, retention.ts): `"managed"` promises the
@@ -2736,6 +2798,15 @@ export interface CheckpointStore {
2736
2798
  readonly execution: {
2737
2799
  readonly outcome: true;
2738
2800
  };
2801
+ /**
2802
+ * The CLAIM-HOLDER declaration: this store judges {@link ResolveExpectation.holder} in the same atomic step as the resolve's flip.
2803
+ * Same "declaration, never duck-typing" posture as {@link execution}: ABSENT reads as "does not judge holders", and a run handed a
2804
+ * holder over such a store is refused at its store seat (`config.invalid_checkpoint_store`) — a holder the store would ignore would
2805
+ * fence nothing while the deployment believed it fenced.
2806
+ */
2807
+ readonly fence?: {
2808
+ readonly holder: true;
2809
+ };
2739
2810
  /** Create-once. Throws {@link CheckpointError} `already_exists` on a token collision (never a silent
2740
2811
  * overwrite — a reused token would clobber a live suspension). */
2741
2812
  put(token: CheckpointToken, cp: Checkpoint): Promise<void>;
@@ -2970,10 +3041,21 @@ export interface CheckpointStore {
2970
3041
  * enumeration face `listByScope` lacks. A host keeping its own scope registry (e.g. a sidecar file for a
2971
3042
  * cross-scope inbox) can rebuild it from the data itself when the registry is lost/corrupt, instead of the
2972
3043
  * enumeration silently going empty and pending approvals turning invisible. Scoped to PENDING deliberately:
2973
- * it matches `listByScope`'s visible surface, so `listScopes() × listByScope()` is exactly the full inbox.
3044
+ * it matches `listByScope`'s visible surface, so `listScopes() × listByScope()` is exactly the full inbox,
3045
+ * and a member the summary does not project is read with `get(token)` on the listed token — the composition
3046
+ * a deployment's approval queue is, rather than a query of its own over the store's rows.
2974
3047
  * **OPTIONAL** like {@link listByScope}; the in-memory and file first-party impls provide it.
2975
3048
  */
2976
3049
  listScopes?(): Promise<string[]>;
3050
+ /** The PENDING rows of every scope past their deadline, one facet per call ({@link CheckpointOverdueQuery}; read by
3051
+ * `readCheckpointOverdueQuery`, keyset-paged, bounded). OPTIONAL, probed by presence; both first-party stores provide it. */
3052
+ listOverdue?(query: CheckpointOverdueQuery): Promise<CheckpointPage<CheckpointSummary, CheckpointOverdueCursor>>;
3053
+ /** The rows of ONE session in any status ({@link CheckpointSessionQuery}; read by `readCheckpointSessionQuery`, keyset-paged,
3054
+ * bounded; a damaged row of the session answers `unreadable`, never skipped — a row with no string session id belongs to no session and is left out, disclosed; the file replay drops a row with a non-string token, scope or status, disclosed there). OPTIONAL, probed by presence; both first-party stores provide it. */
3055
+ listBySession?(query: CheckpointSessionQuery): Promise<CheckpointPage<CheckpointRowRead, CheckpointSessionCursor>>;
3056
+ /** Delete the checkpoint rows of one session that exist when the call starts, in any status, when the guard admits it
3057
+ * ({@link CheckpointDeleteGuard}); answers the count. Present exactly when the store can judge the guard (a session head read). */
3058
+ deleteSessionCheckpoints?(sessionId: string, guard: CheckpointDeleteGuard): Promise<number>;
2977
3059
  }
2978
3060
  /**
2979
3061
  * The SINGLE resolution of "which CheckpointStore does this run use" (ruled 2026-08-04; re-homed
@@ -3070,15 +3152,6 @@ export declare function appendPendingSteer(state: Pick<CheckpointState, "pending
3070
3152
  * that backend's own correctness core and must never be absorbed into a shared abstraction).
3071
3153
  */
3072
3154
  export declare function checkpointRowMatches(cp: Checkpoint | undefined, scope: string, status: Checkpoint["status"]): cp is Checkpoint;
3073
- /**
3074
- * REF-A4 — THE optimistic-concurrency half of `resolve`'s CAS predicate (design/80 D-1), shared by every
3075
- * backend. The caller validated its reopen-by-reason guard against a `get()` snapshot; if a concurrent
3076
- * resolve/reopen cycle moved the monotonic `rev` in the get→resolve window, that validation is stale ⇒
3077
- * lose the CAS (fail-closed), forcing a re-get + re-validate. Keyed on `rev`, NOT on `reopenReason` — a
3078
- * 2-valued enum can ABA back to a prior value while the winner changed (round-2 BLOCKER fix). An absent
3079
- * expectation opts out of the guard entirely.
3080
- */
3081
- export declare function checkpointOccMatches(cp: Checkpoint, expect?: ResolveExpectation): boolean;
3082
3155
  /** Fault-injection mode for {@link InMemoryCheckpointStore.testInjectFault} (council #5). One-shot. */
3083
3156
  export type CheckpointFaultMode =
3084
3157
  /** `resolve` commits the CAS (status → resolved) then throws — simulates a crash *after* the commit
@@ -3117,8 +3190,26 @@ export declare class InMemoryCheckpointStore implements CheckpointStore {
3117
3190
  readonly execution: {
3118
3191
  readonly outcome: true;
3119
3192
  };
3193
+ /** Declared exactly when the store was built with a `holderIsCurrent` judge ({@link CheckpointStore.fence}). */
3194
+ readonly fence?: {
3195
+ readonly holder: true;
3196
+ };
3120
3197
  private cps;
3121
3198
  private fault;
3199
+ private readonly disclose;
3200
+ private readonly holderIsCurrent;
3201
+ readonly deleteSessionCheckpoints?: (sessionId: string, guard: CheckpointDeleteGuard) => Promise<number>;
3202
+ /** `disclose` is the listing projections' own seat ({@link summarizeCheckpoint}'s and the listing faces'): this store has no
3203
+ * path, so it forwards each sentence for a row read past a damage, called synchronously by the listing that read it.
3204
+ * `sessionHeadOf` (a session store's `headOf`) is what {@link CheckpointStore.deleteSessionCheckpoints} judges its guard by.
3205
+ * `holderIsCurrent` ({@link HolderJudge}) is what a resolve's `expect.holder` is judged by. */
3206
+ constructor(opts?: {
3207
+ disclose?: (sentence: string) => void;
3208
+ sessionHeadOf?: (sessionId: string) => Promise<{
3209
+ readonly owner: string | null;
3210
+ } | undefined>;
3211
+ holderIsCurrent?: HolderJudge;
3212
+ });
3122
3213
  put(token: CheckpointToken, cp: Checkpoint): Promise<void>;
3123
3214
  get(token: CheckpointToken): Promise<Checkpoint | null>;
3124
3215
  /** The loser's single-round-trip reading (claim law 1): what the row IS, in its own vocabulary —
@@ -3176,6 +3267,8 @@ export declare class InMemoryCheckpointStore implements CheckpointStore {
3176
3267
  reap(scope: string, cutoff: number): Promise<number>;
3177
3268
  listByScope(scope: string): Promise<CheckpointSummary[]>;
3178
3269
  listScopes(): Promise<string[]>;
3270
+ listOverdue(query: CheckpointOverdueQuery): Promise<CheckpointPage<CheckpointSummary, CheckpointOverdueCursor>>;
3271
+ listBySession(query: CheckpointSessionQuery): Promise<CheckpointPage<CheckpointRowRead, CheckpointSessionCursor>>;
3179
3272
  /** Arm a one-shot fault on the next `resolve` (council #5: makes crash-recovery unit-testable). */
3180
3273
  testInjectFault(mode: CheckpointFaultMode | null): void;
3181
3274
  /** Test/inspection helper: number of stored checkpoints. */