@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
@@ -12,14 +12,19 @@ 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
18
  import { NO_SQL_MIGRATIONS, 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 { LOCAL_LEGACY_SKILL_EXEMPTION_MARKER_FILE, dropLocalLegacySkillExemptionsM46 } from "./approval-exemption-skill-m46.js";
23
+ import { LocalTaskAttachmentStore } from "./local-task-attachment-store.js";
19
24
  import { assertRetiredSchemaAbsentOnPool } from "./schema-consistency.js";
20
- import { LocalSessionStore, createLocalSessionRepo } from "./local-session-store.js";
25
+ import { LocalSessionStore, archiveTokenAdoptionCarried, holdArchiveTokenAdoptionDuty, createLocalSessionRepo } from "./local-session-store.js";
21
26
  import { SESSION_DURABILITY, SESSION_PLACEMENTS } from "./session-placement.js";
22
- import { LocalCheckpointStore } from "./local-checkpoint-store.js";
27
+ import { LocalCheckpointStore, dropLocalCheckpointCtxStrict } from "./local-checkpoint-store.js";
23
28
  import { FileResumeAnchorStore } from "./file-resume-anchor-store.js";
24
29
  import { TiDBApprovalExemptionStore, PgApprovalExemptionStore, FileApprovalExemptionStore } from "./approval-exemption-store.js";
25
30
  import { TiDBApprovalNonceStore, PgApprovalNonceStore, FileApprovalNonceStore } from "./approval-nonce-store.js";
@@ -33,11 +38,13 @@ import { FileUserInputLedgerStore } from "./user-input-ledger-file.js";
33
38
  import { TiDBUserInputLedgerStore, PgUserInputLedgerStore } from "./user-input-ledger-sql.js";
34
39
  import { TiDBResumeAnchorStore, PgResumeAnchorStore } from "./resume-anchor-store-sql.js";
35
40
  import { TiDBSessionPolicyStore, PgSessionPolicyStore } from "../stores-sql/session-policy-store-sql.js";
41
+ import { countClientWriteOn } from "./session-withdraw-sql.js";
36
42
  import { TiDBWorkflowJournalStore, PgWorkflowJournalStore } from "../stores-sql/workflow-journal-store-sql.js";
37
- import { TiDBFileHistoryStore, PgFileHistoryStore, FILE_HISTORY_BLOB_TABLE, FILE_HISTORY_BLOB_KEY_PREFIX } from "./file-history-store-sql.js";
38
- import { MinioBlobBackend, SqlBlobBackend } from "./blob-backend.js";
43
+ import { TiDBFileHistoryStore, PgFileHistoryStore, FILE_HISTORY_BLOB_KEY_PREFIX } from "../stores-sql/file-history-store-sql.js";
44
+ import { SqlBlobIndex } from "../stores-sql/blob-index-sql.js";
45
+ import { MinioBlobBackend } from "./blob-backend.js";
39
46
  import { buildDisplaySafeUrl } from "../trace/redact.js";
40
- import { fileMemoryControlDirFor } from "../memory-scope.js";
47
+ import { fileMemoryControlDirFor, memoryEngineRootFor } from "../memory-scope.js";
41
48
  import { createTidbPool, ensureSchema as ensureTidbSchema } from "./tidb-pool.js";
42
49
  import { createPgPool, ensurePgSchema, pgPoolOptions } from "./pg-pool.js";
43
50
  import { TiDBRunStore, PgRunStore } from "./run-store-sql.js";
@@ -52,48 +59,69 @@ import { TiDBCostQuota } from "./tidb-cost-quota.js";
52
59
  import { PgCostQuota } from "./pg-cost-quota.js";
53
60
  import { TiDBRateLimiter } from "./tidb-rate-limiter.js";
54
61
  import { PgRateLimiter } from "./pg-rate-limiter.js";
55
- import { TiDBSessionStore } from "./tidb-session-store.js";
56
- import { PgSessionStore } from "./pg-session-storage.js";
62
+ import { TiDBSessionStore } from "../stores-sql/tidb-session-store.js";
63
+ import { PgSessionStore } from "../stores-sql/pg-session-storage.js";
64
+ import { SqlSessionStore } from "./session-store-sql.js";
57
65
  import { TiDBSharedMemoryStore, PgSharedMemoryStore } from "./shared-memory-store-sql.js";
58
66
  import { TiDBAdoptionLogStore, PgAdoptionLogStore } from "./adoption-log-sql.js";
59
- import { TiDBRetentionStore, PgRetentionStore, sqlStoreRetention } from "./retention-store-sql.js";
67
+ import { SqlRetentionStore } from "../stores-sql/retention-store-sql.js";
68
+ import { SessionDeletionSupersededError } from "../execution-placement.js";
69
+ import { sessionTenantScope } from "../session-children-retire.js";
70
+ import { sqlStoreRetention } from "./retention-declaration.js";
71
+ import { createRetentionDeploymentHooks, createSessionRowsHook, sweepLateCompletionRows } from "./retention-deployment.js";
72
+ import { seatText } from "../trace/exit-seat.js";
73
+ import { createSqlSessionWriteHooks } from "./session-store-sql.js";
60
74
  import { TiDBRetentionLaneStore, PgRetentionLaneStore } from "./retention-lane-store-sql.js";
61
75
  import { createSqlPermissionRuleStores } from "./permission-rule-store-sql.js";
62
76
  import { FILE_PERMISSION_RULE_DIR, createFilePermissionRuleStores, fileRuleBucketOwners, isFileBucketDamaged } from "./permission-rule-store-file.js";
63
77
  import { retireImportedLayerRootAllows } from "./imported-layer-root-retirement.js";
78
+ import { buildDataDirLayout, tightenLocalDataDirModes } from "./local-data-dir-modes-m39.js";
79
+ import { holdEngineHighWater } from "./local-engine-high-water.js";
80
+ import { serviceVersion } from "../service-version.js";
64
81
  import { mysqlDriver, pgDriver } from "./sql-driver.js";
65
- import { storeDegradedReasonFor } from "../store-posture.js";
82
+ import { localDataRootHoldsData, storeDegradedReasonFor } from "../store-posture.js";
66
83
  import { openWithinWait } from "./store-open-wait.js";
84
+ export function createRunStallWiring(config, observers) {
85
+ const count = observers?.runStallVerdicts;
86
+ return { windowMs: () => config.runStaleSec * 1000, onVerdicts: (landed) => count?.(landed) };
87
+ }
67
88
  export function workflowJournalOf(config, backend) {
68
89
  return config.selfOrchestrationEnabled && backend ? backend.workflowJournal() : undefined;
69
90
  }
70
- function historyBlobBackend(config, dialect, pool) {
91
+ function fileHistoryOptions(config) {
71
92
  const s = config.snapshotBlobStore;
72
- if (!s)
73
- return new SqlBlobBackend(dialect, pool, config.snapshotBlobSqlMaxBytes, FILE_HISTORY_BLOB_TABLE, createLogger(config.logLevel));
74
- return new MinioBlobBackend({
75
- endpoint: s.endpoint,
76
- bucket: s.bucket,
77
- accessKey: s.accessKey,
78
- secretKey: s.secretKey,
79
- ...(s.region ? { region: s.region } : {}),
80
- keyPrefix: `${s.keyPrefix ?? ""}${FILE_HISTORY_BLOB_KEY_PREFIX}`,
81
- ...(s.presignTtlSec ? { presignTtlSec: s.presignTtlSec } : {}),
82
- }, { dialect, pool, table: FILE_HISTORY_BLOB_TABLE });
93
+ const placement = s
94
+ ? {
95
+ blobs: new MinioBlobBackend({
96
+ endpoint: s.endpoint,
97
+ bucket: s.bucket,
98
+ accessKey: s.accessKey,
99
+ secretKey: s.secretKey,
100
+ ...(s.region ? { region: s.region } : {}),
101
+ keyPrefix: `${s.keyPrefix ?? ""}${FILE_HISTORY_BLOB_KEY_PREFIX}`,
102
+ ...(s.presignTtlSec ? { presignTtlSec: s.presignTtlSec } : {}),
103
+ }),
104
+ }
105
+ : {
106
+ ...(config.snapshotBlobSqlMaxBytes !== undefined ? { blobSqlMaxBytes: config.snapshotBlobSqlMaxBytes } : {}),
107
+ log: createLogger(config.logLevel),
108
+ };
109
+ return { ...config.fileHistory, ...placement };
83
110
  }
84
- function legacyBlobBackend(config, dialect, pool) {
111
+ function legacyBlobIndex(config, dialect, pool) {
85
112
  const s = config.snapshotBlobStore;
86
- if (!s)
87
- return new SqlBlobBackend(dialect, pool, config.snapshotBlobSqlMaxBytes, undefined, createLogger(config.logLevel));
88
- return new MinioBlobBackend({
89
- endpoint: s.endpoint,
90
- bucket: s.bucket,
91
- accessKey: s.accessKey,
92
- secretKey: s.secretKey,
93
- ...(s.region ? { region: s.region } : {}),
94
- ...(s.keyPrefix ? { keyPrefix: s.keyPrefix } : {}),
95
- ...(s.presignTtlSec ? { presignTtlSec: s.presignTtlSec } : {}),
96
- }, { dialect, pool });
113
+ const bytes = s
114
+ ? new MinioBlobBackend({
115
+ endpoint: s.endpoint,
116
+ bucket: s.bucket,
117
+ accessKey: s.accessKey,
118
+ secretKey: s.secretKey,
119
+ ...(s.region ? { region: s.region } : {}),
120
+ ...(s.keyPrefix ? { keyPrefix: s.keyPrefix } : {}),
121
+ ...(s.presignTtlSec ? { presignTtlSec: s.presignTtlSec } : {}),
122
+ })
123
+ : undefined;
124
+ return new SqlBlobIndex(dialect, pool, { table: "snapshot_blob", ...(bytes !== undefined ? { bytes } : {}), log: createLogger(config.logLevel) });
97
125
  }
98
126
  async function legacySweepImpl(config, dialect, pool) {
99
127
  const sql = "SELECT blob_hash FROM snapshot_blob";
@@ -108,29 +136,107 @@ async function legacySweepImpl(config, dialect, pool) {
108
136
  }
109
137
  if (orphans.length === 0)
110
138
  return 0;
111
- return legacyBlobBackend(config, dialect, pool).deleteBlobs(orphans);
139
+ return legacyBlobIndex(config, dialect, pool).sweep(orphans);
140
+ }
141
+ export function createSqlRetentionCallHooks(db, opts, input) {
142
+ const deployment = createRetentionDeploymentHooks(db.dialect, opts, input);
143
+ return { hooks: { retention: deployment.hooks.retention, session: createSqlSessionWriteHooks(db) }, attachmentShas: deployment.attachmentShas };
144
+ }
145
+ export function createSqlRetentionExecutor(db, opts) {
146
+ const storeOpts = { ...(opts.mailboxTables ? { sessionBoxScope: sessionTenantScope } : {}), ...(opts.logger !== undefined ? { logger: opts.logger } : {}) };
147
+ const reads = new SqlRetentionStore(db, storeOpts);
148
+ const forCall = (input) => {
149
+ const hooks = createSqlRetentionCallHooks(db, opts, input);
150
+ return { store: new SqlRetentionStore(db, { ...storeOpts, transactionHooks: hooks.hooks }), hooks, call: { domain: input.domain, cutoffMs: input.cutoffMs } };
151
+ };
152
+ return {
153
+ retention: reads.retention,
154
+ listRetentionDomains: () => reads.listRetentionDomains(),
155
+ previewRetention: (input) => reads.previewRetention(input),
156
+ expireCheckpoints: async (input) => {
157
+ const one = forCall(input);
158
+ return one.store.expireCheckpoints(one.call);
159
+ },
160
+ deleteExpiredSessions: async (input) => {
161
+ const one = forCall(input);
162
+ const { erasedRows, ...receipt } = await one.store.deleteExpiredSessions(one.call);
163
+ if (erasedRows === undefined)
164
+ return receipt;
165
+ await afterSessionErase(db, opts, erasedRows.sessions);
166
+ return { ...receipt, erased: { ...erasedRows, attachmentShas: one.hooks.attachmentShas() } };
167
+ },
168
+ deleteOrphanToolResults: async (input) => {
169
+ const one = forCall(input);
170
+ return one.store.deleteOrphanToolResults(one.call);
171
+ },
172
+ };
173
+ }
174
+ async function afterSessionErase(db, opts, sessions) {
175
+ if (!opts.completionInbox || sessions.length === 0)
176
+ return;
177
+ 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)) }));
178
+ }
179
+ export function createSqlSessionEraser(db, opts) {
180
+ const storeOpts = { ...(opts.mailboxTables ? { sessionBoxScope: sessionTenantScope } : {}), ...(opts.logger !== undefined ? { logger: opts.logger } : {}) };
181
+ return {
182
+ async erase(input) {
183
+ const rows = createSessionRowsHook(db.dialect, opts, input.owner ?? "");
184
+ const store = new SqlRetentionStore(db, { ...storeOpts, transactionHooks: { retention: { beforeDelete: rows.beforeDelete }, session: createSqlSessionWriteHooks(db) } });
185
+ const out = await store.eraseSession(input);
186
+ switch (out.outcome) {
187
+ case "absent":
188
+ return { outcome: "superseded" };
189
+ case "refused":
190
+ if (out.refusal instanceof SessionDeletionSupersededError)
191
+ return { outcome: "superseded" };
192
+ throw out.refusal;
193
+ case "erased":
194
+ await afterSessionErase(db, opts, out.rows.sessions);
195
+ return { outcome: "erased", trees: { ...out.rows, attachmentShas: rows.attachmentShas() } };
196
+ default: {
197
+ const unknown = out;
198
+ throw new Error(`session erase: no arm for ${JSON.stringify(unknown)}`);
199
+ }
200
+ }
201
+ },
202
+ };
112
203
  }
