@sema-agent/server 7.146.0 → 7.148.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 (850) hide show
  1. package/MIGRATION.md +1423 -24
  2. package/README.md +21 -8
  3. package/README.zh-CN.md +15 -9
  4. package/USAGE.md +537 -216
  5. package/deploy/facts/lanes.json +7 -0
  6. package/deploy/sema-up/README.md +18 -7
  7. package/deploy/sema-up/chart/templates/NOTES.txt +1 -1
  8. package/deploy/sema-up/chart/templates/_helpers.tpl +42 -4
  9. package/deploy/sema-up/chart/templates/server-v4pro.yaml +5 -4
  10. package/deploy/sema-up/chart/templates/server.yaml +5 -4
  11. package/deploy/sema-up/chart/values.yaml +4 -3
  12. package/deploy/sema-up/cluster-up.sh +75 -176
  13. package/deploy/sema-up/kube-up.sh +29 -49
  14. package/deploy/sema-up/lib/chart-run.sh +23 -0
  15. package/deploy/sema-up/lib/dataroot.sh +3 -3
  16. package/deploy/sema-up/lib/flagshape.sh +4 -0
  17. package/deploy/sema-up/lib/health.sh +62 -13
  18. package/deploy/sema-up/lib/helm-values-cluster.py +18 -0
  19. package/deploy/sema-up/lib/helm-values-kube.py +35 -0
  20. package/deploy/sema-up/lib/lanes.json +2 -5
  21. package/deploy/sema-up/lib/regcred.py +8 -0
  22. package/deploy/sema-up/lib/remote/helm-install.sh +3 -0
  23. package/deploy/sema-up/lib/remote/image-import.sh +6 -0
  24. package/deploy/sema-up/lib/remote/machine-precheck.sh +11 -0
  25. package/deploy/sema-up/lib/remote/region-probe.sh +3 -0
  26. package/deploy/sema-up/lib/remote/stack-ready.sh +26 -0
  27. package/deploy/sema-up/lib/remote/vxlan-guard.sh +8 -0
  28. package/deploy/sema-up/lib/render-stack.py +17 -0
  29. package/deploy/sema-up/lib/shell-text.sh +87 -0
  30. package/deploy/sema-up/lib/usage-flags.txt +10 -0
  31. package/deploy/sema-up/lib/usage-head.txt +1 -0
  32. package/deploy/sema-up/lib/usage-tail.txt +13 -0
  33. package/deploy/sema-up/preflight.sh +10 -8
  34. package/deploy/sema-up/sema-up.sh +26 -48
  35. package/deploy/sema-up/smoke.sh +7 -6
  36. package/deploy/sema-up/stack/compose.dataroot.yaml +3 -0
  37. package/deploy/sema-up/stack/compose.yaml +18 -5
  38. package/deploy/sema-up/stack/sema-stack-cluster.yaml +25 -3
  39. package/dist/adoption/plan.d.ts +24 -0
  40. package/dist/adoption/plan.js +53 -1
  41. package/dist/adoption/runner.d.ts +10 -1
  42. package/dist/adoption/runner.js +36 -16
  43. package/dist/adoption/wire.d.ts +3 -3
  44. package/dist/approval-card.d.ts +32 -34
  45. package/dist/approval-gate-currency.js +3 -2
  46. package/dist/approval-reconciler.d.ts +4 -13
  47. package/dist/approval-reconciler.js +2 -2
  48. package/dist/approval.d.ts +16 -14
  49. package/dist/approval.js +3 -3
  50. package/dist/audit.d.ts +10 -3
  51. package/dist/audit.js +17 -9
  52. package/dist/auth-bridge.d.ts +0 -14
  53. package/dist/auth-bridge.js +0 -7
  54. package/dist/auto-mode-face.d.ts +10 -7
  55. package/dist/auto-mode-face.js +7 -4
  56. package/dist/background-agent-name.d.ts +19 -1
  57. package/dist/background-agent-name.js +12 -2
  58. package/dist/background-session-reap.d.ts +1 -1
  59. package/dist/bake-runner/main.js +9 -6
  60. package/dist/bench/s1/arms.js +6 -5
  61. package/dist/bench/s1/live-deps.js +8 -3
  62. package/dist/bench/s1/run-firm.js +6 -5
  63. package/dist/bind-host.d.ts +25 -0
  64. package/dist/bind-host.js +25 -0
  65. package/dist/boot/adoption.d.ts +3 -0
  66. package/dist/boot/adoption.js +1 -0
  67. package/dist/boot/crash-last.js +2 -1
  68. package/dist/boot/deployment-mods.d.ts +1 -1
  69. package/dist/boot/device-lane.js +5 -5
  70. package/dist/boot/engine-lease.d.ts +12 -11
  71. package/dist/boot/execution-env.d.ts +19 -8
  72. package/dist/boot/execution-env.js +80 -62
  73. package/dist/boot/execution-lane.d.ts +37 -9
  74. package/dist/boot/execution-lane.js +74 -20
  75. package/dist/boot/exit-boundary.d.ts +3 -3
  76. package/dist/boot/exit-boundary.js +6 -5
  77. package/dist/boot/exit-last.js +2 -1
  78. package/dist/boot/fatal-exit.d.ts +3 -5
  79. package/dist/boot/fatal-exit.js +2 -2
  80. package/dist/boot/governance-seams.d.ts +2 -2
  81. package/dist/boot/leader.d.ts +15 -0
  82. package/dist/boot/leader.js +18 -16
  83. package/dist/boot/memory-boundary.d.ts +11 -11
  84. package/dist/boot/memory-boundary.js +3 -3
  85. package/dist/boot/memory-consolidation.d.ts +50 -53
  86. package/dist/boot/memory-consolidation.js +11 -18
  87. package/dist/boot/org-memory.js +4 -3
  88. package/dist/boot/parked-revive-gate.d.ts +1 -1
  89. package/dist/boot/parked-revive-gate.js +3 -3
  90. package/dist/boot/reapers.d.ts +4 -3
  91. package/dist/boot/reapers.js +20 -17
  92. package/dist/boot/resolve-spec.d.ts +5 -3
  93. package/dist/boot/resolve-spec.js +133 -165
  94. package/dist/boot/retention-lane.d.ts +7 -45
  95. package/dist/boot/retention-lane.js +2 -2
  96. package/dist/boot/runner-deps.d.ts +28 -7
  97. package/dist/boot/runner-deps.js +11 -4
  98. package/dist/boot/runtime-caps.d.ts +2 -2
  99. package/dist/boot/runtime-caps.js +16 -2
  100. package/dist/boot/session-faces.d.ts +17 -7
  101. package/dist/boot/session-faces.js +122 -96
  102. package/dist/boot/shutdown.d.ts +5 -4
  103. package/dist/boot/shutdown.js +6 -4
  104. package/dist/boot/stage-01-config.d.ts +1 -1
  105. package/dist/boot/stage-01-config.js +14 -2
  106. package/dist/boot/stage-02-web-admin-pull.d.ts +2 -1
  107. package/dist/boot/stage-02-web-admin-pull.js +15 -8
  108. package/dist/boot/stage-03-store-backend.d.ts +4 -1
  109. package/dist/boot/stage-03-store-backend.js +4 -3
  110. package/dist/boot/stage-04-stores.d.ts +3 -1
  111. package/dist/boot/stage-04-stores.js +2 -2
  112. package/dist/boot/stage-05-execution-env.d.ts +9 -5
  113. package/dist/boot/stage-05-execution-env.js +5 -5
  114. package/dist/boot/stage-06-runners.d.ts +13 -15
  115. package/dist/boot/stage-06-runners.js +24 -18
  116. package/dist/boot/stage-07-capability-layer.d.ts +14 -11
  117. package/dist/boot/stage-07-capability-layer.js +9 -12
  118. package/dist/boot/stage-08-reapers.d.ts +14 -11
  119. package/dist/boot/stage-08-reapers.js +3 -3
  120. package/dist/boot/stage-09-leader.d.ts +16 -18
  121. package/dist/boot/stage-09-leader.js +12 -4
  122. package/dist/boot/stage-10-http-server.d.ts +16 -18
  123. package/dist/boot/stage-10-http-server.js +9 -5
  124. package/dist/boot/store-evidence.d.ts +20 -0
  125. package/dist/boot/store-evidence.js +13 -0
  126. package/dist/boot/stores.d.ts +12 -0
  127. package/dist/boot/stores.js +39 -17
  128. package/dist/boot/task-list-lane.d.ts +4 -4
  129. package/dist/boot/web-admin.d.ts +4 -2
  130. package/dist/boot/web-admin.js +58 -38
  131. package/dist/boot/webfetch-summarize-lane.d.ts +1 -1
  132. package/dist/boot-reclaim.d.ts +3 -1
  133. package/dist/boot-reclaim.js +1 -1
  134. package/dist/brain.d.ts +7 -18
  135. package/dist/brain.js +5 -17
  136. package/dist/budget.js +6 -6
  137. package/dist/capabilities/center-plugins.d.ts +9 -1
  138. package/dist/capabilities/center-plugins.js +37 -11
  139. package/dist/capabilities/center-wiring.js +1 -1
  140. package/dist/capabilities/composite-members.d.ts +3 -2
  141. package/dist/capabilities/composite-members.js +3 -2
  142. package/dist/capabilities/execution-lane.d.ts +7 -7
  143. package/dist/capabilities/execution-lane.js +2 -2
  144. package/dist/capabilities/hands-lane.d.ts +1 -1
  145. package/dist/capabilities/repo-tools.d.ts +2 -0
  146. package/dist/capabilities/repo-tools.js +14 -12
  147. package/dist/capabilities/scenarios.d.ts +38 -33
  148. package/dist/capabilities/scenarios.js +24 -25
  149. package/dist/capabilities/settings-contract.d.ts +29 -0
  150. package/dist/capabilities/settings-contract.js +14 -0
  151. package/dist/capabilities/skills.d.ts +6 -6
  152. package/dist/capabilities/tool-defer.d.ts +1 -1
  153. package/dist/capability-facts.d.ts +69 -4
  154. package/dist/capability-facts.js +77 -5
  155. package/dist/card-void.d.ts +4 -4
  156. package/dist/card-void.js +1 -1
  157. package/dist/center-credential-renewer.d.ts +6 -2
  158. package/dist/center-credential-renewer.js +10 -5
  159. package/dist/config-catalog.d.ts +16 -1
  160. package/dist/config-catalog.js +68 -61
  161. package/dist/config-dir-trust.d.ts +37 -4
  162. package/dist/config-dir-trust.js +88 -44
  163. package/dist/config-invariants.d.ts +58 -4
  164. package/dist/config-invariants.js +104 -23
  165. package/dist/config-lkg.d.ts +24 -2
  166. package/dist/config-lkg.js +22 -9
  167. package/dist/config-provider.d.ts +9 -9
  168. package/dist/config-provider.js +25 -108
  169. package/dist/config-pull-failure.d.ts +50 -0
  170. package/dist/config-pull-failure.js +48 -0
  171. package/dist/config-types.d.ts +215 -202
  172. package/dist/config.d.ts +69 -14
  173. package/dist/config.js +188 -96
  174. package/dist/degenerate-instrument.js +1 -1
  175. package/dist/delegated-session-owner.d.ts +1 -1
  176. package/dist/deleted-session-ids.d.ts +3 -2
  177. package/dist/deploy-facts.js +3 -2
  178. package/dist/deployment-governance.d.ts +3 -3
  179. package/dist/deployment-shape.d.ts +51 -16
  180. package/dist/deployment-shape.js +31 -6
  181. package/dist/egress-redirect.d.ts +25 -7
  182. package/dist/egress-redirect.js +20 -2
  183. package/dist/elicitation.d.ts +6 -5
  184. package/dist/elicitation.js +23 -22
  185. package/dist/engine-identity.d.ts +28 -0
  186. package/dist/engine-identity.js +10 -0
  187. package/dist/entry-problems.d.ts +5 -7
  188. package/dist/entry-problems.js +1 -1
  189. package/dist/env-facts.d.ts +7 -5
  190. package/dist/env-facts.js +12 -7
  191. package/dist/env-witness.d.ts +7 -0
  192. package/dist/env-witness.js +16 -0
  193. package/dist/execution-config-root.d.ts +5 -5
  194. package/dist/execution-config-root.js +5 -5
  195. package/dist/execution-env-purpose.d.ts +14 -0
  196. package/dist/execution-env-purpose.js +29 -0
  197. package/dist/execution-lane-caps.d.ts +53 -103
  198. package/dist/execution-lane-caps.js +51 -83
  199. package/dist/execution-placement.d.ts +65 -9
  200. package/dist/execution-placement.js +58 -0
  201. package/dist/field-conflict.d.ts +7 -11
  202. package/dist/field-conflict.js +3 -3
  203. package/dist/file-history-capture.d.ts +3 -3
  204. package/dist/file-history-disclosure.d.ts +2 -2
  205. package/dist/file-history-disclosure.js +1 -0
  206. package/dist/fleet/drain-entry.d.ts +17 -10
  207. package/dist/fleet/drain-entry.js +1 -1
  208. package/dist/fleet/fleet-bus.d.ts +21 -3
  209. package/dist/fleet/fleet-bus.js +35 -25
  210. package/dist/fleet/fleet-reconciler.js +2 -2
  211. package/dist/fleet/serving-lease.js +6 -7
  212. package/dist/fleet-client.js +3 -3
  213. package/dist/fleet-lease.d.ts +0 -1
  214. package/dist/fleet-lease.js +4 -5
  215. package/dist/history-anchor.d.ts +42 -0
  216. package/dist/history-anchor.js +34 -0
  217. package/dist/hitl-delivery.d.ts +90 -0
  218. package/dist/hitl-delivery.js +98 -0
  219. package/dist/hooks/classic-stations.d.ts +8 -11
  220. package/dist/hooks/classic-stations.js +0 -7
  221. package/dist/hooks/command-spawn.d.ts +1 -4
  222. package/dist/hooks/command-spawn.js +0 -11
  223. package/dist/hooks/hook-llm.d.ts +5 -1
  224. package/dist/hooks/hook-llm.js +24 -15
  225. package/dist/hooks/hook-runner.d.ts +119 -65
  226. package/dist/hooks/hook-runner.js +415 -217
  227. package/dist/host-lsp-manager.d.ts +22 -8
  228. package/dist/host-lsp-manager.js +4 -1
  229. package/dist/http/active-run-conflict.d.ts +2 -43
  230. package/dist/http/active-run-conflict.js +3 -7
  231. package/dist/http/admission.d.ts +4 -18
  232. package/dist/http/admission.js +75 -78
  233. package/dist/http/approval-sweeps.d.ts +5 -8
  234. package/dist/http/approval-sweeps.js +55 -30
  235. package/dist/http/caller-trust.d.ts +8 -10
  236. package/dist/http/caller-trust.js +1 -2
  237. package/dist/http/checkpoint-ctx.d.ts +17 -0
  238. package/dist/http/checkpoint-ctx.js +6 -0
  239. package/dist/http/claim-heartbeat.d.ts +49 -0
  240. package/dist/http/claim-heartbeat.js +46 -0
  241. package/dist/http/claim-latency.d.ts +10 -0
  242. package/dist/http/claim-latency.js +12 -0
  243. package/dist/http/claimed-run.d.ts +4 -3
  244. package/dist/http/dispatch.d.ts +8 -1
  245. package/dist/http/dispatch.js +77 -31
  246. package/dist/http/durable-run-leg.d.ts +3 -3
  247. package/dist/http/durable-run-leg.js +18 -12
  248. package/dist/http/execution-context.d.ts +18 -42
  249. package/dist/http/execution-context.js +11 -5
  250. package/dist/http/health-reader.d.ts +36 -0
  251. package/dist/http/health-reader.js +21 -0
  252. package/dist/http/health-self-report.d.ts +9 -9
  253. package/dist/http/health-self-report.js +4 -4
  254. package/dist/http/idempotency.d.ts +9 -5
  255. package/dist/http/idempotency.js +4 -4
  256. package/dist/http/memory-compliance-failure-reply.d.ts +15 -16
  257. package/dist/http/memory-compliance-failure-reply.js +7 -2
  258. package/dist/http/memory-face-fault-reply.d.ts +67 -0
  259. package/dist/http/memory-face-fault-reply.js +71 -0
  260. package/dist/http/memory-store-refusal-reply.d.ts +3 -3
  261. package/dist/http/memory-store-refusal-reply.js +6 -0
  262. package/dist/http/owner-access.d.ts +391 -56
  263. package/dist/http/owner-access.js +372 -33
  264. package/dist/http/principal-gate.d.ts +26 -94
  265. package/dist/http/principal-gate.js +24 -81
  266. package/dist/http/refusal-body.d.ts +35 -2
  267. package/dist/http/refusal-body.js +34 -0
  268. package/dist/http/request-guards.d.ts +10 -14
  269. package/dist/http/request-guards.js +34 -68
  270. package/dist/http/resume-composition.d.ts +37 -0
  271. package/dist/http/resume-composition.js +18 -0
  272. package/dist/http/resume-ctx-read.d.ts +35 -12
  273. package/dist/http/resume-ctx-read.js +25 -6
  274. package/dist/http/resume-legs.d.ts +24 -24
  275. package/dist/http/resume-legs.js +260 -171
  276. package/dist/http/retired-skill-manifest.d.ts +1 -1
  277. package/dist/http/rewind-files-reply.d.ts +34 -0
  278. package/dist/http/rewind-files-reply.js +36 -0
  279. package/dist/http/route-ctx.d.ts +56 -47
  280. package/dist/http/route-table.js +2 -0
  281. package/dist/http/routes/a2a-serve.d.ts +43 -5
  282. package/dist/http/routes/a2a-serve.js +58 -37
  283. package/dist/http/routes/admin-config-refresh.js +2 -2
  284. package/dist/http/routes/admin-drain.js +2 -2
  285. package/dist/http/routes/admin-memory-optout.js +4 -3
  286. package/dist/http/routes/adoption.d.ts +3 -0
  287. package/dist/http/routes/adoption.js +17 -10
  288. package/dist/http/routes/agents-roster.js +13 -7
  289. package/dist/http/routes/approvals-assistant.js +73 -88
  290. package/dist/http/routes/attachments.js +2 -2
  291. package/dist/http/routes/background.d.ts +3 -3
  292. package/dist/http/routes/background.js +9 -17
  293. package/dist/http/routes/capabilities.js +23 -20
  294. package/dist/http/routes/config-catalog.js +2 -2
  295. package/dist/http/routes/devices.d.ts +3 -3
  296. package/dist/http/routes/devices.js +5 -5
  297. package/dist/http/routes/diagnostics.d.ts +27 -3
  298. package/dist/http/routes/diagnostics.js +27 -21
  299. package/dist/http/routes/engine.js +2 -2
  300. package/dist/http/routes/fleet.js +5 -3
  301. package/dist/http/routes/images.js +10 -6
  302. package/dist/http/routes/leader.d.ts +7 -2
  303. package/dist/http/routes/leader.js +12 -3
  304. package/dist/http/routes/mcp-reconnect.d.ts +1 -1
  305. package/dist/http/routes/mcp-reconnect.js +7 -15
  306. package/dist/http/routes/memory-bundle.js +4 -7
  307. package/dist/http/routes/memory-compliance.js +4 -4
  308. package/dist/http/routes/memory-consolidation.js +6 -9
  309. package/dist/http/routes/memory-origin.d.ts +3 -1
  310. package/dist/http/routes/memory-origin.js +7 -8
  311. package/dist/http/routes/memory-policy.js +17 -12
  312. package/dist/http/routes/notify-wake.js +12 -20
  313. package/dist/http/routes/observability.js +3 -3
  314. package/dist/http/routes/principal-inbox.d.ts +1 -1
  315. package/dist/http/routes/principal-inbox.js +2 -2
  316. package/dist/http/routes/projects.d.ts +70 -0
  317. package/dist/http/routes/projects.js +87 -0
  318. package/dist/http/routes/retention-ops.js +6 -9
  319. package/dist/http/routes/rules.js +50 -7
  320. package/dist/http/routes/run-memory-capture.d.ts +2 -2
  321. package/dist/http/routes/run-memory-capture.js +6 -12
  322. package/dist/http/routes/run-permission-mode.d.ts +2 -2
  323. package/dist/http/routes/run-permission-mode.js +10 -17
  324. package/dist/http/routes/runs.js +148 -233
  325. package/dist/http/routes/session-memory-sync.d.ts +2 -2
  326. package/dist/http/routes/session-memory-sync.js +7 -13
  327. package/dist/http/routes/session-sync.d.ts +4 -2
  328. package/dist/http/routes/session-sync.js +48 -30
  329. package/dist/http/routes/sessions-list.d.ts +3 -3
  330. package/dist/http/routes/sessions-list.js +9 -9
  331. package/dist/http/routes/sessions.d.ts +7 -1
  332. package/dist/http/routes/sessions.js +177 -112
  333. package/dist/http/routes/shared-memory.js +6 -6
  334. package/dist/http/routes/side-query.js +2 -2
  335. package/dist/http/routes/tasks.js +144 -122
  336. package/dist/http/routes/trace-usage.d.ts +0 -12
  337. package/dist/http/routes/trace-usage.js +40 -46
  338. package/dist/http/routes/workflows.d.ts +39 -4
  339. package/dist/http/routes/workflows.js +42 -14
  340. package/dist/http/run-concurrency-cap.d.ts +20 -12
  341. package/dist/http/run-concurrency-cap.js +39 -26
  342. package/dist/http/run-read-face.d.ts +3 -5
  343. package/dist/http/run-read-face.js +8 -13
  344. package/dist/http/send.d.ts +12 -3
  345. package/dist/http/send.js +42 -6
  346. package/dist/http/server.d.ts +63 -50
  347. package/dist/http/server.js +52 -16
  348. package/dist/http/sse-log.d.ts +17 -10
  349. package/dist/http/sse-log.js +7 -7
  350. package/dist/http/stored-body-replay.d.ts +17 -3
  351. package/dist/http/stored-body-replay.js +11 -2
  352. package/dist/http/submit-ctx.d.ts +16 -8
  353. package/dist/http/submit-ctx.js +6 -2
  354. package/dist/http/submit-replay.d.ts +19 -6
  355. package/dist/http/submit-replay.js +18 -6
  356. package/dist/http/sync-submit-body.d.ts +3 -4
  357. package/dist/http/sync-submit-body.js +4 -5
  358. package/dist/http/wire-types.d.ts +23 -13
  359. package/dist/identity-source.d.ts +36 -5
  360. package/dist/identity-source.js +27 -0
  361. package/dist/index.d.ts +3 -2
  362. package/dist/index.js +2 -1
  363. package/dist/instruction-source-notice.d.ts +1 -1
  364. package/dist/key-resolver.d.ts +32 -0
  365. package/dist/key-resolver.js +23 -9
  366. package/dist/leader/diffup.js +2 -1
  367. package/dist/leader/endpoint.d.ts +26 -5
  368. package/dist/leader/endpoint.js +154 -14
  369. package/dist/leader/fanout.d.ts +3 -0
  370. package/dist/leader/fanout.js +78 -63
  371. package/dist/leader/leader.d.ts +16 -0
  372. package/dist/leader/leader.js +43 -3
  373. package/dist/leader/merge.d.ts +9 -1
  374. package/dist/leader/merge.js +16 -1
  375. package/dist/leader/repair-wire.js +1 -1
  376. package/dist/leader/wire.d.ts +36 -3
  377. package/dist/leader/wire.js +59 -18
  378. package/dist/lsp-evict.d.ts +6 -4
  379. package/dist/lsp-evict.js +2 -3
  380. package/dist/memory-embedder-reembed.d.ts +38 -0
  381. package/dist/memory-embedder-reembed.js +20 -0
  382. package/dist/memory-incident-sink.d.ts +0 -28
  383. package/dist/memory-incident-sink.js +5 -0
  384. package/dist/memory-operator-faces.d.ts +5 -4
  385. package/dist/memory-operator-faces.js +1 -1
  386. package/dist/memory-scope.d.ts +31 -4
  387. package/dist/memory-scope.js +65 -16
  388. package/dist/memory-store-refusal.d.ts +20 -4
  389. package/dist/memory-store-refusal.js +1 -1
  390. package/dist/memory-sync-client.d.ts +5 -2
  391. package/dist/memory-sync-client.js +19 -14
  392. package/dist/memory-sync.js +1 -1
  393. package/dist/model-compat.d.ts +51 -28
  394. package/dist/model-compat.js +55 -23
  395. package/dist/model-context-window.d.ts +18 -0
  396. package/dist/model-context-window.js +2 -0
  397. package/dist/model-entry-headers.d.ts +46 -4
  398. package/dist/model-entry-headers.js +2 -2
  399. package/dist/model-entry-refusal.d.ts +46 -17
  400. package/dist/model-entry-refusal.js +47 -27
  401. package/dist/model-plane-face.d.ts +19 -11
  402. package/dist/model-plane-face.js +9 -1
  403. package/dist/model-plane-probe.d.ts +2 -0
  404. package/dist/model-plane-probe.js +17 -0
  405. package/dist/model-provider.d.ts +3 -3
  406. package/dist/model-route-endpoint.d.ts +9 -5
  407. package/dist/model-route-endpoint.js +29 -7
  408. package/dist/model-select.d.ts +16 -0
  409. package/dist/model-select.js +4 -0
  410. package/dist/mountinfo.d.ts +37 -0
  411. package/dist/mountinfo.js +47 -0
  412. package/dist/namespaced-rule-name.d.ts +28 -2
  413. package/dist/namespaced-rule-name.js +10 -1
  414. package/dist/net-address.d.ts +1 -1
  415. package/dist/observability/corrupt-read-seat.d.ts +4 -4
  416. package/dist/observability/corrupt-read-seat.js +5 -3
  417. package/dist/observability/fail-open.d.ts +75 -47
  418. package/dist/observability/fail-open.js +77 -47
  419. package/dist/observability/logger.d.ts +22 -1
  420. package/dist/observability/logger.js +89 -12
  421. package/dist/observability/metrics.d.ts +2 -0
  422. package/dist/observability/metrics.js +5 -4
  423. package/dist/observability/otel-exporter.js +2 -1
  424. package/dist/observability/principal-context.d.ts +14 -7
  425. package/dist/observability/principal-context.js +8 -3
  426. package/dist/observability/run-terminal.d.ts +7 -1
  427. package/dist/observability/run-terminal.js +5 -2
  428. package/dist/observability/secret-env-scrub.d.ts +30 -4
  429. package/dist/observability/secret-env-scrub.js +15 -3
  430. package/dist/orchestration/hardened-vm-runner.d.ts +1 -0
  431. package/dist/orchestration/hardened-vm-runner.js +11 -5
  432. package/dist/orchestration/hardened-vm-worker-runner.d.ts +0 -14
  433. package/dist/orchestration/hardened-vm-worker-runner.js +5 -0
  434. package/dist/orchestration/hardened-vm-worker.js +2 -1
  435. package/dist/orchestration/workflow-agent-session-index.d.ts +7 -12
  436. package/dist/orchestration/workflow-agent-session-index.js +1 -6
  437. package/dist/orchestration/workflow-completion-inbox.d.ts +29 -9
  438. package/dist/orchestration/workflow-completion-inbox.js +65 -46
  439. package/dist/org-delivery-gate.d.ts +5 -4
  440. package/dist/org-delivery-gate.js +7 -6
  441. package/dist/org-memory-admission.d.ts +5 -2
  442. package/dist/org-memory-admission.js +25 -10
  443. package/dist/outbound-dispatcher.d.ts +1 -1
  444. package/dist/outbound-dispatcher.js +6 -12
  445. package/dist/owner-brands.d.ts +81 -0
  446. package/dist/owner-brands.js +42 -0
  447. package/dist/owner-faces.d.ts +531 -0
  448. package/dist/owner-faces.js +126 -0
  449. package/dist/parked-decide.d.ts +100 -31
  450. package/dist/parked-decide.js +162 -48
  451. package/dist/parked-revive-surface.d.ts +14 -4
  452. package/dist/parked-revive-surface.js +5 -4
  453. package/dist/peer-directory.d.ts +6 -8
  454. package/dist/peer-directory.js +3 -2
  455. package/dist/permission-rule-vocab.d.ts +53 -8
  456. package/dist/permission-rule-vocab.js +30 -2
  457. package/dist/plugins/adoption-log-sql.d.ts +0 -22
  458. package/dist/plugins/adoption-log-sql.js +5 -3
  459. package/dist/plugins/approval-ask-retired-delete-by-task-m50.d.ts +7 -0
  460. package/dist/plugins/approval-ask-retired-delete-by-task-m50.js +17 -0
  461. package/dist/plugins/approval-ask-store-file.d.ts +28 -9
  462. package/dist/plugins/approval-ask-store-file.js +74 -18
  463. package/dist/plugins/approval-ask-store-memory.d.ts +17 -7
  464. package/dist/plugins/approval-ask-store-memory.js +35 -12
  465. package/dist/plugins/approval-ask-store-sql.d.ts +42 -20
  466. package/dist/plugins/approval-ask-store-sql.js +44 -11
  467. package/dist/plugins/approval-exemption-skill-m46.d.ts +20 -0
  468. package/dist/plugins/approval-exemption-skill-m46.js +25 -0
  469. package/dist/plugins/approval-exemption-store.d.ts +6 -1
  470. package/dist/plugins/approval-exemption-store.js +14 -0
  471. package/dist/plugins/approval-nonce-store.d.ts +39 -12
  472. package/dist/plugins/approval-nonce-store.js +72 -23
  473. package/dist/plugins/blob-backend.d.ts +40 -195
  474. package/dist/plugins/blob-backend.js +41 -234
  475. package/dist/plugins/caching-session-store.d.ts +22 -5
  476. package/dist/plugins/caching-session-store.js +43 -4
  477. package/dist/plugins/checkpoint-index-columns.d.ts +33 -6
  478. package/dist/plugins/checkpoint-index-columns.js +39 -3
  479. package/dist/plugins/checkpoint-store-face.d.ts +84 -11
  480. package/dist/plugins/checkpoint-store-face.js +18 -1
  481. package/dist/plugins/device-store-sql.d.ts +2 -2
  482. package/dist/plugins/device-store-sql.js +6 -10
  483. package/dist/plugins/ensure-index.d.ts +13 -1
  484. package/dist/plugins/ensure-index.js +154 -21
  485. package/dist/plugins/ensure-schema-lock-policy.d.ts +0 -15
  486. package/dist/plugins/ensure-schema-lock-policy.js +3 -2
  487. package/dist/plugins/execution-lane-rename-m40.d.ts +20 -0
  488. package/dist/plugins/execution-lane-rename-m40.js +10 -0
  489. package/dist/plugins/execution-placement-sql.d.ts +63 -88
  490. package/dist/plugins/execution-placement-sql.js +94 -54
  491. package/dist/plugins/file-run-store.d.ts +89 -35
  492. package/dist/plugins/file-run-store.js +197 -142
  493. package/dist/plugins/host-platform.d.ts +24 -3
  494. package/dist/plugins/host-platform.js +15 -1
  495. package/dist/plugins/image-bake-store-sql.js +2 -0
  496. package/dist/plugins/imported-layer-root-retirement.d.ts +19 -10
  497. package/dist/plugins/imported-layer-root-retirement.js +4 -8
  498. package/dist/plugins/inbox-payload-column.d.ts +14 -0
  499. package/dist/plugins/inbox-payload-column.js +13 -0
  500. package/dist/plugins/k8s-pod-reaper.d.ts +1 -3
  501. package/dist/plugins/k8s-pod-reaper.js +0 -1
  502. package/dist/plugins/leader-run-store-sql.d.ts +22 -0
  503. package/dist/plugins/leader-run-store-sql.js +34 -4
  504. package/dist/plugins/local-checkpoint-store.d.ts +63 -23
  505. package/dist/plugins/local-checkpoint-store.js +204 -81
  506. package/dist/plugins/local-data-dir-modes-m39.d.ts +48 -0
  507. package/dist/plugins/local-data-dir-modes-m39.js +183 -0
  508. package/dist/plugins/local-docker-capacity.d.ts +93 -0
  509. package/dist/plugins/local-docker-capacity.js +194 -0
  510. package/dist/plugins/local-docker-reaper.d.ts +92 -0
  511. package/dist/plugins/local-docker-reaper.js +102 -0
  512. package/dist/plugins/local-engine-high-water.d.ts +13 -0
  513. package/dist/plugins/local-engine-high-water.js +62 -0
  514. package/dist/plugins/local-session-store.d.ts +442 -143
  515. package/dist/plugins/local-session-store.js +941 -289
  516. package/dist/plugins/local-session-window.d.ts +3 -2
  517. package/dist/plugins/local-session-window.js +3 -2
  518. package/dist/plugins/local-sidecar-quarantine.js +3 -2
  519. package/dist/plugins/local-task-attachment-store.d.ts +20 -1
  520. package/dist/plugins/local-task-attachment-store.js +32 -12
  521. package/dist/plugins/memory-embedder-fingerprint.d.ts +33 -10
  522. package/dist/plugins/memory-embedder-fingerprint.js +52 -12
  523. package/dist/plugins/memory-embedder.d.ts +1 -1
  524. package/dist/plugins/memory-embedder.js +11 -9
  525. package/dist/plugins/memory-engine-pg.d.ts +7 -5
  526. package/dist/plugins/memory-engine-pg.js +18 -9
  527. package/dist/plugins/memory-engine-sql-apply.d.ts +21 -8
  528. package/dist/plugins/memory-engine-sql-apply.js +7 -9
  529. package/dist/plugins/memory-engine-tidb.d.ts +12 -7
  530. package/dist/plugins/memory-engine-tidb.js +18 -10
  531. package/dist/plugins/memory-optout-grant-store-sql.d.ts +1 -1
  532. package/dist/plugins/memory-optout-grant-store-sql.js +3 -3
  533. package/dist/plugins/memory-run-store.d.ts +39 -27
  534. package/dist/plugins/memory-run-store.js +72 -70
  535. package/dist/plugins/one-time-migration-marker.d.ts +10 -0
  536. package/dist/plugins/one-time-migration-marker.js +7 -0
  537. package/dist/plugins/one-time-migrations.d.ts +325 -74
  538. package/dist/plugins/one-time-migrations.js +705 -230
  539. package/dist/plugins/org-delivery-quota-store.js +2 -1
  540. package/dist/plugins/owner-only-file-mode.d.ts +29 -0
  541. package/dist/plugins/owner-only-file-mode.js +141 -0
  542. package/dist/plugins/permission-rule-store-file.d.ts +11 -11
  543. package/dist/plugins/permission-rule-store-file.js +14 -2
  544. package/dist/plugins/permission-rule-store-sql.d.ts +4 -63
  545. package/dist/plugins/permission-rule-store-sql.js +6 -86
  546. package/dist/plugins/pg-pool.d.ts +3 -32
  547. package/dist/plugins/pg-pool.js +27 -11
  548. package/dist/plugins/release-version.d.ts +20 -0
  549. package/dist/plugins/release-version.js +28 -0
  550. package/dist/plugins/remote-env-adb.d.ts +20 -4
  551. package/dist/plugins/remote-env-adb.js +39 -11
  552. package/dist/plugins/remote-env-e2b.d.ts +19 -28
  553. package/dist/plugins/remote-env-e2b.js +40 -29
  554. package/dist/plugins/remote-env-host.d.ts +11 -10
  555. package/dist/plugins/remote-env-host.js +40 -27
  556. package/dist/plugins/remote-env-k8s.d.ts +45 -47
  557. package/dist/plugins/remote-env-k8s.js +122 -62
  558. package/dist/plugins/remote-env-local-docker.d.ts +152 -15
  559. package/dist/plugins/remote-env-local-docker.js +370 -75
  560. package/dist/plugins/remote-env-ssh.d.ts +8 -2
  561. package/dist/plugins/remote-env-ssh.js +26 -24
  562. package/dist/plugins/remote-scratchpad.js +4 -0
  563. package/dist/plugins/remote-shell.d.ts +59 -30
  564. package/dist/plugins/remote-shell.js +175 -62
  565. package/dist/plugins/retention-declaration.d.ts +37 -0
  566. package/dist/plugins/retention-declaration.js +9 -0
  567. package/dist/plugins/retention-deployment.d.ts +158 -0
  568. package/dist/plugins/retention-deployment.js +119 -0
  569. package/dist/plugins/retention-lane-store-sql.d.ts +74 -4
  570. package/dist/plugins/retention-lane-store-sql.js +103 -1
  571. package/dist/plugins/retention-sql.d.ts +29 -0
  572. package/dist/plugins/retention-sql.js +8 -0
  573. package/dist/plugins/run-preview-m45.d.ts +11 -0
  574. package/dist/plugins/run-preview-m45.js +19 -0
  575. package/dist/plugins/run-store-sql.d.ts +56 -68
  576. package/dist/plugins/run-store-sql.js +127 -116
  577. package/dist/plugins/s3-answer.d.ts +2 -1
  578. package/dist/plugins/sandbox-reaper.d.ts +26 -0
  579. package/dist/plugins/sandbox-reaper.js +2 -0
  580. package/dist/plugins/scenario-prefix-switch-m42.d.ts +54 -0
  581. package/dist/plugins/scenario-prefix-switch-m42.js +55 -0
  582. package/dist/plugins/scheduler-support.d.ts +16 -1
  583. package/dist/plugins/scheduler-support.js +22 -2
  584. package/dist/plugins/schema-consistency.d.ts +42 -15
  585. package/dist/plugins/schema-consistency.js +213 -13
  586. package/dist/plugins/schema-drift-sentence.d.ts +4 -1
  587. package/dist/plugins/schema-drift-sentence.js +4 -4
  588. package/dist/plugins/schema-ensure-legs.d.ts +10 -1
  589. package/dist/plugins/schema-ensure-legs.js +12 -2
  590. package/dist/plugins/schema-indexes.js +3 -0
  591. package/dist/plugins/schema-live-columns.d.ts +14 -5
  592. package/dist/plugins/schema-live-columns.js +10 -10
  593. package/dist/plugins/send-user-file.js +2 -1
  594. package/dist/plugins/session-birth.d.ts +37 -0
  595. package/dist/plugins/session-birth.js +38 -0
  596. package/dist/plugins/session-epoch-anchor.d.ts +40 -12
  597. package/dist/plugins/session-epoch-anchor.js +33 -11
  598. package/dist/plugins/session-ext-table.d.ts +98 -0
  599. package/dist/plugins/session-ext-table.js +134 -0
  600. package/dist/plugins/session-fork.d.ts +16 -2
  601. package/dist/plugins/session-fork.js +3 -0
  602. package/dist/plugins/session-ownership.d.ts +1 -1
  603. package/dist/plugins/session-placement.d.ts +22 -16
  604. package/dist/plugins/session-placement.js +15 -12
  605. package/dist/plugins/session-row-sql.d.ts +20 -7
  606. package/dist/plugins/session-row-sql.js +16 -8
  607. package/dist/plugins/session-run-rollup.d.ts +29 -0
  608. package/dist/plugins/session-run-rollup.js +40 -0
  609. package/dist/plugins/session-store-sql.d.ts +157 -0
  610. package/dist/plugins/session-store-sql.js +398 -0
  611. package/dist/plugins/session-withdraw-sql.d.ts +36 -0
  612. package/dist/plugins/session-withdraw-sql.js +42 -0
  613. package/dist/plugins/session-workspace-cell.d.ts +2 -2
  614. package/dist/plugins/session-workspace-cell.js +2 -2
  615. package/dist/plugins/shared-memory-store-sql.d.ts +10 -69
  616. package/dist/plugins/shared-memory-store-sql.js +15 -14
  617. package/dist/plugins/shell-sentinel-owner-m48.d.ts +20 -0
  618. package/dist/plugins/shell-sentinel-owner-m48.js +3 -0
  619. package/dist/plugins/snapshot-bucket-presence.d.ts +2 -1
  620. package/dist/plugins/snapshot-bucket-presence.js +1 -1
  621. package/dist/plugins/sql-driver.d.ts +24 -8
  622. package/dist/plugins/sql-driver.js +43 -9
  623. package/dist/plugins/sql-errors.d.ts +35 -5
  624. package/dist/plugins/sql-errors.js +55 -3
  625. package/dist/plugins/sql-json-column.d.ts +8 -7
  626. package/dist/plugins/sql-json-column.js +10 -6
  627. package/dist/plugins/store-backend.d.ts +114 -18
  628. package/dist/plugins/store-backend.js +340 -87
  629. package/dist/plugins/store-contracts.d.ts +97 -30
  630. package/dist/plugins/store-contracts.js +23 -1
  631. package/dist/plugins/store-fault.d.ts +28 -2
  632. package/dist/plugins/store-fault.js +20 -2
  633. package/dist/plugins/task-attachment-store.d.ts +21 -11
  634. package/dist/plugins/task-attachment-store.js +37 -19
  635. package/dist/plugins/task-list-store-sql.d.ts +1 -1
  636. package/dist/plugins/text-column-capacity.d.ts +21 -0
  637. package/dist/plugins/text-column-capacity.js +5 -0
  638. package/dist/plugins/tidb-pool.d.ts +3 -2
  639. package/dist/plugins/tidb-pool.js +42 -39
  640. package/dist/plugins/user-input-ledger-sql.d.ts +1 -1
  641. package/dist/plugins/web-search.js +5 -3
  642. package/dist/plugins/workflow-run-store-sql.d.ts +6 -1
  643. package/dist/plugins/workflow-run-store-sql.js +11 -5
  644. package/dist/principal-jwt.d.ts +4 -4
  645. package/dist/principal-jwt.js +20 -5
  646. package/dist/principal-shape.d.ts +41 -0
  647. package/dist/principal-shape.js +19 -0
  648. package/dist/question.d.ts +13 -23
  649. package/dist/question.js +21 -39
  650. package/dist/read-face-posture.d.ts +6 -6
  651. package/dist/read-face-posture.js +2 -2
  652. package/dist/request-declaration-refusal.d.ts +35 -12
  653. package/dist/request-declaration-refusal.js +21 -9
  654. package/dist/request-form.d.ts +58 -0
  655. package/dist/request-form.js +72 -0
  656. package/dist/request-image-urls.d.ts +8 -2
  657. package/dist/request-image-urls.js +2 -1
  658. package/dist/request-images.d.ts +20 -0
  659. package/dist/request-images.js +59 -0
  660. package/dist/request-key-closure.d.ts +6 -7
  661. package/dist/request-key-closure.js +15 -2
  662. package/dist/request-value-closure.d.ts +5 -5
  663. package/dist/request-value-closure.js +1 -1
  664. package/dist/resource-suspend.d.ts +7 -16
  665. package/dist/resource-suspend.js +1 -1
  666. package/dist/retired-name-host-notice.d.ts +21 -0
  667. package/dist/retired-name-host-notice.js +12 -0
  668. package/dist/rule-entry-list.d.ts +2 -2
  669. package/dist/rule-entry-list.js +3 -4
  670. package/dist/rule-issue-reading.d.ts +58 -0
  671. package/dist/rule-issue-reading.js +14 -0
  672. package/dist/rules-consent.d.ts +46 -16
  673. package/dist/rules-consent.js +102 -53
  674. package/dist/run-acceptance.d.ts +3 -1
  675. package/dist/run-acceptance.js +3 -0
  676. package/dist/run-local.d.ts +14 -6
  677. package/dist/run-local.js +109 -93
  678. package/dist/run-stale-default.d.ts +7 -0
  679. package/dist/run-stale-default.js +2 -0
  680. package/dist/runs.d.ts +73 -44
  681. package/dist/runs.js +65 -43
  682. package/dist/runtime-caps-resolver.d.ts +36 -14
  683. package/dist/runtime-caps-resolver.js +31 -14
  684. package/dist/runtime-governance.d.ts +2 -2
  685. package/dist/runtime-governance.js +5 -3
  686. package/dist/sealed-key-layout.d.ts +12 -6
  687. package/dist/sealed-key-layout.js +5 -1
  688. package/dist/sealed-key.d.ts +12 -2
  689. package/dist/sealed-key.js +116 -26
  690. package/dist/security.d.ts +133 -161
  691. package/dist/security.js +163 -59
  692. package/dist/sema-config-dir.d.ts +20 -0
  693. package/dist/sema-config-dir.js +27 -2
  694. package/dist/server-secret-env.d.ts +23 -5
  695. package/dist/server-secret-env.js +14 -4
  696. package/dist/service-version.d.ts +2 -1
  697. package/dist/service-version.js +2 -2
  698. package/dist/session-children-retire.d.ts +7 -5
  699. package/dist/session-children-retire.js +7 -2
  700. package/dist/session-deletion.d.ts +88 -0
  701. package/dist/session-deletion.js +8 -0
  702. package/dist/session-erase.d.ts +145 -0
  703. package/dist/session-erase.js +115 -0
  704. package/dist/session-error-wire.d.ts +6 -6
  705. package/dist/session-error-wire.js +1 -1
  706. package/dist/session-incarnation.d.ts +60 -10
  707. package/dist/session-incarnation.js +19 -2
  708. package/dist/session-policy-wire.d.ts +6 -3
  709. package/dist/session-policy-wire.js +11 -1
  710. package/dist/session-resident-background.d.ts +29 -47
  711. package/dist/session-resident-background.js +77 -8
  712. package/dist/session-row.d.ts +3 -2
  713. package/dist/session-rules-seat.d.ts +12 -0
  714. package/dist/session-rules-seat.js +19 -0
  715. package/dist/session-sync-kernel.d.ts +1 -1
  716. package/dist/session-titler.d.ts +7 -15
  717. package/dist/session-titler.js +1 -1
  718. package/dist/session-workspace.d.ts +11 -2
  719. package/dist/session-workspace.js +5 -0
  720. package/dist/sighup-idle.d.ts +1 -1
  721. package/dist/spec-fields.d.ts +57 -3
  722. package/dist/spec-fields.js +72 -51
  723. package/dist/store-posture.d.ts +138 -21
  724. package/dist/store-posture.js +188 -3
  725. package/dist/stored-request-hooks-m20.d.ts +3 -2
  726. package/dist/stored-request-hooks-m20.js +21 -16
  727. package/dist/stores-sql/background-agent-store-sql.d.ts +11 -2
  728. package/dist/stores-sql/background-agent-store-sql.js +73 -20
  729. package/dist/stores-sql/blob-index-sql.d.ts +148 -0
  730. package/dist/stores-sql/blob-index-sql.js +154 -0
  731. package/dist/stores-sql/checkpoint-store-sql.d.ts +34 -29
  732. package/dist/stores-sql/checkpoint-store-sql.js +86 -71
  733. package/dist/{plugins → stores-sql}/file-history-store-sql.d.ts +23 -11
  734. package/dist/{plugins → stores-sql}/file-history-store-sql.js +23 -18
  735. package/dist/stores-sql/mailbox-store-sql.d.ts +7 -4
  736. package/dist/stores-sql/mailbox-store-sql.js +31 -32
  737. package/dist/{plugins → stores-sql}/pg-session-storage.d.ts +30 -81
  738. package/dist/{plugins → stores-sql}/pg-session-storage.js +123 -244
  739. package/dist/{plugins → stores-sql}/retention-store-sql.d.ts +197 -223
  740. package/dist/{plugins → stores-sql}/retention-store-sql.js +148 -207
  741. package/dist/{plugins → stores-sql}/session-event-payload.d.ts +1 -1
  742. package/dist/{plugins → stores-sql}/session-event-payload.js +1 -1
  743. package/dist/stores-sql/session-policy-store-sql.d.ts +33 -11
  744. package/dist/stores-sql/session-policy-store-sql.js +44 -36
  745. package/dist/stores-sql/session-write-hooks.d.ts +65 -0
  746. package/dist/stores-sql/session-write-hooks.js +2 -0
  747. package/dist/{plugins → stores-sql}/tidb-session-storage.d.ts +14 -15
  748. package/dist/{plugins → stores-sql}/tidb-session-storage.js +22 -28
  749. package/dist/{plugins → stores-sql}/tidb-session-store.d.ts +67 -138
  750. package/dist/{plugins → stores-sql}/tidb-session-store.js +130 -200
  751. package/dist/stores-sql/tool-result-store-sql.d.ts +1 -1
  752. package/dist/stores-sql/tool-result-store-sql.js +1 -1
  753. package/dist/stores-sql/windowed-session-storage.d.ts +61 -0
  754. package/dist/stores-sql/windowed-session-storage.js +70 -0
  755. package/dist/submission-exit.d.ts +50 -0
  756. package/dist/submission-exit.js +108 -0
  757. package/dist/task-a2a.d.ts +7 -1
  758. package/dist/task-a2a.js +18 -17
  759. package/dist/task-cwd.d.ts +31 -3
  760. package/dist/task-cwd.js +25 -1
  761. package/dist/task-mcp.d.ts +11 -3
  762. package/dist/task-mcp.js +16 -19
  763. package/dist/task-settings.d.ts +23 -14
  764. package/dist/task-settings.js +35 -13
  765. package/dist/terminal.d.ts +25 -43
  766. package/dist/terminal.js +31 -11
  767. package/dist/tool-approval.d.ts +152 -137
  768. package/dist/tool-approval.js +199 -199
  769. package/dist/trace/core-keyset-guard.d.ts +22 -9
  770. package/dist/trace/core-vocab-wire.d.ts +95 -0
  771. package/dist/trace/core-vocab-wire.js +15 -0
  772. package/dist/trace/engine-notice-wire.d.ts +1 -1
  773. package/dist/trace/engine-notice-wire.js +2 -0
  774. package/dist/trace/exit-seat.d.ts +52 -4
  775. package/dist/trace/exit-seat.js +43 -36
  776. package/dist/trace/extension-call-face.d.ts +3 -2
  777. package/dist/trace/extension-call-face.js +3 -1
  778. package/dist/trace/ledger-events.d.ts +4 -7
  779. package/dist/trace/ledger-sink.d.ts +1 -30
  780. package/dist/trace/ledger-sink.js +0 -11
  781. package/dist/trace/model-segment.d.ts +5 -5
  782. package/dist/trace/model-segment.js +5 -5
  783. package/dist/trace/project.d.ts +88 -58
  784. package/dist/trace/project.js +64 -28
  785. package/dist/trace/redact.d.ts +124 -28
  786. package/dist/trace/redact.js +936 -328
  787. package/dist/trace/self-minted-wire.d.ts +750 -29
  788. package/dist/trace/self-minted-wire.js +262 -25
  789. package/dist/trace/sema-provenance.d.ts +45 -41
  790. package/dist/trace/sema-provenance.js +81 -10
  791. package/dist/trace/task-notification-facets.d.ts +70 -2
  792. package/dist/trace/task-notification-facets.js +71 -1
  793. package/dist/trace/wire-projection-faces.d.ts +43 -8
  794. package/dist/trace/wire-projection-faces.js +28 -3
  795. package/dist/unread-request-members.d.ts +66 -0
  796. package/dist/unread-request-members.js +41 -0
  797. package/dist/upstream-body.d.ts +23 -0
  798. package/dist/upstream-body.js +16 -0
  799. package/dist/url-refusal.d.ts +3 -3
  800. package/dist/url-refusal.js +11 -4
  801. package/dist/user-authored-text.d.ts +1 -1
  802. package/dist/user-input-ledger.d.ts +7 -8
  803. package/dist/user-input-ledger.js +1 -1
  804. package/dist/web-admin-client/apply-effective.d.ts +6 -3
  805. package/dist/web-admin-client/apply-effective.js +33 -40
  806. package/dist/web-admin-client/apply-ledger.d.ts +16 -7
  807. package/dist/web-admin-client/apply-ledger.js +5 -2
  808. package/dist/web-admin-client/candidate-gate.d.ts +35 -3
  809. package/dist/web-admin-client/candidate-gate.js +53 -5
  810. package/dist/web-admin-client/center-request.d.ts +6 -3
  811. package/dist/web-admin-client/center-request.js +17 -16
  812. package/dist/web-admin-client/effective-keys.d.ts +1 -1
  813. package/dist/web-admin-client/effective-keys.js +1 -2
  814. package/dist/web-admin-client/entry-metadata.d.ts +8 -0
  815. package/dist/web-admin-client/entry-metadata.js +13 -0
  816. package/dist/web-admin-client/facade.d.ts +1 -1
  817. package/dist/web-admin-client/http-client.d.ts +2 -1
  818. package/dist/web-admin-client/http-client.js +40 -13
  819. package/dist/web-admin-client/mcp-revocation.d.ts +1 -1
  820. package/dist/web-admin-client/mcp-revocation.js +2 -1
  821. package/dist/web-admin-client/read-warnings.d.ts +1 -0
  822. package/dist/web-admin-client/read-warnings.js +1 -0
  823. package/dist/web-admin-client/restart-signal.js +13 -6
  824. package/dist/web-admin-client/skills-mcp.d.ts +22 -8
  825. package/dist/web-admin-client/skills-mcp.js +26 -21
  826. package/dist/web-admin-client/types.d.ts +35 -51
  827. package/dist/workspace-space.d.ts +3 -2
  828. package/docs/DEVICE-EXECUTOR-PROTOCOL.md +4 -4
  829. package/package.json +16 -12
  830. package/scripts/drain-check-local.mjs +118 -173
  831. package/scripts/drain-check.mysql.sql +20 -16
  832. package/scripts/drain-check.pg.sql +20 -16
  833. package/wire-changes/server@7.147.0.json +813 -0
  834. package/wire-changes/server@7.148.0.json +1517 -0
  835. package/dist/http/memory-control-plane-corrupt-reply.d.ts +0 -25
  836. package/dist/http/memory-control-plane-corrupt-reply.js +0 -19
  837. package/dist/http/memory-layer-reply.d.ts +0 -30
  838. package/dist/http/memory-layer-reply.js +0 -24
  839. package/dist/lsp/e2b-bridge.d.ts +0 -57
  840. package/dist/lsp/e2b-bridge.js +0 -139
  841. package/dist/lsp/e2b-manager.d.ts +0 -93
  842. package/dist/lsp/e2b-manager.js +0 -178
  843. package/dist/lsp/lsp-frames.d.ts +0 -14
  844. package/dist/lsp/lsp-frames.js +0 -25
  845. package/dist/lsp/manager.d.ts +0 -129
  846. package/dist/lsp/manager.js +0 -127
  847. package/dist/lsp/types.d.ts +0 -12
  848. package/dist/lsp/types.js +0 -2
  849. package/dist/lsp/ws-transport.d.ts +0 -40
  850. package/dist/lsp/ws-transport.js +0 -210
