@sema-agent/server 7.147.0 → 7.149.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 (790) hide show
  1. package/MIGRATION.md +1468 -24
  2. package/README.md +35 -7
  3. package/README.zh-CN.md +18 -8
  4. package/USAGE.md +444 -193
  5. package/deploy/sema-up/README.md +16 -5
  6. package/deploy/sema-up/chart/templates/NOTES.txt +1 -1
  7. package/deploy/sema-up/chart/templates/_helpers.tpl +20 -4
  8. package/deploy/sema-up/chart/values.yaml +3 -2
  9. package/deploy/sema-up/cluster-up.sh +74 -176
  10. package/deploy/sema-up/kube-up.sh +29 -49
  11. package/deploy/sema-up/lib/chart-run.sh +23 -0
  12. package/deploy/sema-up/lib/dataroot.sh +3 -3
  13. package/deploy/sema-up/lib/health.sh +62 -13
  14. package/deploy/sema-up/lib/helm-values-cluster.py +18 -0
  15. package/deploy/sema-up/lib/helm-values-kube.py +35 -0
  16. package/deploy/sema-up/lib/regcred.py +8 -0
  17. package/deploy/sema-up/lib/remote/helm-install.sh +3 -0
  18. package/deploy/sema-up/lib/remote/image-import.sh +6 -0
  19. package/deploy/sema-up/lib/remote/machine-precheck.sh +11 -0
  20. package/deploy/sema-up/lib/remote/region-probe.sh +3 -0
  21. package/deploy/sema-up/lib/remote/stack-ready.sh +26 -0
  22. package/deploy/sema-up/lib/remote/vxlan-guard.sh +8 -0
  23. package/deploy/sema-up/lib/render-stack.py +17 -0
  24. package/deploy/sema-up/lib/shell-text.sh +87 -0
  25. package/deploy/sema-up/lib/usage-flags.txt +10 -0
  26. package/deploy/sema-up/lib/usage-head.txt +1 -0
  27. package/deploy/sema-up/lib/usage-tail.txt +13 -0
  28. package/deploy/sema-up/preflight.sh +10 -8
  29. package/deploy/sema-up/sema-up.sh +14 -39
  30. package/deploy/sema-up/smoke.sh +7 -6
  31. package/deploy/sema-up/stack/compose.dataroot.yaml +3 -0
  32. package/deploy/sema-up/stack/compose.yaml +13 -1
  33. package/deploy/sema-up/stack/sema-stack-cluster.yaml +21 -0
  34. package/dist/adoption/plan.d.ts +24 -0
  35. package/dist/adoption/plan.js +53 -1
  36. package/dist/adoption/runner.d.ts +10 -1
  37. package/dist/adoption/runner.js +36 -16
  38. package/dist/approval-card.d.ts +36 -38
  39. package/dist/approval-gate-currency.js +3 -2
  40. package/dist/approval-leg-origin.d.ts +33 -0
  41. package/dist/approval-leg-origin.js +4 -0
  42. package/dist/approval-reconciler.d.ts +4 -13
  43. package/dist/approval-reconciler.js +2 -2
  44. package/dist/approval.d.ts +13 -11
  45. package/dist/approval.js +3 -3
  46. package/dist/audit.d.ts +10 -3
  47. package/dist/audit.js +15 -7
  48. package/dist/auth-bridge.d.ts +9 -15
  49. package/dist/auth-bridge.js +4 -11
  50. package/dist/auth-keys.d.ts +10 -1
  51. package/dist/auth-keys.js +8 -0
  52. package/dist/auto-mode-face.d.ts +10 -7
  53. package/dist/auto-mode-face.js +7 -4
  54. package/dist/background-agent-name.d.ts +19 -1
  55. package/dist/background-agent-name.js +12 -2
  56. package/dist/background-session-reap.d.ts +1 -1
  57. package/dist/bake-runner/main.js +9 -6
  58. package/dist/bench/s1/arms.js +6 -5
  59. package/dist/bench/s1/live-deps.js +5 -2
  60. package/dist/bench/s1/run-firm.js +6 -5
  61. package/dist/bind-host.d.ts +25 -0
  62. package/dist/bind-host.js +25 -0
  63. package/dist/boot/adoption.d.ts +3 -0
  64. package/dist/boot/adoption.js +1 -0
  65. package/dist/boot/deployment-mods.d.ts +1 -1
  66. package/dist/boot/execution-env.d.ts +17 -7
  67. package/dist/boot/execution-env.js +47 -42
  68. package/dist/boot/execution-lane.d.ts +6 -4
  69. package/dist/boot/execution-lane.js +3 -1
  70. package/dist/boot/exit-boundary.d.ts +2 -2
  71. package/dist/boot/exit-boundary.js +6 -5
  72. package/dist/boot/fatal-exit.d.ts +3 -5
  73. package/dist/boot/fatal-exit.js +2 -2
  74. package/dist/boot/leader.d.ts +15 -0
  75. package/dist/boot/leader.js +17 -15
  76. package/dist/boot/memory-consolidation.d.ts +37 -29
  77. package/dist/boot/memory-consolidation.js +11 -5
  78. package/dist/boot/org-delivery.d.ts +3 -2
  79. package/dist/boot/org-memory.js +1 -1
  80. package/dist/boot/parked-revive-gate.js +2 -2
  81. package/dist/boot/reapers.d.ts +4 -3
  82. package/dist/boot/reapers.js +19 -16
  83. package/dist/boot/resolve-spec.d.ts +5 -3
  84. package/dist/boot/resolve-spec.js +60 -70
  85. package/dist/boot/retention-lane.d.ts +4 -4
  86. package/dist/boot/retention-lane.js +2 -2
  87. package/dist/boot/runner-deps.d.ts +28 -7
  88. package/dist/boot/runner-deps.js +14 -5
  89. package/dist/boot/runtime-caps.d.ts +2 -2
  90. package/dist/boot/runtime-caps.js +16 -2
  91. package/dist/boot/session-faces.d.ts +16 -7
  92. package/dist/boot/session-faces.js +114 -94
  93. package/dist/boot/shutdown.d.ts +5 -4
  94. package/dist/boot/shutdown.js +6 -4
  95. package/dist/boot/stage-01-config.d.ts +1 -0
  96. package/dist/boot/stage-01-config.js +13 -4
  97. package/dist/boot/stage-02-web-admin-pull.d.ts +2 -0
  98. package/dist/boot/stage-02-web-admin-pull.js +16 -3
  99. package/dist/boot/stage-03-store-backend.d.ts +4 -0
  100. package/dist/boot/stage-03-store-backend.js +4 -3
  101. package/dist/boot/stage-04-stores.d.ts +3 -0
  102. package/dist/boot/stage-04-stores.js +2 -2
  103. package/dist/boot/stage-05-execution-env.d.ts +8 -3
  104. package/dist/boot/stage-05-execution-env.js +2 -2
  105. package/dist/boot/stage-06-runners.d.ts +12 -13
  106. package/dist/boot/stage-06-runners.js +23 -15
  107. package/dist/boot/stage-07-capability-layer.d.ts +13 -9
  108. package/dist/boot/stage-07-capability-layer.js +5 -3
  109. package/dist/boot/stage-08-reapers.d.ts +13 -9
  110. package/dist/boot/stage-08-reapers.js +3 -3
  111. package/dist/boot/stage-09-leader.d.ts +14 -16
  112. package/dist/boot/stage-09-leader.js +12 -4
  113. package/dist/boot/stage-10-http-server.d.ts +14 -16
  114. package/dist/boot/stage-10-http-server.js +7 -4
  115. package/dist/boot/store-evidence.d.ts +20 -0
  116. package/dist/boot/store-evidence.js +13 -0
  117. package/dist/boot/stores.d.ts +6 -0
  118. package/dist/boot/stores.js +41 -27
  119. package/dist/boot/task-list-lane.d.ts +4 -4
  120. package/dist/boot/web-admin.d.ts +4 -2
  121. package/dist/boot/web-admin.js +55 -35
  122. package/dist/boot/webfetch-summarize-lane.d.ts +1 -1
  123. package/dist/boot-reclaim.d.ts +3 -1
  124. package/dist/boot-reclaim.js +1 -1
  125. package/dist/brain.d.ts +7 -18
  126. package/dist/brain.js +5 -17
  127. package/dist/budget.js +6 -6
  128. package/dist/capabilities/center-plugins.d.ts +7 -1
  129. package/dist/capabilities/center-plugins.js +32 -10
  130. package/dist/capabilities/center-wiring.js +1 -1
  131. package/dist/capabilities/composite-members.d.ts +2 -2
  132. package/dist/capabilities/composite-members.js +2 -2
  133. package/dist/capabilities/repo-tools.d.ts +2 -0
  134. package/dist/capabilities/repo-tools.js +14 -12
  135. package/dist/capabilities/scenarios.d.ts +6 -15
  136. package/dist/capabilities/scenarios.js +11 -16
  137. package/dist/capabilities/skills.d.ts +1 -1
  138. package/dist/capabilities/tool-defer.d.ts +1 -1
  139. package/dist/capability-facts.d.ts +39 -11
  140. package/dist/capability-facts.js +35 -7
  141. package/dist/card-settle-stored-scope.d.ts +56 -0
  142. package/dist/card-settle-stored-scope.js +27 -0
  143. package/dist/card-void.d.ts +8 -13
  144. package/dist/card-void.js +2 -7
  145. package/dist/center-credential-renewer.d.ts +6 -2
  146. package/dist/center-credential-renewer.js +7 -3
  147. package/dist/config-catalog.d.ts +28 -1
  148. package/dist/config-catalog.js +95 -85
  149. package/dist/config-dir-trust.d.ts +37 -4
  150. package/dist/config-dir-trust.js +88 -44
  151. package/dist/config-invariants.d.ts +43 -3
  152. package/dist/config-invariants.js +69 -5
  153. package/dist/config-lkg.d.ts +23 -1
  154. package/dist/config-lkg.js +17 -3
  155. package/dist/config-provider.d.ts +9 -9
  156. package/dist/config-provider.js +25 -110
  157. package/dist/config-pull-failure.d.ts +50 -0
  158. package/dist/config-pull-failure.js +48 -0
  159. package/dist/config-types.d.ts +62 -21
  160. package/dist/config.d.ts +14 -21
  161. package/dist/config.js +141 -64
  162. package/dist/context-window-notice.d.ts +31 -0
  163. package/dist/context-window-notice.js +28 -0
  164. package/dist/delegated-session-owner.d.ts +1 -1
  165. package/dist/deleted-session-ids.d.ts +3 -2
  166. package/dist/deployment-governance.d.ts +3 -3
  167. package/dist/deployment-shape.d.ts +46 -11
  168. package/dist/deployment-shape.js +8 -0
  169. package/dist/egress-redirect.d.ts +25 -7
  170. package/dist/egress-redirect.js +20 -2
  171. package/dist/elicitation.d.ts +6 -5
  172. package/dist/elicitation.js +23 -22
  173. package/dist/engine-identity.d.ts +28 -0
  174. package/dist/engine-identity.js +10 -0
  175. package/dist/entry-problems.d.ts +5 -7
  176. package/dist/entry-problems.js +1 -1
  177. package/dist/env-facts.js +2 -1
  178. package/dist/env-name-allowlist-knobs.d.ts +6 -5
  179. package/dist/env-name-allowlist-knobs.js +5 -0
  180. package/dist/env-witness.d.ts +7 -0
  181. package/dist/env-witness.js +16 -0
  182. package/dist/execution-lane-caps.d.ts +25 -23
  183. package/dist/execution-lane-caps.js +18 -26
  184. package/dist/execution-placement.d.ts +58 -18
  185. package/dist/execution-placement.js +41 -2
  186. package/dist/field-conflict.d.ts +7 -11
  187. package/dist/field-conflict.js +3 -3
  188. package/dist/file-history-capture.d.ts +3 -3
  189. package/dist/file-history-disclosure.js +1 -0
  190. package/dist/fleet/fleet-bus.d.ts +21 -3
  191. package/dist/fleet/fleet-bus.js +35 -25
  192. package/dist/fleet/fleet-reconciler.js +2 -2
  193. package/dist/fleet/serving-lease.js +3 -3
  194. package/dist/fleet-client.js +3 -3
  195. package/dist/fleet-lease.d.ts +0 -1
  196. package/dist/fleet-lease.js +4 -5
  197. package/dist/history-anchor.d.ts +23 -3
  198. package/dist/history-anchor.js +24 -4
  199. package/dist/hitl-delivery.d.ts +90 -0
  200. package/dist/hitl-delivery.js +98 -0
  201. package/dist/hooks/classic-stations.d.ts +8 -11
  202. package/dist/hooks/classic-stations.js +0 -7
  203. package/dist/hooks/command-spawn.d.ts +7 -2
  204. package/dist/hooks/command-spawn.js +13 -6
  205. package/dist/hooks/hook-llm.d.ts +5 -1
  206. package/dist/hooks/hook-llm.js +24 -15
  207. package/dist/hooks/hook-runner.d.ts +72 -57
  208. package/dist/hooks/hook-runner.js +271 -193
  209. package/dist/host-lsp-manager.d.ts +22 -8
  210. package/dist/host-lsp-manager.js +4 -1
  211. package/dist/http/active-run-conflict.d.ts +2 -43
  212. package/dist/http/active-run-conflict.js +3 -7
  213. package/dist/http/admission.d.ts +4 -18
  214. package/dist/http/admission.js +76 -79
  215. package/dist/http/approval-sweeps.d.ts +3 -3
  216. package/dist/http/approval-sweeps.js +56 -31
  217. package/dist/http/caller-trust.d.ts +8 -10
  218. package/dist/http/caller-trust.js +1 -2
  219. package/dist/http/claim-heartbeat.d.ts +49 -0
  220. package/dist/http/claim-heartbeat.js +46 -0
  221. package/dist/http/claimed-run.d.ts +16 -8
  222. package/dist/http/claimed-run.js +8 -0
  223. package/dist/http/dispatch.d.ts +8 -1
  224. package/dist/http/dispatch.js +78 -30
  225. package/dist/http/durable-run-leg.d.ts +11 -4
  226. package/dist/http/durable-run-leg.js +45 -21
  227. package/dist/http/execution-context.d.ts +122 -47
  228. package/dist/http/execution-context.js +135 -43
  229. package/dist/http/health-reader.d.ts +36 -0
  230. package/dist/http/health-reader.js +21 -0
  231. package/dist/http/health-self-report.d.ts +9 -9
  232. package/dist/http/health-self-report.js +4 -4
  233. package/dist/http/idempotency.d.ts +9 -5
  234. package/dist/http/idempotency.js +4 -4
  235. package/dist/http/memory-compliance-failure-reply.d.ts +15 -16
  236. package/dist/http/memory-compliance-failure-reply.js +4 -2
  237. package/dist/http/memory-face-fault-reply.d.ts +67 -0
  238. package/dist/http/memory-face-fault-reply.js +71 -0
  239. package/dist/http/memory-store-refusal-reply.d.ts +1 -1
  240. package/dist/http/memory-store-refusal-reply.js +3 -0
  241. package/dist/http/owner-access.d.ts +392 -67
  242. package/dist/http/owner-access.js +370 -35
  243. package/dist/http/principal-gate.d.ts +39 -89
  244. package/dist/http/principal-gate.js +26 -68
  245. package/dist/http/refusal-body.d.ts +35 -2
  246. package/dist/http/refusal-body.js +34 -0
  247. package/dist/http/request-guards.d.ts +9 -13
  248. package/dist/http/request-guards.js +34 -68
  249. package/dist/http/resume-composition.d.ts +37 -0
  250. package/dist/http/resume-composition.js +18 -0
  251. package/dist/http/resume-ctx-read.d.ts +46 -12
  252. package/dist/http/resume-ctx-read.js +31 -6
  253. package/dist/http/resume-legs.d.ts +54 -19
  254. package/dist/http/resume-legs.js +408 -196
  255. package/dist/http/retired-skill-manifest.d.ts +1 -1
  256. package/dist/http/route-ctx.d.ts +31 -32
  257. package/dist/http/routes/a2a-serve.d.ts +43 -5
  258. package/dist/http/routes/a2a-serve.js +60 -37
  259. package/dist/http/routes/admin-config-refresh.js +2 -2
  260. package/dist/http/routes/admin-drain.js +2 -2
  261. package/dist/http/routes/admin-memory-optout.js +4 -3
  262. package/dist/http/routes/adoption.d.ts +3 -0
  263. package/dist/http/routes/adoption.js +17 -10
  264. package/dist/http/routes/agents-roster.js +13 -7
  265. package/dist/http/routes/approvals-assistant.js +73 -67
  266. package/dist/http/routes/attachments.js +2 -2
  267. package/dist/http/routes/background.d.ts +3 -3
  268. package/dist/http/routes/background.js +9 -17
  269. package/dist/http/routes/capabilities.js +16 -19
  270. package/dist/http/routes/config-catalog.js +2 -2
  271. package/dist/http/routes/devices.d.ts +3 -3
  272. package/dist/http/routes/devices.js +4 -4
  273. package/dist/http/routes/diagnostics.d.ts +29 -3
  274. package/dist/http/routes/diagnostics.js +49 -18
  275. package/dist/http/routes/engine.js +2 -2
  276. package/dist/http/routes/fleet.js +5 -3
  277. package/dist/http/routes/images.js +10 -6
  278. package/dist/http/routes/leader.d.ts +7 -2
  279. package/dist/http/routes/leader.js +12 -3
  280. package/dist/http/routes/mcp-reconnect.d.ts +1 -1
  281. package/dist/http/routes/mcp-reconnect.js +7 -15
  282. package/dist/http/routes/memory-bundle.js +4 -7
  283. package/dist/http/routes/memory-compliance.js +4 -4
  284. package/dist/http/routes/memory-consolidation.js +6 -9
  285. package/dist/http/routes/memory-origin.d.ts +2 -0
  286. package/dist/http/routes/memory-origin.js +7 -8
  287. package/dist/http/routes/memory-policy.js +17 -12
  288. package/dist/http/routes/notify-wake.js +10 -19
  289. package/dist/http/routes/observability.js +3 -3
  290. package/dist/http/routes/principal-inbox.d.ts +4 -2
  291. package/dist/http/routes/principal-inbox.js +5 -4
  292. package/dist/http/routes/projects.d.ts +1 -1
  293. package/dist/http/routes/projects.js +3 -2
  294. package/dist/http/routes/retention-ops.js +6 -9
  295. package/dist/http/routes/rules.js +20 -5
  296. package/dist/http/routes/run-memory-capture.d.ts +2 -2
  297. package/dist/http/routes/run-memory-capture.js +6 -12
  298. package/dist/http/routes/run-permission-mode.d.ts +2 -2
  299. package/dist/http/routes/run-permission-mode.js +10 -17
  300. package/dist/http/routes/runs.js +155 -237
  301. package/dist/http/routes/session-memory-sync.d.ts +2 -2
  302. package/dist/http/routes/session-memory-sync.js +7 -13
  303. package/dist/http/routes/session-sync.d.ts +28 -7
  304. package/dist/http/routes/session-sync.js +63 -50
  305. package/dist/http/routes/sessions-list.d.ts +3 -3
  306. package/dist/http/routes/sessions-list.js +9 -9
  307. package/dist/http/routes/sessions.js +87 -124
  308. package/dist/http/routes/shared-memory.js +6 -6
  309. package/dist/http/routes/side-query.js +2 -2
  310. package/dist/http/routes/tasks.js +237 -187
  311. package/dist/http/routes/trace-usage.d.ts +0 -12
  312. package/dist/http/routes/trace-usage.js +40 -46
  313. package/dist/http/routes/workflows.d.ts +39 -4
  314. package/dist/http/routes/workflows.js +42 -14
  315. package/dist/http/run-concurrency-cap.d.ts +20 -12
  316. package/dist/http/run-concurrency-cap.js +39 -26
  317. package/dist/http/run-read-face.d.ts +3 -5
  318. package/dist/http/run-read-face.js +8 -13
  319. package/dist/http/send.d.ts +12 -3
  320. package/dist/http/send.js +42 -6
  321. package/dist/http/server.d.ts +43 -45
  322. package/dist/http/server.js +61 -11
  323. package/dist/http/sse-log.d.ts +17 -10
  324. package/dist/http/sse-log.js +7 -7
  325. package/dist/http/stored-body-replay.d.ts +12 -0
  326. package/dist/http/stored-body-replay.js +2 -2
  327. package/dist/http/submit-ctx.d.ts +17 -8
  328. package/dist/http/submit-ctx.js +8 -5
  329. package/dist/http/submit-replay.d.ts +19 -6
  330. package/dist/http/submit-replay.js +18 -6
  331. package/dist/http/sync-submit-body.d.ts +3 -4
  332. package/dist/http/sync-submit-body.js +4 -5
  333. package/dist/http/wire-types.d.ts +4 -3
  334. package/dist/identity-source.d.ts +36 -5
  335. package/dist/identity-source.js +27 -0
  336. package/dist/index.d.ts +4 -1
  337. package/dist/index.js +2 -0
  338. package/dist/key-resolver.d.ts +32 -0
  339. package/dist/key-resolver.js +23 -9
  340. package/dist/leader/diffup.js +2 -1
  341. package/dist/leader/endpoint.d.ts +26 -5
  342. package/dist/leader/endpoint.js +154 -14
  343. package/dist/leader/fanout.d.ts +3 -0
  344. package/dist/leader/fanout.js +78 -63
  345. package/dist/leader/leader.d.ts +16 -0
  346. package/dist/leader/leader.js +43 -3
  347. package/dist/leader/merge.d.ts +9 -1
  348. package/dist/leader/merge.js +16 -1
  349. package/dist/leader/repair-wire.js +1 -1
  350. package/dist/leader/wire.d.ts +36 -3
  351. package/dist/leader/wire.js +59 -18
  352. package/dist/leg-facts.d.ts +7 -2
  353. package/dist/leg-facts.js +1 -0
  354. package/dist/local-store-declaration.d.ts +54 -0
  355. package/dist/local-store-declaration.js +59 -0
  356. package/dist/lsp-evict.d.ts +6 -4
  357. package/dist/lsp-evict.js +2 -3
  358. package/dist/mcp-assertion-header.d.ts +1 -1
  359. package/dist/mcp-assertion-header.js +1 -1
  360. package/dist/memory-operator-faces.d.ts +5 -4
  361. package/dist/memory-operator-faces.js +1 -1
  362. package/dist/memory-project-layer.js +1 -1
  363. package/dist/memory-scope.d.ts +33 -6
  364. package/dist/memory-scope.js +68 -19
  365. package/dist/memory-store-refusal.d.ts +5 -2
  366. package/dist/memory-sync-client.d.ts +3 -2
  367. package/dist/memory-sync-client.js +8 -5
  368. package/dist/model-compat.d.ts +17 -8
  369. package/dist/model-compat.js +6 -2
  370. package/dist/model-context-window.d.ts +57 -0
  371. package/dist/model-context-window.js +21 -0
  372. package/dist/model-entry-headers.d.ts +46 -4
  373. package/dist/model-entry-headers.js +2 -2
  374. package/dist/model-entry-refusal.d.ts +40 -20
  375. package/dist/model-entry-refusal.js +57 -30
  376. package/dist/model-plane-face.d.ts +19 -11
  377. package/dist/model-plane-face.js +9 -1
  378. package/dist/model-plane-probe.d.ts +2 -0
  379. package/dist/model-plane-probe.js +17 -0
  380. package/dist/model-provider.d.ts +3 -3
  381. package/dist/model-reach-scope.d.ts +2 -1
  382. package/dist/model-route-endpoint.d.ts +9 -5
  383. package/dist/model-route-endpoint.js +29 -7
  384. package/dist/model-select.d.ts +16 -0
  385. package/dist/model-select.js +4 -0
  386. package/dist/mountinfo.d.ts +37 -0
  387. package/dist/mountinfo.js +47 -0
  388. package/dist/namespaced-rule-name.d.ts +23 -14
  389. package/dist/namespaced-rule-name.js +8 -11
  390. package/dist/net-address.d.ts +1 -1
  391. package/dist/observability/corrupt-read-seat.d.ts +4 -4
  392. package/dist/observability/corrupt-read-seat.js +5 -3
  393. package/dist/observability/fail-open.d.ts +72 -40
  394. package/dist/observability/fail-open.js +74 -40
  395. package/dist/observability/logger.d.ts +22 -1
  396. package/dist/observability/logger.js +89 -12
  397. package/dist/observability/metrics.js +4 -5
  398. package/dist/observability/otel-exporter.js +2 -1
  399. package/dist/observability/principal-context.d.ts +14 -7
  400. package/dist/observability/principal-context.js +8 -3
  401. package/dist/observability/run-terminal.d.ts +7 -1
  402. package/dist/observability/run-terminal.js +6 -2
  403. package/dist/observability/secret-env-scrub.d.ts +1 -1
  404. package/dist/observability/secret-env-scrub.js +1 -1
  405. package/dist/orchestration/hardened-vm-runner.d.ts +1 -0
  406. package/dist/orchestration/hardened-vm-runner.js +11 -5
  407. package/dist/orchestration/hardened-vm-worker-runner.d.ts +0 -14
  408. package/dist/orchestration/hardened-vm-worker-runner.js +5 -0
  409. package/dist/orchestration/hardened-vm-worker.js +2 -1
  410. package/dist/orchestration/workflow-completion-inbox.d.ts +3 -3
  411. package/dist/orchestration/workflow-completion-inbox.js +3 -2
  412. package/dist/org-delivery-gate.d.ts +36 -10
  413. package/dist/org-delivery-gate.js +12 -8
  414. package/dist/outbound-dispatcher.d.ts +1 -1
  415. package/dist/outbound-dispatcher.js +6 -12
  416. package/dist/owner-brands.d.ts +81 -0
  417. package/dist/owner-brands.js +42 -0
  418. package/dist/owner-faces.d.ts +532 -0
  419. package/dist/owner-faces.js +126 -0
  420. package/dist/park-row-commit.d.ts +67 -0
  421. package/dist/park-row-commit.js +76 -0
  422. package/dist/parked-decide.d.ts +76 -12
  423. package/dist/parked-decide.js +152 -11
  424. package/dist/parked-revive-surface.d.ts +14 -4
  425. package/dist/parked-revive-surface.js +5 -4
  426. package/dist/peer-directory.d.ts +7 -9
  427. package/dist/peer-directory.js +3 -2
  428. package/dist/permission-rule-vocab.d.ts +53 -8
  429. package/dist/permission-rule-vocab.js +30 -2
  430. package/dist/plugins/adoption-log-sql.d.ts +3 -25
  431. package/dist/plugins/adoption-log-sql.js +23 -21
  432. package/dist/plugins/approval-ask-retired-delete-by-task-m50.d.ts +7 -0
  433. package/dist/plugins/approval-ask-retired-delete-by-task-m50.js +17 -0
  434. package/dist/plugins/approval-ask-store-file.d.ts +18 -7
  435. package/dist/plugins/approval-ask-store-file.js +37 -14
  436. package/dist/plugins/approval-ask-store-memory.d.ts +12 -4
  437. package/dist/plugins/approval-ask-store-memory.js +24 -10
  438. package/dist/plugins/approval-ask-store-sql.d.ts +40 -21
  439. package/dist/plugins/approval-ask-store-sql.js +44 -15
  440. package/dist/plugins/approval-exemption-skill-cutoff.d.ts +64 -0
  441. package/dist/plugins/approval-exemption-skill-cutoff.js +122 -0
  442. package/dist/plugins/approval-exemption-skill-m46.d.ts +14 -0
  443. package/dist/plugins/approval-exemption-skill-m46.js +21 -0
  444. package/dist/plugins/approval-exemption-store.d.ts +32 -2
  445. package/dist/plugins/approval-exemption-store.js +42 -19
  446. package/dist/plugins/approval-nonce-store.d.ts +39 -12
  447. package/dist/plugins/approval-nonce-store.js +72 -23
  448. package/dist/plugins/blob-backend.d.ts +2 -0
  449. package/dist/plugins/blob-backend.js +9 -6
  450. package/dist/plugins/caching-session-store.d.ts +13 -1
  451. package/dist/plugins/caching-session-store.js +43 -4
  452. package/dist/plugins/checkpoint-index-columns.d.ts +32 -5
  453. package/dist/plugins/checkpoint-index-columns.js +36 -1
  454. package/dist/plugins/checkpoint-store-face.d.ts +83 -10
  455. package/dist/plugins/checkpoint-store-face.js +18 -1
  456. package/dist/plugins/device-store-sql.js +1 -0
  457. package/dist/plugins/ensure-index.d.ts +13 -1
  458. package/dist/plugins/ensure-index.js +154 -21
  459. package/dist/plugins/ensure-schema-lock-policy.d.ts +36 -18
  460. package/dist/plugins/ensure-schema-lock-policy.js +76 -9
  461. package/dist/plugins/file-run-store.d.ts +85 -32
  462. package/dist/plugins/file-run-store.js +177 -94
  463. package/dist/plugins/host-platform.d.ts +24 -3
  464. package/dist/plugins/host-platform.js +15 -1
  465. package/dist/plugins/image-bake-store-sql.js +2 -0
  466. package/dist/plugins/imported-layer-root-retirement.d.ts +2 -2
  467. package/dist/plugins/k8s-pod-reaper.d.ts +1 -3
  468. package/dist/plugins/k8s-pod-reaper.js +0 -1
  469. package/dist/plugins/leader-run-store-sql.d.ts +22 -0
  470. package/dist/plugins/leader-run-store-sql.js +34 -4
  471. package/dist/plugins/local-checkpoint-store.d.ts +62 -23
  472. package/dist/plugins/local-checkpoint-store.js +197 -77
  473. package/dist/plugins/local-data-dir-modes-m39.js +2 -1
  474. package/dist/plugins/local-data-root-admission.d.ts +52 -0
  475. package/dist/plugins/local-data-root-admission.js +100 -0
  476. package/dist/plugins/local-docker-capacity.d.ts +93 -0
  477. package/dist/plugins/local-docker-capacity.js +194 -0
  478. package/dist/plugins/local-docker-reaper.d.ts +92 -0
  479. package/dist/plugins/local-docker-reaper.js +102 -0
  480. package/dist/plugins/local-engine-high-water.d.ts +29 -6
  481. package/dist/plugins/local-engine-high-water.js +27 -19
  482. package/dist/plugins/local-session-store.d.ts +458 -140
  483. package/dist/plugins/local-session-store.js +906 -292
  484. package/dist/plugins/local-session-window.d.ts +3 -2
  485. package/dist/plugins/local-session-window.js +3 -2
  486. package/dist/plugins/local-sidecar-quarantine.js +3 -2
  487. package/dist/plugins/local-task-attachment-store.d.ts +18 -1
  488. package/dist/plugins/local-task-attachment-store.js +22 -1
  489. package/dist/plugins/memory-embedder.js +9 -7
  490. package/dist/plugins/memory-engine-pg.d.ts +3 -2
  491. package/dist/plugins/memory-engine-pg.js +14 -5
  492. package/dist/plugins/memory-engine-sql-apply.d.ts +8 -4
  493. package/dist/plugins/memory-engine-sql-apply.js +6 -8
  494. package/dist/plugins/memory-engine-tidb.d.ts +4 -2
  495. package/dist/plugins/memory-engine-tidb.js +11 -2
  496. package/dist/plugins/memory-optout-grant-store-sql.d.ts +1 -1
  497. package/dist/plugins/memory-optout-grant-store-sql.js +3 -3
  498. package/dist/plugins/memory-run-store.d.ts +53 -36
  499. package/dist/plugins/memory-run-store.js +116 -88
  500. package/dist/plugins/one-time-migration-marker.d.ts +26 -0
  501. package/dist/plugins/one-time-migration-marker.js +13 -0
  502. package/dist/plugins/one-time-migrations.d.ts +214 -47
  503. package/dist/plugins/one-time-migrations.js +481 -135
  504. package/dist/plugins/org-delivery-quota-store.d.ts +34 -11
  505. package/dist/plugins/org-delivery-quota-store.js +31 -15
  506. package/dist/plugins/permission-rule-store-file.d.ts +3 -3
  507. package/dist/plugins/permission-rule-store-sql.d.ts +5 -64
  508. package/dist/plugins/permission-rule-store-sql.js +11 -95
  509. package/dist/plugins/pg-pool.d.ts +2 -32
  510. package/dist/plugins/pg-pool.js +24 -17
  511. package/dist/plugins/remote-env-device.d.ts +3 -2
  512. package/dist/plugins/remote-env-e2b.d.ts +8 -32
  513. package/dist/plugins/remote-env-e2b.js +44 -32
  514. package/dist/plugins/remote-env-host.d.ts +51 -17
  515. package/dist/plugins/remote-env-host.js +111 -42
  516. package/dist/plugins/remote-env-k8s.d.ts +40 -45
  517. package/dist/plugins/remote-env-k8s.js +111 -60
  518. package/dist/plugins/remote-env-local-docker.d.ts +152 -15
  519. package/dist/plugins/remote-env-local-docker.js +352 -72
  520. package/dist/plugins/remote-scratchpad.js +4 -0
  521. package/dist/plugins/retention-deployment.d.ts +49 -17
  522. package/dist/plugins/retention-deployment.js +39 -8
  523. package/dist/plugins/run-preview-m45.d.ts +11 -0
  524. package/dist/plugins/run-preview-m45.js +19 -0
  525. package/dist/plugins/run-store-sql.d.ts +82 -75
  526. package/dist/plugins/run-store-sql.js +164 -125
  527. package/dist/plugins/s3-answer.d.ts +2 -1
  528. package/dist/plugins/sandbox-reaper.d.ts +26 -0
  529. package/dist/plugins/sandbox-reaper.js +2 -0
  530. package/dist/plugins/scenario-prefix-switch-m42.d.ts +56 -0
  531. package/dist/plugins/scenario-prefix-switch-m42.js +56 -0
  532. package/dist/plugins/scheduler-support.d.ts +16 -1
  533. package/dist/plugins/scheduler-support.js +22 -2
  534. package/dist/plugins/schema-consistency.d.ts +131 -14
  535. package/dist/plugins/schema-consistency.js +388 -18
  536. package/dist/plugins/schema-drift-sentence.d.ts +10 -6
  537. package/dist/plugins/schema-drift-sentence.js +15 -7
  538. package/dist/plugins/schema-ensure-legs.d.ts +9 -0
  539. package/dist/plugins/schema-ensure-legs.js +1 -1
  540. package/dist/plugins/schema-indexes.js +3 -0
  541. package/dist/plugins/schema-live-columns.d.ts +14 -5
  542. package/dist/plugins/schema-live-columns.js +10 -10
  543. package/dist/plugins/send-user-file.js +2 -1
  544. package/dist/plugins/session-birth.d.ts +37 -0
  545. package/dist/plugins/session-birth.js +38 -0
  546. package/dist/plugins/session-epoch-anchor.d.ts +40 -12
  547. package/dist/plugins/session-epoch-anchor.js +33 -11
  548. package/dist/plugins/session-ext-table.d.ts +27 -3
  549. package/dist/plugins/session-ext-table.js +19 -6
  550. package/dist/plugins/session-fork.d.ts +15 -1
  551. package/dist/plugins/session-fork.js +3 -0
  552. package/dist/plugins/session-ownership.d.ts +1 -1
  553. package/dist/plugins/session-placement.d.ts +27 -20
  554. package/dist/plugins/session-placement.js +15 -12
  555. package/dist/plugins/session-row-sql.d.ts +12 -0
  556. package/dist/plugins/session-row-sql.js +3 -3
  557. package/dist/plugins/session-run-rollup.d.ts +29 -0
  558. package/dist/plugins/session-run-rollup.js +40 -0
  559. package/dist/plugins/session-store-sql.d.ts +38 -12
  560. package/dist/plugins/session-store-sql.js +130 -30
  561. package/dist/plugins/session-withdraw-sql.d.ts +36 -0
  562. package/dist/plugins/session-withdraw-sql.js +42 -0
  563. package/dist/plugins/shared-memory-store-sql.d.ts +0 -69
  564. package/dist/plugins/shared-memory-store-sql.js +2 -1
  565. package/dist/plugins/shell-sentinel-owner-m48.d.ts +42 -0
  566. package/dist/plugins/shell-sentinel-owner-m48.js +9 -0
  567. package/dist/plugins/snapshot-bucket-presence.d.ts +2 -1
  568. package/dist/plugins/sql-driver.d.ts +1 -1
  569. package/dist/plugins/sql-driver.js +2 -1
  570. package/dist/plugins/sql-errors.d.ts +32 -5
  571. package/dist/plugins/sql-errors.js +55 -7
  572. package/dist/plugins/sql-json-column.d.ts +8 -7
  573. package/dist/plugins/sql-json-column.js +10 -6
  574. package/dist/plugins/stop-then-start-sentence.d.ts +16 -0
  575. package/dist/plugins/stop-then-start-sentence.js +7 -0
  576. package/dist/plugins/store-backend.d.ts +99 -16
  577. package/dist/plugins/store-backend.js +230 -65
  578. package/dist/plugins/store-contracts.d.ts +123 -33
  579. package/dist/plugins/store-contracts.js +38 -1
  580. package/dist/plugins/store-fault.d.ts +28 -2
  581. package/dist/plugins/store-fault.js +20 -2
  582. package/dist/plugins/task-attachment-store.d.ts +15 -3
  583. package/dist/plugins/task-attachment-store.js +22 -9
  584. package/dist/plugins/tidb-pool.d.ts +11 -6
  585. package/dist/plugins/tidb-pool.js +39 -18
  586. package/dist/plugins/web-search.js +5 -3
  587. package/dist/plugins/workflow-run-store-sql.d.ts +6 -1
  588. package/dist/plugins/workflow-run-store-sql.js +11 -5
  589. package/dist/plugins/workspace-custody.d.ts +44 -0
  590. package/dist/plugins/workspace-custody.js +47 -0
  591. package/dist/principal-jwt.d.ts +4 -4
  592. package/dist/principal-jwt.js +20 -5
  593. package/dist/principal-shape.d.ts +41 -0
  594. package/dist/principal-shape.js +19 -0
  595. package/dist/project-identity.d.ts +8 -7
  596. package/dist/project-identity.js +40 -17
  597. package/dist/project-layer-key.d.ts +13 -2
  598. package/dist/project-layer-key.js +9 -1
  599. package/dist/question.d.ts +13 -23
  600. package/dist/question.js +21 -39
  601. package/dist/read-deny-floor-notice.d.ts +36 -0
  602. package/dist/read-deny-floor-notice.js +40 -0
  603. package/dist/{plain-string-record.d.ts → request-declaration-disposition.d.ts} +9 -23
  604. package/dist/request-declaration-disposition.js +39 -0
  605. package/dist/request-declaration-refusal.d.ts +35 -12
  606. package/dist/request-declaration-refusal.js +21 -9
  607. package/dist/request-form.d.ts +58 -0
  608. package/dist/request-form.js +72 -0
  609. package/dist/request-image-urls.d.ts +8 -2
  610. package/dist/request-image-urls.js +2 -1
  611. package/dist/request-images.d.ts +20 -0
  612. package/dist/request-images.js +59 -0
  613. package/dist/request-key-closure.d.ts +6 -7
  614. package/dist/request-key-closure.js +15 -2
  615. package/dist/resource-suspend.d.ts +7 -16
  616. package/dist/resource-suspend.js +1 -1
  617. package/dist/retired-name-host-notice.d.ts +21 -0
  618. package/dist/retired-name-host-notice.js +12 -0
  619. package/dist/rule-entry-list.d.ts +2 -2
  620. package/dist/rule-entry-list.js +3 -4
  621. package/dist/rule-issue-reading.d.ts +58 -0
  622. package/dist/rule-issue-reading.js +14 -0
  623. package/dist/rules-consent.d.ts +5 -3
  624. package/dist/rules-consent.js +1 -0
  625. package/dist/run-acceptance.d.ts +3 -1
  626. package/dist/run-acceptance.js +3 -0
  627. package/dist/run-cancel-card.d.ts +28 -0
  628. package/dist/run-cancel-card.js +19 -0
  629. package/dist/run-cancel-context.d.ts +10 -0
  630. package/dist/run-cancel-context.js +1 -0
  631. package/dist/run-local.d.ts +14 -6
  632. package/dist/run-local.js +117 -90
  633. package/dist/run-stale-default.d.ts +7 -0
  634. package/dist/run-stale-default.js +2 -0
  635. package/dist/runs.d.ts +56 -21
  636. package/dist/runs.js +73 -43
  637. package/dist/runtime-caps-resolver.d.ts +21 -6
  638. package/dist/runtime-caps-resolver.js +17 -4
  639. package/dist/runtime-governance.d.ts +2 -2
  640. package/dist/runtime-governance.js +5 -3
  641. package/dist/sealed-key-layout.d.ts +12 -5
  642. package/dist/sealed-key-layout.js +5 -0
  643. package/dist/sealed-key.d.ts +12 -2
  644. package/dist/sealed-key.js +115 -27
  645. package/dist/security.d.ts +128 -158
  646. package/dist/security.js +163 -59
  647. package/dist/sema-config-dir.d.ts +20 -0
  648. package/dist/sema-config-dir.js +25 -0
  649. package/dist/server-secret-env.d.ts +55 -25
  650. package/dist/server-secret-env.js +75 -22
  651. package/dist/session-agent.d.ts +3 -2
  652. package/dist/session-children-retire.d.ts +13 -8
  653. package/dist/session-children-retire.js +9 -7
  654. package/dist/session-deletion.d.ts +88 -0
  655. package/dist/session-deletion.js +8 -0
  656. package/dist/session-erase.d.ts +145 -0
  657. package/dist/session-erase.js +115 -0
  658. package/dist/session-error-wire.d.ts +5 -5
  659. package/dist/session-error-wire.js +1 -1
  660. package/dist/session-incarnation.d.ts +52 -5
  661. package/dist/session-incarnation.js +19 -2
  662. package/dist/session-policy-wire.d.ts +6 -3
  663. package/dist/session-policy-wire.js +11 -1
  664. package/dist/session-resident-background.d.ts +0 -71
  665. package/dist/session-resident-background.js +4 -3
  666. package/dist/session-row.d.ts +2 -1
  667. package/dist/session-rules-seat.d.ts +12 -0
  668. package/dist/session-rules-seat.js +19 -0
  669. package/dist/session-titler.d.ts +7 -15
  670. package/dist/session-titler.js +1 -1
  671. package/dist/session-workspace.d.ts +3 -3
  672. package/dist/spec-fields.d.ts +57 -3
  673. package/dist/spec-fields.js +72 -51
  674. package/dist/store-admission.d.ts +33 -0
  675. package/dist/store-admission.js +49 -0
  676. package/dist/store-posture.d.ts +141 -20
  677. package/dist/store-posture.js +205 -3
  678. package/dist/stored-request-hooks-m20.js +2 -2
  679. package/dist/stores-sql/background-agent-store-sql.d.ts +11 -2
  680. package/dist/stores-sql/background-agent-store-sql.js +73 -20
  681. package/dist/stores-sql/checkpoint-store-sql.d.ts +34 -29
  682. package/dist/stores-sql/checkpoint-store-sql.js +78 -49
  683. package/dist/stores-sql/file-history-store-sql.d.ts +1 -1
  684. package/dist/stores-sql/file-history-store-sql.js +3 -5
  685. package/dist/stores-sql/mailbox-store-sql.d.ts +7 -4
  686. package/dist/stores-sql/mailbox-store-sql.js +31 -32
  687. package/dist/stores-sql/pg-session-storage.d.ts +7 -5
  688. package/dist/stores-sql/pg-session-storage.js +54 -46
  689. package/dist/stores-sql/retention-store-sql.d.ts +87 -19
  690. package/dist/stores-sql/retention-store-sql.js +92 -27
  691. package/dist/stores-sql/session-policy-store-sql.d.ts +32 -10
  692. package/dist/stores-sql/session-policy-store-sql.js +44 -36
  693. package/dist/stores-sql/session-write-hooks.d.ts +12 -6
  694. package/dist/stores-sql/tidb-session-storage.d.ts +4 -4
  695. package/dist/stores-sql/tidb-session-storage.js +13 -8
  696. package/dist/stores-sql/tidb-session-store.d.ts +36 -17
  697. package/dist/stores-sql/tidb-session-store.js +69 -39
  698. package/dist/stores-sql/tool-result-store-sql.d.ts +1 -1
  699. package/dist/stores-sql/tool-result-store-sql.js +4 -6
  700. package/dist/stores-sql/windowed-session-storage.d.ts +5 -0
  701. package/dist/stores-sql/windowed-session-storage.js +9 -0
  702. package/dist/submission-exit.d.ts +50 -0
  703. package/dist/submission-exit.js +108 -0
  704. package/dist/task-a2a.d.ts +3 -8
  705. package/dist/task-a2a.js +28 -30
  706. package/dist/task-cwd.d.ts +43 -7
  707. package/dist/task-cwd.js +11 -0
  708. package/dist/task-mcp.d.ts +3 -3
  709. package/dist/task-mcp.js +4 -4
  710. package/dist/task-settings.d.ts +14 -10
  711. package/dist/task-settings.js +19 -7
  712. package/dist/terminal.d.ts +27 -43
  713. package/dist/terminal.js +49 -14
  714. package/dist/tool-approval.d.ts +173 -163
  715. package/dist/tool-approval.js +247 -232
  716. package/dist/trace/core-keyset-guard.d.ts +13 -6
  717. package/dist/trace/core-vocab-wire.d.ts +95 -0
  718. package/dist/trace/core-vocab-wire.js +15 -0
  719. package/dist/trace/engine-notice-wire.d.ts +24 -21
  720. package/dist/trace/engine-notice-wire.js +7 -3
  721. package/dist/trace/exit-seat.d.ts +30 -4
  722. package/dist/trace/exit-seat.js +40 -36
  723. package/dist/trace/extension-call-face.d.ts +3 -2
  724. package/dist/trace/extension-call-face.js +3 -1
  725. package/dist/trace/ledger-events.d.ts +4 -7
  726. package/dist/trace/ledger-sink.d.ts +4 -31
  727. package/dist/trace/ledger-sink.js +0 -11
  728. package/dist/trace/model-segment.d.ts +5 -5
  729. package/dist/trace/model-segment.js +5 -5
  730. package/dist/trace/project.d.ts +59 -44
  731. package/dist/trace/project.js +60 -26
  732. package/dist/trace/redact.d.ts +135 -27
  733. package/dist/trace/redact.js +884 -260
  734. package/dist/trace/self-minted-wire.d.ts +567 -20
  735. package/dist/trace/self-minted-wire.js +205 -24
  736. package/dist/trace/wire-projection-faces.d.ts +5 -6
  737. package/dist/trace/wire-projection-faces.js +2 -2
  738. package/dist/upstream-body.d.ts +23 -0
  739. package/dist/upstream-body.js +16 -0
  740. package/dist/url-refusal.d.ts +3 -3
  741. package/dist/url-refusal.js +11 -4
  742. package/dist/user-authored-text.d.ts +1 -1
  743. package/dist/user-input-ledger.d.ts +7 -8
  744. package/dist/user-input-ledger.js +1 -1
  745. package/dist/web-admin-client/apply-effective.d.ts +6 -3
  746. package/dist/web-admin-client/apply-effective.js +33 -23
  747. package/dist/web-admin-client/apply-ledger.d.ts +16 -7
  748. package/dist/web-admin-client/apply-ledger.js +5 -2
  749. package/dist/web-admin-client/center-request.d.ts +2 -2
  750. package/dist/web-admin-client/center-request.js +15 -15
  751. package/dist/web-admin-client/effective-keys.d.ts +1 -1
  752. package/dist/web-admin-client/effective-keys.js +1 -1
  753. package/dist/web-admin-client/entry-metadata.d.ts +8 -0
  754. package/dist/web-admin-client/entry-metadata.js +13 -0
  755. package/dist/web-admin-client/http-client.d.ts +1 -1
  756. package/dist/web-admin-client/http-client.js +23 -4
  757. package/dist/web-admin-client/mcp-revocation.d.ts +1 -1
  758. package/dist/web-admin-client/mcp-revocation.js +2 -1
  759. package/dist/web-admin-client/read-warnings.d.ts +1 -0
  760. package/dist/web-admin-client/read-warnings.js +1 -0
  761. package/dist/web-admin-client/restart-signal.js +8 -4
  762. package/dist/web-admin-client/skills-mcp.d.ts +2 -2
  763. package/dist/web-admin-client/types.d.ts +1 -2
  764. package/dist/workspace-space.d.ts +3 -2
  765. package/docs/DEVICE-EXECUTOR-PROTOCOL.md +4 -4
  766. package/docs/error-text-lexicon.json +317 -0
  767. package/package.json +8 -3
  768. package/scripts/drain-check-local.mjs +118 -147
  769. package/scripts/drain-check.mysql.sql +22 -2
  770. package/scripts/drain-check.pg.sql +22 -2
  771. package/scripts/embed-minimal.mjs +183 -0
  772. package/wire-changes/server@7.148.0.json +1517 -0
  773. package/wire-changes/server@7.149.0.json +372 -0
  774. package/dist/http/memory-control-plane-corrupt-reply.d.ts +0 -25
  775. package/dist/http/memory-control-plane-corrupt-reply.js +0 -19
  776. package/dist/http/memory-layer-reply.d.ts +0 -30
  777. package/dist/http/memory-layer-reply.js +0 -24
  778. package/dist/lsp/e2b-bridge.d.ts +0 -57
  779. package/dist/lsp/e2b-bridge.js +0 -139
  780. package/dist/lsp/e2b-manager.d.ts +0 -93
  781. package/dist/lsp/e2b-manager.js +0 -178
  782. package/dist/lsp/lsp-frames.d.ts +0 -14
  783. package/dist/lsp/lsp-frames.js +0 -25
  784. package/dist/lsp/manager.d.ts +0 -129
  785. package/dist/lsp/manager.js +0 -127
  786. package/dist/lsp/types.d.ts +0 -12
  787. package/dist/lsp/types.js +0 -2
  788. package/dist/lsp/ws-transport.d.ts +0 -40
  789. package/dist/lsp/ws-transport.js +0 -210
  790. package/dist/plain-string-record.js +0 -70