113
204
  export function assertCloudSnapshotBlobPosture(kind, config) {
114
205
  if (kind === "local" || config.snapshotBlobStore || config.snapshotBlobAllowSql)
115
206
  return;
207
+ const fact = SQL_BLOB_POSTURE_FACTS[kind];
116
208
  throw new Error("cloud deployments (DB_BACKEND=mysql|pg) must configure object storage for rewind file-history blobs " +
117
- "(MINIO_ENDPOINT/MINIO_ACCESS_KEY/MINIO_SECRET_KEY): single-row SQL blob writes hit TiDB's " +
118
- "txn-entry-size-limit (default 6MiB) / the mysql-protocol packet limit (bytes belong in object storage — " +
209
+ `(MINIO_ENDPOINT/MINIO_ACCESS_KEY/MINIO_SECRET_KEY): ${fact.wall} (bytes belong in object storage — ` +
119
210
  "same ruling as the D-1 attachment store). Single-box/test rigs may explicitly opt out with " +
120
- "SNAPSHOT_BLOB_ALLOW_SQL_BYTES=true (a per-blob cap then applies; an over-cap tracked file's first-touch " +
211
+ `SNAPSHOT_BLOB_ALLOW_SQL_BYTES=true (${fact.cap}; an over-cap tracked file's first-touch ` +
121
212
  "backup is refused typed, which under the default DV-14 policy refuses that edit).");
122
213
  }