@@ -1,3 +1,4 @@
1
+ import { FORK_SUBAGENT_TYPE, redeemWorkflowParks, subscribeWorkflow } from "@sema-agent/core";
1
2
  import { readClosedWordSeat } from "./approval-card.js";
2
3
  import { routeWorkflowPark } from "./orchestration/workflow-agent-session-index.js";
3
4
  import { recordFailOpen } from "./observability/fail-open.js";
@@ -6,7 +7,7 @@ import { backgroundScopesForCheckpointScope, decodeCheckpointScope, ownerOfCheck
6
7
  import { ASK_USER_QUESTION_TOOL_NAME, isEngineQuestionRow } from "./approval-content-kind.js";
7
8
  import { refusalBody, resumeRefusalFacts } from "./http/refusal-body.js";
8
9
  import { backgroundAgentNameOf } from "./background-agent-name.js";
9
- import { buildSettlementEvidence } from "./gate-settlement.js";
10
+ import { buildSettlementEvidence, NO_SETTLEMENT_EVIDENCE } from "./gate-settlement.js";
10
11
  import { commitExecutionContext } from "./http/execution-context.js";
11
12
  import { EXECUTION_PLACEMENT_SEAT_CARRIERS } from "./execution-placement.js";
12
13
  export const PARKED_REVIVE_EXECUTION_SEAT_REQUIRED = `the parked-agent revive leg (parkedReviveSurface) needs a session store with an execution placement seat (sessionStorage.executionPlacement) — after the claim, the root session's occupant is judged only by the write on that seat; ${EXECUTION_PLACEMENT_SEAT_CARRIERS}; refusing to start rather than revive parked agents with nobody judging the root session's occupant after the claim`;
@@ -43,7 +44,7 @@ export async function findParkOrigin(sources, cp) {
43
44
  case "forked":
44
45
  return { kind: "workflow_park_forked", runIds: route.runIds };
45
46
  case "unproven":
46
- return { kind: "workflow_parks_unreadable", runId: route.runId, run: route.run, cause: route.cause, ...(route.readableHolderRunId !== undefined ? { readableHolderRunId: route.readableHolderRunId } : {}) };
47
+ return { kind: "workflow_parks_unreadable", runId: route.runId, run: route.run, ...(route.readableHolderRunId !== undefined ? { readableHolderRunId: route.readableHolderRunId } : {}) };
47
48
  case "none":
48
49
  return undefined;
49
50
  default: {
@@ -110,13 +111,44 @@ export async function findParkedAgentForCheckpoint(agentStore, cp) {
110
111
  function grantRootOf(row) {
111
112
  return row.rootSessionId ?? row.parentSessionId;
112
113
  }
113
- function mintReviveArgs(row, knownAgentTypes) {
114
+ function refusesWhereUnrecordable(remember) {
115
+ switch (remember.laneCannotRecord) {
116
+ case "refuse":
117
+ return true;
118
+ case "decide_once":
119
+ return false;
120
+ default: {
121
+ const unhandled = remember.laneCannotRecord;
122
+ throw new Error(`unhandled remember lane answer: ${String(unhandled)}`);
123
+ }
124
+ }
125
+ }
126
+ function reviveDefinitionOf(row, reviveTool) {
127
+ if (row.agentType === undefined)
128
+ return { kind: "revivable", agentType: undefined };
129
+ const revivable = (reviveTool.ruleFace?.nameValues ?? []).filter((t) => t !== FORK_SUBAGENT_TYPE);
130
+ return revivable.includes(row.agentType) ? { kind: "revivable", agentType: row.agentType } : { kind: "unavailable" };
131
+ }
132
+ function denyAgentDefinitionUnavailable(taskId, rollback) {
133
+ return {
134
+ status: 409,
135
+ body: refusalBody({
136
+ errorCode: "decide.agent_definition_unavailable",
137
+ message: "this approval belongs to a background agent that was started from an agent definition the revive path cannot supply again: a definition sent on the request that started the run is not kept with the approval card, and a deployment definition may have been withdrawn since the agent stopped. Reviving the agent without it would resume it as a general-purpose agent, with a wider tool surface than its definition allowed, so the decision is NOT applied and nothing was resumed. The rollback field says what became of the approval: rolled_back means the card is still pending (it ends by expiry, or when the session's background agents are retired), failed means it had already ended, retry and lost mean read the pending list for its fate. Start the work from a built-in or deployment definition to get an agent whose approval can be decided here",
138
+ facts: {
139
+ taskId,
140
+ rollback,
141
+ },
142
+ }),
143
+ };
144
+ }
145
+ function mintReviveArgs(row, agentType) {
114
146
  return {
115
147
  prompt: row.description ?? "resume parked agent",
116
148
  run_in_background: true,
117
149
  name: backgroundAgentNameOf(row),
118
150
  description: row.description ?? "revived agent",
119
- ...(row.agentType !== undefined && knownAgentTypes.has(row.agentType) ? { subagent_type: row.agentType } : {}),
151
+ ...(agentType !== undefined ? { subagent_type: agentType } : {}),
120
152
  };
121
153
  }
122
154
  export function buildParkedResumeOutcome(req) {
@@ -134,35 +166,17 @@ export function buildParkedResumeOutcome(req) {
134
166
  };
135
167
  }
136
168
  export function denyWorkflowParksUnreadable(origin) {
137
- switch (origin.cause) {
138
- case "older_engine":
139
- return {
140
- status: 409,
141
- body: refusalBody({
142
- errorCode: "decide.workflow_parks_unreadable",
143
- message: "this decision cannot be matched to the pending step it belongs to: the run's record was written by an earlier engine version, which did not record which run is waiting on each pending step — and that record is the only proof that the approval you are deciding belongs to this run. The decision is therefore NOT delivered, rather than answered with a receipt nothing can redeem: the approval card stays pending and nothing is forged. Resume the run itself instead — `Workflow({resumeFromRunId})` with the runId below — and once the resumed run is waiting on this step again it records itself as the one waiting, after which deciding here works normally. Only if the engine also refuses that resume is the run truly unrecoverable",
144
- facts: {
145
- runId: origin.runId,
146
- },
147
- }),
148
- };
149
- case "unreadable":
150
- return {
151
- status: 409,
152
- body: refusalBody({
153
- errorCode: "decide.workflow_parks_unreadable",
154
- message: "this decision cannot be matched to the pending step it belongs to: this run's record cannot be read (the list of pending steps the run owns is damaged: one of its entries is malformed, or it is not a list at all) — and that list is the only proof that the approval you are deciding belongs to this run. The decision is therefore NOT delivered, rather than answered with a receipt nothing can redeem: the approval card stays pending and nothing is forged. Resuming does not clear this: the damaged record keeps naming this step whatever runs after it, so the decision stays undeliverable until whoever operates this deployment repairs that record (the runId below); after that, deciding here works normally. When the response also carries readableHolderRunId, that run's record is readable and is the latest one waiting on this step — it is where the work can be carried on, but the damaged record above still keeps this decision from being delivered until that record is fixed",
155
- facts: {
156
- runId: origin.runId,
157
- ...(origin.readableHolderRunId !== undefined ? { readableHolderRunId: origin.readableHolderRunId } : {}),
158
- },
159
- }),
160
- };
161
- default: {
162
- const unhandled = origin.cause;
163
- throw new Error(`unhandled workflow parks-unreadable cause: ${String(unhandled)}`);
164
- }
165
- }
169
+ return {
170
+ status: 409,
171
+ body: refusalBody({
172
+ errorCode: "decide.workflow_parks_unreadable",
173
+ message: "this decision cannot be matched to the pending step it belongs to: this run's record cannot be read (the list of pending steps the run owns is damaged: one of its entries is malformed, or it is not a list at all) — and that list is the only proof that the approval you are deciding belongs to this run. The decision is therefore NOT delivered, rather than answered with a receipt nothing can redeem: the approval card stays pending and nothing is forged. Resuming does not clear this: the damaged record keeps naming this step whatever runs after it, so the decision stays undeliverable until whoever operates this deployment repairs that record (the runId below); after that, deciding here works normally. When the response also carries readableHolderRunId, that run's record is readable and is the latest one waiting on this step — it is where the work can be carried on, but the damaged record above still keeps this decision from being delivered until that record is fixed",
174
+ facts: {
175
+ runId: origin.runId,
176
+ ...(origin.readableHolderRunId !== undefined ? { readableHolderRunId: origin.readableHolderRunId } : {}),
177
+ },
178
+ }),
179
+ };
166
180
  }
167
181
  export function denyWorkflowParkForked(origin) {
168
182
  return {
@@ -177,7 +191,7 @@ export function denyWorkflowParkForked(origin) {
177
191
  };
178
192
  }
179
193
  export function planWorkflowParkedDecide(origin, req) {
180
- if (req.grantRemember !== undefined) {
194
+ if (req.remember !== undefined && refusesWhereUnrecordable(req.remember)) {
181
195
  return {
182
196
  ok: false,
183
197
  deny: {
@@ -214,12 +228,112 @@ export function planWorkflowParkedDecide(origin, req) {
214
228
  hostSessionId,
215
229
  runId: origin.runId,
216
230
  outcome: buildParkedResumeOutcome(req),
217
- message: `The human approval that workflow run "${origin.runId}" parked on (agent callKey "${origin.park.callKey}") has been ${verdict}. ` +
218
- `Resume that run now: re-invoke Workflow with the SAME script source you launched it from (script / name / scriptPath) ` +
219
- `AND resumeFromRunId: "${origin.runId}" — the decision is already held by the deployment and will be applied to the parked ` +
220
- `agent; completed steps replay from the journal. Do not re-issue the original call.`,
231
+ message: {
232
+ text: `The human approval that workflow run "${origin.runId}" parked on (agent callKey "${origin.park.callKey}") has been ${verdict}. ` +
233
+ `Resume that run now: re-invoke Workflow with the SAME script source you launched it from (script / name / scriptPath) ` +
234
+ `AND resumeFromRunId: "${origin.runId}" — the decision is already held by the deployment and will be applied to the parked ` +
235
+ `agent; completed steps replay from the journal. Do not re-issue the original call.`,
236
+ trusted: true,
237
+ },
221
238
  };
222
239
  }
240
+ function parkedChildResumedReceipt(taskId, decision, evidence) {
241
+ return { status: 200, body: { taskId, status: "resuming", decision, ...evidence } };
242
+ }
243
+ const LIVE_REDEEM_RECEIPTS = new Map();
244
+ async function runChannelEnded(runId, scope) {
245
+ const channel = subscribeWorkflow(runId, scope)[Symbol.asyncIterator]();
246
+ while (!(await channel.next()).done) {
247
+ }
248
+ }
249
+ function holdLiveReceipt(run, token, fingerprint, answer) {
250
+ let byToken = LIVE_REDEEM_RECEIPTS.get(run.id);
251
+ if (byToken === undefined) {
252
+ byToken = new Map();
253
+ LIVE_REDEEM_RECEIPTS.set(run.id, byToken);
254
+ const book = byToken;
255
+ const drop = () => {
256
+ if (LIVE_REDEEM_RECEIPTS.get(run.id) === book)
257
+ LIVE_REDEEM_RECEIPTS.delete(run.id);
258
+ };
259
+ void run.ended().then(drop, (err) => {
260
+ recordFailOpen("server.workflow-live-receipt.channel-unreadable", `runId=${run.id} err=${err instanceof Error ? err.message : String(err)}`);
261
+ drop();
262
+ });
263
+ }
264
+ byToken.set(token, { fingerprint, answer });
265
+ }
266
+ const copyOf = (r) => ({ status: r.status, body: { ...r.body } });
267
+ export async function deliverToHoldingRun(origin, d) {
268
+ const entry = d.restated ? { token: d.token } : { token: d.token, outcome: d.outcome };
269
+ const scope = origin.run.scope;
270
+ return answerOfParkDelivery(await redeemWorkflowParks(origin.runId, scope, [entry]), { id: origin.runId, ended: () => runChannelEnded(origin.runId, scope) }, d);
271
+ }
272
+ export async function answerOfParkDelivery(delivery, run, d) {
273
+ const runId = run.id;
274
+ switch (delivery.kind) {
275
+ case "live":
276
+ return { kind: "answered", answer: answerOfLiveResult(delivery.results[0], run, d) };
277
+ case "suspending":
278
+ await delivery.ended;
279
+ return { kind: "resume_lane" };
280
+ case "not_active":
281
+ return { kind: "resume_lane" };
282
+ case "not_armed":
283
+ throw new Error(`workflow run ${runId} answered not_armed to a decision for a card it holds — a run without a checkpoint seat cannot have parked one; refusing to guess where the decision goes`);
284
+ default: {
285
+ const unhandled = delivery;
286
+ throw new Error(`unhandled workflow park delivery: ${JSON.stringify(unhandled)}`);
287
+ }
288
+ }
289
+ }
290
+ function answerOfLiveResult(word, run, d) {
291
+ const runId = run.id;
292
+ if (word === undefined)
293
+ throw new Error(`workflow run ${runId} answered a live delivery without a result for the one decision it was handed`);
294
+ switch (word) {
295
+ case "driving": {
296
+ if (d.restated)
297
+ throw new Error(`workflow run ${runId} drove a parked call on an acknowledgement — an acknowledgement never authorizes a drive`);
298
+ const answer = parkedChildResumedReceipt(runId, d.decision, NO_SETTLEMENT_EVIDENCE);
299
+ holdLiveReceipt(run, d.token, d.fingerprint, answer);
300
+ return copyOf(answer);
301
+ }
302
+ case "already_taken": {
303
+ const held = LIVE_REDEEM_RECEIPTS.get(runId)?.get(d.token);
304
+ if (held !== undefined && held.fingerprint === d.fingerprint)
305
+ return copyOf(held.answer);
306
+ return {
307
+ status: 409,
308
+ body: refusalBody({
309
+ errorCode: "decide.claim_lost",
310
+ message: "another decision for this approval was already handed to the run that is waiting on it and is being applied — re-check the pending list",
311
+ facts: { runId },
312
+ }),
313
+ };
314
+ }
315
+ case "settled":
316
+ case "not_parked_here":
317
+ return { status: 409, body: refusalBody({ errorCode: "decide.gate_moved", message: "the approval gate moved under this decide (re-parked or already settled) — re-check the pending list", facts: { runId } }) };
318
+ case "unreadable":
319
+ return { status: 503, body: refusalBody({ errorCode: "decide.store_unreachable", message: "the state of this approval could not be read just now, so the run waiting on it kept waiting and nothing was decided — retry", facts: { runId } }) };
320
+ case "kept_parked":
321
+ if (!d.restated)
322
+ throw new Error(`workflow run ${runId} kept a parked call that was handed a decision — the engine keeps a park only on an acknowledgement`);
323
+ return {
324
+ status: 400,
325
+ body: refusalBody({
326
+ errorCode: "decide.parked_restatement_unsupported",
327
+ message: "mcpServers / a2aPeers cannot be applied: the run this approval belongs to is still running, and its waiting step continues with the MCP / A2A tables the run already has — re-issue the decide without them to continue it that way",
328
+ facts: { runId },
329
+ }),
330
+ };
331
+ default: {
332
+ const unhandled = word;
333
+ throw new Error(`unhandled workflow park delivery result: ${String(unhandled)}`);
334
+ }
335
+ }
336
+ }
223
337
  function sessionGone(taskId) {
224
338
  return {
225
339
  status: 409,
@@ -256,8 +370,8 @@ async function voidUnrevivableCard(deps, req, match) {
256
370
  }
257
371
  export async function decideParkedAgent(deps, req, match) {
258
372
  const row = match.row;
259
- const rememberRoot = req.grantRemember !== undefined ? grantRootOf(row) : undefined;
260
- if (req.grantRemember !== undefined && rememberRoot === undefined) {
373
+ const rememberRoot = req.remember !== undefined ? grantRootOf(row) : undefined;
374
+ if (req.remember !== undefined && rememberRoot === undefined && refusesWhereUnrecordable(req.remember)) {
261
375
  return { status: 400, body: refusalBody({ errorCode: "decide.parked_remember_unsupported", message: "remember cannot be applied: this parked agent row carries no root/parent session anchor for the exemption", facts: { taskId: match.handle } }) };
262
376
  }
263
377
  if (req.restatement !== undefined) {
@@ -325,14 +439,13 @@ export async function decideParkedAgent(deps, req, match) {
325
439
  await rollback("revive_surface_threw");
326
440
  throw e;
327
441
  }
328
- try {
329
- await req.onDecideCommitted?.();
330
- }
331
- catch {
442
+ const definition = reviveDefinitionOf(row, surface.reviveTool);
443
+ if (definition.kind === "unavailable") {
444
+ return denyAgentDefinitionUnavailable(match.handle, await rollback("agent_definition_unavailable"));
332
445
  }
333
- if (req.grantRemember !== undefined && rememberRoot !== undefined) {
446
+ if (req.remember !== undefined && rememberRoot !== undefined) {
334
447
  try {
335
- await req.grantRemember(rememberRoot);
448
+ await req.remember.anchor(rememberRoot);
336
449
  }
337
450
  catch {
338
451
  }
@@ -342,6 +455,7 @@ export async function decideParkedAgent(deps, req, match) {
342
455
  const ctx = {
343
456
  toolCallId: `drv-${ticket.claimId}`,
344
457
  ...(surface.mountsCallerTool !== undefined ? { mountsCallerTool: surface.mountsCallerTool } : {}),
458
+ ...(surface.onBackgroundChildEvent !== undefined ? { onBackgroundChildEvent: surface.onBackgroundChildEvent } : {}),
345
459
  ...(deps.approverSeatFor !== undefined && seatRoot !== undefined
346
460
  ? { onAsk: deps.approverSeatFor({ owner: ownerOfCheckpointScope(req.scope), taskId: match.handle, sessionId: seatRoot, executionLane: execution.lane }) }
347
461
  : {}),
@@ -358,7 +472,7 @@ export async function decideParkedAgent(deps, req, match) {
358
472
  defaultSubagentTailBus.forgetHandle(match.handle);
359
473
  let receipt;
360
474
  try {
361
- receipt = await surface.reviveTool.execute(mintReviveArgs(row, deps.knownAgentTypes ?? new Set()), ctx);
475
+ receipt = await surface.reviveTool.execute(mintReviveArgs(row, definition.agentType), ctx);
362
476
  }
363
477
  catch (e) {
364
478
  const disp = await rollback("execute_threw");
@@ -407,6 +521,6 @@ export async function decideParkedAgent(deps, req, match) {
407
521
  }),
408
522
  };
409
523
  }
410
- return { status: 200, body: { taskId: match.handle, status: "resuming", decision: req.decision, ...buildSettlementEvidence({ at: "agent_revived", gate: req.selectedGate }) } };
524
+ return parkedChildResumedReceipt(match.handle, req.decision, buildSettlementEvidence({ at: "agent_revived", gate: req.selectedGate }));
411
525
  }
412
526
  //# sourceMappingURL=parked-decide.js.map
@@ -30,14 +30,20 @@
30
30
  * 一层行)以 `{ delegationRoot }` 重解 —— 只喂 relay,不挂任何会话级设施、不带 principal,交座判据(上面三条)一个字不动。行上没有根 ⇒ boot 期那只裸 Agent(没有根可交 ⇒ 不接 relay)。
31
31
  * 复活的子代再要审批时的停驻挂点(`plugins/session-store.ts`)不读见证:引擎交它那一行自己的属主,挂点只比对(core 7.62.0 [ref];根见证在挂点的读法随 [ref] P-5 退役)。
32
32
  */
33
- import { type BackgroundAgentRecord, type ToolSpec } from "@sema-agent/core";
33
+ import { type BackgroundAgentRecord, type ToolExecuteContext, type ToolSpec } from "@sema-agent/core";
34
34
  import type { Scenario } from "./capabilities/scenarios.js";
35
35
  import type { SessionFace } from "./session-incarnation.js";
36
- /** 一次赎回用的面:驱动的 Agent 工具(它的完成 relay 绑着行上的根)+ (交座时)与它同出一张列表的继承座。 */
36
+ /** 一次赎回用的面:驱动的 Agent 工具(它的完成 relay 绑着行上的根)+ (交座时)与它同出一张列表的继承座 + 进程级后台子代观察者。 */
37
37
  export interface ParkedReviveSurface {
38
38
  readonly reviveTool: ToolSpec;
39
39
  /** 缺席 = 不交座(core fail-closed:复活的子代不继承任何场景层工具)。 */
40
40
  readonly mountsCallerTool?: (tool: ToolSpec) => boolean;
41
+ /**
42
+ * 进程级后台子代观察者 —— 与 `RunnerDeps.onBackgroundChildEvent` **同一只实例**(fleet 的后台子代发布器,行的 spawn / tick / 终态帧与 `bg_notification` 只经它)。
43
+ * 引擎经 Runner 起跑的工具调用由 Runner 把它填进 `ToolExecuteContext`;赎回腿自己驱动 `execute`、ctx 由赎回腿铸 ⇒ 由本面带进去,复活的那一轮与首轮
44
+ * 进同一只发布器(发布器按实例持每只子代的溯源,换一只实例 = 终态找不到 spawn 时记下的行)。缺席 = 这条部署没有观察者(Runner 那一侧同样缺席)。
45
+ */
46
+ readonly onBackgroundChildEvent?: NonNullable<ToolExecuteContext["onBackgroundChildEvent"]>;
41
47
  }
42
48
  /**
43
49
  * 按行解析赎回面的入参身份:`principal` = 权威 principal(取 checkpoint 的 scope 列,不取行上有损的 `row.scope`);`rootOccupant` = 写口放行的那一位
@@ -50,8 +56,12 @@ export interface ParkedReviveSurfaceIdentity {
50
56
  /** 按行解析赎回面。 */
51
57
  export type ParkedReviveSurfaceFactory = (row: BackgroundAgentRecord, identity: ParkedReviveSurfaceIdentity) => ParkedReviveSurface;
52
58
  /**
53
- * 赎回面工厂。入参 = **内建** default 场景工厂(stage-07 在 center overlay 盖名之前取的那一只;赎回要的是与 spawn 同源的生产装配)。
59
+ * 赎回面工厂。入参 = **内建** default 场景工厂(stage-07 在 center overlay 盖名之前取的那一只;赎回要的是与 spawn 同源的生产装配)+ 进程级后台子代观察者
60
+ * (`RunnerDeps.onBackgroundChildEvent` 那一只,见 {@link ParkedReviveSurface.onBackgroundChildEvent};每一行的面都带它,与交不交座无关)。键必填、值可为 `undefined`:
61
+ * 调用方必须表态这条部署有没有观察者 —— 修前正是「没人交」静默成了复活轮零帧。
54
62
  * 内建 bundle 里没有 Agent 工具 ⇒ `undefined`(park 本就不可达,赎回腿不接线)。
55
63
  */
56
- export declare function createParkedReviveSurface(defaultScenario: Scenario): ParkedReviveSurfaceFactory | undefined;
64
+ export declare function createParkedReviveSurface(defaultScenario: Scenario, observer: {
65
+ readonly onBackgroundChildEvent: ParkedReviveSurface["onBackgroundChildEvent"] | undefined;
66
+ }): ParkedReviveSurfaceFactory | undefined;
57
67
  //# sourceMappingURL=parked-revive-surface.d.ts.map
@@ -1,20 +1,21 @@
1
1
  import { DEFAULT_SUBAGENT_TOOL_NAME } from "@sema-agent/core";
2
2
  const agentOf = (tools) => tools.find((t) => t.name === DEFAULT_SUBAGENT_TOOL_NAME);
3
- export function createParkedReviveSurface(defaultScenario) {
3
+ export function createParkedReviveSurface(defaultScenario, observer) {
4
4
  const bootTool = agentOf(defaultScenario({}).tools);
5
5
  if (bootTool === undefined)
6
6
  return undefined;
7
+ const observed = observer.onBackgroundChildEvent !== undefined ? { onBackgroundChildEvent: observer.onBackgroundChildEvent } : {};
7
8
  return (row, identity) => {
8
9
  const root = row.rootSessionId;
9
10
  if (root === undefined)
10
- return { reviveTool: bootTool };
11
+ return { reviveTool: bootTool, ...observed };
11
12
  const seated = holdsSeat(row.parentSessionId === root, identity);
12
13
  const delegationRoot = { sessionId: root, owner: identity.rootOccupant.owner, incarnation: identity.rootOccupant.incarnation };
13
14
  const tools = (seated ? defaultScenario({}, identity.principal, { sessionId: root, delegationRoot }) : defaultScenario({}, undefined, { delegationRoot })).tools;
14
15
  const reviveTool = agentOf(tools);
15
16
  if (reviveTool === undefined)
16
- return { reviveTool: bootTool };
17
- return seated ? { reviveTool, mountsCallerTool: (t) => tools.includes(t) } : { reviveTool };
17
+ return { reviveTool: bootTool, ...observed };
18
+ return seated ? { reviveTool, mountsCallerTool: (t) => tools.includes(t), ...observed } : { reviveTool, ...observed };
18
19
  };
19
20
  }
20
21
  function holdsSeat(oneLevel, identity) {
@@ -24,18 +24,16 @@
24
24
  * · **peer 可寻址性过滤**:语法外 / 非小写规范形 / 与别条会话折到同一只箱的 id 都不入目录(下面那道
25
25
  * 单射门),那条路由照列;
26
26
  * · **墓碑**:目录会多出「正在删除中」的 `deleted` 记录,那条路由不列;
27
- * · **席位差**:那条路由还有 `runStore.listSessions` 的 legacy 兜底,本席刻意不并(见装配点的注)。
27
+ * · **席位差**:无。那条路由与本席读同一只会话店 lister(run 店不列会话,路由没有兜底)。
28
28
  * 机器钉因此只钉「同一 principal、无 q、无分页、量在 cap 内」那一格的集合相等(它是那条承重条款的
29
29
  * 可执行投影),别把它读成两面恒等。
30
30
  *
31
- * ⚠️ 与设计稿的第二处收紧(亲读实现推翻稿面):稿里把谓词写成 `principal-gate.ts runOwnerReadable`。
32
- * 亲读两只函数后不成立 —— `runOwnerReadable(p, owner, cfg)` 对 `owner === null` **无条件**放行
31
+ * ⚠️ 与设计稿的第二处收紧(亲读实现推翻稿面):稿里把谓词写成 `principal-gate.ts qualsOf`。
32
+ * 亲读两只函数后不成立 —— `qualsOf(p, owner, cfg)` 对 `owner === null` **无条件**放行
33
33
  * (`principal-gate.ts:136-137`,函数体第一行),而**列表面**的第三条件由 store 的
34
- * `owner = ? OR owner IS NULL` 承载,开关是 `legacyUnownedAmnestyOpen(deployment, gateOwner)`
35
- * (`security.ts:119`,它的头注逐字:
36
- * 「单独存在的唯一理由是**列表面**……单实体读/写点一律用三条件齐的 `legacyUnownedSessionOk`」)。
37
- * 拿 `runOwnerReadable` 当列表谓词会让目录比 `GET /v1/sessions` **多列出**别人的无主会话 —— 正好违反
38
- * 稿子自己那条对拍。所以这里用的是列表面那一只:`legacyUnownedAmnestyOpen` + 同一个 lister。
34
+ * `owner = ? OR owner IS NULL` 承载,开关是面表列表面 `session.list` 的 `j4` 格(`owner-faces.ts` 的 `listFilterOf` 派生 `includeUnowned`)。
35
+ * 拿单行读面的放行集当列表谓词会让目录比 `GET /v1/sessions` **多列出**别人的无主会话 —— 正好违反
36
+ * 稿子自己那条对拍。所以这里用的是列表面那一行:`listFilterOf("session.list", …)` + 同一个 lister(与 `GET /v1/sessions` 同一行面表)。
39
37
  *
40
38
  * ## scope 轴
41
39
  *
@@ -1,6 +1,7 @@
1
1
  import { PEER_SESSION_RECORD_SCHEMA_VERSION, isPeerSessionId, normalizePeerName, peerSessionBoxHandle, SESSION_BOX_PREFIX, } from "@sema-agent/core";
2
2
  import { sessionTempoOfRunStatus } from "./plugins/store-contracts.js";
3
- import { legacyUnownedAmnestyOpen } from "./security.js";
3
+ import { claimCallerOf } from "./security.js";
4
+ import { listFilterOf, recoveredSubject } from "./owner-faces.js";
4
5
  export const PEER_DIRECTORY_CAP = 200;
5
6
  function displayNameOf(candidate, sessionId) {
6
7
  return candidate != null && normalizePeerName(candidate) !== "" ? candidate : `session-${sessionId.slice(0, 8)}`;
@@ -13,7 +14,7 @@ export function createPeerDirectory(ctx) {
13
14
  return {
14
15
  listPeerSessions: async (access) => {
15
16
  const scope = access.scope;
16
- const includeUnowned = legacyUnownedAmnestyOpen({ requirePrincipal }, scope);
17
+ const { includeUnowned } = listFilterOf("session.list", claimCallerOf(recoveredSubject(scope), { requirePrincipal }));
17
18
  const answers = await lister({ owner: scope, ...(includeUnowned ? { includeUnowned: true } : {}), limit: PEER_DIRECTORY_CAP + 1 });
18
19
  const rows = answers.map((a) => a.row);
19
20
  const occupantOf = new Map(answers.map((a) => [a.row.sessionId, a.occupant.incarnation ?? null]));
@@ -1,14 +1,59 @@
1
- import type { RuleBehavior } from "@sema-agent/core";
2
1
  /**
3
- * 一张审批卡的**一键整工具同意**能落在这只工具名上吗 —— 仅当没有任何规则词替这个名字说话:它自己没有规则文法(`ruleToolGrammarOf` 答 undefined),
4
- * 也不在 shell 面上(`COARSE_SHELL_TOOLS`:`Bash` 与 `Monitor`,它们的命令按 `Bash(…)` 规则判)。引擎为卡铸整工具候选恰在这个条件下(没有规则文法、
5
- * 也不回答任何规则词的调用);一张 shell 卡上的一键整工具同意 = 对每一个程序的常驻许可,路径 / 名字 / 主机工具的卡各有自己的那一形。
2
+ * [ref] + [ref](core `e298c9e0`,随 7.2.x 提货生效;[ref])—— 规则车道**闭词表的单一属主**。
3
+ *
4
+ * 为什么要一个模块而不是各处各写一份 `z.enum([...])`:同一张词表此前在四处各抄一份字面量
5
+ * (`approval-card.ts` 两腿的 offer schema、`http/routes/rules.ts` 的直通票口行形、
6
+ * `plugins/permission-rule-store-sql.ts` 的 `rules_json` 读/写形),core 给 `PersistedRuleMatch` 加两员
7
+ * (wildcard / subpath)、给 `PersistedRuleTool` 加 Read 时,四份抄件**没有一份**会编译红 —— zod 的 enum
8
+ * 只是运行期的一个 Set,静默把一次上游语义扩张翻成一整类合法行的拒收([ref] 词表纪律说的正是这形:
9
+ * 未知词必须是**编译**错,不是运行期一个安静的 false)。
10
+ *
11
+ * (7.53.x 及以前:每张表在这里转录一份、各带一条双向全等钉;7.54.0 起值本身由 core 导出,见下一段。)
12
+ *
13
+ * ⚠️ 转录**不是**判据:一个词在表里只说「这是 core 定义的一员」,不说「本仓每条腿都接受它」。逐腿的收窄
14
+ * (例如卡编辑臂对 `subpath` 的拒)写在那条腿自己的穷举 `switch` 里,并各带理由。
6
15
  *
7
- * 读者:卡素材铸点的派生事实一致性(`tool-approval.ts`:整工具候选的工具过不了 ⇒ 丢整只候选,卡上不渲一格按不动的「不再询问」)。
8
- * 卡编辑面不读它:引擎的编辑门对任何整工具规则一律拒(编辑只改命令规则),编辑面的形闭集(`rules-consent.ts`)跟着恒拒 —— 那张闭集里「shell 卡上一键整只 shell」
9
- * 的理由就是本谓词的理由,不另写一份判据。方向 fail-closed:答不出 ⇒ 不是。
16
+ * 🔴 **core 7.54.0([ref] 阶段一 K1 / K1b)起,词表的值本身是 core 的包根导出**(`PERSISTED_RULE_MATCHES` / `RULE_OFFER_BATCH_MEMBER_KINDS` /
17
+ * `UNCOVERED_SEGMENT_REASONS` / `EDITED_RULE_BREADTH_WARNING_CODES` / `RULE_APPROVAL_RECORD_SCHEMA`,以及 `RULE_APPROVAL_KINDS` / `RULE_APPROVAL_STATES` /
18
+ * `IMPORTED_SETTINGS_LAYERS` / `RULE_ADD_ORIGINS`)—— 本模块此前的五份转录(各带一条 `Exact<>` 全等钉)随之退役,各消费点直接
19
+ * import core 的值(一个词一处拼写,在引擎里)。本模块只留**不是词表**的那几件:卡形(工具的卡形与匹配词的逐员表态)、直接写口的逐员表态、撤销后的存活词。
20
+ *
21
+ * 持久规则行的工具位**没有**本仓的谓词:「一条持久规则能点名哪只工具」由引擎的校验器从规则文本重投影答(两只店的读写腿、直通票口、直写口都经它);
22
+ * 整工具形(`match: "tool"`,`command: ""`)对任何引擎认得的工具名成立。此前这里有一只「工具有没有规则文法」的谓词,
23
+ * 引擎把裸工具名读成整工具规则之后它与校验器分家(无文法工具的整工具行写不进 SQL 店、导不进直通票口)—— 已退役。
10
24
  */
11
- export declare function cardTakesWholeToolConsent(tool: string): boolean;
25
+ import { ruleToolGrammarOf } from "@sema-agent/core";
26
+ import type { RuleBehavior } from "@sema-agent/core";
27
+ /**
28
+ * 一张审批卡的**卡形** —— 卡上那格「不再询问」说的是哪一种规则。词与定义取自 core 的卡形(`CardRuleForm`,offer 工厂与同意入口共读的那一答):
29
+ * 命令规则词(`Bash`)的卡铸命令规则;名字文法 / 主机文法工具的卡铸**那一条精确值规则**(`Skill(<名>)` / `WebFetch(domain:<主机>)`);
30
+ * 没有任何规则词替它说话的工具的卡铸整工具规则(`tool`);其余 —— 路径工具(不铸路径候选)、shell 面上命令规则词的兄弟(`Monitor`:它的命令按 `Bash(…)` 规则判,
31
+ * 一张 shell 卡上的一键整工具同意 = 对每一个程序的常驻许可)—— 没有卡形。型从 core 的文法词派生(路径文法不是卡形,`tool` 是 core 的第四个词),本仓不抄词表。
32
+ */
33
+ export type CardRuleForm = Exclude<NonNullable<ReturnType<typeof ruleToolGrammarOf>>, "path"> | "tool";
34
+ /**
35
+ * 这只工具的卡形(core 判官 `cardRuleFormOf` 不在包根导出面上 —— 依赖方向门禁深路径 —— 本函数按它的同一份定义读包根导出的 `ruleToolGrammarOf`)。
36
+ * 读者:卡素材铸点的派生事实一致性(`tool-approval.ts`:一只候选的匹配词的卡形 ≠ 这张卡的工具的卡形 ⇒ 丢整只候选,卡上不渲一格按不动的「不再询问」)。
37
+ * 卡编辑面不读它:引擎的编辑门只改命令规则,编辑面的形闭集(`rules-consent.ts`)对其余各形恒拒。方向 fail-closed:答不出 ⇒ 没有卡形。
38
+ */
39
+ export declare function cardRuleFormOf(tool: string): CardRuleForm | undefined;
40
+ /**
41
+ * 每个持久规则匹配词属于哪一种卡形 —— `undefined` = 引擎从不为一张卡铸这一形(名字前缀 / 子域:名字 / 主机工具的卡只铸那一条精确值规则;路径两形:路径工具的卡不铸候选)。
42
+ * `Record` 穷举:core 给 `PersistedRuleMatch` 加员时这里编译红,新词由人表态([ref] 词表纪律);表态成 `undefined` 是恒丢,不会悄悄放宽。
43
+ */
44
+ export declare const CARD_RULE_FORM_OF_MATCH: {
45
+ readonly exact: "command";
46
+ readonly prefix: "command";
47
+ readonly wildcard: "command";
48
+ readonly pattern: "command";
49
+ readonly tool: "tool";
50
+ readonly name: "name";
51
+ readonly host: "domain";
52
+ readonly name_prefix: undefined;
53
+ readonly subdomain: undefined;
54
+ readonly path: undefined;
55
+ readonly subpath: undefined;
56
+ };
12
57
  /**
13
58
  * [ref] —— `RuleBehavior` 每一员在**无同意仪式的直接写口**(`POST /v1/rules`)上的逐员表态。
14
59
  *
@@ -1,7 +1,35 @@
1
1
  import { COARSE_SHELL_TOOLS, ruleToolGrammarOf } from "@sema-agent/core";
2
- export function cardTakesWholeToolConsent(tool) {
3
- return ruleToolGrammarOf(tool) === undefined && !COARSE_SHELL_TOOLS.includes(tool);
2
+ export function cardRuleFormOf(tool) {
3
+ const grammar = ruleToolGrammarOf(tool);
4
+ switch (grammar) {
5
+ case "command":
6
+ case "name":
7
+ case "domain":
8
+ return grammar;
9
+ case "path":
10
+ return undefined;
11
+ case undefined:
12
+ return COARSE_SHELL_TOOLS.includes(tool) ? undefined : "tool";
13
+ default: {
14
+ const unknown = grammar;
15
+ void unknown;
16
+ return undefined;
17
+ }
18
+ }
4
19
  }
20
+ export const CARD_RULE_FORM_OF_MATCH = {
21
+ exact: "command",
22
+ prefix: "command",
23
+ wildcard: "command",
24
+ pattern: "command",
25
+ tool: "tool",
26
+ name: "name",
27
+ host: "domain",
28
+ name_prefix: undefined,
29
+ subdomain: undefined,
30
+ path: undefined,
31
+ subpath: undefined,
32
+ };
5
33
  export const DIRECT_RULE_WRITE_ADMITS = {
6
34
  allow: false,
7
35
  deny: true,
@@ -1,25 +1,3 @@
1
- /**
2
- * [ref] I2(form b 位)—— **SQL 收编日志**:phase 真源与被迁的行**同库**。
3
- *
4
- * 🔴 为什么 phase 必须住 SQL 而不是一个 sidecar 文件(183 r3 按 codex r2-F2):发起收编的那个 pod 在两条
5
- * 腿之间被摧毁时,进程本地的标记会与已经半迁移的 SQL 状态**分家** —— 接棒副本读不到「迁到哪了」。
6
- * 标记与行同事务 ⇒ 崩溃后接棒副本按日志续跑,分家形不存在。
7
- *
8
- * ── 幂等身份 = DB 约束,不是「查了再插」(小票 v2/F2)────────────────────────────────────────────
9
- * `from_principal` 上有 **UNIQUE**(183 D7「拒二次收编」的 DB 强形)。发起走 **insert-or-fetch 原子形**:
10
- * 一条 `INSERT … ON CONFLICT DO NOTHING` / `INSERT IGNORE`,再按 `from_principal` 读回行。
11
- * **禁 SELECT-then-INSERT** —— 那两句之间的窗正是两个并发同参 POST 各插一行(或各读到空)的地方,
12
- * 而 UNIQUE 让「谁插进去了」由数据库仲裁,`affected` 就是判别式。
13
- * 同 from 异 to ⇒ 读回的行 `to_principal` 不等 ⇒ typed conflict(调用方看到的是 409,不是「成功」)。
14
- *
15
- * ── 列的口径 ────────────────────────────────────────────────────────────────────────────────────
16
- * · `legs` / `configs` / `report` 是 **TEXT 不是 JSON 列**:`report` 是 `immutableReport` 的落库形,
17
- * 契约是「逐字节恒同」;JSON 列会按引擎自己的规范形重排键序,而 TEXT 是「存什么读什么」。
18
- * (workflow_run.run / workflow_journal.result 同款先例,理由同源:String()→JSON.parse 的字节面。)
19
- * · 时间列一律 `_ms BIGINT`(schema-naming 门 ② 咬 `_at BIGINT`)。
20
- * · `phase` 是**单调**推进的阶段号,不是乐观锁计数 —— 但它的推进走的就是 CAS(`WHERE phase = :expect`),
21
- * 所以它同时是那把锁。命名不叫 `rev`,因为它不守卫「行内容有没有变」,而守卫「弧走到哪了」。
22
- */
23
1
  import type { Pool as MySqlPool } from "mysql2/promise";
24
2
  import type { Pool as PgPool } from "pg";
25
3
  import { type SqlDriver, type SqlExec, type SqlTxConn } from "./sql-driver.js";
@@ -1,3 +1,4 @@
1
+ import { writeLogText } from "../observability/logger.js";
1
2
  import { createHash } from "node:crypto";
2
3
  import { mysqlDriver, pgDriver } from "./sql-driver.js";
3
4
  import { ensureIndexes } from "./ensure-index.js";
@@ -32,6 +33,7 @@ export const TIDB_ADOPTION_LOG_STATEMENTS = [
32
33
  ) COLLATE utf8mb4_bin`,
33
34
  ];
34
35
  export const ADOPTION_LOG_INDEXES = [
36
+ { table: `${ADOPTION_LOG_TABLE}`, name: "uq_adoption_log_from", columns: ["from_principal"], unique: true },
35
37
  { table: `${ADOPTION_LOG_TABLE}`, name: "idx_adoption_log_state", columns: ["state"] },
36
38
  ];
37
39
  export async function ensurePgAdoptionLogSchema(q) {
@@ -130,7 +132,7 @@ export class SqlAdoptionLogStore {
130
132
  await conn.rollback();
131
133
  }
132
134
  catch (rollbackErr) {
133
- console.warn("[adoption-log] rollback after a failed rebind transaction also failed:", rollbackErr);
135
+ writeLogText("stderr", "[adoption-log] rollback after a failed rebind transaction also failed:", rollbackErr);
134
136
  }
135
137
  throw err;
136
138
  }
@@ -147,7 +149,7 @@ export class SqlAdoptionLogStore {
147
149
  await conn.rollback();
148
150
  }
149
151
  catch (rollbackErr) {
150
- console.warn("[adoption-log] rollback after a failed sweep transaction also failed:", rollbackErr);
152
+ writeLogText("stderr", "[adoption-log] rollback after a failed sweep transaction also failed:", rollbackErr);
151
153
  }
152
154
  throw err;
153
155
  }
@@ -207,7 +209,7 @@ export class SqlAdoptionLogStore {
207
209
  await conn.query(this.q("SELECT RELEASE_LOCK(?) AS released", "SELECT pg_advisory_unlock($1, $2) AS released"), this.db.dialect === "mysql" ? [lockName] : [PG_ADOPTION_LOCK_CLASS, pgLockObjectKey(lockName)]);
208
210
  }
209
211
  catch (releaseErr) {
210
- console.warn("[adoption-log] releasing the adoption arc lock failed (it auto-frees when the connection closes):", releaseErr);
212
+ writeLogText("stderr", "[adoption-log] releasing the adoption arc lock failed (it auto-frees when the connection closes):", releaseErr);
211
213
  }
212
214
  }
213
215
  conn.release();
@@ -0,0 +1,7 @@
1
+ /** 退役的那只账本动词(只在重放认它;写口不会再写)。 */
2
+ export declare const RETIRED_DELETE_BY_TASK_OP_M50 = "deleteByTask";
3
+ /** M50 的窗在 `today`(UTC 日历日 YYYY-MM-DD)开着没有:开 ⇒ 按旧读法重放;关 ⇒ {@link retiredDeleteByTaskClosedWhyM50} 那一句拒。 */
4
+ export declare function retiredDeleteByTaskReplayOpenM50(today: string): boolean;
5
+ /** 窗关之后的拒因(接在账本拒句里,拒句本身带账本路径与通用出路):点名本条、窗的最后一天与那一版之前的出路 —— 版本与日期都读登记行,不手写第二份。 */
6
+ export declare function retiredDeleteByTaskClosedWhyM50(): string;
7
+ //# sourceMappingURL=approval-ask-retired-delete-by-task-m50.d.ts.map
@@ -0,0 +1,17 @@
1
+ import { ONE_TIME_MIGRATIONS, migrationWindowOpen } from "./one-time-migrations.js";
2
+ export const RETIRED_DELETE_BY_TASK_OP_M50 = "deleteByTask";
3
+ function windowRowM50() {
4
+ const row = ONE_TIME_MIGRATIONS.find((w) => w.id === "M50");
5
+ if (row === undefined)
6
+ throw new Error("approval-ask-retired-delete-by-task-m50: the one-time migration registry has no M50 row (the retired deleteByTask journal replay window) — the replay arm outlived its registry row; delete it with that row");
7
+ return row;
8
+ }
9
+ export function retiredDeleteByTaskReplayOpenM50(today) {
10
+ return migrationWindowOpen(windowRowM50(), today);
11
+ }
12
+ export function retiredDeleteByTaskClosedWhyM50() {
13
+ const row = windowRowM50();
14
+ return (`a deleteByTask record — a verb retired in ${row.introducedIn}; its one-time replay window (migration M50) closed after ${row.removableAfter ?? "an unreleased date"}, ` +
15
+ `so this build no longer replays it. A server older than ${row.introducedIn} still knows the verb and its boot compacts the record away: start one once against this data root, then upgrade`);
16
+ }
17
+ //# sourceMappingURL=approval-ask-retired-delete-by-task-m50.js.map