@@ -2,7 +2,7 @@ import { homedir } from "node:os";
2
2
  import { createCorruptReadSeat, createDurableAbsenceSeat } from "../observability/corrupt-read-seat.js";
3
3
  import { createLogger } from "../observability/logger.js";
4
4
  import { join } from "node:path";
5
- import { existsSync, readdirSync } from "node:fs";
5
+ import { existsSync } from "node:fs";
6
6
  import { AdoptionError, FileStorageBackend } from "@sema-agent/core";
7
7
  import { FileWorkflowJournalStore } from "@sema-agent/core";
8
8
  import { fileSessionCaptureRecordStore } from "@sema-agent/core";
@@ -12,14 +12,22 @@ import { TiDBWorkflowRunStore, TiDBWorkflowCompletionInbox, TiDBWorkflowNotifyJo
12
12
  import { FileRunStore } from "./file-run-store.js";
13
13
  import { LocalWorkflowParkDecisionStore } from "../orchestration/workflow-park-decision.js";
14
14
  import { StoreBootRefusalError } from "./store-contracts.js";
15
+ import { databaseAnswerCodesOf, isDeploymentFaultError } from "./sql-errors.js";
15
16
  import { buildStoreOpenRefusalTail } from "./store-open-refusal.js";
16
17
  import { acquireLocalBackendWithWait } from "./store-lock-wait.js";
17
- import { NO_SQL_MIGRATIONS, assertExecutionPlacementSwitchAdmissibleOnPool, backfillLocalAskExecutionLanes, backfillLocalExecutionPlacements, runSqlOneTimeMigrations } from "./one-time-migrations.js";
18
+ import { NO_SQL_MIGRATIONS, migrationCarried, assertExecutionPlacementSwitchAdmissibleOnPool, backfillLocalAskExecutionLanes, backfillLocalExecutionPlacements, runSqlOneTimeMigrations } from "./one-time-migrations.js";
18
19
  import { deployedExecutionLanes } from "../execution-lane-caps.js";
20
+ import { DEPLOYMENT_SHAPE_PREDICATES } from "../deployment-shape.js";
21
+ import { LOCAL_MARKER_FILE, switchLocalScenarioPrefixM42 } from "./scenario-prefix-switch-m42.js";
22
+ import { dropLocalLegacySkillExemptionsM46 } from "./approval-exemption-skill-m46.js";
23
+ import { LOCAL_SKILL_EXEMPTION_CUTOFF_FILE, assertSkillExemptionCutoffHeldOnPool } from "./approval-exemption-skill-cutoff.js";
24
+ import { SKILL_EXEMPTION_CUTOFF_ID } from "./one-time-migration-marker.js";
25
+ import { LocalTaskAttachmentStore } from "./local-task-attachment-store.js";
19
26
  import { assertRetiredSchemaAbsentOnPool } from "./schema-consistency.js";
20
27
  import { LocalSessionStore, createLocalSessionRepo } from "./local-session-store.js";
21
- import { SESSION_DURABILITY, SESSION_PLACEMENTS } from "./session-placement.js";
22
- import { LocalCheckpointStore } from "./local-checkpoint-store.js";
28
+ import { localStoreDeclarationOf } from "../local-store-declaration.js";
29
+ import { SESSION_PLACEMENTS } from "./session-placement.js";
30
+ import { LocalCheckpointStore, dropLocalCheckpointCtxStrict } from "./local-checkpoint-store.js";
23
31
  import { FileResumeAnchorStore } from "./file-resume-anchor-store.js";
24
32
  import { TiDBApprovalExemptionStore, PgApprovalExemptionStore, FileApprovalExemptionStore } from "./approval-exemption-store.js";
25
33
  import { TiDBApprovalNonceStore, PgApprovalNonceStore, FileApprovalNonceStore } from "./approval-nonce-store.js";
@@ -33,6 +41,7 @@ import { FileUserInputLedgerStore } from "./user-input-ledger-file.js";
33
41
  import { TiDBUserInputLedgerStore, PgUserInputLedgerStore } from "./user-input-ledger-sql.js";
34
42
  import { TiDBResumeAnchorStore, PgResumeAnchorStore } from "./resume-anchor-store-sql.js";
35
43
  import { TiDBSessionPolicyStore, PgSessionPolicyStore } from "../stores-sql/session-policy-store-sql.js";
44
+ import { countClientWriteOn } from "./session-withdraw-sql.js";
36
45
  import { TiDBWorkflowJournalStore, PgWorkflowJournalStore } from "../stores-sql/workflow-journal-store-sql.js";
37
46
  import { TiDBFileHistoryStore, PgFileHistoryStore, FILE_HISTORY_BLOB_KEY_PREFIX } from "../stores-sql/file-history-store-sql.js";
38
47
  import { SqlBlobIndex } from "../stores-sql/blob-index-sql.js";
@@ -59,19 +68,25 @@ import { SqlSessionStore } from "./session-store-sql.js";
59
68
  import { TiDBSharedMemoryStore, PgSharedMemoryStore } from "./shared-memory-store-sql.js";
60
69
  import { TiDBAdoptionLogStore, PgAdoptionLogStore } from "./adoption-log-sql.js";
61
70
  import { SqlRetentionStore } from "../stores-sql/retention-store-sql.js";
71
+ import { SessionDeletionSupersededError } from "../execution-placement.js";
72
+ import { sessionTenantScope } from "../session-children-retire.js";
62
73
  import { sqlStoreRetention } from "./retention-declaration.js";
63
- import { createRetentionDeploymentHooks } from "./retention-deployment.js";
74
+ import { createRetentionDeploymentHooks, createSessionRowsHook, sweepLateCompletionRows } from "./retention-deployment.js";
75
+ import { seatText } from "../trace/exit-seat.js";
64
76
  import { createSqlSessionWriteHooks } from "./session-store-sql.js";
65
77
  import { TiDBRetentionLaneStore, PgRetentionLaneStore } from "./retention-lane-store-sql.js";
66
78
  import { createSqlPermissionRuleStores } from "./permission-rule-store-sql.js";
67
79
  import { FILE_PERMISSION_RULE_DIR, createFilePermissionRuleStores, fileRuleBucketOwners, isFileBucketDamaged } from "./permission-rule-store-file.js";
68
80
  import { retireImportedLayerRootAllows } from "./imported-layer-root-retirement.js";
69
81
  import { buildDataDirLayout, tightenLocalDataDirModes } from "./local-data-dir-modes-m39.js";
70
- import { holdEngineHighWater } from "./local-engine-high-water.js";
71
- import { serviceVersion } from "../service-version.js";
82
+ import { admitLocalDataRoot, holdLocalDataRootAdmission } from "./local-data-root-admission.js";
72
83
  import { mysqlDriver, pgDriver } from "./sql-driver.js";
73
- import { storeDegradedReasonFor } from "../store-posture.js";
84
+ import { localDataRootHoldsData, storeDegradedReasonFor } from "../store-posture.js";
74
85
  import { openWithinWait } from "./store-open-wait.js";
86
+ export function createRunStallWiring(config, observers) {
87
+ const count = observers?.runStallVerdicts;
88
+ return { windowMs: () => config.runStaleSec * 1000, onVerdicts: (landed) => count?.(landed) };
89
+ }
75
90
  export function workflowJournalOf(config, backend) {
76
91
  return config.selfOrchestrationEnabled && backend ? backend.workflowJournal() : undefined;
77
92
  }
@@ -127,14 +142,14 @@ async function legacySweepImpl(config, dialect, pool) {
127
142
  }
128
143
  export function createSqlRetentionCallHooks(db, opts, input) {
129
144
  const deployment = createRetentionDeploymentHooks(db.dialect, opts, input);
130
- return { hooks: { retention: deployment.hooks.retention, session: createSqlSessionWriteHooks(db) }, endedSpaces: deployment.endedSpaces };
145
+ return { hooks: { retention: deployment.hooks.retention, session: createSqlSessionWriteHooks(db) }, attachmentShas: deployment.attachmentShas };
131
146
  }
132
147
  export function createSqlRetentionExecutor(db, opts) {
133
- const logged = opts.logger !== undefined ? { logger: opts.logger } : {};
134
- const reads = new SqlRetentionStore(db, logged);
148
+ const storeOpts = { ...(opts.mailboxTables ? { sessionBoxScope: sessionTenantScope } : {}), ...(opts.logger !== undefined ? { logger: opts.logger } : {}) };
149
+ const reads = new SqlRetentionStore(db, storeOpts);
135
150
  const forCall = (input) => {
136
151
  const hooks = createSqlRetentionCallHooks(db, opts, input);
137
- return { store: new SqlRetentionStore(db, { ...logged, transactionHooks: hooks.hooks }), hooks, call: { domain: input.domain, cutoffMs: input.cutoffMs } };
152
+ return { store: new SqlRetentionStore(db, { ...storeOpts, transactionHooks: hooks.hooks }), hooks, call: { domain: input.domain, cutoffMs: input.cutoffMs } };
138
153
  };
139
154
  return {
140
155
  retention: reads.retention,
@@ -146,9 +161,11 @@ export function createSqlRetentionExecutor(db, opts) {
146
161
  },
147
162
  deleteExpiredSessions: async (input) => {
148
163
  const one = forCall(input);
149
- const receipt = await one.store.deleteExpiredSessions(one.call);
150
- const endedSpaces = one.hooks.endedSpaces();
151
- return endedSpaces.length > 0 ? { ...receipt, endedSpaces } : receipt;
164
+ const { erasedRows, ...receipt } = await one.store.deleteExpiredSessions(one.call);
165
+ if (erasedRows === undefined)
166
+ return receipt;
167
+ await afterSessionErase(db, opts, erasedRows.sessions);
168
+ return { ...receipt, erased: { ...erasedRows, attachmentShas: one.hooks.attachmentShas() } };
152
169
  },
153
170
  deleteOrphanToolResults: async (input) => {
154
171
  const one = forCall(input);
@@ -156,27 +173,72 @@ export function createSqlRetentionExecutor(db, opts) {
156
173
  },
157
174
  };
158
175
  }
176
+ async function afterSessionErase(db, opts, sessions) {
177
+ if (!opts.completionInbox || sessions.length === 0)
178
+ return;
179
+ await sweepLateCompletionRows(db, db.dialect, sessions, Date.now()).catch((err) => opts.logger?.warn?.("workflow_completion_late_rows_sweep_failed", { sessions: sessions.length, err: seatText("operator-log-text", String(err)) }));
180
+ }
181
+ export function createSqlSessionEraser(db, opts) {
182
+ const storeOpts = { ...(opts.mailboxTables ? { sessionBoxScope: sessionTenantScope } : {}), ...(opts.logger !== undefined ? { logger: opts.logger } : {}) };
183
+ return {
184
+ async erase(input) {
185
+ const rows = createSessionRowsHook(db.dialect, opts, input.owner ?? "");
186
+ const store = new SqlRetentionStore(db, { ...storeOpts, transactionHooks: { retention: { beforeDelete: rows.beforeDelete }, session: createSqlSessionWriteHooks(db) } });
187
+ const out = await store.eraseSession(input);
188
+ switch (out.outcome) {
189
+ case "absent":
190
+ return { outcome: "superseded" };
191
+ case "refused":
192
+ if (out.refusal instanceof SessionDeletionSupersededError)
193
+ return { outcome: "superseded" };
194
+ throw out.refusal;
195
+ case "erased":
196
+ await afterSessionErase(db, opts, out.rows.sessions);
197
+ return { outcome: "erased", trees: { ...out.rows, attachmentShas: rows.attachmentShas() } };
198
+ default: {
199
+ const unknown = out;
200
+ throw new Error(`session erase: no arm for ${JSON.stringify(unknown)}`);
201
+ }
202
+ }
203
+ },
204
+ };
205
+ }
159
206
  export function assertCloudSnapshotBlobPosture(kind, config) {
160
207
  if (kind === "local" || config.snapshotBlobStore || config.snapshotBlobAllowSql)
161
208
  return;
209
+ const fact = SQL_BLOB_POSTURE_FACTS[kind];
162
210
  throw new Error("cloud deployments (DB_BACKEND=mysql|pg) must configure object storage for rewind file-history blobs " +
163
- "(MINIO_ENDPOINT/MINIO_ACCESS_KEY/MINIO_SECRET_KEY): single-row SQL blob writes hit TiDB's " +
164
- "txn-entry-size-limit (default 6MiB) / the mysql-protocol packet limit (bytes belong in object storage — " +
211
+ `(MINIO_ENDPOINT/MINIO_ACCESS_KEY/MINIO_SECRET_KEY): ${fact.wall} (bytes belong in object storage — ` +
165
212
  "same ruling as the D-1 attachment store). Single-box/test rigs may explicitly opt out with " +
166
- "SNAPSHOT_BLOB_ALLOW_SQL_BYTES=true (a per-blob cap then applies; an over-cap tracked file's first-touch " +
213
+ `SNAPSHOT_BLOB_ALLOW_SQL_BYTES=true (${fact.cap}; an over-cap tracked file's first-touch ` +
167
214
  "backup is refused typed, which under the default DV-14 policy refuses that edit).");
168
215
  }
216
+ const SQL_BLOB_POSTURE_FACTS = {
217
+ mysql: {
218
+ wall: "single-row SQL blob writes hit TiDB's txn-entry-size-limit (default 6MiB) / the mysql-protocol packet limit",
219
+ cap: "a per-blob cap then applies",
220
+ },
221
+ pg: {
222
+ wall: "single-row SQL blob writes put each blob into one PostgreSQL bytea value (PostgreSQL holds at most 1 GB in one value; this service reads no row-size or statement-size wall from PostgreSQL, so it derives no smaller default cap)",
223
+ cap: "this service derives no per-blob cap on PostgreSQL, so none applies unless SNAPSHOT_BLOB_SQL_MAX_BYTES is set — then a per-blob cap applies",
224
+ },
225
+ };
226
+ export function buildSqlOneTimeMigrationInput(config) {
227
+ return { lanes: deployedExecutionLanes(config), liveRunWindowMs: config.runStaleSec * 1000, identityBoundary: DEPLOYMENT_SHAPE_PREDICATES.identityBoundary.holds(config) };
228
+ }
169
229
  class TiDBBackend {
170
230
  pool;
171
231
  config;
232
+ observers;
172
233
  kind = "mysql";
173
- constructor(pool, config) {
234
+ constructor(pool, config, observers) {
174
235
  this.pool = pool;
175
236
  this.config = config;
237
+ this.observers = observers;
176
238
  }
177
239
  ensureSchema() { return ensureTidbSchema(this.pool); }
178
240
  close() { return this.pool.end(); }
179
- run() { return (this.runStoreInst ??= new TiDBRunStore(this.pool)); }
241
+ run() { return (this.runStoreInst ??= new TiDBRunStore(this.pool, createRunStallWiring(this.config, this.observers))); }
180
242
  runStoreInst;
181
243
  resumeAnchor() { return new TiDBResumeAnchorStore(this.pool); }
182
244
  approvalExemption() { return new TiDBApprovalExemptionStore(this.pool); }
@@ -186,13 +248,13 @@ class TiDBBackend {
186
248
  permissionRule() { return createSqlPermissionRuleStores(mysqlDriver(this.pool)); }
187
249
  sendFileLedger() { return new TiDBSendFileLedger(this.pool); }
188
250
  userInputLedger() { return new TiDBUserInputLedgerStore(this.pool); }
189
- sessionPolicy(logger) { return new TiDBSessionPolicyStore(this.pool, logger); }
251
+ sessionPolicy(logger) { return new TiDBSessionPolicyStore(this.pool, countClientWriteOn, logger ?? createLogger()); }
190
252
  fileHistory() { return new TiDBFileHistoryStore(this.pool, fileHistoryOptions(this.config)); }
191
253
  memoryOptOutGrant() { return new TiDBMemoryOptOutGrantStore(this.pool); }
192
254
  sessionCaptureRecords() { return () => (this.captureRecordsInst ??= new TiDBSessionCaptureRecordStore(this.pool)); }
193
255
  captureRecordsInst;
194
256
  legacySnapshotBlobSweep() { return legacySweepImpl(this.config, "mysql", this.pool); }
195
- runOneTimeMigrations() { return runSqlOneTimeMigrations("mysql", this.pool, { lanes: deployedExecutionLanes(this.config), liveRunWindowMs: this.config.runStaleSec * 1000 }); }
257
+ runOneTimeMigrations() { return runSqlOneTimeMigrations("mysql", this.pool, buildSqlOneTimeMigrationInput(this.config)); }
196
258
  workflowJournal() { return new TiDBWorkflowJournalStore(this.pool); }
197
259
  outcomeSink() { return new TiDBOutcomeLedger(this.pool); }
198
260
  workflowRun(onWarn) { return new TiDBWorkflowRunStore(this.pool, onWarn); }
@@ -202,7 +264,7 @@ class TiDBBackend {
202
264
  workflowParkDecisions() { return (this.parkDecisionsInst ??= new SqlWorkflowParkDecisionStore(this.run())); }
203
265
  parkDecisionsInst;
204
266
  sharedMemoryStore(authorizer) { return new TiDBSharedMemoryStore(this.pool, authorizer); }
205
- checkpoint(logger) { return new TiDBCheckpointStore(this.pool, logger, { retention: sqlStoreRetention(this.config.retentionSweep), claims: this.run() }); }
267
+ checkpoint(logger) { return new TiDBCheckpointStore(this.pool, logger, { retention: sqlStoreRetention(this.config.retentionSweep) }); }
206
268
  checkpointReadView() { return this.checkpoint(); }
207
269
  toolResult() { return new TiDBToolResultStore(this.pool, { retention: sqlStoreRetention(this.config.retentionSweep) }); }
208
270
  imageIndex() { return new TiDBImageIndex(this.pool); }
@@ -210,6 +272,7 @@ class TiDBBackend {
210
272
  leaderRun() { return new TiDBLeaderRunStore(this.pool); }
211
273
  device() { return new TiDBDeviceStore(this.pool); }
212
274
  retention(opts) { return createSqlRetentionExecutor(mysqlDriver(this.pool), opts); }
275
+ sessionEraser(opts) { return createSqlSessionEraser(mysqlDriver(this.pool), opts); }
213
276
  retentionLane() { return new TiDBRetentionLaneStore(this.pool); }
214
277
  breaker(onWriteFail) { return new TiDBBreakerState(this.pool, onWriteFail); }
215
278
  costQuota(limitMicroUsd, windowMs, onDegraded) { return new TiDBCostQuota(this.pool, limitMicroUsd, windowMs, undefined, onDegraded, this.config.dbQueryTimeoutMs); }
@@ -223,14 +286,16 @@ class TiDBBackend {
223
286
  class PgBackend {
224
287
  pool;
225
288
  config;
289
+ observers;
226
290
  kind = "pg";
227
- constructor(pool, config) {
291
+ constructor(pool, config, observers) {
228
292
  this.pool = pool;
229
293
  this.config = config;
294
+ this.observers = observers;
230
295
  }
231
296
  ensureSchema() { return ensurePgSchema(this.pool); }
232
297
  close() { return this.pool.end(); }
233
- run() { return (this.runStoreInst ??= new PgRunStore(this.pool)); }
298
+ run() { return (this.runStoreInst ??= new PgRunStore(this.pool, createRunStallWiring(this.config, this.observers))); }
234
299
  runStoreInst;
235
300
  resumeAnchor() { return new PgResumeAnchorStore(this.pool); }
236
301
  approvalExemption() { return new PgApprovalExemptionStore(this.pool); }
@@ -240,13 +305,13 @@ class PgBackend {
240
305
  permissionRule() { return createSqlPermissionRuleStores(pgDriver(this.pool)); }
241
306
  sendFileLedger() { return new PgSendFileLedger(this.pool); }
242
307
  userInputLedger() { return new PgUserInputLedgerStore(this.pool); }
243
- sessionPolicy(logger) { return new PgSessionPolicyStore(this.pool, logger); }
308
+ sessionPolicy(logger) { return new PgSessionPolicyStore(this.pool, countClientWriteOn, logger ?? createLogger()); }
244
309
  fileHistory() { return new PgFileHistoryStore(this.pool, fileHistoryOptions(this.config)); }
245
310
  memoryOptOutGrant() { return new PgMemoryOptOutGrantStore(this.pool); }
246
311
  sessionCaptureRecords() { return () => (this.captureRecordsInst ??= new PgSessionCaptureRecordStore(this.pool)); }
247
312
  captureRecordsInst;
248
313
  legacySnapshotBlobSweep() { return legacySweepImpl(this.config, "pg", this.pool); }
249
- runOneTimeMigrations() { return runSqlOneTimeMigrations("pg", this.pool, { lanes: deployedExecutionLanes(this.config), liveRunWindowMs: this.config.runStaleSec * 1000 }); }
314
+ runOneTimeMigrations() { return runSqlOneTimeMigrations("pg", this.pool, buildSqlOneTimeMigrationInput(this.config)); }
250
315
  workflowJournal() { return new PgWorkflowJournalStore(this.pool); }
251
316
  outcomeSink() { return new PgOutcomeLedger(this.pool); }
252
317
  workflowRun(onWarn) { return new PgWorkflowRunStore(this.pool, onWarn); }
@@ -256,7 +321,7 @@ class PgBackend {
256
321
  workflowParkDecisions() { return (this.parkDecisionsInst ??= new SqlWorkflowParkDecisionStore(this.run())); }
257
322
  parkDecisionsInst;
258
323
  sharedMemoryStore(authorizer) { return new PgSharedMemoryStore(this.pool, authorizer); }
259
- checkpoint(logger) { return new PgCheckpointStore(this.pool, logger, { retention: sqlStoreRetention(this.config.retentionSweep), claims: this.run() }); }
324
+ checkpoint(logger) { return new PgCheckpointStore(this.pool, logger, { retention: sqlStoreRetention(this.config.retentionSweep) }); }
260
325
  checkpointReadView() { return this.checkpoint(); }
261
326
  toolResult() { return new PgToolResultStore(this.pool, { retention: sqlStoreRetention(this.config.retentionSweep) }); }
262
327
  imageIndex() { return new PgImageIndex(this.pool); }
@@ -264,6 +329,7 @@ class PgBackend {
264
329
  leaderRun() { return new PgLeaderRunStore(this.pool); }
265
330
  device() { return new PgDeviceStore(this.pool); }
266
331
  retention(opts) { return createSqlRetentionExecutor(pgDriver(this.pool), opts); }
332
+ sessionEraser(opts) { return createSqlSessionEraser(pgDriver(this.pool), opts); }
267
333
  retentionLane() { return new PgRetentionLaneStore(this.pool); }
268
334
  breaker(onWriteFail) { return new PgBreakerState(this.pool, onWriteFail); }
269
335
  costQuota(limitMicroUsd, windowMs, onDegraded) { return new PgCostQuota(this.pool, limitMicroUsd, windowMs, undefined, onDegraded, this.config.dbQueryTimeoutMs); }
@@ -277,6 +343,22 @@ class PgBackend {
277
343
  export function localSessionRowsOf(backend) {
278
344
  return backend instanceof LocalBackend ? backend.session() : undefined;
279
345
  }
346
+ export function localClientWritesOf(backend) {
347
+ return backend instanceof LocalBackend ? backend.session() : undefined;
348
+ }
349
+ function createClientCountedPolicyStore(inner, sessions) {
350
+ const listBySession = inner.listBySession?.bind(inner);
351
+ const deleteBySession = inner.deleteBySession?.bind(inner);
352
+ return {
353
+ getRules: (sessionId, principal) => inner.getRules(sessionId, principal),
354
+ putRules: (sessionId, principal, rules, opts) => sessions.withClientWrite(sessionId, async (count) => {
355
+ await count();
356
+ return inner.putRules(sessionId, principal, rules, opts);
357
+ }),
358
+ ...(listBySession !== undefined ? { listBySession } : {}),
359
+ ...(deleteBySession !== undefined ? { deleteBySession } : {}),
360
+ };
361
+ }
280
362
  class LocalBackend {
281
363
  kind = "local";
282
364
  fileBackend;
@@ -296,9 +378,13 @@ class LocalBackend {
296
378
  discloseWarn;
297
379
  parkDecisionLedgerRoot;
298
380
  executionLanes;
381
+ identityBoundary;
382
+ storeDeclaration;
299
383
  dataDirLayout;
300
- constructor(fileBackend, config, discloseWarn, onWarn, onError) {
384
+ constructor(fileBackend, config, discloseWarn, onWarn, onError, observers, facts) {
301
385
  this.executionLanes = deployedExecutionLanes(config);
386
+ this.identityBoundary = DEPLOYMENT_SHAPE_PREDICATES.identityBoundary.holds(config);
387
+ this.storeDeclaration = localStoreDeclarationOf(config, facts?.dataRootMedium ?? "unknown");
302
388
  this.onWarn = onWarn;
303
389
  this.discloseWarn = discloseWarn;
304
390
  this.onError = onError;
@@ -307,13 +393,17 @@ class LocalBackend {
307
393
  const corruptReadWarn = (msg, fields) => this.discloseWarn(msg, fields);
308
394
  this.dataDirLayout = buildDataDirLayout({ configuredRoot: root, physicalRoot: this.fileBackend.root, memoryEngineRoot: memoryEngineRootFor(config, root) });
309
395
  this.runStore = new FileRunStore(this.fileBackend.root, {
396
+ rootRows: () => this.sessionStore,
310
397
  error: (msg, fields) => void (this.onError ?? this.onWarn)?.(msg, fields),
311
398
  strictHydrate: config.runStoreStrictHydrate,
399
+ stall: createRunStallWiring(config, observers),
312
400
  });
313
- this.sessionStore = new LocalSessionStore(createLocalSessionRepo(this.fileBackend.root), this.runStore, this.fileBackend.root, {
401
+ const physicalRoot = this.fileBackend.root;
402
+ this.sessionStore = new LocalSessionStore(createLocalSessionRepo(physicalRoot), this.runStore, physicalRoot, {
314
403
  log: createLogger(config.logLevel),
315
- durability: SESSION_DURABILITY,
404
+ durability: this.storeDeclaration.durability,
316
405
  placements: SESSION_PLACEMENTS,
406
+ withdrawCheckpointCtx: (sessionId) => dropLocalCheckpointCtxStrict(physicalRoot, sessionId),
317
407
  });
318
408
  this.parkDecisionLedgerRoot = config.workflowRunStoreBackend === "memory" ? undefined : join(this.fileBackend.root, "workflows");
319
409
  this.resumeAnchorStore = new FileResumeAnchorStore(this.fileBackend.root);
@@ -334,15 +424,46 @@ class LocalBackend {
334
424
  }
335
425
  async ensureSchema() {
336
426
  this.executionLaneWordsRenamed += await this.sessionStore.renameRetiredExecutionLaneWordM40();
337
- await this.sessionStore.assertStrictSidecarsReadable();
427
+ await this.sessionStore.finishPendingDrops();
338
428
  await this.sessionStore.settleArchiveSnapshots();
429
+ const adoption = await this.sessionStore.adoptArchiveTokensM47();
430
+ this.archiveTokensAdopted += adoption.adopted;
431
+ this.archiveTokensMinted += adoption.minted;
339
432
  }
340
433
  executionLaneWordsRenamed = 0;
434
+ archiveTokensAdopted = 0;
435
+ archiveTokensMinted = 0;
341
436
  async runOneTimeMigrations() {
437
+ const scenarioPrefixSourcesScanned = await switchLocalScenarioPrefixM42(join(this.fileBackend.root, LOCAL_MARKER_FILE), [
438
+ { source: "runs", rows: () => this.runStore.scenarioPrefixOwnerRowsM42() },
439
+ { source: "sessions", rows: () => this.sessionStore.scenarioPrefixOwnerRowsM42() },
440
+ { source: "approval asks", rows: () => this.approvalAskStore.scenarioPrefixOwnerRowsM42() },
441
+ { source: "attachments", rows: () => new LocalTaskAttachmentStore(this.fileBackend.root).scenarioPrefixOwnerRowsM42() },
442
+ ]);
342
443
  tightenLocalDataDirModes(this.dataDirLayout, {
343
444
  tightened: (msg, meta) => this.onWarn?.(msg, meta),
344
445
  refused: (msg, meta) => this.discloseWarn(msg, meta),
345
446
  });
447
+ const runErrorCodeColumnRewritten = this.runStore.migrateRunErrorCodeColumnM44();
448
+ const runObjectivePreviewRewritten = this.runStore.migrateRunObjectivePreviewM45();
449
+ const shellSentinelOwnerRowsRetained = [];
450
+ let shellSentinelOwnersCleared = 0;
451
+ if (this.identityBoundary) {
452
+ for (const [surface, rows] of [
453
+ ["session_meta", await this.sessionStore.countShellSentinelOwnersM48()],
454
+ ["task_run", this.runStore.countShellSentinelOwnersM48()],
455
+ ]) {
456
+ if (rows > 0)
457
+ shellSentinelOwnerRowsRetained.push({ surface, rows });
458
+ }
459
+ }
460
+ else {
461
+ shellSentinelOwnersCleared = (await this.sessionStore.clearShellSentinelOwnersM48()) + this.runStore.clearShellSentinelOwnersM48();
462
+ }
463
+ const checkpointHostSessionsBackfilled = existsSync(join(this.fileBackend.root, "checkpoint-session-tokens.json")) || existsSync(join(this.fileBackend.root, "checkpoint-scopes.json"))
464
+ ? await this.checkpointStoreOf().backfillHostSessionsM49()
465
+ : 0;
466
+ const legacySkillExemptionsDropped = dropLocalLegacySkillExemptionsM46(join(this.fileBackend.root, LOCAL_SKILL_EXEMPTION_CUTOFF_FILE), this.approvalExemptionStore);
346
467
  const archives = await this.sessionStore.migrateLocalArchives();
347
468
  const placements = await backfillLocalExecutionPlacements(this.runStore.sessionIdsWithRuns(), this.sessionStore.executionPlacementBackfill, { lanes: this.executionLanes });
348
469
  const importedLayerRoot = { importedLayerRootAllowsRetired: [], importedLayerRootBucketsSkipped: [], importedLayerRootBucketsUnnamed: 0 };
@@ -350,21 +471,34 @@ class LocalBackend {
350
471
  const rules = this.permissionRule();
351
472
  await retireImportedLayerRootAllows({ candidateOwners: () => fileRuleBucketOwners(rules), durable: rules.durable, isWholeBucketRefusal: isFileBucketDamaged, isVanishedBucket: () => false }, importedLayerRoot);
352
473
  }
474
+ const localArchiveTokensAdopted = this.archiveTokensAdopted;
475
+ const localArchiveTokensMinted = this.archiveTokensMinted;
476
+ this.archiveTokensAdopted = 0;
477
+ this.archiveTokensMinted = 0;
353
478
  const executionLaneWordsRenamed = this.executionLaneWordsRenamed + this.approvalAskStore.renameRetiredExecutionLaneWordM40();
354
479
  this.executionLaneWordsRenamed = 0;
355
480
  const askExecutionLanesBackfilled = backfillLocalAskExecutionLanes(this.approvalAskStore, { lanes: this.executionLanes });
356
481
  return {
357
482
  ...NO_SQL_MIGRATIONS,
483
+ runErrorCodeColumnRewritten,
484
+ runObjectivePreviewRewritten,
485
+ shellSentinelOwnersCleared,
486
+ shellSentinelOwnerRowsRetained,
487
+ checkpointHostSessionsBackfilled,
488
+ legacySkillExemptionsDropped,
358
489
  executionPlacementsBackfilled: placements.backfilled,
359
490
  executionPlacementSessionsUnreadable: placements.unreadable,
360
491
  askExecutionLanesBackfilled,
361
492
  executionLaneWordsRenamed,
493
+ scenarioPrefixSourcesScanned,
362
494
  askJournalRecordsUpgraded: this.approvalAskStore.upgradeJournalEnvelope(),
363
495
  localArchiveRowFactsBackfilled: archives.rowFactsBackfilled,
364
496
  localArchivesAnonymized: archives.anonymized,
365
497
  localArchivesKeptStamped: archives.keptStamped,
366
498
  localArchivesUnreadable: archives.unreadable,
367
499
  localArchiveSnapshotsRecovered: archives.snapshotsRecovered,
500
+ localArchiveTokensAdopted,
501
+ localArchiveTokensMinted,
368
502
  ...importedLayerRoot,
369
503
  };
370
504
  }
@@ -407,9 +541,9 @@ class LocalBackend {
407
541
  userInputLedger() { return this.userInputLedgerStore; }
408
542
  checkpointStoreOf() {
409
543
  return (this.checkpointStoreInst ??= new LocalCheckpointStore(this.fileBackend.root, {
544
+ durability: this.storeDeclaration.durability,
410
545
  getActiveTaskId: (sessionId) => this.runStore.getActiveTaskId(sessionId),
411
546
  readSessionOwner: async (sessionId) => (await this.sessionStore.headOf(sessionId))?.owner,
412
- claims: this.runStore,
413
547
  }));
414
548
  }
415
549
  checkpoint() {
@@ -417,8 +551,8 @@ class LocalBackend {
417
551
  if (!this.checkpointProbeWired) {
418
552
  this.checkpointProbeWired = true;
419
553
  this.runStore.setCheckpointProbe({
420
- hasPending: async (sessionId) => (await cs.findPendingTokenBySession(sessionId)) !== null,
421
- hasExpired: (sessionId) => cs.hasExpiredBySession(sessionId),
554
+ hasPending: async (sessionId) => (await cs.findPendingTokenBySession(sessionId, undefined, { axis: "run" })) !== null,
555
+ hasExpired: (sessionId) => cs.hasExpiredForRun(sessionId),
422
556
  });
423
557
  }
424
558
  return cs;
@@ -426,7 +560,9 @@ class LocalBackend {
426
560
  checkpointReadView() { return this.checkpointStoreOf(); }
427
561
  checkpointProbeWired = false;
428
562
  checkpointStoreInst;
429
- sessionPolicy() { return this.fileBackend.sessionPolicyStore; }
563
+ sessionPolicy() { return (this.sessionPolicyInst ??= createClientCountedPolicyStore(this.fileBackend.sessionPolicyStore, this.sessionStore)); }
564
+ sessionPolicyInst;
565
+ localStoreDeclaration() { return this.storeDeclaration; }
430
566
  fileUsageWindowStore() { return this.fileBackend.usageWindowStore; }
431
567
  fileHistory() { return this.fileBackend.fileHistoryStore; }
432
568
  memoryOptOutGrant() { return undefined; }
@@ -436,15 +572,24 @@ class LocalBackend {
436
572
  outcomeSink() { return this.outcomeSinkInst; }
437
573
  session() { return this.sessionStore; }
438
574
  toolResult() { return this.fileBackend.toolResultStore; }
575
+ engineFileStores() {
576
+ const fb = this.fileBackend;
577
+ return { checkpointStore: fb.checkpointStore, backgroundAgentStore: fb.backgroundAgentStore, mailboxStore: fb.mailboxStore, rosterStore: fb.rosterStore };
578
+ }
439
579
  mysqlPool() { return undefined; }
440
580
  pgPool() { return undefined; }
441
581
  }
442
582
  export function counterStoreLabel(store, kind) {
443
583
  return store ? `shared(${kind ?? "unknown"})` : "in-process";
444
584
  }
445
- function openLocalBackend(config, onWarn, onError) {
585
+ const LOCAL_OPEN_REFUSAL_HEAD = {
586
+ http: (root) => `DB_BACKEND=local cannot open data dir ${root}`,
587
+ "run-local": (root) => `cannot open local data dir ${root}`,
588
+ };
589
+ export function openLocalBackend(config, opts) {
590
+ const { lane, admission, onWarn, onError, observers, facts } = opts;
446
591
  const root = localBackendRootOf(config);
447
- const discloseWarn = onWarn ?? ((msg, meta) => console.warn(msg, meta));
592
+ const discloseWarn = onWarn ?? createLogger().warn;
448
593
  let fileBackend;
449
594
  try {
450
595
  fileBackend = acquireLocalBackendWithWait(() => new FileStorageBackend({
@@ -456,24 +601,29 @@ function openLocalBackend(config, onWarn, onError) {
456
601
  catch (e) {
457
602
  if (e instanceof AdoptionError)
458
603
  throw e;
459
- const tail = buildStoreOpenRefusalTail(e, "http");
460
- throw new Error(`DB_BACKEND=local cannot open data dir ${root}: ${e instanceof Error ? e.message : String(e)}` +
604
+ const tail = buildStoreOpenRefusalTail(e, lane);
605
+ throw new Error(`${LOCAL_OPEN_REFUSAL_HEAD[lane](root)}: ${e instanceof Error ? e.message : String(e)}` +
461
606
  (tail === undefined ? "" : ` ${tail}`));
462
607
  }
463
608
  try {
464
- holdEngineHighWater(fileBackend.root, serviceVersion());
609
+ holdLocalDataRootAdmission(fileBackend.root, admission);
465
610
  }
466
611
  catch (refusal) {
467
- return new RefusedLocalBackend(fileBackend, refusal instanceof Error ? refusal : new Error(String(refusal)));
612
+ return new RefusedLocalBackend(() => fileBackend.dispose(), refusal instanceof Error ? refusal : new Error(String(refusal)));
613
+ }
614
+ try {
615
+ return new LocalBackend(fileBackend, config, discloseWarn, onWarn, onError, observers, facts);
616
+ }
617
+ catch (failure) {
618
+ return new RefusedLocalBackend(() => fileBackend.dispose(), failure instanceof Error ? failure : new Error(String(failure)));
468
619
  }
469
- return new LocalBackend(fileBackend, config, discloseWarn, onWarn, onError);
470
620
  }
471
621
  class RefusedLocalBackend {
472
- fileBackend;
622
+ release;
473
623
  refusal;
474
624
  kind = "local";
475
- constructor(fileBackend, refusal) {
476
- this.fileBackend = fileBackend;
625
+ constructor(release, refusal) {
626
+ this.release = release;
477
627
  this.refusal = refusal;
478
628
  }
479
629
  refused() {
@@ -486,7 +636,7 @@ class RefusedLocalBackend {
486
636
  return this.refused();
487
637
  }
488
638
  async close() {
489
- await this.fileBackend.dispose();
639
+ await this.release();
490
640
  }
491
641
  run() { return this.refused(); }
492
642
  resumeAnchor() { return this.refused(); }
@@ -505,45 +655,53 @@ class RefusedLocalBackend {
505
655
  outcomeSink() { return this.refused(); }
506
656
  checkpointReadView() { return this.refused(); }
507
657
  session() { return this.refused(); }
658
+ engineFileStores() { return this.refused(); }
659
+ toolResult() { return this.refused(); }
660
+ fileUsageWindowStore() { return this.refused(); }
661
+ localStoreDeclaration() { return this.refused(); }
508
662
  mysqlPool() { return undefined; }
509
663
  pgPool() { return undefined; }
510
664
  }
511
- export function createStoreBackend(config, onWarn, onError) {
665
+ export function createStoreBackend(config, onWarn, onError, observers) {
512
666
  if (config.dbBackend === "local")
513
- return openLocalBackend(config, onWarn, onError);
667
+ return openAdmittedLocalBackend(config, undefined, { onWarn, onError, observers });
514
668
  if (config.dbBackend === "pg") {
515
669
  if (!config.pg)
516
670
  return undefined;
517
671
  const pool = createPgPool(pgPoolOptions(config.pg, config.dbQueryTimeoutMs), onWarn);
518
- return withRetiredSchemaProbe(new PgBackend(pool, config), { dialect: "pg", pool }, { lanes: deployedExecutionLanes(config) });
672
+ return withRetiredSchemaProbe(new PgBackend(pool, config, observers), { dialect: "pg", pool }, { lanes: deployedExecutionLanes(config) });
519
673
  }
520
674
  if (!config.tidb)
521
675
  return undefined;
522
676
  const pool = createTidbPool(config);
523
- return withRetiredSchemaProbe(new TiDBBackend(pool, config), { dialect: "mysql", pool }, { lanes: deployedExecutionLanes(config) });
677
+ return withRetiredSchemaProbe(new TiDBBackend(pool, config, observers), { dialect: "mysql", pool }, { lanes: deployedExecutionLanes(config) });
678
+ }
679
+ function openAdmittedLocalBackend(config, admission, sinks) {
680
+ let admitted = admission;
681
+ if (admitted === undefined) {
682
+ try {
683
+ admitted = admitLocalDataRoot(localBackendRootOf(config));
684
+ }
685
+ catch (refusal) {
686
+ return new RefusedLocalBackend(async () => undefined, refusal instanceof Error ? refusal : new Error(String(refusal)));
687
+ }
688
+ }
689
+ return openLocalBackend(config, { lane: "http", admission: admitted, ...sinks });
524
690
  }
525
691
  function withRetiredSchemaProbe(inner, target, executionPlacementSwitch) {
526
692
  const guarded = Object.create(inner);
527
693
  guarded.ensureSchema = async () => {
528
694
  await assertRetiredSchemaAbsentOnPool(target);
529
695
  await assertExecutionPlacementSwitchAdmissibleOnPool(target.dialect, target.pool, executionPlacementSwitch);
696
+ await assertSkillExemptionCutoffHeldOnPool(target, migrationCarried(SKILL_EXEMPTION_CUTOFF_ID));
530
697
  await inner.ensureSchema();
531
698
  };
532
699
  return guarded;
533
700
  }
534
- function localBackendRootOf(config) {
701
+ export function localBackendRootOf(config) {
535
702
  return config.localDataRoot ?? join(homedir(), ".ai-agent");
536
703
  }
537
- function localDataRootHoldsData(root) {
538
- try {
539
- return readdirSync(root).length > 0;
540
- }
541
- catch (e) {
542
- const code = e.code;
543
- return code !== "ENOENT" && code !== "ENOTDIR";
544
- }
545
- }
546
- export async function openStoreBackendWithFallback(config, logger) {
704
+ export async function openStoreBackendWithFallback(config, logger, observers, localAdmission, facts) {
547
705
  const sqlEngine = config.dbBackend === "mysql" || config.dbBackend === "pg" ? config.dbBackend : undefined;
548
706
  const mayFallback = config.dbBackend === "local" && !config.dbBackendExplicit && !localDataRootHoldsData(localBackendRootOf(config));
549
707
  let backend;
@@ -552,7 +710,9 @@ export async function openStoreBackendWithFallback(config, logger) {
552
710
  const attempt = async () => {
553
711
  let built;
554
712
  try {
555
- built = createStoreBackend(config, (msg, meta) => logger.warn(msg, meta), logger.error === undefined ? undefined : (msg, meta) => logger.error(msg, meta));
713
+ const onWarn = (msg, meta) => logger.warn(msg, meta);
714
+ const onError = logger.error === undefined ? undefined : (msg, meta) => logger.error(msg, meta);
715
+ built = config.dbBackend === "local" ? openAdmittedLocalBackend(config, localAdmission, { onWarn, onError, observers, ...(facts !== undefined ? { facts } : {}) }) : createStoreBackend(config, onWarn, onError, observers);
556
716
  inFlight = built;
557
717
  if (built)
558
718
  await built.ensureSchema();
@@ -599,10 +759,15 @@ export function sqlStoreCoordinatesAsUrl(config) {
599
759
  export function buildSqlStoreOpenRefusal(engine, endpoint, waitedMs, err) {
600
760
  const coords = engine === "pg" ? "PG_*" : "MYSQL_*";
601
761
  const detail = err instanceof Error ? err.message : String(err);
762
+ const definite = isDeploymentFaultError(err);
763
+ const answer = definite ? databaseAnswerCodesOf(engine, err) : undefined;
602
764
  const waited = waitedMs > 0 ? `after retrying for ${waitedMs}ms (STORE_LOCK_WAIT_MS)` : "on the first attempt (STORE_LOCK_WAIT_MS=0: no wait)";
603
- return (`DB_BACKEND=${engine}: cannot open the configured ${engine === "pg" ? "PostgreSQL" : "MySQL-protocol"} store at ${endpoint} ${waited} (${detail}) — refusing to boot, because a configured SQL store is never replaced by an in-memory one ` +
765
+ const next = definite
766
+ ? `Next: the database refused the statement for good, so waiting or changing the ${coords} coordinates will not change it — fix what the answer names: a table's storage engine (InnoDB on MySQL), its primary key, foreign-key compatibility, a missing table or the account's grants; `
767
+ : `Next: fix the ${coords} coordinates or the store's reachability (the boot wait is STORE_LOCK_WAIT_MS); `;
768
+ return (`DB_BACKEND=${engine}: cannot open the configured ${engine === "pg" ? "PostgreSQL" : "MySQL-protocol"} store at ${endpoint} ${waited} (${detail}${answer !== undefined ? `; ${answer}` : ""}) — refusing to boot, because a configured SQL store is never replaced by an in-memory one ` +
604
769
  `(SESSION_BACKEND=auto included: sessions, parked runs and every durable record would silently live in memory and vanish on restart). ` +
605
- `Next: fix the ${coords} coordinates or the store's reachability (the boot wait is STORE_LOCK_WAIT_MS); ` +
770
+ next +
606
771
  `or run explicitly in memory with DB_BACKEND=memory (and remove the ${coords} coordinates).`);
607
772
  }
608
773
  //# sourceMappingURL=store-backend.js.map