214
+ const SQL_BLOB_POSTURE_FACTS = {
215
+ mysql: {
216
+ wall: "single-row SQL blob writes hit TiDB's txn-entry-size-limit (default 6MiB) / the mysql-protocol packet limit",
217
+ cap: "a per-blob cap then applies",
218
+ },
219
+ pg: {
220
+ 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)",
221
+ 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",
222
+ },
223
+ };
224
+ export function buildSqlOneTimeMigrationInput(config) {
225
+ return { lanes: deployedExecutionLanes(config), liveRunWindowMs: config.runStaleSec * 1000, identityBoundary: DEPLOYMENT_SHAPE_PREDICATES.identityBoundary.holds(config) };
226
+ }
123
227
  class TiDBBackend {
124
228
  pool;
125
229
  config;
230
+ observers;
126
231
  kind = "mysql";
127
- constructor(pool, config) {
232
+ constructor(pool, config, observers) {
128
233
  this.pool = pool;
129
234
  this.config = config;
235
+ this.observers = observers;
130
236
  }
131
237
  ensureSchema() { return ensureTidbSchema(this.pool); }
132
238
  close() { return this.pool.end(); }
133
- run() { return (this.runStoreInst ??= new TiDBRunStore(this.pool)); }
239
+ run() { return (this.runStoreInst ??= new TiDBRunStore(this.pool, createRunStallWiring(this.config, this.observers))); }
134
240
  runStoreInst;
135
241
  resumeAnchor() { return new TiDBResumeAnchorStore(this.pool); }
136
242
  approvalExemption() { return new TiDBApprovalExemptionStore(this.pool); }
@@ -140,13 +246,13 @@ class TiDBBackend {
140
246
  permissionRule() { return createSqlPermissionRuleStores(mysqlDriver(this.pool)); }
141
247
  sendFileLedger() { return new TiDBSendFileLedger(this.pool); }
142
248
  userInputLedger() { return new TiDBUserInputLedgerStore(this.pool); }
143
- sessionPolicy(logger) { return new TiDBSessionPolicyStore(this.pool, logger); }
144
- fileHistory() { return new TiDBFileHistoryStore(this.pool, historyBlobBackend(this.config, "mysql", this.pool), this.config.fileHistory); }
249
+ sessionPolicy(logger) { return new TiDBSessionPolicyStore(this.pool, countClientWriteOn, logger ?? createLogger()); }
250
+ fileHistory() { return new TiDBFileHistoryStore(this.pool, fileHistoryOptions(this.config)); }
145
251
  memoryOptOutGrant() { return new TiDBMemoryOptOutGrantStore(this.pool); }
146
252
  sessionCaptureRecords() { return () => (this.captureRecordsInst ??= new TiDBSessionCaptureRecordStore(this.pool)); }
147
253
  captureRecordsInst;
148
254
  legacySnapshotBlobSweep() { return legacySweepImpl(this.config, "mysql", this.pool); }
149
- runOneTimeMigrations() { return runSqlOneTimeMigrations("mysql", this.pool, { lanes: deployedExecutionLanes(this.config) }); }
255
+ runOneTimeMigrations() { return runSqlOneTimeMigrations("mysql", this.pool, buildSqlOneTimeMigrationInput(this.config)); }
150
256
  workflowJournal() { return new TiDBWorkflowJournalStore(this.pool); }
151
257
  outcomeSink() { return new TiDBOutcomeLedger(this.pool); }
152
258
  workflowRun(onWarn) { return new TiDBWorkflowRunStore(this.pool, onWarn); }
@@ -156,19 +262,20 @@ class TiDBBackend {
156
262
  workflowParkDecisions() { return (this.parkDecisionsInst ??= new SqlWorkflowParkDecisionStore(this.run())); }
157
263
  parkDecisionsInst;
158
264
  sharedMemoryStore(authorizer) { return new TiDBSharedMemoryStore(this.pool, authorizer); }
159
- checkpoint(logger) { return new TiDBCheckpointStore(this.pool, logger, { retention: sqlStoreRetention(this.config.retentionSweep), claims: this.run() }); }
265
+ checkpoint(logger) { return new TiDBCheckpointStore(this.pool, logger, { retention: sqlStoreRetention(this.config.retentionSweep) }); }
160
266
  checkpointReadView() { return this.checkpoint(); }
161
267
  toolResult() { return new TiDBToolResultStore(this.pool, { retention: sqlStoreRetention(this.config.retentionSweep) }); }
162
268
  imageIndex() { return new TiDBImageIndex(this.pool); }
163
269
  imageBake() { return new TiDBImageBake(this.pool); }
164
270
  leaderRun() { return new TiDBLeaderRunStore(this.pool); }
165
271
  device() { return new TiDBDeviceStore(this.pool); }
166
- retention(opts) { return new TiDBRetentionStore(this.pool, opts); }
272
+ retention(opts) { return createSqlRetentionExecutor(mysqlDriver(this.pool), opts); }
273
+ sessionEraser(opts) { return createSqlSessionEraser(mysqlDriver(this.pool), opts); }
167
274
  retentionLane() { return new TiDBRetentionLaneStore(this.pool); }
168
275
  breaker(onWriteFail) { return new TiDBBreakerState(this.pool, onWriteFail); }
169
276
  costQuota(limitMicroUsd, windowMs, onDegraded) { return new TiDBCostQuota(this.pool, limitMicroUsd, windowMs, undefined, onDegraded, this.config.dbQueryTimeoutMs); }
170
277
  rateLimiter(limit, onDegraded) { return new TiDBRateLimiter(this.pool, limit, undefined, undefined, onDegraded, this.config.dbQueryTimeoutMs); }
171
- session() { return new TiDBSessionStore(this.pool, { retention: sqlStoreRetention(this.config.retentionSweep) }); }
278
+ session() { return new SqlSessionStore(mysqlDriver(this.pool), (hooks) => new TiDBSessionStore(this.pool, { retention: sqlStoreRetention(this.config.retentionSweep), hooks })); }
172
279
  adoptionLog() { return new TiDBAdoptionLogStore(this.pool); }
173
280
  mysqlPool() { return this.pool; }
174
281
  pgPool() { return undefined; }
@@ -177,14 +284,16 @@ class TiDBBackend {
177
284
  class PgBackend {
178
285
  pool;
179
286
  config;
287
+ observers;
180
288
  kind = "pg";
181
- constructor(pool, config) {
289
+ constructor(pool, config, observers) {
182
290
  this.pool = pool;
183
291
  this.config = config;
292
+ this.observers = observers;
184
293
  }
185
294
  ensureSchema() { return ensurePgSchema(this.pool); }
186
295
  close() { return this.pool.end(); }
187
- run() { return (this.runStoreInst ??= new PgRunStore(this.pool)); }
296
+ run() { return (this.runStoreInst ??= new PgRunStore(this.pool, createRunStallWiring(this.config, this.observers))); }
188
297
  runStoreInst;
189
298
  resumeAnchor() { return new PgResumeAnchorStore(this.pool); }
190
299
  approvalExemption() { return new PgApprovalExemptionStore(this.pool); }
@@ -194,13 +303,13 @@ class PgBackend {
194
303
  permissionRule() { return createSqlPermissionRuleStores(pgDriver(this.pool)); }
195
304
  sendFileLedger() { return new PgSendFileLedger(this.pool); }
196
305
  userInputLedger() { return new PgUserInputLedgerStore(this.pool); }
197
- sessionPolicy(logger) { return new PgSessionPolicyStore(this.pool, logger); }
198
- fileHistory() { return new PgFileHistoryStore(this.pool, historyBlobBackend(this.config, "pg", this.pool), this.config.fileHistory); }
306
+ sessionPolicy(logger) { return new PgSessionPolicyStore(this.pool, countClientWriteOn, logger ?? createLogger()); }
307
+ fileHistory() { return new PgFileHistoryStore(this.pool, fileHistoryOptions(this.config)); }
199
308
  memoryOptOutGrant() { return new PgMemoryOptOutGrantStore(this.pool); }
200
309
  sessionCaptureRecords() { return () => (this.captureRecordsInst ??= new PgSessionCaptureRecordStore(this.pool)); }
201
310
  captureRecordsInst;
202
311
  legacySnapshotBlobSweep() { return legacySweepImpl(this.config, "pg", this.pool); }
203
- runOneTimeMigrations() { return runSqlOneTimeMigrations("pg", this.pool, { lanes: deployedExecutionLanes(this.config) }); }
312
+ runOneTimeMigrations() { return runSqlOneTimeMigrations("pg", this.pool, buildSqlOneTimeMigrationInput(this.config)); }
204
313
  workflowJournal() { return new PgWorkflowJournalStore(this.pool); }
205
314
  outcomeSink() { return new PgOutcomeLedger(this.pool); }
206
315
  workflowRun(onWarn) { return new PgWorkflowRunStore(this.pool, onWarn); }
@@ -210,19 +319,20 @@ class PgBackend {
210
319
  workflowParkDecisions() { return (this.parkDecisionsInst ??= new SqlWorkflowParkDecisionStore(this.run())); }
211
320
  parkDecisionsInst;
212
321
  sharedMemoryStore(authorizer) { return new PgSharedMemoryStore(this.pool, authorizer); }
213
- checkpoint(logger) { return new PgCheckpointStore(this.pool, logger, { retention: sqlStoreRetention(this.config.retentionSweep), claims: this.run() }); }
322
+ checkpoint(logger) { return new PgCheckpointStore(this.pool, logger, { retention: sqlStoreRetention(this.config.retentionSweep) }); }
214
323
  checkpointReadView() { return this.checkpoint(); }
215
324
  toolResult() { return new PgToolResultStore(this.pool, { retention: sqlStoreRetention(this.config.retentionSweep) }); }
216
325
  imageIndex() { return new PgImageIndex(this.pool); }
217
326
  imageBake() { return new PgImageBake(this.pool); }
218
327
  leaderRun() { return new PgLeaderRunStore(this.pool); }
219
328
  device() { return new PgDeviceStore(this.pool); }
220
- retention(opts) { return new PgRetentionStore(this.pool, opts); }
329
+ retention(opts) { return createSqlRetentionExecutor(pgDriver(this.pool), opts); }
330
+ sessionEraser(opts) { return createSqlSessionEraser(pgDriver(this.pool), opts); }
221
331
  retentionLane() { return new PgRetentionLaneStore(this.pool); }
222
332
  breaker(onWriteFail) { return new PgBreakerState(this.pool, onWriteFail); }
223
333
  costQuota(limitMicroUsd, windowMs, onDegraded) { return new PgCostQuota(this.pool, limitMicroUsd, windowMs, undefined, onDegraded, this.config.dbQueryTimeoutMs); }
224
334
  rateLimiter(limit, onDegraded) { return new PgRateLimiter(this.pool, limit, undefined, undefined, onDegraded, this.config.dbQueryTimeoutMs); }
225
- session() { return new PgSessionStore(this.pool, { retention: sqlStoreRetention(this.config.retentionSweep) }); }
335
+ session() { return new SqlSessionStore(pgDriver(this.pool), (hooks) => new PgSessionStore(this.pool, { retention: sqlStoreRetention(this.config.retentionSweep), hooks })); }
226
336
  adoptionLog() { return new PgAdoptionLogStore(this.pool); }
227
337
  mysqlPool() { return undefined; }
228
338
  pgPool() { return this.pool; }
@@ -231,6 +341,22 @@ class PgBackend {
231
341
  export function localSessionRowsOf(backend) {
232
342
  return backend instanceof LocalBackend ? backend.session() : undefined;
233
343
  }
344
+ export function localClientWritesOf(backend) {
345
+ return backend instanceof LocalBackend ? backend.session() : undefined;
346
+ }
347
+ function createClientCountedPolicyStore(inner, sessions) {
348
+ const listBySession = inner.listBySession?.bind(inner);
349
+ const deleteBySession = inner.deleteBySession?.bind(inner);
350
+ return {
351
+ getRules: (sessionId, principal) => inner.getRules(sessionId, principal),
352
+ putRules: (sessionId, principal, rules, opts) => sessions.withClientWrite(sessionId, async (count) => {
353
+ await count();
354
+ return inner.putRules(sessionId, principal, rules, opts);
355
+ }),
356
+ ...(listBySession !== undefined ? { listBySession } : {}),
357
+ ...(deleteBySession !== undefined ? { deleteBySession } : {}),
358
+ };
359
+ }
234
360
  class LocalBackend {
235
361
  kind = "local";
236
362
  fileBackend;
@@ -250,34 +376,30 @@ class LocalBackend {
250
376
  discloseWarn;
251
377
  parkDecisionLedgerRoot;
252
378
  executionLanes;
253
- constructor(root, config, onWarn, onError) {
379
+ identityBoundary;
380
+ dataDirLayout;
381
+ constructor(fileBackend, config, discloseWarn, onWarn, onError, observers) {
254
382
  this.executionLanes = deployedExecutionLanes(config);
383
+ this.identityBoundary = DEPLOYMENT_SHAPE_PREDICATES.identityBoundary.holds(config);
255
384
  this.onWarn = onWarn;
256
- this.discloseWarn = onWarn ?? ((msg, meta) => console.warn(msg, meta));
385
+ this.discloseWarn = discloseWarn;
257
386
  this.onError = onError;
258
- try {
259
- this.fileBackend = acquireLocalBackendWithWait(() => new FileStorageBackend({
260
- root,
261
- ...(config.fileHistory !== undefined ? { fileHistory: config.fileHistory } : {}),
262
- onCorruptRead: createDurableAbsenceSeat((msg, fields) => this.discloseWarn(msg, fields), root, "file-history = a rewind boundary or scope read as missing"),
263
- }), config.storeLockWaitMs, (fields) => this.onWarn?.("store_dir_lock_wait", { ...fields }));
264
- }
265
- catch (e) {
266
- if (e instanceof AdoptionError)
267
- throw e;
268
- const tail = buildStoreOpenRefusalTail(e, "http");
269
- throw new Error(`DB_BACKEND=local cannot open data dir ${root}: ${e instanceof Error ? e.message : String(e)}` +
270
- (tail === undefined ? "" : ` ${tail}`));
271
- }
387
+ this.fileBackend = fileBackend;
388
+ const root = localBackendRootOf(config);
272
389
  const corruptReadWarn = (msg, fields) => this.discloseWarn(msg, fields);
390
+ this.dataDirLayout = buildDataDirLayout({ configuredRoot: root, physicalRoot: this.fileBackend.root, memoryEngineRoot: memoryEngineRootFor(config, root) });
273
391
  this.runStore = new FileRunStore(this.fileBackend.root, {
392
+ rootRows: () => this.sessionStore,
274
393
  error: (msg, fields) => void (this.onError ?? this.onWarn)?.(msg, fields),
275
394
  strictHydrate: config.runStoreStrictHydrate,
395
+ stall: createRunStallWiring(config, observers),
276
396
  });
277
- this.sessionStore = new LocalSessionStore(createLocalSessionRepo(this.fileBackend.root), this.runStore, this.fileBackend.root, {
397
+ const physicalRoot = this.fileBackend.root;
398
+ this.sessionStore = new LocalSessionStore(createLocalSessionRepo(physicalRoot), this.runStore, physicalRoot, {
278
399
  log: createLogger(config.logLevel),
279
400
  durability: SESSION_DURABILITY,
280
401
  placements: SESSION_PLACEMENTS,
402
+ withdrawCheckpointCtx: (sessionId) => dropLocalCheckpointCtxStrict(physicalRoot, sessionId),
281
403
  });
282
404
  this.parkDecisionLedgerRoot = config.workflowRunStoreBackend === "memory" ? undefined : join(this.fileBackend.root, "workflows");
283
405
  this.resumeAnchorStore = new FileResumeAnchorStore(this.fileBackend.root);
@@ -297,28 +419,69 @@ class LocalBackend {
297
419
  : (plane) => fileSessionCaptureRecordStore(plane?.controlDir ?? ownControlDir);
298
420
  }
299
421
  async ensureSchema() {
422
+ this.executionLaneWordsRenamed += await this.sessionStore.renameRetiredExecutionLaneWordM40();
300
423
  await this.sessionStore.assertStrictSidecarsReadable();
424
+ await this.sessionStore.finishPendingDrops();
301
425
  await this.sessionStore.settleArchiveSnapshots();
426
+ const adoption = await this.sessionStore.adoptArchiveTokensM47();
427
+ this.archiveTokensAdopted += adoption.adopted;
428
+ this.archiveTokensMinted += adoption.minted;
302
429
  }
430
+ executionLaneWordsRenamed = 0;
431
+ archiveTokensAdopted = 0;
432
+ archiveTokensMinted = 0;
303
433
  async runOneTimeMigrations() {
434
+ const scenarioPrefixSourcesScanned = await switchLocalScenarioPrefixM42(join(this.fileBackend.root, LOCAL_MARKER_FILE), [
435
+ { source: "runs", rows: () => this.runStore.scenarioPrefixOwnerRowsM42() },
436
+ { source: "sessions", rows: () => this.sessionStore.scenarioPrefixOwnerRowsM42() },
437
+ { source: "approval asks", rows: () => this.approvalAskStore.scenarioPrefixOwnerRowsM42() },
438
+ { source: "attachments", rows: () => new LocalTaskAttachmentStore(this.fileBackend.root).scenarioPrefixOwnerRowsM42() },
439
+ ]);
440
+ tightenLocalDataDirModes(this.dataDirLayout, {
441
+ tightened: (msg, meta) => this.onWarn?.(msg, meta),
442
+ refused: (msg, meta) => this.discloseWarn(msg, meta),
443
+ });
444
+ const runErrorCodeColumnRewritten = this.runStore.migrateRunErrorCodeColumnM44();
445
+ const runObjectivePreviewRewritten = this.runStore.migrateRunObjectivePreviewM45();
446
+ const shellSentinelOwnersCleared = this.identityBoundary ? 0 : (await this.sessionStore.clearShellSentinelOwnersM48()) + this.runStore.clearShellSentinelOwnersM48();
447
+ const checkpointHostSessionsBackfilled = existsSync(join(this.fileBackend.root, "checkpoint-session-tokens.json")) || existsSync(join(this.fileBackend.root, "checkpoint-scopes.json"))
448
+ ? await this.checkpointStoreOf().backfillHostSessionsM49()
449
+ : 0;
450
+ const legacySkillExemptionsDropped = dropLocalLegacySkillExemptionsM46(join(this.fileBackend.root, LOCAL_LEGACY_SKILL_EXEMPTION_MARKER_FILE), this.approvalExemptionStore);
304
451
  const archives = await this.sessionStore.migrateLocalArchives();
305
452
  const placements = await backfillLocalExecutionPlacements(this.runStore.sessionIdsWithRuns(), this.sessionStore.executionPlacementBackfill, { lanes: this.executionLanes });
306
- const importedLayerRoot = { importedLayerRootAllowsRetired: [], importedLayerRootBucketsSkipped: [] };
453
+ const importedLayerRoot = { importedLayerRootAllowsRetired: [], importedLayerRootBucketsSkipped: [], importedLayerRootBucketsUnnamed: 0 };
307
454
  if (existsSync(join(this.fileBackend.root, FILE_PERMISSION_RULE_DIR))) {
308
455
  const rules = this.permissionRule();
309
456
  await retireImportedLayerRootAllows({ candidateOwners: () => fileRuleBucketOwners(rules), durable: rules.durable, isWholeBucketRefusal: isFileBucketDamaged, isVanishedBucket: () => false }, importedLayerRoot);
310
457
  }
458
+ const localArchiveTokensAdopted = this.archiveTokensAdopted;
459
+ const localArchiveTokensMinted = this.archiveTokensMinted;
460
+ this.archiveTokensAdopted = 0;
461
+ this.archiveTokensMinted = 0;
462
+ const executionLaneWordsRenamed = this.executionLaneWordsRenamed + this.approvalAskStore.renameRetiredExecutionLaneWordM40();
463
+ this.executionLaneWordsRenamed = 0;
464
+ const askExecutionLanesBackfilled = backfillLocalAskExecutionLanes(this.approvalAskStore, { lanes: this.executionLanes });
311
465
  return {
312
466
  ...NO_SQL_MIGRATIONS,
467
+ runErrorCodeColumnRewritten,
468
+ runObjectivePreviewRewritten,
469
+ shellSentinelOwnersCleared,
470
+ checkpointHostSessionsBackfilled,
471
+ legacySkillExemptionsDropped,
313
472
  executionPlacementsBackfilled: placements.backfilled,
314
473
  executionPlacementSessionsUnreadable: placements.unreadable,
315
- askExecutionLanesBackfilled: backfillLocalAskExecutionLanes(this.approvalAskStore, { lanes: this.executionLanes }),
474
+ askExecutionLanesBackfilled,
475
+ executionLaneWordsRenamed,
476
+ scenarioPrefixSourcesScanned,
316
477
  askJournalRecordsUpgraded: this.approvalAskStore.upgradeJournalEnvelope(),
317
478
  localArchiveRowFactsBackfilled: archives.rowFactsBackfilled,
318
479
  localArchivesAnonymized: archives.anonymized,
319
480
  localArchivesKeptStamped: archives.keptStamped,
320
481
  localArchivesUnreadable: archives.unreadable,
321
482
  localArchiveSnapshotsRecovered: archives.snapshotsRecovered,
483
+ localArchiveTokensAdopted,
484
+ localArchiveTokensMinted,
322
485
  ...importedLayerRoot,
323
486
  };
324
487
  }
@@ -363,7 +526,6 @@ class LocalBackend {
363
526
  return (this.checkpointStoreInst ??= new LocalCheckpointStore(this.fileBackend.root, {
364
527
  getActiveTaskId: (sessionId) => this.runStore.getActiveTaskId(sessionId),
365
528
  readSessionOwner: async (sessionId) => (await this.sessionStore.headOf(sessionId))?.owner,
366
- claims: this.runStore,
367
529
  }));
368
530
  }
369
531
  checkpoint() {
@@ -371,8 +533,8 @@ class LocalBackend {
371
533
  if (!this.checkpointProbeWired) {
372
534
  this.checkpointProbeWired = true;
373
535
  this.runStore.setCheckpointProbe({
374
- hasPending: async (sessionId) => (await cs.findPendingTokenBySession(sessionId)) !== null,
375
- hasExpired: (sessionId) => cs.hasExpiredBySession(sessionId),
536
+ hasPending: async (sessionId) => (await cs.findPendingTokenBySession(sessionId, undefined, { axis: "run" })) !== null,
537
+ hasExpired: (sessionId) => cs.hasExpiredForRun(sessionId),
376
538
  });
377
539
  }
378
540
  return cs;
@@ -380,7 +542,8 @@ class LocalBackend {
380
542
  checkpointReadView() { return this.checkpointStoreOf(); }
381
543
  checkpointProbeWired = false;
382
544
  checkpointStoreInst;
383
- sessionPolicy() { return this.fileBackend.sessionPolicyStore; }
545
+ sessionPolicy() { return (this.sessionPolicyInst ??= createClientCountedPolicyStore(this.fileBackend.sessionPolicyStore, this.sessionStore)); }
546
+ sessionPolicyInst;
384
547
  fileUsageWindowStore() { return this.fileBackend.usageWindowStore; }
385
548
  fileHistory() { return this.fileBackend.fileHistoryStore; }
386
549
  memoryOptOutGrant() { return undefined; }
@@ -390,25 +553,109 @@ class LocalBackend {
390
553
  outcomeSink() { return this.outcomeSinkInst; }
391
554
  session() { return this.sessionStore; }
392
555
  toolResult() { return this.fileBackend.toolResultStore; }
556
+ engineFileStores() {
557
+ const fb = this.fileBackend;
558
+ return { checkpointStore: fb.checkpointStore, backgroundAgentStore: fb.backgroundAgentStore, mailboxStore: fb.mailboxStore, rosterStore: fb.rosterStore };
559
+ }
393
560
  mysqlPool() { return undefined; }
394
561
  pgPool() { return undefined; }
395
562
  }
396
563
  export function counterStoreLabel(store, kind) {
397
564
  return store ? `shared(${kind ?? "unknown"})` : "in-process";
398
565
  }
399
- export function createStoreBackend(config, onWarn, onError) {
566
+ const LOCAL_OPEN_REFUSAL_HEAD = {
567
+ http: (root) => `DB_BACKEND=local cannot open data dir ${root}`,
568
+ "run-local": (root) => `cannot open local data dir ${root}`,
569
+ };
570
+ export function openLocalBackend(config, opts) {
571
+ const { lane, onWarn, onError, observers } = opts;
572
+ const root = localBackendRootOf(config);
573
+ const discloseWarn = onWarn ?? createLogger().warn;
574
+ let fileBackend;
575
+ try {
576
+ fileBackend = acquireLocalBackendWithWait(() => new FileStorageBackend({
577
+ root,
578
+ ...(config.fileHistory !== undefined ? { fileHistory: config.fileHistory } : {}),
579
+ onCorruptRead: createDurableAbsenceSeat(discloseWarn, root, "file-history = a rewind boundary or scope read as missing"),
580
+ }), config.storeLockWaitMs, (fields) => onWarn?.("store_dir_lock_wait", { ...fields }));
581
+ }
582
+ catch (e) {
583
+ if (e instanceof AdoptionError)
584
+ throw e;
585
+ const tail = buildStoreOpenRefusalTail(e, lane);
586
+ throw new Error(`${LOCAL_OPEN_REFUSAL_HEAD[lane](root)}: ${e instanceof Error ? e.message : String(e)}` +
587
+ (tail === undefined ? "" : ` ${tail}`));
588
+ }
589
+ try {
590
+ const physicalRoot = fileBackend.root;
591
+ holdEngineHighWater(physicalRoot, serviceVersion(), (prior) => holdArchiveTokenAdoptionDuty(physicalRoot, prior, archiveTokenAdoptionCarried()));
592
+ }
593
+ catch (refusal) {
594
+ return new RefusedLocalBackend(fileBackend, refusal instanceof Error ? refusal : new Error(String(refusal)));
595
+ }
596
+ try {
597
+ return new LocalBackend(fileBackend, config, discloseWarn, onWarn, onError, observers);
598
+ }
599
+ catch (failure) {
600
+ return new RefusedLocalBackend(fileBackend, failure instanceof Error ? failure : new Error(String(failure)));
601
+ }
602
+ }
603
+ class RefusedLocalBackend {
604
+ fileBackend;
605
+ refusal;
606
+ kind = "local";
607
+ constructor(fileBackend, refusal) {
608
+ this.fileBackend = fileBackend;
609
+ this.refusal = refusal;
610
+ }
611
+ refused() {
612
+ throw this.refusal;
613
+ }
614
+ async ensureSchema() {
615
+ return this.refused();
616
+ }
617
+ async runOneTimeMigrations() {
618
+ return this.refused();
619
+ }
620
+ async close() {
621
+ await this.fileBackend.dispose();
622
+ }
623
+ run() { return this.refused(); }
624
+ resumeAnchor() { return this.refused(); }
625
+ approvalExemption() { return this.refused(); }
626
+ approvalNonce() { return this.refused(); }
627
+ orgDeliveryQuota() { return this.refused(); }
628
+ approvalAsk() { return this.refused(); }
629
+ permissionRule() { return this.refused(); }
630
+ sendFileLedger() { return this.refused(); }
631
+ userInputLedger() { return this.refused(); }
632
+ sessionPolicy() { return this.refused(); }
633
+ fileHistory() { return this.refused(); }
634
+ memoryOptOutGrant() { return this.refused(); }
635
+ sessionCaptureRecords() { return this.refused(); }
636
+ workflowJournal() { return this.refused(); }
637
+ outcomeSink() { return this.refused(); }
638
+ checkpointReadView() { return this.refused(); }
639
+ session() { return this.refused(); }
640
+ engineFileStores() { return this.refused(); }
641
+ toolResult() { return this.refused(); }
642
+ fileUsageWindowStore() { return this.refused(); }
643
+ mysqlPool() { return undefined; }
644
+ pgPool() { return undefined; }
645
+ }
646
+ export function createStoreBackend(config, onWarn, onError, observers) {
400
647
  if (config.dbBackend === "local")
401
- return new LocalBackend(config.localDataRoot ?? join(homedir(), ".ai-agent"), config, onWarn, onError);
648
+ return openLocalBackend(config, { lane: "http", onWarn, onError, observers });
402
649
  if (config.dbBackend === "pg") {
403
650
  if (!config.pg)
404
651
  return undefined;
405
652
  const pool = createPgPool(pgPoolOptions(config.pg, config.dbQueryTimeoutMs), onWarn);
406
- return withRetiredSchemaProbe(new PgBackend(pool, config), { dialect: "pg", pool }, { lanes: deployedExecutionLanes(config) });
653
+ return withRetiredSchemaProbe(new PgBackend(pool, config, observers), { dialect: "pg", pool }, { lanes: deployedExecutionLanes(config) });
407
654
  }
408
655
  if (!config.tidb)
409
656
  return undefined;
410
657
  const pool = createTidbPool(config);
411
- return withRetiredSchemaProbe(new TiDBBackend(pool, config), { dialect: "mysql", pool }, { lanes: deployedExecutionLanes(config) });
658
+ return withRetiredSchemaProbe(new TiDBBackend(pool, config, observers), { dialect: "mysql", pool }, { lanes: deployedExecutionLanes(config) });
412
659
  }
413
660
  function withRetiredSchemaProbe(inner, target, executionPlacementSwitch) {
414
661
  const guarded = Object.create(inner);
@@ -419,16 +666,19 @@ function withRetiredSchemaProbe(inner, target, executionPlacementSwitch) {
419
666
  };
420
667
  return guarded;
421
668
  }
422
- export async function openStoreBackendWithFallback(config, logger) {
669
+ export function localBackendRootOf(config) {
670
+ return config.localDataRoot ?? join(homedir(), ".ai-agent");
671
+ }
672
+ export async function openStoreBackendWithFallback(config, logger, observers) {
423
673
  const sqlEngine = config.dbBackend === "mysql" || config.dbBackend === "pg" ? config.dbBackend : undefined;
424
- const mayFallback = config.dbBackend === "local" && !config.dbBackendExplicit;
674
+ const mayFallback = config.dbBackend === "local" && !config.dbBackendExplicit && !localDataRootHoldsData(localBackendRootOf(config));
425
675
  let backend;
426
676
  let inFlight;
427
677
  try {
428
678
  const attempt = async () => {
429
679
  let built;
430
680
  try {
431
- built = createStoreBackend(config, (msg, meta) => logger.warn(msg, meta), logger.error === undefined ? undefined : (msg, meta) => logger.error(msg, meta));
681
+ built = createStoreBackend(config, (msg, meta) => logger.warn(msg, meta), logger.error === undefined ? undefined : (msg, meta) => logger.error(msg, meta), observers);
432
682
  inFlight = built;
433
683
  if (built)
434
684
  await built.ensureSchema();
@@ -448,8 +698,6 @@ export async function openStoreBackendWithFallback(config, logger) {
448
698
  }
449
699
  catch (err) {
450
700
  void inFlight?.close().catch(() => undefined);
451
- if (err instanceof AdoptionError)
452
- throw err;
453
701
  if (err instanceof StoreBootRefusalError)
454
702
  throw err;
455
703
  if (!mayFallback) {
@@ -477,10 +725,15 @@ export function sqlStoreCoordinatesAsUrl(config) {
477
725
  export function buildSqlStoreOpenRefusal(engine, endpoint, waitedMs, err) {
478
726
  const coords = engine === "pg" ? "PG_*" : "MYSQL_*";
479
727
  const detail = err instanceof Error ? err.message : String(err);
728
+ const definite = isDeploymentFaultError(err);
729
+ const answer = definite ? databaseAnswerCodesOf(engine, err) : undefined;
480
730
  const waited = waitedMs > 0 ? `after retrying for ${waitedMs}ms (STORE_LOCK_WAIT_MS)` : "on the first attempt (STORE_LOCK_WAIT_MS=0: no wait)";
481
- 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 ` +
731
+ const next = definite
732
+ ? `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; `
733
+ : `Next: fix the ${coords} coordinates or the store's reachability (the boot wait is STORE_LOCK_WAIT_MS); `;
734
+ 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 ` +
482
735
  `(SESSION_BACKEND=auto included: sessions, parked runs and every durable record would silently live in memory and vanish on restart). ` +
483
- `Next: fix the ${coords} coordinates or the store's reachability (the boot wait is STORE_LOCK_WAIT_MS); ` +
736
+ next +
484
737
  `or run explicitly in memory with DB_BACKEND=memory (and remove the ${coords} coordinates).`);
485
738
  }
486
739
  //# sourceMappingURL=store-backend.js.map