@sema-agent/server 7.146.0 → 7.148.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (850) hide show
  1. package/MIGRATION.md +1423 -24
  2. package/README.md +21 -8
  3. package/README.zh-CN.md +15 -9
  4. package/USAGE.md +537 -216
  5. package/deploy/facts/lanes.json +7 -0
  6. package/deploy/sema-up/README.md +18 -7
  7. package/deploy/sema-up/chart/templates/NOTES.txt +1 -1
  8. package/deploy/sema-up/chart/templates/_helpers.tpl +42 -4
  9. package/deploy/sema-up/chart/templates/server-v4pro.yaml +5 -4
  10. package/deploy/sema-up/chart/templates/server.yaml +5 -4
  11. package/deploy/sema-up/chart/values.yaml +4 -3
  12. package/deploy/sema-up/cluster-up.sh +75 -176
  13. package/deploy/sema-up/kube-up.sh +29 -49
  14. package/deploy/sema-up/lib/chart-run.sh +23 -0
  15. package/deploy/sema-up/lib/dataroot.sh +3 -3
  16. package/deploy/sema-up/lib/flagshape.sh +4 -0
  17. package/deploy/sema-up/lib/health.sh +62 -13
  18. package/deploy/sema-up/lib/helm-values-cluster.py +18 -0
  19. package/deploy/sema-up/lib/helm-values-kube.py +35 -0
  20. package/deploy/sema-up/lib/lanes.json +2 -5
  21. package/deploy/sema-up/lib/regcred.py +8 -0
  22. package/deploy/sema-up/lib/remote/helm-install.sh +3 -0
  23. package/deploy/sema-up/lib/remote/image-import.sh +6 -0
  24. package/deploy/sema-up/lib/remote/machine-precheck.sh +11 -0
  25. package/deploy/sema-up/lib/remote/region-probe.sh +3 -0
  26. package/deploy/sema-up/lib/remote/stack-ready.sh +26 -0
  27. package/deploy/sema-up/lib/remote/vxlan-guard.sh +8 -0
  28. package/deploy/sema-up/lib/render-stack.py +17 -0
  29. package/deploy/sema-up/lib/shell-text.sh +87 -0
  30. package/deploy/sema-up/lib/usage-flags.txt +10 -0
  31. package/deploy/sema-up/lib/usage-head.txt +1 -0
  32. package/deploy/sema-up/lib/usage-tail.txt +13 -0
  33. package/deploy/sema-up/preflight.sh +10 -8
  34. package/deploy/sema-up/sema-up.sh +26 -48
  35. package/deploy/sema-up/smoke.sh +7 -6
  36. package/deploy/sema-up/stack/compose.dataroot.yaml +3 -0
  37. package/deploy/sema-up/stack/compose.yaml +18 -5
  38. package/deploy/sema-up/stack/sema-stack-cluster.yaml +25 -3
  39. package/dist/adoption/plan.d.ts +24 -0
  40. package/dist/adoption/plan.js +53 -1
  41. package/dist/adoption/runner.d.ts +10 -1
  42. package/dist/adoption/runner.js +36 -16
  43. package/dist/adoption/wire.d.ts +3 -3
  44. package/dist/approval-card.d.ts +32 -34
  45. package/dist/approval-gate-currency.js +3 -2
  46. package/dist/approval-reconciler.d.ts +4 -13
  47. package/dist/approval-reconciler.js +2 -2
  48. package/dist/approval.d.ts +16 -14
  49. package/dist/approval.js +3 -3
  50. package/dist/audit.d.ts +10 -3
  51. package/dist/audit.js +17 -9
  52. package/dist/auth-bridge.d.ts +0 -14
  53. package/dist/auth-bridge.js +0 -7
  54. package/dist/auto-mode-face.d.ts +10 -7
  55. package/dist/auto-mode-face.js +7 -4
  56. package/dist/background-agent-name.d.ts +19 -1
  57. package/dist/background-agent-name.js +12 -2
  58. package/dist/background-session-reap.d.ts +1 -1
  59. package/dist/bake-runner/main.js +9 -6
  60. package/dist/bench/s1/arms.js +6 -5
  61. package/dist/bench/s1/live-deps.js +8 -3
  62. package/dist/bench/s1/run-firm.js +6 -5
  63. package/dist/bind-host.d.ts +25 -0
  64. package/dist/bind-host.js +25 -0
  65. package/dist/boot/adoption.d.ts +3 -0
  66. package/dist/boot/adoption.js +1 -0
  67. package/dist/boot/crash-last.js +2 -1
  68. package/dist/boot/deployment-mods.d.ts +1 -1
  69. package/dist/boot/device-lane.js +5 -5
  70. package/dist/boot/engine-lease.d.ts +12 -11
  71. package/dist/boot/execution-env.d.ts +19 -8
  72. package/dist/boot/execution-env.js +80 -62
  73. package/dist/boot/execution-lane.d.ts +37 -9
  74. package/dist/boot/execution-lane.js +74 -20
  75. package/dist/boot/exit-boundary.d.ts +3 -3
  76. package/dist/boot/exit-boundary.js +6 -5
  77. package/dist/boot/exit-last.js +2 -1
  78. package/dist/boot/fatal-exit.d.ts +3 -5
  79. package/dist/boot/fatal-exit.js +2 -2
  80. package/dist/boot/governance-seams.d.ts +2 -2
  81. package/dist/boot/leader.d.ts +15 -0
  82. package/dist/boot/leader.js +18 -16
  83. package/dist/boot/memory-boundary.d.ts +11 -11
  84. package/dist/boot/memory-boundary.js +3 -3
  85. package/dist/boot/memory-consolidation.d.ts +50 -53
  86. package/dist/boot/memory-consolidation.js +11 -18
  87. package/dist/boot/org-memory.js +4 -3
  88. package/dist/boot/parked-revive-gate.d.ts +1 -1
  89. package/dist/boot/parked-revive-gate.js +3 -3
  90. package/dist/boot/reapers.d.ts +4 -3
  91. package/dist/boot/reapers.js +20 -17
  92. package/dist/boot/resolve-spec.d.ts +5 -3
  93. package/dist/boot/resolve-spec.js +133 -165
  94. package/dist/boot/retention-lane.d.ts +7 -45
  95. package/dist/boot/retention-lane.js +2 -2
  96. package/dist/boot/runner-deps.d.ts +28 -7
  97. package/dist/boot/runner-deps.js +11 -4
  98. package/dist/boot/runtime-caps.d.ts +2 -2
  99. package/dist/boot/runtime-caps.js +16 -2
  100. package/dist/boot/session-faces.d.ts +17 -7
  101. package/dist/boot/session-faces.js +122 -96
  102. package/dist/boot/shutdown.d.ts +5 -4
  103. package/dist/boot/shutdown.js +6 -4
  104. package/dist/boot/stage-01-config.d.ts +1 -1
  105. package/dist/boot/stage-01-config.js +14 -2
  106. package/dist/boot/stage-02-web-admin-pull.d.ts +2 -1
  107. package/dist/boot/stage-02-web-admin-pull.js +15 -8
  108. package/dist/boot/stage-03-store-backend.d.ts +4 -1
  109. package/dist/boot/stage-03-store-backend.js +4 -3
  110. package/dist/boot/stage-04-stores.d.ts +3 -1
  111. package/dist/boot/stage-04-stores.js +2 -2
  112. package/dist/boot/stage-05-execution-env.d.ts +9 -5
  113. package/dist/boot/stage-05-execution-env.js +5 -5
  114. package/dist/boot/stage-06-runners.d.ts +13 -15
  115. package/dist/boot/stage-06-runners.js +24 -18
  116. package/dist/boot/stage-07-capability-layer.d.ts +14 -11
  117. package/dist/boot/stage-07-capability-layer.js +9 -12
  118. package/dist/boot/stage-08-reapers.d.ts +14 -11
  119. package/dist/boot/stage-08-reapers.js +3 -3
  120. package/dist/boot/stage-09-leader.d.ts +16 -18
  121. package/dist/boot/stage-09-leader.js +12 -4
  122. package/dist/boot/stage-10-http-server.d.ts +16 -18
  123. package/dist/boot/stage-10-http-server.js +9 -5
  124. package/dist/boot/store-evidence.d.ts +20 -0
  125. package/dist/boot/store-evidence.js +13 -0
  126. package/dist/boot/stores.d.ts +12 -0
  127. package/dist/boot/stores.js +39 -17
  128. package/dist/boot/task-list-lane.d.ts +4 -4
  129. package/dist/boot/web-admin.d.ts +4 -2
  130. package/dist/boot/web-admin.js +58 -38
  131. package/dist/boot/webfetch-summarize-lane.d.ts +1 -1
  132. package/dist/boot-reclaim.d.ts +3 -1
  133. package/dist/boot-reclaim.js +1 -1
  134. package/dist/brain.d.ts +7 -18
  135. package/dist/brain.js +5 -17
  136. package/dist/budget.js +6 -6
  137. package/dist/capabilities/center-plugins.d.ts +9 -1
  138. package/dist/capabilities/center-plugins.js +37 -11
  139. package/dist/capabilities/center-wiring.js +1 -1
  140. package/dist/capabilities/composite-members.d.ts +3 -2
  141. package/dist/capabilities/composite-members.js +3 -2
  142. package/dist/capabilities/execution-lane.d.ts +7 -7
  143. package/dist/capabilities/execution-lane.js +2 -2
  144. package/dist/capabilities/hands-lane.d.ts +1 -1
  145. package/dist/capabilities/repo-tools.d.ts +2 -0
  146. package/dist/capabilities/repo-tools.js +14 -12
  147. package/dist/capabilities/scenarios.d.ts +38 -33
  148. package/dist/capabilities/scenarios.js +24 -25
  149. package/dist/capabilities/settings-contract.d.ts +29 -0
  150. package/dist/capabilities/settings-contract.js +14 -0
  151. package/dist/capabilities/skills.d.ts +6 -6
  152. package/dist/capabilities/tool-defer.d.ts +1 -1
  153. package/dist/capability-facts.d.ts +69 -4
  154. package/dist/capability-facts.js +77 -5
  155. package/dist/card-void.d.ts +4 -4
  156. package/dist/card-void.js +1 -1
  157. package/dist/center-credential-renewer.d.ts +6 -2
  158. package/dist/center-credential-renewer.js +10 -5
  159. package/dist/config-catalog.d.ts +16 -1
  160. package/dist/config-catalog.js +68 -61
  161. package/dist/config-dir-trust.d.ts +37 -4
  162. package/dist/config-dir-trust.js +88 -44
  163. package/dist/config-invariants.d.ts +58 -4
  164. package/dist/config-invariants.js +104 -23
  165. package/dist/config-lkg.d.ts +24 -2
  166. package/dist/config-lkg.js +22 -9
  167. package/dist/config-provider.d.ts +9 -9
  168. package/dist/config-provider.js +25 -108
  169. package/dist/config-pull-failure.d.ts +50 -0
  170. package/dist/config-pull-failure.js +48 -0
  171. package/dist/config-types.d.ts +215 -202
  172. package/dist/config.d.ts +69 -14
  173. package/dist/config.js +188 -96
  174. package/dist/degenerate-instrument.js +1 -1
  175. package/dist/delegated-session-owner.d.ts +1 -1
  176. package/dist/deleted-session-ids.d.ts +3 -2
  177. package/dist/deploy-facts.js +3 -2
  178. package/dist/deployment-governance.d.ts +3 -3
  179. package/dist/deployment-shape.d.ts +51 -16
  180. package/dist/deployment-shape.js +31 -6
  181. package/dist/egress-redirect.d.ts +25 -7
  182. package/dist/egress-redirect.js +20 -2
  183. package/dist/elicitation.d.ts +6 -5
  184. package/dist/elicitation.js +23 -22
  185. package/dist/engine-identity.d.ts +28 -0
  186. package/dist/engine-identity.js +10 -0
  187. package/dist/entry-problems.d.ts +5 -7
  188. package/dist/entry-problems.js +1 -1
  189. package/dist/env-facts.d.ts +7 -5
  190. package/dist/env-facts.js +12 -7
  191. package/dist/env-witness.d.ts +7 -0
  192. package/dist/env-witness.js +16 -0
  193. package/dist/execution-config-root.d.ts +5 -5
  194. package/dist/execution-config-root.js +5 -5
  195. package/dist/execution-env-purpose.d.ts +14 -0
  196. package/dist/execution-env-purpose.js +29 -0
  197. package/dist/execution-lane-caps.d.ts +53 -103
  198. package/dist/execution-lane-caps.js +51 -83
  199. package/dist/execution-placement.d.ts +65 -9
  200. package/dist/execution-placement.js +58 -0
  201. package/dist/field-conflict.d.ts +7 -11
  202. package/dist/field-conflict.js +3 -3
  203. package/dist/file-history-capture.d.ts +3 -3
  204. package/dist/file-history-disclosure.d.ts +2 -2
  205. package/dist/file-history-disclosure.js +1 -0
  206. package/dist/fleet/drain-entry.d.ts +17 -10
  207. package/dist/fleet/drain-entry.js +1 -1
  208. package/dist/fleet/fleet-bus.d.ts +21 -3
  209. package/dist/fleet/fleet-bus.js +35 -25
  210. package/dist/fleet/fleet-reconciler.js +2 -2
  211. package/dist/fleet/serving-lease.js +6 -7
  212. package/dist/fleet-client.js +3 -3
  213. package/dist/fleet-lease.d.ts +0 -1
  214. package/dist/fleet-lease.js +4 -5
  215. package/dist/history-anchor.d.ts +42 -0
  216. package/dist/history-anchor.js +34 -0
  217. package/dist/hitl-delivery.d.ts +90 -0
  218. package/dist/hitl-delivery.js +98 -0
  219. package/dist/hooks/classic-stations.d.ts +8 -11
  220. package/dist/hooks/classic-stations.js +0 -7
  221. package/dist/hooks/command-spawn.d.ts +1 -4
  222. package/dist/hooks/command-spawn.js +0 -11
  223. package/dist/hooks/hook-llm.d.ts +5 -1
  224. package/dist/hooks/hook-llm.js +24 -15
  225. package/dist/hooks/hook-runner.d.ts +119 -65
  226. package/dist/hooks/hook-runner.js +415 -217
  227. package/dist/host-lsp-manager.d.ts +22 -8
  228. package/dist/host-lsp-manager.js +4 -1
  229. package/dist/http/active-run-conflict.d.ts +2 -43
  230. package/dist/http/active-run-conflict.js +3 -7
  231. package/dist/http/admission.d.ts +4 -18
  232. package/dist/http/admission.js +75 -78
  233. package/dist/http/approval-sweeps.d.ts +5 -8
  234. package/dist/http/approval-sweeps.js +55 -30
  235. package/dist/http/caller-trust.d.ts +8 -10
  236. package/dist/http/caller-trust.js +1 -2
  237. package/dist/http/checkpoint-ctx.d.ts +17 -0
  238. package/dist/http/checkpoint-ctx.js +6 -0
  239. package/dist/http/claim-heartbeat.d.ts +49 -0
  240. package/dist/http/claim-heartbeat.js +46 -0
  241. package/dist/http/claim-latency.d.ts +10 -0
  242. package/dist/http/claim-latency.js +12 -0
  243. package/dist/http/claimed-run.d.ts +4 -3
  244. package/dist/http/dispatch.d.ts +8 -1
  245. package/dist/http/dispatch.js +77 -31
  246. package/dist/http/durable-run-leg.d.ts +3 -3
  247. package/dist/http/durable-run-leg.js +18 -12
  248. package/dist/http/execution-context.d.ts +18 -42
  249. package/dist/http/execution-context.js +11 -5
  250. package/dist/http/health-reader.d.ts +36 -0
  251. package/dist/http/health-reader.js +21 -0
  252. package/dist/http/health-self-report.d.ts +9 -9
  253. package/dist/http/health-self-report.js +4 -4
  254. package/dist/http/idempotency.d.ts +9 -5
  255. package/dist/http/idempotency.js +4 -4
  256. package/dist/http/memory-compliance-failure-reply.d.ts +15 -16
  257. package/dist/http/memory-compliance-failure-reply.js +7 -2
  258. package/dist/http/memory-face-fault-reply.d.ts +67 -0
  259. package/dist/http/memory-face-fault-reply.js +71 -0
  260. package/dist/http/memory-store-refusal-reply.d.ts +3 -3
  261. package/dist/http/memory-store-refusal-reply.js +6 -0
  262. package/dist/http/owner-access.d.ts +391 -56
  263. package/dist/http/owner-access.js +372 -33
  264. package/dist/http/principal-gate.d.ts +26 -94
  265. package/dist/http/principal-gate.js +24 -81
  266. package/dist/http/refusal-body.d.ts +35 -2
  267. package/dist/http/refusal-body.js +34 -0
  268. package/dist/http/request-guards.d.ts +10 -14
  269. package/dist/http/request-guards.js +34 -68
  270. package/dist/http/resume-composition.d.ts +37 -0
  271. package/dist/http/resume-composition.js +18 -0
  272. package/dist/http/resume-ctx-read.d.ts +35 -12
  273. package/dist/http/resume-ctx-read.js +25 -6
  274. package/dist/http/resume-legs.d.ts +24 -24
  275. package/dist/http/resume-legs.js +260 -171
  276. package/dist/http/retired-skill-manifest.d.ts +1 -1
  277. package/dist/http/rewind-files-reply.d.ts +34 -0
  278. package/dist/http/rewind-files-reply.js +36 -0
  279. package/dist/http/route-ctx.d.ts +56 -47
  280. package/dist/http/route-table.js +2 -0
  281. package/dist/http/routes/a2a-serve.d.ts +43 -5
  282. package/dist/http/routes/a2a-serve.js +58 -37
  283. package/dist/http/routes/admin-config-refresh.js +2 -2
  284. package/dist/http/routes/admin-drain.js +2 -2
  285. package/dist/http/routes/admin-memory-optout.js +4 -3
  286. package/dist/http/routes/adoption.d.ts +3 -0
  287. package/dist/http/routes/adoption.js +17 -10
  288. package/dist/http/routes/agents-roster.js +13 -7
  289. package/dist/http/routes/approvals-assistant.js +73 -88
  290. package/dist/http/routes/attachments.js +2 -2
  291. package/dist/http/routes/background.d.ts +3 -3
  292. package/dist/http/routes/background.js +9 -17
  293. package/dist/http/routes/capabilities.js +23 -20
  294. package/dist/http/routes/config-catalog.js +2 -2
  295. package/dist/http/routes/devices.d.ts +3 -3
  296. package/dist/http/routes/devices.js +5 -5
  297. package/dist/http/routes/diagnostics.d.ts +27 -3
  298. package/dist/http/routes/diagnostics.js +27 -21
  299. package/dist/http/routes/engine.js +2 -2
  300. package/dist/http/routes/fleet.js +5 -3
  301. package/dist/http/routes/images.js +10 -6
  302. package/dist/http/routes/leader.d.ts +7 -2
  303. package/dist/http/routes/leader.js +12 -3
  304. package/dist/http/routes/mcp-reconnect.d.ts +1 -1
  305. package/dist/http/routes/mcp-reconnect.js +7 -15
  306. package/dist/http/routes/memory-bundle.js +4 -7
  307. package/dist/http/routes/memory-compliance.js +4 -4
  308. package/dist/http/routes/memory-consolidation.js +6 -9
  309. package/dist/http/routes/memory-origin.d.ts +3 -1
  310. package/dist/http/routes/memory-origin.js +7 -8
  311. package/dist/http/routes/memory-policy.js +17 -12
  312. package/dist/http/routes/notify-wake.js +12 -20
  313. package/dist/http/routes/observability.js +3 -3
  314. package/dist/http/routes/principal-inbox.d.ts +1 -1
  315. package/dist/http/routes/principal-inbox.js +2 -2
  316. package/dist/http/routes/projects.d.ts +70 -0
  317. package/dist/http/routes/projects.js +87 -0
  318. package/dist/http/routes/retention-ops.js +6 -9
  319. package/dist/http/routes/rules.js +50 -7
  320. package/dist/http/routes/run-memory-capture.d.ts +2 -2
  321. package/dist/http/routes/run-memory-capture.js +6 -12
  322. package/dist/http/routes/run-permission-mode.d.ts +2 -2
  323. package/dist/http/routes/run-permission-mode.js +10 -17
  324. package/dist/http/routes/runs.js +148 -233
  325. package/dist/http/routes/session-memory-sync.d.ts +2 -2
  326. package/dist/http/routes/session-memory-sync.js +7 -13
  327. package/dist/http/routes/session-sync.d.ts +4 -2
  328. package/dist/http/routes/session-sync.js +48 -30
  329. package/dist/http/routes/sessions-list.d.ts +3 -3
  330. package/dist/http/routes/sessions-list.js +9 -9
  331. package/dist/http/routes/sessions.d.ts +7 -1
  332. package/dist/http/routes/sessions.js +177 -112
  333. package/dist/http/routes/shared-memory.js +6 -6
  334. package/dist/http/routes/side-query.js +2 -2
  335. package/dist/http/routes/tasks.js +144 -122
  336. package/dist/http/routes/trace-usage.d.ts +0 -12
  337. package/dist/http/routes/trace-usage.js +40 -46
  338. package/dist/http/routes/workflows.d.ts +39 -4
  339. package/dist/http/routes/workflows.js +42 -14
  340. package/dist/http/run-concurrency-cap.d.ts +20 -12
  341. package/dist/http/run-concurrency-cap.js +39 -26
  342. package/dist/http/run-read-face.d.ts +3 -5
  343. package/dist/http/run-read-face.js +8 -13
  344. package/dist/http/send.d.ts +12 -3
  345. package/dist/http/send.js +42 -6
  346. package/dist/http/server.d.ts +63 -50
  347. package/dist/http/server.js +52 -16
  348. package/dist/http/sse-log.d.ts +17 -10
  349. package/dist/http/sse-log.js +7 -7
  350. package/dist/http/stored-body-replay.d.ts +17 -3
  351. package/dist/http/stored-body-replay.js +11 -2
  352. package/dist/http/submit-ctx.d.ts +16 -8
  353. package/dist/http/submit-ctx.js +6 -2
  354. package/dist/http/submit-replay.d.ts +19 -6
  355. package/dist/http/submit-replay.js +18 -6
  356. package/dist/http/sync-submit-body.d.ts +3 -4
  357. package/dist/http/sync-submit-body.js +4 -5
  358. package/dist/http/wire-types.d.ts +23 -13
  359. package/dist/identity-source.d.ts +36 -5
  360. package/dist/identity-source.js +27 -0
  361. package/dist/index.d.ts +3 -2
  362. package/dist/index.js +2 -1
  363. package/dist/instruction-source-notice.d.ts +1 -1
  364. package/dist/key-resolver.d.ts +32 -0
  365. package/dist/key-resolver.js +23 -9
  366. package/dist/leader/diffup.js +2 -1
  367. package/dist/leader/endpoint.d.ts +26 -5
  368. package/dist/leader/endpoint.js +154 -14
  369. package/dist/leader/fanout.d.ts +3 -0
  370. package/dist/leader/fanout.js +78 -63
  371. package/dist/leader/leader.d.ts +16 -0
  372. package/dist/leader/leader.js +43 -3
  373. package/dist/leader/merge.d.ts +9 -1
  374. package/dist/leader/merge.js +16 -1
  375. package/dist/leader/repair-wire.js +1 -1
  376. package/dist/leader/wire.d.ts +36 -3
  377. package/dist/leader/wire.js +59 -18
  378. package/dist/lsp-evict.d.ts +6 -4
  379. package/dist/lsp-evict.js +2 -3
  380. package/dist/memory-embedder-reembed.d.ts +38 -0
  381. package/dist/memory-embedder-reembed.js +20 -0
  382. package/dist/memory-incident-sink.d.ts +0 -28
  383. package/dist/memory-incident-sink.js +5 -0
  384. package/dist/memory-operator-faces.d.ts +5 -4
  385. package/dist/memory-operator-faces.js +1 -1
  386. package/dist/memory-scope.d.ts +31 -4
  387. package/dist/memory-scope.js +65 -16
  388. package/dist/memory-store-refusal.d.ts +20 -4
  389. package/dist/memory-store-refusal.js +1 -1
  390. package/dist/memory-sync-client.d.ts +5 -2
  391. package/dist/memory-sync-client.js +19 -14
  392. package/dist/memory-sync.js +1 -1
  393. package/dist/model-compat.d.ts +51 -28
  394. package/dist/model-compat.js +55 -23
  395. package/dist/model-context-window.d.ts +18 -0
  396. package/dist/model-context-window.js +2 -0
  397. package/dist/model-entry-headers.d.ts +46 -4
  398. package/dist/model-entry-headers.js +2 -2
  399. package/dist/model-entry-refusal.d.ts +46 -17
  400. package/dist/model-entry-refusal.js +47 -27
  401. package/dist/model-plane-face.d.ts +19 -11
  402. package/dist/model-plane-face.js +9 -1
  403. package/dist/model-plane-probe.d.ts +2 -0
  404. package/dist/model-plane-probe.js +17 -0
  405. package/dist/model-provider.d.ts +3 -3
  406. package/dist/model-route-endpoint.d.ts +9 -5
  407. package/dist/model-route-endpoint.js +29 -7
  408. package/dist/model-select.d.ts +16 -0
  409. package/dist/model-select.js +4 -0
  410. package/dist/mountinfo.d.ts +37 -0
  411. package/dist/mountinfo.js +47 -0
  412. package/dist/namespaced-rule-name.d.ts +28 -2
  413. package/dist/namespaced-rule-name.js +10 -1
  414. package/dist/net-address.d.ts +1 -1
  415. package/dist/observability/corrupt-read-seat.d.ts +4 -4
  416. package/dist/observability/corrupt-read-seat.js +5 -3
  417. package/dist/observability/fail-open.d.ts +75 -47
  418. package/dist/observability/fail-open.js +77 -47
  419. package/dist/observability/logger.d.ts +22 -1
  420. package/dist/observability/logger.js +89 -12
  421. package/dist/observability/metrics.d.ts +2 -0
  422. package/dist/observability/metrics.js +5 -4
  423. package/dist/observability/otel-exporter.js +2 -1
  424. package/dist/observability/principal-context.d.ts +14 -7
  425. package/dist/observability/principal-context.js +8 -3
  426. package/dist/observability/run-terminal.d.ts +7 -1
  427. package/dist/observability/run-terminal.js +5 -2
  428. package/dist/observability/secret-env-scrub.d.ts +30 -4
  429. package/dist/observability/secret-env-scrub.js +15 -3
  430. package/dist/orchestration/hardened-vm-runner.d.ts +1 -0
  431. package/dist/orchestration/hardened-vm-runner.js +11 -5
  432. package/dist/orchestration/hardened-vm-worker-runner.d.ts +0 -14
  433. package/dist/orchestration/hardened-vm-worker-runner.js +5 -0
  434. package/dist/orchestration/hardened-vm-worker.js +2 -1
  435. package/dist/orchestration/workflow-agent-session-index.d.ts +7 -12
  436. package/dist/orchestration/workflow-agent-session-index.js +1 -6
  437. package/dist/orchestration/workflow-completion-inbox.d.ts +29 -9
  438. package/dist/orchestration/workflow-completion-inbox.js +65 -46
  439. package/dist/org-delivery-gate.d.ts +5 -4
  440. package/dist/org-delivery-gate.js +7 -6
  441. package/dist/org-memory-admission.d.ts +5 -2
  442. package/dist/org-memory-admission.js +25 -10
  443. package/dist/outbound-dispatcher.d.ts +1 -1
  444. package/dist/outbound-dispatcher.js +6 -12
  445. package/dist/owner-brands.d.ts +81 -0
  446. package/dist/owner-brands.js +42 -0
  447. package/dist/owner-faces.d.ts +531 -0
  448. package/dist/owner-faces.js +126 -0
  449. package/dist/parked-decide.d.ts +100 -31
  450. package/dist/parked-decide.js +162 -48
  451. package/dist/parked-revive-surface.d.ts +14 -4
  452. package/dist/parked-revive-surface.js +5 -4
  453. package/dist/peer-directory.d.ts +6 -8
  454. package/dist/peer-directory.js +3 -2
  455. package/dist/permission-rule-vocab.d.ts +53 -8
  456. package/dist/permission-rule-vocab.js +30 -2
  457. package/dist/plugins/adoption-log-sql.d.ts +0 -22
  458. package/dist/plugins/adoption-log-sql.js +5 -3
  459. package/dist/plugins/approval-ask-retired-delete-by-task-m50.d.ts +7 -0
  460. package/dist/plugins/approval-ask-retired-delete-by-task-m50.js +17 -0
  461. package/dist/plugins/approval-ask-store-file.d.ts +28 -9
  462. package/dist/plugins/approval-ask-store-file.js +74 -18
  463. package/dist/plugins/approval-ask-store-memory.d.ts +17 -7
  464. package/dist/plugins/approval-ask-store-memory.js +35 -12
  465. package/dist/plugins/approval-ask-store-sql.d.ts +42 -20
  466. package/dist/plugins/approval-ask-store-sql.js +44 -11
  467. package/dist/plugins/approval-exemption-skill-m46.d.ts +20 -0
  468. package/dist/plugins/approval-exemption-skill-m46.js +25 -0
  469. package/dist/plugins/approval-exemption-store.d.ts +6 -1
  470. package/dist/plugins/approval-exemption-store.js +14 -0
  471. package/dist/plugins/approval-nonce-store.d.ts +39 -12
  472. package/dist/plugins/approval-nonce-store.js +72 -23
  473. package/dist/plugins/blob-backend.d.ts +40 -195
  474. package/dist/plugins/blob-backend.js +41 -234
  475. package/dist/plugins/caching-session-store.d.ts +22 -5
  476. package/dist/plugins/caching-session-store.js +43 -4
  477. package/dist/plugins/checkpoint-index-columns.d.ts +33 -6
  478. package/dist/plugins/checkpoint-index-columns.js +39 -3
  479. package/dist/plugins/checkpoint-store-face.d.ts +84 -11
  480. package/dist/plugins/checkpoint-store-face.js +18 -1
  481. package/dist/plugins/device-store-sql.d.ts +2 -2
  482. package/dist/plugins/device-store-sql.js +6 -10
  483. package/dist/plugins/ensure-index.d.ts +13 -1
  484. package/dist/plugins/ensure-index.js +154 -21
  485. package/dist/plugins/ensure-schema-lock-policy.d.ts +0 -15
  486. package/dist/plugins/ensure-schema-lock-policy.js +3 -2
  487. package/dist/plugins/execution-lane-rename-m40.d.ts +20 -0
  488. package/dist/plugins/execution-lane-rename-m40.js +10 -0
  489. package/dist/plugins/execution-placement-sql.d.ts +63 -88
  490. package/dist/plugins/execution-placement-sql.js +94 -54
  491. package/dist/plugins/file-run-store.d.ts +89 -35
  492. package/dist/plugins/file-run-store.js +197 -142
  493. package/dist/plugins/host-platform.d.ts +24 -3
  494. package/dist/plugins/host-platform.js +15 -1
  495. package/dist/plugins/image-bake-store-sql.js +2 -0
  496. package/dist/plugins/imported-layer-root-retirement.d.ts +19 -10
  497. package/dist/plugins/imported-layer-root-retirement.js +4 -8
  498. package/dist/plugins/inbox-payload-column.d.ts +14 -0
  499. package/dist/plugins/inbox-payload-column.js +13 -0
  500. package/dist/plugins/k8s-pod-reaper.d.ts +1 -3
  501. package/dist/plugins/k8s-pod-reaper.js +0 -1
  502. package/dist/plugins/leader-run-store-sql.d.ts +22 -0
  503. package/dist/plugins/leader-run-store-sql.js +34 -4
  504. package/dist/plugins/local-checkpoint-store.d.ts +63 -23
  505. package/dist/plugins/local-checkpoint-store.js +204 -81
  506. package/dist/plugins/local-data-dir-modes-m39.d.ts +48 -0
  507. package/dist/plugins/local-data-dir-modes-m39.js +183 -0
  508. package/dist/plugins/local-docker-capacity.d.ts +93 -0
  509. package/dist/plugins/local-docker-capacity.js +194 -0
  510. package/dist/plugins/local-docker-reaper.d.ts +92 -0
  511. package/dist/plugins/local-docker-reaper.js +102 -0
  512. package/dist/plugins/local-engine-high-water.d.ts +13 -0
  513. package/dist/plugins/local-engine-high-water.js +62 -0
  514. package/dist/plugins/local-session-store.d.ts +442 -143
  515. package/dist/plugins/local-session-store.js +941 -289
  516. package/dist/plugins/local-session-window.d.ts +3 -2
  517. package/dist/plugins/local-session-window.js +3 -2
  518. package/dist/plugins/local-sidecar-quarantine.js +3 -2
  519. package/dist/plugins/local-task-attachment-store.d.ts +20 -1
  520. package/dist/plugins/local-task-attachment-store.js +32 -12
  521. package/dist/plugins/memory-embedder-fingerprint.d.ts +33 -10
  522. package/dist/plugins/memory-embedder-fingerprint.js +52 -12
  523. package/dist/plugins/memory-embedder.d.ts +1 -1
  524. package/dist/plugins/memory-embedder.js +11 -9
  525. package/dist/plugins/memory-engine-pg.d.ts +7 -5
  526. package/dist/plugins/memory-engine-pg.js +18 -9
  527. package/dist/plugins/memory-engine-sql-apply.d.ts +21 -8
  528. package/dist/plugins/memory-engine-sql-apply.js +7 -9
  529. package/dist/plugins/memory-engine-tidb.d.ts +12 -7
  530. package/dist/plugins/memory-engine-tidb.js +18 -10
  531. package/dist/plugins/memory-optout-grant-store-sql.d.ts +1 -1
  532. package/dist/plugins/memory-optout-grant-store-sql.js +3 -3
  533. package/dist/plugins/memory-run-store.d.ts +39 -27
  534. package/dist/plugins/memory-run-store.js +72 -70
  535. package/dist/plugins/one-time-migration-marker.d.ts +10 -0
  536. package/dist/plugins/one-time-migration-marker.js +7 -0
  537. package/dist/plugins/one-time-migrations.d.ts +325 -74
  538. package/dist/plugins/one-time-migrations.js +705 -230
  539. package/dist/plugins/org-delivery-quota-store.js +2 -1
  540. package/dist/plugins/owner-only-file-mode.d.ts +29 -0
  541. package/dist/plugins/owner-only-file-mode.js +141 -0
  542. package/dist/plugins/permission-rule-store-file.d.ts +11 -11
  543. package/dist/plugins/permission-rule-store-file.js +14 -2
  544. package/dist/plugins/permission-rule-store-sql.d.ts +4 -63
  545. package/dist/plugins/permission-rule-store-sql.js +6 -86
  546. package/dist/plugins/pg-pool.d.ts +3 -32
  547. package/dist/plugins/pg-pool.js +27 -11
  548. package/dist/plugins/release-version.d.ts +20 -0
  549. package/dist/plugins/release-version.js +28 -0
  550. package/dist/plugins/remote-env-adb.d.ts +20 -4
  551. package/dist/plugins/remote-env-adb.js +39 -11
  552. package/dist/plugins/remote-env-e2b.d.ts +19 -28
  553. package/dist/plugins/remote-env-e2b.js +40 -29
  554. package/dist/plugins/remote-env-host.d.ts +11 -10
  555. package/dist/plugins/remote-env-host.js +40 -27
  556. package/dist/plugins/remote-env-k8s.d.ts +45 -47
  557. package/dist/plugins/remote-env-k8s.js +122 -62
  558. package/dist/plugins/remote-env-local-docker.d.ts +152 -15
  559. package/dist/plugins/remote-env-local-docker.js +370 -75
  560. package/dist/plugins/remote-env-ssh.d.ts +8 -2
  561. package/dist/plugins/remote-env-ssh.js +26 -24
  562. package/dist/plugins/remote-scratchpad.js +4 -0
  563. package/dist/plugins/remote-shell.d.ts +59 -30
  564. package/dist/plugins/remote-shell.js +175 -62
  565. package/dist/plugins/retention-declaration.d.ts +37 -0
  566. package/dist/plugins/retention-declaration.js +9 -0
  567. package/dist/plugins/retention-deployment.d.ts +158 -0
  568. package/dist/plugins/retention-deployment.js +119 -0
  569. package/dist/plugins/retention-lane-store-sql.d.ts +74 -4
  570. package/dist/plugins/retention-lane-store-sql.js +103 -1
  571. package/dist/plugins/retention-sql.d.ts +29 -0
  572. package/dist/plugins/retention-sql.js +8 -0
  573. package/dist/plugins/run-preview-m45.d.ts +11 -0
  574. package/dist/plugins/run-preview-m45.js +19 -0
  575. package/dist/plugins/run-store-sql.d.ts +56 -68
  576. package/dist/plugins/run-store-sql.js +127 -116
  577. package/dist/plugins/s3-answer.d.ts +2 -1
  578. package/dist/plugins/sandbox-reaper.d.ts +26 -0
  579. package/dist/plugins/sandbox-reaper.js +2 -0
  580. package/dist/plugins/scenario-prefix-switch-m42.d.ts +54 -0
  581. package/dist/plugins/scenario-prefix-switch-m42.js +55 -0
  582. package/dist/plugins/scheduler-support.d.ts +16 -1
  583. package/dist/plugins/scheduler-support.js +22 -2
  584. package/dist/plugins/schema-consistency.d.ts +42 -15
  585. package/dist/plugins/schema-consistency.js +213 -13
  586. package/dist/plugins/schema-drift-sentence.d.ts +4 -1
  587. package/dist/plugins/schema-drift-sentence.js +4 -4
  588. package/dist/plugins/schema-ensure-legs.d.ts +10 -1
  589. package/dist/plugins/schema-ensure-legs.js +12 -2
  590. package/dist/plugins/schema-indexes.js +3 -0
  591. package/dist/plugins/schema-live-columns.d.ts +14 -5
  592. package/dist/plugins/schema-live-columns.js +10 -10
  593. package/dist/plugins/send-user-file.js +2 -1
  594. package/dist/plugins/session-birth.d.ts +37 -0
  595. package/dist/plugins/session-birth.js +38 -0
  596. package/dist/plugins/session-epoch-anchor.d.ts +40 -12
  597. package/dist/plugins/session-epoch-anchor.js +33 -11
  598. package/dist/plugins/session-ext-table.d.ts +98 -0
  599. package/dist/plugins/session-ext-table.js +134 -0
  600. package/dist/plugins/session-fork.d.ts +16 -2
  601. package/dist/plugins/session-fork.js +3 -0
  602. package/dist/plugins/session-ownership.d.ts +1 -1
  603. package/dist/plugins/session-placement.d.ts +22 -16
  604. package/dist/plugins/session-placement.js +15 -12
  605. package/dist/plugins/session-row-sql.d.ts +20 -7
  606. package/dist/plugins/session-row-sql.js +16 -8
  607. package/dist/plugins/session-run-rollup.d.ts +29 -0
  608. package/dist/plugins/session-run-rollup.js +40 -0
  609. package/dist/plugins/session-store-sql.d.ts +157 -0
  610. package/dist/plugins/session-store-sql.js +398 -0
  611. package/dist/plugins/session-withdraw-sql.d.ts +36 -0
  612. package/dist/plugins/session-withdraw-sql.js +42 -0
  613. package/dist/plugins/session-workspace-cell.d.ts +2 -2
  614. package/dist/plugins/session-workspace-cell.js +2 -2
  615. package/dist/plugins/shared-memory-store-sql.d.ts +10 -69
  616. package/dist/plugins/shared-memory-store-sql.js +15 -14
  617. package/dist/plugins/shell-sentinel-owner-m48.d.ts +20 -0
  618. package/dist/plugins/shell-sentinel-owner-m48.js +3 -0
  619. package/dist/plugins/snapshot-bucket-presence.d.ts +2 -1
  620. package/dist/plugins/snapshot-bucket-presence.js +1 -1
  621. package/dist/plugins/sql-driver.d.ts +24 -8
  622. package/dist/plugins/sql-driver.js +43 -9
  623. package/dist/plugins/sql-errors.d.ts +35 -5
  624. package/dist/plugins/sql-errors.js +55 -3
  625. package/dist/plugins/sql-json-column.d.ts +8 -7
  626. package/dist/plugins/sql-json-column.js +10 -6
  627. package/dist/plugins/store-backend.d.ts +114 -18
  628. package/dist/plugins/store-backend.js +340 -87
  629. package/dist/plugins/store-contracts.d.ts +97 -30
  630. package/dist/plugins/store-contracts.js +23 -1
  631. package/dist/plugins/store-fault.d.ts +28 -2
  632. package/dist/plugins/store-fault.js +20 -2
  633. package/dist/plugins/task-attachment-store.d.ts +21 -11
  634. package/dist/plugins/task-attachment-store.js +37 -19
  635. package/dist/plugins/task-list-store-sql.d.ts +1 -1
  636. package/dist/plugins/text-column-capacity.d.ts +21 -0
  637. package/dist/plugins/text-column-capacity.js +5 -0
  638. package/dist/plugins/tidb-pool.d.ts +3 -2
  639. package/dist/plugins/tidb-pool.js +42 -39
  640. package/dist/plugins/user-input-ledger-sql.d.ts +1 -1
  641. package/dist/plugins/web-search.js +5 -3
  642. package/dist/plugins/workflow-run-store-sql.d.ts +6 -1
  643. package/dist/plugins/workflow-run-store-sql.js +11 -5
  644. package/dist/principal-jwt.d.ts +4 -4
  645. package/dist/principal-jwt.js +20 -5
  646. package/dist/principal-shape.d.ts +41 -0
  647. package/dist/principal-shape.js +19 -0
  648. package/dist/question.d.ts +13 -23
  649. package/dist/question.js +21 -39
  650. package/dist/read-face-posture.d.ts +6 -6
  651. package/dist/read-face-posture.js +2 -2
  652. package/dist/request-declaration-refusal.d.ts +35 -12
  653. package/dist/request-declaration-refusal.js +21 -9
  654. package/dist/request-form.d.ts +58 -0
  655. package/dist/request-form.js +72 -0
  656. package/dist/request-image-urls.d.ts +8 -2
  657. package/dist/request-image-urls.js +2 -1
  658. package/dist/request-images.d.ts +20 -0
  659. package/dist/request-images.js +59 -0
  660. package/dist/request-key-closure.d.ts +6 -7
  661. package/dist/request-key-closure.js +15 -2
  662. package/dist/request-value-closure.d.ts +5 -5
  663. package/dist/request-value-closure.js +1 -1
  664. package/dist/resource-suspend.d.ts +7 -16
  665. package/dist/resource-suspend.js +1 -1
  666. package/dist/retired-name-host-notice.d.ts +21 -0
  667. package/dist/retired-name-host-notice.js +12 -0
  668. package/dist/rule-entry-list.d.ts +2 -2
  669. package/dist/rule-entry-list.js +3 -4
  670. package/dist/rule-issue-reading.d.ts +58 -0
  671. package/dist/rule-issue-reading.js +14 -0
  672. package/dist/rules-consent.d.ts +46 -16
  673. package/dist/rules-consent.js +102 -53
  674. package/dist/run-acceptance.d.ts +3 -1
  675. package/dist/run-acceptance.js +3 -0
  676. package/dist/run-local.d.ts +14 -6
  677. package/dist/run-local.js +109 -93
  678. package/dist/run-stale-default.d.ts +7 -0
  679. package/dist/run-stale-default.js +2 -0
  680. package/dist/runs.d.ts +73 -44
  681. package/dist/runs.js +65 -43
  682. package/dist/runtime-caps-resolver.d.ts +36 -14
  683. package/dist/runtime-caps-resolver.js +31 -14
  684. package/dist/runtime-governance.d.ts +2 -2
  685. package/dist/runtime-governance.js +5 -3
  686. package/dist/sealed-key-layout.d.ts +12 -6
  687. package/dist/sealed-key-layout.js +5 -1
  688. package/dist/sealed-key.d.ts +12 -2
  689. package/dist/sealed-key.js +116 -26
  690. package/dist/security.d.ts +133 -161
  691. package/dist/security.js +163 -59
  692. package/dist/sema-config-dir.d.ts +20 -0
  693. package/dist/sema-config-dir.js +27 -2
  694. package/dist/server-secret-env.d.ts +23 -5
  695. package/dist/server-secret-env.js +14 -4
  696. package/dist/service-version.d.ts +2 -1
  697. package/dist/service-version.js +2 -2
  698. package/dist/session-children-retire.d.ts +7 -5
  699. package/dist/session-children-retire.js +7 -2
  700. package/dist/session-deletion.d.ts +88 -0
  701. package/dist/session-deletion.js +8 -0
  702. package/dist/session-erase.d.ts +145 -0
  703. package/dist/session-erase.js +115 -0
  704. package/dist/session-error-wire.d.ts +6 -6
  705. package/dist/session-error-wire.js +1 -1
  706. package/dist/session-incarnation.d.ts +60 -10
  707. package/dist/session-incarnation.js +19 -2
  708. package/dist/session-policy-wire.d.ts +6 -3
  709. package/dist/session-policy-wire.js +11 -1
  710. package/dist/session-resident-background.d.ts +29 -47
  711. package/dist/session-resident-background.js +77 -8
  712. package/dist/session-row.d.ts +3 -2
  713. package/dist/session-rules-seat.d.ts +12 -0
  714. package/dist/session-rules-seat.js +19 -0
  715. package/dist/session-sync-kernel.d.ts +1 -1
  716. package/dist/session-titler.d.ts +7 -15
  717. package/dist/session-titler.js +1 -1
  718. package/dist/session-workspace.d.ts +11 -2
  719. package/dist/session-workspace.js +5 -0
  720. package/dist/sighup-idle.d.ts +1 -1
  721. package/dist/spec-fields.d.ts +57 -3
  722. package/dist/spec-fields.js +72 -51
  723. package/dist/store-posture.d.ts +138 -21
  724. package/dist/store-posture.js +188 -3
  725. package/dist/stored-request-hooks-m20.d.ts +3 -2
  726. package/dist/stored-request-hooks-m20.js +21 -16
  727. package/dist/stores-sql/background-agent-store-sql.d.ts +11 -2
  728. package/dist/stores-sql/background-agent-store-sql.js +73 -20
  729. package/dist/stores-sql/blob-index-sql.d.ts +148 -0
  730. package/dist/stores-sql/blob-index-sql.js +154 -0
  731. package/dist/stores-sql/checkpoint-store-sql.d.ts +34 -29
  732. package/dist/stores-sql/checkpoint-store-sql.js +86 -71
  733. package/dist/{plugins → stores-sql}/file-history-store-sql.d.ts +23 -11
  734. package/dist/{plugins → stores-sql}/file-history-store-sql.js +23 -18
  735. package/dist/stores-sql/mailbox-store-sql.d.ts +7 -4
  736. package/dist/stores-sql/mailbox-store-sql.js +31 -32
  737. package/dist/{plugins → stores-sql}/pg-session-storage.d.ts +30 -81
  738. package/dist/{plugins → stores-sql}/pg-session-storage.js +123 -244
  739. package/dist/{plugins → stores-sql}/retention-store-sql.d.ts +197 -223
  740. package/dist/{plugins → stores-sql}/retention-store-sql.js +148 -207
  741. package/dist/{plugins → stores-sql}/session-event-payload.d.ts +1 -1
  742. package/dist/{plugins → stores-sql}/session-event-payload.js +1 -1
  743. package/dist/stores-sql/session-policy-store-sql.d.ts +33 -11
  744. package/dist/stores-sql/session-policy-store-sql.js +44 -36
  745. package/dist/stores-sql/session-write-hooks.d.ts +65 -0
  746. package/dist/stores-sql/session-write-hooks.js +2 -0
  747. package/dist/{plugins → stores-sql}/tidb-session-storage.d.ts +14 -15
  748. package/dist/{plugins → stores-sql}/tidb-session-storage.js +22 -28
  749. package/dist/{plugins → stores-sql}/tidb-session-store.d.ts +67 -138
  750. package/dist/{plugins → stores-sql}/tidb-session-store.js +130 -200
  751. package/dist/stores-sql/tool-result-store-sql.d.ts +1 -1
  752. package/dist/stores-sql/tool-result-store-sql.js +1 -1
  753. package/dist/stores-sql/windowed-session-storage.d.ts +61 -0
  754. package/dist/stores-sql/windowed-session-storage.js +70 -0
  755. package/dist/submission-exit.d.ts +50 -0
  756. package/dist/submission-exit.js +108 -0
  757. package/dist/task-a2a.d.ts +7 -1
  758. package/dist/task-a2a.js +18 -17
  759. package/dist/task-cwd.d.ts +31 -3
  760. package/dist/task-cwd.js +25 -1
  761. package/dist/task-mcp.d.ts +11 -3
  762. package/dist/task-mcp.js +16 -19
  763. package/dist/task-settings.d.ts +23 -14
  764. package/dist/task-settings.js +35 -13
  765. package/dist/terminal.d.ts +25 -43
  766. package/dist/terminal.js +31 -11
  767. package/dist/tool-approval.d.ts +152 -137
  768. package/dist/tool-approval.js +199 -199
  769. package/dist/trace/core-keyset-guard.d.ts +22 -9
  770. package/dist/trace/core-vocab-wire.d.ts +95 -0
  771. package/dist/trace/core-vocab-wire.js +15 -0
  772. package/dist/trace/engine-notice-wire.d.ts +1 -1
  773. package/dist/trace/engine-notice-wire.js +2 -0
  774. package/dist/trace/exit-seat.d.ts +52 -4
  775. package/dist/trace/exit-seat.js +43 -36
  776. package/dist/trace/extension-call-face.d.ts +3 -2
  777. package/dist/trace/extension-call-face.js +3 -1
  778. package/dist/trace/ledger-events.d.ts +4 -7
  779. package/dist/trace/ledger-sink.d.ts +1 -30
  780. package/dist/trace/ledger-sink.js +0 -11
  781. package/dist/trace/model-segment.d.ts +5 -5
  782. package/dist/trace/model-segment.js +5 -5
  783. package/dist/trace/project.d.ts +88 -58
  784. package/dist/trace/project.js +64 -28
  785. package/dist/trace/redact.d.ts +124 -28
  786. package/dist/trace/redact.js +936 -328
  787. package/dist/trace/self-minted-wire.d.ts +750 -29
  788. package/dist/trace/self-minted-wire.js +262 -25
  789. package/dist/trace/sema-provenance.d.ts +45 -41
  790. package/dist/trace/sema-provenance.js +81 -10
  791. package/dist/trace/task-notification-facets.d.ts +70 -2
  792. package/dist/trace/task-notification-facets.js +71 -1
  793. package/dist/trace/wire-projection-faces.d.ts +43 -8
  794. package/dist/trace/wire-projection-faces.js +28 -3
  795. package/dist/unread-request-members.d.ts +66 -0
  796. package/dist/unread-request-members.js +41 -0
  797. package/dist/upstream-body.d.ts +23 -0
  798. package/dist/upstream-body.js +16 -0
  799. package/dist/url-refusal.d.ts +3 -3
  800. package/dist/url-refusal.js +11 -4
  801. package/dist/user-authored-text.d.ts +1 -1
  802. package/dist/user-input-ledger.d.ts +7 -8
  803. package/dist/user-input-ledger.js +1 -1
  804. package/dist/web-admin-client/apply-effective.d.ts +6 -3
  805. package/dist/web-admin-client/apply-effective.js +33 -40
  806. package/dist/web-admin-client/apply-ledger.d.ts +16 -7
  807. package/dist/web-admin-client/apply-ledger.js +5 -2
  808. package/dist/web-admin-client/candidate-gate.d.ts +35 -3
  809. package/dist/web-admin-client/candidate-gate.js +53 -5
  810. package/dist/web-admin-client/center-request.d.ts +6 -3
  811. package/dist/web-admin-client/center-request.js +17 -16
  812. package/dist/web-admin-client/effective-keys.d.ts +1 -1
  813. package/dist/web-admin-client/effective-keys.js +1 -2
  814. package/dist/web-admin-client/entry-metadata.d.ts +8 -0
  815. package/dist/web-admin-client/entry-metadata.js +13 -0
  816. package/dist/web-admin-client/facade.d.ts +1 -1
  817. package/dist/web-admin-client/http-client.d.ts +2 -1
  818. package/dist/web-admin-client/http-client.js +40 -13
  819. package/dist/web-admin-client/mcp-revocation.d.ts +1 -1
  820. package/dist/web-admin-client/mcp-revocation.js +2 -1
  821. package/dist/web-admin-client/read-warnings.d.ts +1 -0
  822. package/dist/web-admin-client/read-warnings.js +1 -0
  823. package/dist/web-admin-client/restart-signal.js +13 -6
  824. package/dist/web-admin-client/skills-mcp.d.ts +22 -8
  825. package/dist/web-admin-client/skills-mcp.js +26 -21
  826. package/dist/web-admin-client/types.d.ts +35 -51
  827. package/dist/workspace-space.d.ts +3 -2
  828. package/docs/DEVICE-EXECUTOR-PROTOCOL.md +4 -4
  829. package/package.json +16 -12
  830. package/scripts/drain-check-local.mjs +118 -173
  831. package/scripts/drain-check.mysql.sql +20 -16
  832. package/scripts/drain-check.pg.sql +20 -16
  833. package/wire-changes/server@7.147.0.json +813 -0
  834. package/wire-changes/server@7.148.0.json +1517 -0
  835. package/dist/http/memory-control-plane-corrupt-reply.d.ts +0 -25
  836. package/dist/http/memory-control-plane-corrupt-reply.js +0 -19
  837. package/dist/http/memory-layer-reply.d.ts +0 -30
  838. package/dist/http/memory-layer-reply.js +0 -24
  839. package/dist/lsp/e2b-bridge.d.ts +0 -57
  840. package/dist/lsp/e2b-bridge.js +0 -139
  841. package/dist/lsp/e2b-manager.d.ts +0 -93
  842. package/dist/lsp/e2b-manager.js +0 -178
  843. package/dist/lsp/lsp-frames.d.ts +0 -14
  844. package/dist/lsp/lsp-frames.js +0 -25
  845. package/dist/lsp/manager.d.ts +0 -129
  846. package/dist/lsp/manager.js +0 -127
  847. package/dist/lsp/types.d.ts +0 -12
  848. package/dist/lsp/types.js +0 -2
  849. package/dist/lsp/ws-transport.d.ts +0 -40
  850. package/dist/lsp/ws-transport.js +0 -210
@@ -1,3 +1,4 @@
1
+ import { sessionBoxMountVerdict } from "@sema-agent/core";
1
2
  import type { ServiceConfig } from "../config.js";
2
3
  import { type MemorySyncRunner } from "../memory-sync-client.js";
3
4
  import type { Logger } from "../observability/logger.js";
@@ -6,11 +7,14 @@ import { type MemorySyncStore } from "../plugins/memory-sync-store-pg.js";
6
7
  import { type TaskAttachmentStore } from "../plugins/task-attachment-store.js";
7
8
  import { type StoreBackend } from "../plugins/store-backend.js";
8
9
  import { type MemoryScopeStores } from "../memory-scope-stores.js";
10
+ import { type StoreEvidence } from "../store-posture.js";
9
11
  export interface OpenStoresCtx {
10
12
  config: ServiceConfig;
11
13
  logger: Logger;
12
14
  metrics: Metrics;
13
15
  localRoot: string;
16
+ /** 店的持久性起服证据(起服第 2 段段首 `captureBootStoreEvidence` 取的那一份;直接调本函数的测试同一只取证)。 */
17
+ storeEvidence: StoreEvidence;
14
18
  }
15
19
  /**
16
20
  * durable 回决腿的规则位给 `approval_ask` 加了 `rule_command`/`rule_scope_root` 两列,而 `ensureAsk` 的 INSERT 与每一条读**无条件**引用它们 ⇒ 存量表上整条流内审批协议
@@ -20,6 +24,14 @@ export interface OpenStoresCtx {
20
24
  * 不在这里手抄一份,也不在别处再求一遍(手抄的判据会漂,漂的方向要么是拒启误伤、要么是该拒不拒;再求一遍的 park 设施位手上没有那只店)。本函数只做探:有 SQL 池就探,local 后端无池则无事。
21
25
  */
22
26
  export declare function assertApprovalAskRuleMaterialOnBackend(backend: StoreBackend | undefined): Promise<void>;
27
+ /**
28
+ * 起服报告 `session_box_mount` 那一行(纯数据):引擎会话盒挂载判官的判决 → 级别与键集,唯一一处。挂得上 ⇒ info `{ peerLaneMountable: true }`;
29
+ * 挂不上 ⇒ warn `{ peerLaneMountable: false, peerLaneRefusal: <引擎的码>, reason: <引擎的句> }`。{@link openStores} 对本部署装的那一对店问一次、按它落行。
30
+ */
31
+ export declare function buildSessionBoxMountLine(verdict: ReturnType<typeof sessionBoxMountVerdict>): {
32
+ readonly level: "info" | "warn";
33
+ readonly fields: Readonly<Record<string, unknown>>;
34
+ };
23
35
  export declare function openStores(ctx: OpenStoresCtx): Promise<{
24
36
  backend: StoreBackend | undefined;
25
37
  storePosture: import("../store-posture.js").StorePosture;
@@ -1,5 +1,5 @@
1
1
  import { join } from "node:path";
2
- import { FileBackgroundAgentStore, FileMailboxStore, FileRosterStore, InMemoryUsageWindowStore, mailboxCrossProcessMountVerdict } from "@sema-agent/core";
2
+ import { FileBackgroundAgentStore, FileMailboxStore, FileRosterStore, InMemoryUsageWindowStore, sessionBoxMountVerdict } from "@sema-agent/core";
3
3
  import { createCorruptReadFailOpenSeat } from "../observability/corrupt-read-seat.js";
4
4
  import { startMemorySyncRunner } from "../memory-sync-client.js";
5
5
  import { errorCodeOf, errorKindOf } from "../observability/err-text.js";
@@ -12,6 +12,7 @@ import { TiDBMemoryHistoryStore, TiDBMemorySyncStore, ensureTiDBMemoryHistorySch
12
12
  import { MinioBlobBackend } from "../plugins/blob-backend.js";
13
13
  import { ensureSnapshotBuckets } from "../plugins/snapshot-bucket-presence.js";
14
14
  import { PgBackgroundAgentStore, TiDBBackgroundAgentStore, ensurePgBackgroundAgentSchema, ensureTiDBBackgroundAgentSchema } from "../stores-sql/background-agent-store-sql.js";
15
+ import { recordFailOpen } from "../observability/fail-open.js";
15
16
  import { PgMailboxStore, TiDBMailboxStore, ensurePgMailboxSchema, ensureTiDBMailboxSchema } from "../stores-sql/mailbox-store-sql.js";
16
17
  import { recipientLifecycleOf } from "../plugins/mailbox-recipient-lifecycle.js";
17
18
  import { PgUsageWindowStore, TiDBUsageWindowStore, ensurePgUsageWindowSchema, ensureTiDBUsageWindowSchema } from "../stores-sql/usage-window-store-sql.js";
@@ -25,23 +26,24 @@ import { createTaskListLane } from "./task-list-lane.js";
25
26
  import { ensurePgTaskListSchema, ensureTiDBTaskListSchema } from "../plugins/task-list-store-sql.js";
26
27
  import { assertDeviceAuditRebindEventSchema, ensurePgDeviceSchema, ensureTiDBDeviceSchema } from "../plugins/device-store-sql.js";
27
28
  import { mysqlDriver, pgDriver } from "../plugins/sql-driver.js";
28
- import { assertCloudSnapshotBlobPosture, openStoreBackendWithFallback, workflowJournalOf } from "../plugins/store-backend.js";
29
+ import { assertCloudSnapshotBlobPosture, localClientWritesOf, openStoreBackendWithFallback, workflowJournalOf } from "../plugins/store-backend.js";
29
30
  import { createMemoryEngineIncidentSink } from "../memory-incident-sink.js";
30
31
  import { announceLockedLegacyMemoryLayers } from "../memory-layer-legacy-lock.js";
31
32
  import { createEngineNoticeForwarder } from "./runner-deps.js";
32
- import { buildMemoryRemoteLaneWarn, canonicalPathOf, judgeMemoryRootOutsideDataRoot, memoryEngineBackendFor, memoryEngineRemoteLanePosture, memoryEngineRootFor, memoryMountRootOf } from "../memory-scope.js";
33
+ import { announceMemoryLedgerForm, buildMemoryRemoteLaneWarn, canonicalPathOf, judgeMemoryRootOutsideDataRoot, memoryEngineBackendFor, memoryEngineRemoteLanePosture, memoryEngineRootFor, memoryMountRootOf } from "../memory-scope.js";
33
34
  import { createMemoryScopeStores } from "../memory-scope-stores.js";
34
35
  import { assertToolResultProvenanceSchema } from "../stores-sql/tool-result-store-sql.js";
35
36
  import { assertPermissionRuleApprovalSchema, assertPermissionRuleTicketSchema } from "../plugins/permission-rule-store-sql.js";
36
37
  import { assertApprovalAskRuleMaterialSchema } from "../plugins/approval-ask-store-sql.js";
37
38
  import { assertSchemaMatchesCode } from "../plugins/schema-consistency.js";
39
+ import { assertSessionExtCascadeOn } from "../plugins/session-ext-table.js";
38
40
  import { SqlCheckpointStore, assertCheckpointColumnSchema } from "../stores-sql/checkpoint-store-sql.js";
39
- import { assertFileHistorySchema } from "../plugins/file-history-store-sql.js";
41
+ import { assertFileHistorySchema } from "../stores-sql/file-history-store-sql.js";
40
42
  import { buildMemoryBoundaryLaneFacts, buildMemoryWriteBoundaryAudit } from "./memory-boundary.js";
41
43
  import { buildMemoryPosture } from "../memory-posture.js";
42
44
  import { headReadOf } from "../session-incarnation.js";
43
45
  import { establishSqlEnginePosture, sqlPoolsOf } from "../sql-engine-posture.js";
44
- import { buildStorePosture } from "../store-posture.js";
46
+ import { buildStoreFreshStartLine, buildStorePosture } from "../store-posture.js";
45
47
  import { seatText } from "../trace/exit-seat.js";
46
48
  import { buildStoreSweepBounds, createJournalSweepLeg, createStoreSweep } from "../plugins/store-sweep.js";
47
49
  const DARK_REASON_PROSE = {
@@ -57,8 +59,13 @@ export async function assertApprovalAskRuleMaterialOnBackend(backend) {
57
59
  else if (mysqlPool)
58
60
  await assertApprovalAskRuleMaterialSchema(async (sql) => ({ rows: (await mysqlPool.query(sql))[0] }), "mysql");
59
61
  }
62
+ export function buildSessionBoxMountLine(verdict) {
63
+ return verdict.ok
64
+ ? { level: "info", fields: { peerLaneMountable: true } }
65
+ : { level: "warn", fields: { peerLaneMountable: false, peerLaneRefusal: verdict.code, reason: verdict.reason } };
66
+ }
60
67
  export async function openStores(ctx) {
61
- const { config, logger, metrics, localRoot } = ctx;
68
+ const { config, logger, metrics, localRoot, storeEvidence } = ctx;
62
69
  let backend;
63
70
  let storeDegradedReason;
64
71
  const dsnConfigured = !!(config.tidb || config.pg);
@@ -67,12 +74,10 @@ export async function openStores(ctx) {
67
74
  config.dbBackend === "local" ||
68
75
  (config.sessionBackend === "auto" && dsnConfigured);
69
76
  if (wantDb) {
70
- const opened = await openStoreBackendWithFallback(config, logger);
77
+ const opened = await openStoreBackendWithFallback(config, logger, { runStallVerdicts: (landed) => metrics.inc("runs_reaped_total", { kind: "stale" }, landed) });
71
78
  backend = opened.backend;
72
79
  storeDegradedReason = opened.degradedReason;
73
80
  }
74
- const storePosture = buildStorePosture({ declared: config.dbBackend, assembled: backend?.kind, degradedReason: storeDegradedReason });
75
- metrics.setGauge("store_backend_degraded", storePosture.degradedReason !== undefined ? 1 : 0);
76
81
  {
77
82
  const mysqlPool = backend?.mysqlPool?.();
78
83
  const pgPool = backend?.pgPool?.();
@@ -98,6 +103,10 @@ export async function openStores(ctx) {
98
103
  await assertFileHistorySchema(async (sql) => ({ rows: (await pgPool.query(sql)).rows }), "pg");
99
104
  else if (mysqlPool)
100
105
  await assertFileHistorySchema(async (sql) => ({ rows: (await mysqlPool.query(sql))[0] }), "mysql");
106
+ if (pgPool)
107
+ await assertSessionExtCascadeOn(pgDriver(pgPool));
108
+ else if (mysqlPool)
109
+ await assertSessionExtCascadeOn(mysqlDriver(mysqlPool));
101
110
  }
102
111
  if (backend)
103
112
  await runAndLogOneTimeMigrations(logger, backend);
@@ -159,7 +168,7 @@ export async function openStores(ctx) {
159
168
  });
160
169
  if (embedder !== undefined && config.memoryEmbedder !== undefined) {
161
170
  await ensurePgMemoryEmbedderMetaSchema(q);
162
- await reconcileEmbedderFingerprint(q, { model: config.memoryEmbedder.model, dimensions: config.memoryEmbedder.dimensions }, { log: logger });
171
+ await reconcileEmbedderFingerprint(q, { model: config.memoryEmbedder.model, dimensions: config.memoryEmbedder.dimensions }, { log: logger, reembedConfirmed: config.memoryEmbedder.reembedConfirmed === true });
163
172
  }
164
173
  else {
165
174
  logger.info("memory_embedder_identity_absent", {
@@ -197,6 +206,7 @@ export async function openStores(ctx) {
197
206
  });
198
207
  }
199
208
  else {
209
+ await announceMemoryLedgerForm(config, undefined, logger);
200
210
  const fileEngine = memoryEngineBackendFor(config, undefined, memoryEngineIncident);
201
211
  memoryEngine = fileEngine !== undefined ? scopeStoresOver(fileEngine.backend) : undefined;
202
212
  if (memoryEngine)
@@ -212,6 +222,17 @@ export async function openStores(ctx) {
212
222
  }
213
223
  }
214
224
  }
225
+ const storePosture = buildStorePosture({
226
+ declared: config.dbBackend,
227
+ assembled: backend?.kind,
228
+ degradedReason: storeDegradedReason,
229
+ evidence: storeEvidence,
230
+ memoryRootWired: config.memoryEngineBackend === "file" && memoryEngine !== undefined,
231
+ });
232
+ metrics.setGauge("store_backend_degraded", storePosture.degradedReason !== undefined ? 1 : 0);
233
+ const freshStart = buildStoreFreshStartLine(storePosture, storeEvidence);
234
+ if (freshStart !== undefined)
235
+ logger.info("store_fresh_start", freshStart);
215
236
  {
216
237
  const laneFacts = buildMemoryBoundaryLaneFacts(config, process.cwd());
217
238
  const memoryMountRoot = memoryEngine ? memoryMountRootOf(memoryEngine.backend, memoryEngine.root) : undefined;
@@ -257,11 +278,11 @@ export async function openStores(ctx) {
257
278
  if (pgPool) {
258
279
  const q = async (text, params) => { const r = await pgPool.query(text, params); return { rows: r.rows }; };
259
280
  await ensurePgBackgroundAgentSchema(q);
260
- backgroundAgentStore = new PgBackgroundAgentStore(q);
281
+ backgroundAgentStore = new PgBackgroundAgentStore(q, recordFailOpen);
261
282
  }
262
283
  else if (mysqlPool) {
263
284
  await ensureTiDBBackgroundAgentSchema(mysqlPool);
264
- backgroundAgentStore = new TiDBBackgroundAgentStore(mysqlPool);
285
+ backgroundAgentStore = new TiDBBackgroundAgentStore(mysqlPool, recordFailOpen);
265
286
  }
266
287
  else if (backend?.kind === "local") {
267
288
  backgroundAgentStore = new FileBackgroundAgentStore(config.localDataRoot ?? localRoot);
@@ -294,7 +315,7 @@ export async function openStores(ctx) {
294
315
  }
295
316
  }
296
317
  else if (backend?.kind === "local") {
297
- taskAttachmentStore = new LocalTaskAttachmentStore(config.localDataRoot ?? localRoot);
318
+ taskAttachmentStore = new LocalTaskAttachmentStore(config.localDataRoot ?? localRoot, { clientWrites: localClientWritesOf(backend) });
298
319
  }
299
320
  if (taskAttachmentStore)
300
321
  logger.info("task_attachment_store_enabled", { backend: pgPool ? "pg+minio" : mysqlPool ? "mysql+minio" : "file", maxBytes: config.attachmentMaxBytes });
@@ -322,13 +343,10 @@ export async function openStores(ctx) {
322
343
  if (mailboxStore)
323
344
  mailboxRecipientLifecycle = recipientLifecycleOf(mailboxStore);
324
345
  if (mailboxStore) {
325
- const laneVerdict = mailboxCrossProcessMountVerdict(mailboxStore);
326
346
  logger.info("mailbox_store_enabled", {
327
347
  backend: pgPool ? "pg" : mysqlPool ? "mysql" : "file",
328
348
  crossProcessSafe: mailboxStore.crossProcessSafe,
329
349
  recipientTombstones: pgPool !== undefined || mysqlPool !== undefined,
330
- peerLaneMountable: laneVerdict.ok,
331
- ...(laneVerdict.ok ? {} : { peerLaneRefusal: laneVerdict.code }),
332
350
  });
333
351
  }
334
352
  }
@@ -397,7 +415,7 @@ export async function openStores(ctx) {
397
415
  await ensurePgDeviceSchema(async (text, params) => pgPool.query(text, params));
398
416
  if (mysqlPool)
399
417
  await ensureTiDBDeviceSchema(mysqlPool);
400
- if (config.remoteExec?.provider === "device") {
418
+ if (config.remoteExec.provider === "device") {
401
419
  if (pgPool)
402
420
  await assertDeviceAuditRebindEventSchema(pgDriver(pgPool));
403
421
  else if (mysqlPool)
@@ -429,6 +447,10 @@ export async function openStores(ctx) {
429
447
  });
430
448
  }
431
449
  metrics.dynamicGauge("sessions_warm", "Sessions held in the warm cache", () => sessionStore.size);
450
+ if (mailboxStore !== undefined) {
451
+ const line = buildSessionBoxMountLine(sessionBoxMountVerdict(mailboxStore, sessionStore));
452
+ logger[line.level]("session_box_mount", line.fields);
453
+ }
432
454
  const breakerState = backend?.breaker && config.resilience.circuitBreaker
433
455
  ? backend
434
456
  .breaker((streak) => {
@@ -55,14 +55,14 @@ export interface TaskListLane {
55
55
  * 所有权,故按 sessionId 单键删。
56
56
  *
57
57
  * 幂等(没写过任何任务的会话删 0 行);错误如实上抛 —— E21 的次序契约要求子腿失败就中止,让
58
- * session_meta 留着、幂等重试收敛(session-faces.ts 顶注)。
58
+ * session_meta 留着、幂等重试收敛(删净执行体 `session-erase.ts` 头注:行最后删)。
59
59
  *
60
60
  * 📌 **残余,如实登记**(codex R2-[high] 判真、**射程外**):删除进行中若有一次并发 `storeFor`,
61
61
  * 它会拿到一只新铸的可写店,写入可能落在 purge 事务提交**之后** ⇒ 行被重建、留给下一个化身。
62
62
  * 这不是本腿独有的窗口,而是**整条 E21 级联共有的**残余(anchors / exemption / policy / attachment /
63
- * snapshot / task_list 全是按 session_id 单键删、且各自开始时刻不同),`session-faces.ts` 的 purge
64
- * 协调器里那段「残余,如实登记」逐字记着它与它的两条收口候选。真正消灭它要么让整条级联化身原子
65
- * (单事务横跨十余张表 + 对象存储),要么引入**跨副本 durable 的会话化身号**并让每次写校验它 ——
63
+ * snapshot / task_list 全是按 session_id 单键删)。删净执行体(`session-erase.ts`)让 SQL 上的整条级联落进一个事务、
64
+ * local 上落进会话店的一节写锁,但并发 `storeFor` 铸的可写店不读那只锁 / 不看那一事务 —— 写仍可能落在删净之后。真正消灭它
65
+ * 要么让每次写在会话行锁下校验住客,要么引入**跨副本 durable 的会话化身号**并让每次写校验它 ——
66
66
  * 两者都是设计级改动(属主裁决 + 三问),给 task-list 单独发明一套围栏只会在同一语义面上多一个
67
67
  * 写者。⇒ 归入既有的那条后续件,不在本批自作主张。
68
68
  */
@@ -89,8 +89,10 @@ export interface WebAdminRuntime {
89
89
  degradeRoute: DegradeRouteWatch;
90
90
  checkpointStorePresent: boolean;
91
91
  }): void;
92
- /** [ref]-2:停刷新环(hardShutdown 收尾链;幂等,未起环时 no-op)。[ref]:中心凭证续签器的定时器同停(同一条收尾链)。 */
93
- stopRefreshLoop(): void;
92
+ /** [ref]-2:停刷新环(hardShutdown 收尾链;幂等,未起环时 no-op)。[ref]:中心凭证续签器的定时器同停(同一条收尾链)。
93
+ * 返回的 promise = 续签器 `stop()` 的那一只:已经发出的那一次续签落定(新信封落盘或按失败落定)之后 settle,从不 reject —— 进程出口
94
+ * (停机的退出链、起服前探针)等它再退,中心已答应的轮换不被进程退出腰斩。 */
95
+ stopRefreshLoop(): Promise<void>;
94
96
  /** [ref]:`/health.centerCredential` 的取值口 —— 凭证来源的健康态 + 续签器状态;都健康 / 没有中心 ⇒ `undefined`(键缺席)。 */
95
97
  centerCredentialState(): CenterCredentialHealthView | undefined;
96
98
  /** [ref]:`/health.centerIdentityNotice` 的取值口 —— 中心凭证换人后的**最近一条**通告(`center_identity_demoted` 已降到无中心配置档 / `center_identity_landed`
@@ -7,12 +7,12 @@ import { stableStringify } from "@sema-agent/settings-schema/hash";
7
7
  import { buildModelRefusalsSignal } from "../model-entry-refusal.js";
8
8
  import { CenterPromptSource, FilePromptArtifactStore, FilePromptSourceStateStore, MemoryPromptArtifactStore, MemoryPromptSourceStateStore, } from "@sema-agent/core";
9
9
  import { buildPricing } from "../budget.js";
10
- import { applyCenterPlugins } from "../capabilities/center-plugins.js";
10
+ import { applyCenterPlugins, pluginCacheRootFor } from "../capabilities/center-plugins.js";
11
11
  import { applyCenterArtifact, centerSourceOnError, withPromptArtifactBackfill } from "../capabilities/center-prompts.js";
12
12
  import { centerScenarios, centerScenarioDetails } from "../capabilities/scenarios.js";
13
13
  import { isRosterGateArmed } from "../config.js";
14
14
  import { DEPLOYMENT_SHAPE_PREDICATES } from "../deployment-shape.js";
15
- import { defaultLkgPath, defaultSkillCacheDir, saveLkg, loadLkg } from "../config-lkg.js";
15
+ import { defaultLkgPath, defaultSkillCacheDir, saveLkg, loadLkg, preIdentityLkgLeftover, PRE_IDENTITY_LKG_REASON } from "../config-lkg.js";
16
16
  import { answerStillCurrent, centerStateBin, credentialIdentityNow, judgeCenterCredentialAtBoot } from "../center-credential.js";
17
17
  import { createCenterConfigTier } from "../center-config-tier.js";
18
18
  import { buildCenterCredentialHealthView, createCenterCredentialRenewer } from "../center-credential-renewer.js";
@@ -20,8 +20,10 @@ import { centerManagedConfigKeys } from "../web-admin-client/apply-effective.js"
20
20
  import { configSourceKind, createConfigProvider, raceBootFetch, BOOT_FETCH_DEFERRED } from "../config-provider.js";
21
21
  import { REMOTE_CATALOG_SOURCE } from "../env-model-table-gate.js";
22
22
  import { ConfigDirUntrustedError } from "../config-dir-trust.js";
23
+ import { ConfigPullError, ConfigPullSupersededError, asConfigPullError, configPullFailureNote } from "../config-pull-failure.js";
23
24
  import { createKeyResolver } from "../key-resolver.js";
24
25
  import { buildSealedKeyPublicFace, ensureCheckpointCtxSealing, ensureSealedKeyStore, reportExecutionPublicKey } from "../sealed-key.js";
26
+ import { sealedKeyDirOf } from "../sealed-key-layout.js";
25
27
  import { anthropicLaneCredentialOf } from "../model-route-gap.js";
26
28
  import { applyEffective, applyCenterReadFace, buildReadFaceBaseline, buildReadFaceSwapCandidate, restoreReadFaceBaseline, mutateInPlace, logEffectiveDiff, applySkillsManifest, skillManifestEntriesNotInstalled, resolveMcpServers, resolveA2aPeers, restartReasons, modelPlaneChanged, withModelPlaneOf, fullyLandedForLkg, NO_CENTER_EFFECTIVE, isNoCenterEffective, fetchPromptArtifact } from "../web-admin-client/facade.js";
27
29
  import { buildConfigHandoff, buildRestartSignal, configHandoffMissing } from "../fleet/engine-signal.js";
@@ -29,7 +31,7 @@ import { createMcpRevocationLedger, enabledMcpEntries } from "../web-admin-clien
29
31
  import { buildUnreadConfigFileFields, buildUnreadConfigKeyFields } from "../web-admin-client/read-warnings.js";
30
32
  import { CONFIG_DOMAIN_INVALID_NOTE, buildCandidateRejectedFields, candidateRejectionOf, judgeConfigCandidate } from "../web-admin-client/candidate-gate.js";
31
33
  import { SHA256_HEX_RE } from "../digest-form.js";
32
- import { BOOT_REJUDGE_OF_REFUSED_GROUP, createConfigApplyLedger, modelPlaneCommitted, refusedGroups } from "../web-admin-client/apply-ledger.js";
34
+ import { BOOT_REJUDGE_OF_REFUSED_GROUP, createConfigApplyLedger, modelPlaneOutcome, refusedGroups } from "../web-admin-client/apply-ledger.js";
33
35
  import { announceReadDenyRows, buildDeploymentPostureSeats } from "./runner-deps.js";
34
36
  import { seatText } from "../trace/exit-seat.js";
35
37
  const MODELS_REJECTION_PHRASE = {
@@ -133,6 +135,15 @@ export async function createWebAdminRuntime(ctx) {
133
135
  validatorIdentity.delete(oldest.value);
134
136
  };
135
137
  const pullEffective = async (provider, etag) => {
138
+ try {
139
+ return await pullEffectiveOnce(provider, etag);
140
+ }
141
+ catch (err) {
142
+ throw asConfigPullError(err);
143
+ }
144
+ };
145
+ const refreshFailureCause = (err) => (err instanceof ConfigPullError ? err.pullCause : "apply_refused");
146
+ const pullEffectiveOnce = async (provider, etag) => {
136
147
  if (provider.kind === "local")
137
148
  return provider.fetchEffective(etag);
138
149
  const before = currentIdentity();
@@ -140,7 +151,7 @@ export async function createWebAdminRuntime(ctx) {
140
151
  const r = await provider.fetchEffective(conditional);
141
152
  const used = r === null ? before : r.credentialIdentity;
142
153
  if (cc === undefined || !answerStillCurrent(cc.credential, used)) {
143
- throw new Error("center credential identity changed while the effective pull was in flight — response discarded; the next pull runs under the current credential");
154
+ throw new ConfigPullSupersededError("center credential identity changed while the effective pull was in flight — response discarded; the next pull runs under the current credential");
144
155
  }
145
156
  if (r !== null) {
146
157
  candidateIdentity.set(r.effective, used);
@@ -148,7 +159,7 @@ export async function createWebAdminRuntime(ctx) {
148
159
  }
149
160
  return r;
150
161
  };
151
- const sealedKeyDir = config.sealedKeyDir ?? join(config.localDataRoot ?? localRoot, "sealed-key");
162
+ const sealedKeyDir = sealedKeyDirOf(config, localRoot);
152
163
  let sealedKeys;
153
164
  try {
154
165
  sealedKeys = await ensureSealedKeyStore(sealedKeyDir, logger);
@@ -213,7 +224,7 @@ export async function createWebAdminRuntime(ctx) {
213
224
  const domains = verdict.domains.join(",");
214
225
  if (candidateRejection?.version === r.effective.version && candidateRejection.domains.join(",") === domains)
215
226
  return;
216
- admitArrival(ordinal, candidateRejectionOf(r, verdict, candidateSource().kind, Date.now()));
227
+ admitArrival(ordinal, candidateRejectionOf(r, verdict, candidateSource().kind, Date.now(), localDirField.dir));
217
228
  logger.warn("config_candidate_rejected", buildCandidateRejectedFields(r, verdict, leg, { lkgVersion: latestEffective?.version ?? "(env)", ...localDirField }));
218
229
  };
219
230
  const noteSourceAtApplied = () => {
@@ -422,8 +433,7 @@ export async function createWebAdminRuntime(ctx) {
422
433
  handoff = { ...(applied !== undefined ? { applied } : {}), ...(durable !== undefined ? { durable } : {}) };
423
434
  latchHandoff();
424
435
  };
425
- const markApplied = (gen, eff) => {
426
- applyLedger.applied(gen, eff.version);
436
+ const markApplied = (eff) => {
427
437
  if (isNoCenterEffective(eff))
428
438
  noteHandoff({ noneApplied: true });
429
439
  else
@@ -432,6 +442,7 @@ export async function createWebAdminRuntime(ctx) {
432
442
  if (landed !== undefined)
433
443
  announceTier(landed);
434
444
  };
445
+ const closeApplied = (gen, eff) => applyLedger.applied(gen, eff.version);
435
446
  let lkgBooted = false;
436
447
  let bootLkgCandidate;
437
448
  let lastPrewarmBodiesVerified = false;
@@ -495,10 +506,13 @@ export async function createWebAdminRuntime(ctx) {
495
506
  return null;
496
507
  }
497
508
  const lkgPath = lkgPathFor(identity);
498
- const read = await loadLkg(lkgPath, cc?.worker, identity);
509
+ const read = await loadLkg(lkgPath, cc?.worker, identity, { declaredOwnerUid: config.configLocalOwnerUid });
499
510
  if (!read.lkg) {
500
511
  if (read.reason !== "absent")
501
512
  logger.warn("config_lkg_unusable", { path: lkgPath, reason: read.reason, note: "ignoring the on-disk LKG — env fallback serves; the cache rewrites on the next clean candidate" });
513
+ const leftover = read.reason === "absent" && config.configLkgPath === undefined ? preIdentityLkgLeftover(config, cc?.worker, lkgPath) : undefined;
514
+ if (leftover !== undefined)
515
+ logger.warn("config_lkg_unusable", { path: leftover, reason: PRE_IDENTITY_LKG_REASON, note: "a last-known-good written by 7.98.0 or earlier sits at the pre-identity default name and is never read — delete this file (a cache, not data); env fallback serves, and the next clean candidate writes this credential identity's own LKG" });
502
516
  return null;
503
517
  }
504
518
  if (currentIdentity() !== identity) {
@@ -544,9 +558,10 @@ export async function createWebAdminRuntime(ctx) {
544
558
  const lkgIdentity = candidateIdentityOf(lkgR.effective);
545
559
  if (lkgSurvivesRestart && lkgIdentity !== undefined)
546
560
  noteHandoff({ durable: { version: lkgR.effective.version, identity: lkgIdentity } });
547
- markApplied(lkgGen, lkgR.effective);
561
+ markApplied(lkgR.effective);
562
+ closeApplied(lkgGen, lkgR.effective);
548
563
  await adoptCenterPrompts(lkgR.effective, lkgR.prompts, "boot-lkg");
549
- const lkgPlane = modelPlaneCommitted(lkgReport);
564
+ const lkgPlane = modelPlaneOutcome(lkgReport) === "landed";
550
565
  if (lkgPlane)
551
566
  markRosterLanded(lkgR.effective);
552
567
  effective = lkgR.effective;
@@ -592,7 +607,6 @@ export async function createWebAdminRuntime(ctx) {
592
607
  : "config.d/models.json 空或 CONFIG_LOCAL_DIR 指错目录(选目录旋钮是 CONFIG_LOCAL_DIR,不是 LOCAL_DATA_ROOT)— 模型继续走 env 兜底",
593
608
  });
594
609
  };
595
- let bootApplyPhase = false;
596
610
  try {
597
611
  const bootFetch = pullEffective(configProvider, undefined);
598
612
  const raced = await raceBootFetch(bootFetch, config.configBootFetchBudgetMs);
@@ -611,7 +625,6 @@ export async function createWebAdminRuntime(ctx) {
611
625
  }
612
626
  const r = raced === BOOT_FETCH_DEFERRED ? null : raced;
613
627
  if (r) {
614
- bootApplyPhase = true;
615
628
  for (const de of r.domainErrors ?? [])
616
629
  logger.warn("config_domain_invalid", { domain: de.domain, error: de.error, note: CONFIG_DOMAIN_INVALID_NOTE });
617
630
  if (dryRun) {
@@ -651,18 +664,20 @@ export async function createWebAdminRuntime(ctx) {
651
664
  recordApply(rep, bootArrival);
652
665
  },
653
666
  });
654
- markApplied(bootGen, r.effective);
667
+ markApplied(r.effective);
668
+ closeApplied(bootGen, r.effective);
655
669
  const bootClean = fullyLandedForLkg(r, bootReport);
656
670
  if (bootClean)
657
671
  ccEtag = r.etag;
658
672
  await adoptCenterPrompts(r.effective, bootVerdict.prompts, "boot");
659
- let bootPlaneEff = modelPlaneCommitted(bootReport) ? r.effective : undefined;
660
- if (bootPlaneEff === undefined) {
673
+ const bootOutcome = modelPlaneOutcome(bootReport);
674
+ let bootPlaneEff = bootOutcome === "landed" ? r.effective : undefined;
675
+ if (bootOutcome === "refused" || bootOutcome === undefined) {
661
676
  const lkgPlane = await bootFromLkg("boot candidate's model plane was refused", "model-plane");
662
677
  if (lkgPlane) {
663
678
  let planeReport;
664
679
  applyEffective(config, withModelPlaneOf(r.effective, lkgPlane.effective), logger, { leg: "boot", catalogSource: lkgPlane.catalogSource, sealedKeys, generation: bootGen, report: (rep) => (planeReport = rep) });
665
- if (modelPlaneCommitted(planeReport)) {
680
+ if (modelPlaneOutcome(planeReport) === "landed") {
666
681
  bootPlaneEff = lkgPlane.effective;
667
682
  logger.warn("config_model_plane_from_lkg", { version: r.effective.version, lkgVersion: lkgPlane.effective.version, note: "the live candidate's model plane was refused at boot — serving the LKG's model plane (the catalog and what rides with it) with the live candidate's other groups; the refresh cadence re-judges the candidate" });
668
683
  }
@@ -690,11 +705,11 @@ export async function createWebAdminRuntime(ctx) {
690
705
  catch (err) {
691
706
  if (err instanceof ConfigDirUntrustedError)
692
707
  throw err;
693
- if (bootApplyPhase)
694
- logger.warn("config_apply_refused", { source: configProvider.kind, err: seatText("operator-log-text", String(err)), note: "the pulled candidate failed to apply at boot — falling back to the LKG / env; this is not a reachability failure" });
708
+ if (err instanceof ConfigPullError)
709
+ logger.warn("config_source_unreachable_using_env", { source: configProvider.kind, cause: err.pullCause, err: seatText("operator-log-text", String(err)), note: configPullFailureNote(err.pullCause) });
695
710
  else
696
- logger.warn("config_source_unreachable_using_env", { source: configProvider.kind, err: seatText("operator-log-text", String(err)) });
697
- await bootFallBackWhole(`${bootApplyPhase ? "boot apply refused" : "boot fetch failed"}: ${seatText("operator-log-text", String(err))}`);
711
+ logger.warn("config_apply_refused", { source: configProvider.kind, err: seatText("operator-log-text", String(err)), note: "the pulled candidate failed to apply at boot — falling back to the LKG / env; this is not a reachability failure" });
712
+ await bootFallBackWhole(`${err instanceof ConfigPullError ? "boot fetch failed" : "boot apply refused"}: ${seatText("operator-log-text", String(err))}`);
698
713
  }
699
714
  if (!dryRun && cc !== undefined && currentIdentity() !== promptStateIdentity)
700
715
  await rebasePromptState(currentIdentity(), "boot-end");
@@ -776,7 +791,7 @@ export async function createWebAdminRuntime(ctx) {
776
791
  skills = await applySkillsManifest(skills, effective.skills, candidateSource(), logger);
777
792
  if (effective?.plugins !== undefined) {
778
793
  const pluginOut = await applyCenterPlugins(skills, effective, {
779
- cacheRoot: join(config.localDataRoot ?? join(homedir(), ".ai-agent"), "plugin-cache"),
794
+ cacheRoot: pluginCacheRootFor(config.localDataRoot ?? join(homedir(), ".ai-agent")),
780
795
  allowHosts: config.pluginsAllowHosts,
781
796
  toolsShareThisFilesystem: DEPLOYMENT_SHAPE_PREDICATES.toolsOnThisHost.holds(config),
782
797
  logger,
@@ -839,6 +854,7 @@ export async function createWebAdminRuntime(ctx) {
839
854
  startRefreshLoop(a) {
840
855
  const { pricing, limitSync, swapRunnerDeps, ceilingVerdict, consolidationSeat, degradeRoute, checkpointStorePresent } = a;
841
856
  const signalRestart = (c) => {
857
+ closeApplied(c.gen, c.effective);
842
858
  const reasons = restartReasons(c.baseline, c.effective, restartCtx(consolidationSeat?.read(), degradeRoute.read()));
843
859
  const skillsChangeDetected = reasons.includes("skills");
844
860
  if (bootSkillStale && !skillsChangeDetected)
@@ -934,8 +950,8 @@ export async function createWebAdminRuntime(ctx) {
934
950
  if (phase !== "boot-deferred")
935
951
  mcpRevocations.applyEnabledEntries(enabledMcpEntries(eff.mcp));
936
952
  applyLiveReadFace(eff, swapRunnerDeps, phase);
937
- markApplied(gen, eff);
938
- const planeCommitted = modelPlaneCommitted(report);
953
+ markApplied(eff);
954
+ const planeCommitted = modelPlaneOutcome(report) === "landed";
939
955
  if (planeCommitted)
940
956
  appliedPlaneEff = noCenter ? undefined : eff;
941
957
  planeDeferredNoHandoff = undefined;
@@ -954,6 +970,7 @@ export async function createWebAdminRuntime(ctx) {
954
970
  if (!hot.committed) {
955
971
  throw new Error("the no-center tier was refused (the Runners did not accept the env model table) — the previous account's center configuration is still in force; retried next tick");
956
972
  }
973
+ closeApplied(gen, NO_CENTER_EFFECTIVE);
957
974
  if (hot.report !== undefined && !hot.report.fullyApplied) {
958
975
  logger.warn("center_identity_demotion_partial", { groups: refusedGroups(hot.report).map((g) => g.group), note: "a group of the no-center tier was refused — that group keeps its previous values (loud; the env base for that group could not be applied)" });
959
976
  }
@@ -1045,7 +1062,7 @@ export async function createWebAdminRuntime(ctx) {
1045
1062
  groups: refused.map((g) => g.group),
1046
1063
  note: "a group of this candidate was refused — the live config keeps serving the prior values for it; the LKG and the ETag stay on the last FULLY applied generation (this tree is re-judged next tick)",
1047
1064
  });
1048
- const partialSignal = signalRestart({ applied: "partial", effective: r.effective, baseline: effective, refused: refused.map((g) => g.group) });
1065
+ const partialSignal = signalRestart({ applied: "partial", gen: tickGen, effective: r.effective, baseline: effective, refused: refused.map((g) => g.group) });
1049
1066
  logger.info("web_admin_refreshed", {
1050
1067
  version: r.effective.version,
1051
1068
  note: "partially applied — the refused group(s) keep their prior values (see config_candidate_partially_applied); the other groups hot-applied; restart fields as on a complete tick",
@@ -1054,7 +1071,7 @@ export async function createWebAdminRuntime(ctx) {
1054
1071
  return "ok";
1055
1072
  }
1056
1073
  const lkgPersisted = await persistLkgDurable(r.effective, r.etag);
1057
- const signal = signalRestart({ applied: "complete", effective: r.effective, ...(r.etag !== undefined ? { etag: r.etag } : {}), baseline: effective, lkgPersisted });
1074
+ const signal = signalRestart({ applied: "complete", gen: tickGen, effective: r.effective, ...(r.etag !== undefined ? { etag: r.etag } : {}), baseline: effective, lkgPersisted });
1058
1075
  logger.info("web_admin_refreshed", {
1059
1076
  version: r.effective.version,
1060
1077
  note: "runtime governance (incl. approvalRequire) + limits + models/roles/roster hot-applied; skills/mcp/a2a/scenarios are restart-to-apply",
@@ -1066,7 +1083,7 @@ export async function createWebAdminRuntime(ctx) {
1066
1083
  }
1067
1084
  }
1068
1085
  catch (err) {
1069
- logger.warn("web_admin_refresh_failed", { err: seatText("operator-log-text", String(err)), note: "etag NOT advanced — the same candidate is re-fetched and re-applied next poll" });
1086
+ logger.warn("web_admin_refresh_failed", { cause: refreshFailureCause(err), err: seatText("operator-log-text", String(err)), note: "etag NOT advanced — the same candidate is re-fetched and re-applied next poll" });
1070
1087
  return "failed";
1071
1088
  }
1072
1089
  finally {
@@ -1075,16 +1092,17 @@ export async function createWebAdminRuntime(ctx) {
1075
1092
  return "ok";
1076
1093
  };
1077
1094
  let inFlight;
1078
- const runTick = (arrival) => {
1095
+ const enterLane = (body) => {
1079
1096
  if (inFlight)
1080
1097
  return inFlight;
1081
- const p = refreshTick(arrival).finally(() => {
1098
+ const p = body().finally(() => {
1082
1099
  inFlight = undefined;
1083
1100
  afterLane();
1084
1101
  });
1085
1102
  inFlight = p;
1086
1103
  return p;
1087
1104
  };
1105
+ const runTick = (arrival) => enterLane(() => refreshTick(arrival));
1088
1106
  const requestTick = () => {
1089
1107
  if (ccTimer === undefined || ownRead)
1090
1108
  return;
@@ -1115,21 +1133,22 @@ export async function createWebAdminRuntime(ctx) {
1115
1133
  requestTick();
1116
1134
  const deferredBootApply = async (r, arrivalGen) => {
1117
1135
  if (!r)
1118
- return;
1136
+ return "ok";
1119
1137
  if (refreshInFlight)
1120
- return;
1138
+ return "ok";
1121
1139
  refreshInFlight = true;
1122
1140
  try {
1123
1141
  await deferredBootApplyInner(r, useArrivalGeneration(r.effective.version, arrivalGen));
1124
1142
  if (configProvider.kind === "remote")
1125
1143
  lastPull = "ok";
1144
+ return "ok";
1126
1145
  }
1127
1146
  catch (err) {
1128
- logger.warn("web_admin_refresh_failed", { err: seatText("operator-log-text", String(err)), leg: "boot-deferred", note: "etag NOT advanced — the refresh cadence re-fetches and re-applies the same candidate" });
1147
+ logger.warn("web_admin_refresh_failed", { cause: refreshFailureCause(err), err: seatText("operator-log-text", String(err)), leg: "boot-deferred", note: "etag NOT advanced — the refresh cadence re-fetches and re-applies the same candidate" });
1148
+ return "failed";
1129
1149
  }
1130
1150
  finally {
1131
1151
  refreshInFlight = false;
1132
- afterLane();
1133
1152
  }
1134
1153
  };
1135
1154
  const deferredBootApplyInner = async (r, lateGen) => {
@@ -1159,7 +1178,7 @@ export async function createWebAdminRuntime(ctx) {
1159
1178
  groups: refusedLate.map((g) => g.group),
1160
1179
  note: "late-boot candidate had a refused group — the LKG/ETag stay on the last FULLY applied generation; the refresh cadence re-judges the same tree",
1161
1180
  });
1162
- const partialSignalLate = signalRestart({ applied: "partial", effective: r.effective, baseline: undefined, refused: refusedLate.map((g) => g.group) });
1181
+ const partialSignalLate = signalRestart({ applied: "partial", gen: lateGen, effective: r.effective, baseline: undefined, refused: refusedLate.map((g) => g.group) });
1163
1182
  logger.info("config_loaded_deferred", { source: configProvider.kind, version: r.effective.version, models: (r.effective.models?.models ?? []).filter((m) => m.enabled !== false).length, ...restartLogFields(partialSignalLate) });
1164
1183
  return;
1165
1184
  }
@@ -1167,16 +1186,16 @@ export async function createWebAdminRuntime(ctx) {
1167
1186
  latestEffective = r.effective;
1168
1187
  ccEtag = r.etag;
1169
1188
  const lkgPersistedLate = await persistLkgDurable(r.effective, r.etag);
1170
- const signalLate = signalRestart({ applied: "complete", effective: r.effective, ...(r.etag !== undefined ? { etag: r.etag } : {}), baseline: undefined, lkgPersisted: lkgPersistedLate });
1189
+ const signalLate = signalRestart({ applied: "complete", gen: lateGen, effective: r.effective, ...(r.etag !== undefined ? { etag: r.etag } : {}), baseline: undefined, lkgPersisted: lkgPersistedLate });
1171
1190
  logger.info("config_loaded_deferred", { source: configProvider.kind, version: r.effective.version, models: (r.effective.models?.models ?? []).filter((m) => m.enabled !== false).length, ...restartLogFields(signalLate) });
1172
1191
  };
1173
1192
  if (bootConfigPending) {
1174
1193
  const arrivalGen = reserveArrivalGeneration();
1175
- const continueArrival = (r) => void (lkgBooted ? runTick({ result: r, ordinal: arrivalGen }) : deferredBootApply(r, arrivalGen));
1194
+ const continueArrival = (r) => void (lkgBooted ? runTick({ result: r, ordinal: arrivalGen }) : enterLane(() => deferredBootApply(r, arrivalGen)));
1176
1195
  void bootConfigPending.then((r) => {
1177
1196
  if (r !== null && configProvider.kind === "remote" && candidateIdentityOf(r.effective) !== currentIdentity()) {
1178
1197
  logger.warn("config_boot_arrival_identity_changed", { note: "the late boot pull landed under a center credential that is no longer current — not adopted; re-pulling once under the current credential" });
1179
- void pullEffective(configProvider, undefined).then(continueArrival, (err) => logger.warn("config_boot_arrival_repull_failed", { err: seatText("operator-log-text", String(err)), note: "the refresh cadence retries under the current credential" }));
1198
+ void pullEffective(configProvider, undefined).then(continueArrival, (err) => logger.warn("config_boot_arrival_repull_failed", { cause: refreshFailureCause(err), err: seatText("operator-log-text", String(err)), note: "the refresh cadence retries under the current credential" }));
1180
1199
  return;
1181
1200
  }
1182
1201
  continueArrival(r);
@@ -1189,9 +1208,10 @@ export async function createWebAdminRuntime(ctx) {
1189
1208
  clearInterval(ccTimer);
1190
1209
  ccTimer = undefined;
1191
1210
  }
1192
- credentialRenewer?.stop();
1211
+ const credentialSettled = credentialRenewer?.stop() ?? Promise.resolve();
1193
1212
  unwatchCredential?.();
1194
1213
  unwatchCredential = undefined;
1214
+ return credentialSettled;
1195
1215
  },
1196
1216
  centerCredentialState() {
1197
1217
  return cc === undefined ? undefined : buildCenterCredentialHealthView(cc.credential.health(), credentialRenewer);
@@ -24,7 +24,7 @@
24
24
  * 当年 core 的摘要器没有凭据座,只能在 brain 外面包一层注入 `options.apiKey`(`createPerModelKeyBrain`)。
25
25
  * core 7.51.0 起 `WebFetchSummarizerOptions.getApiKeyAndHeaders` 是与 `TaskSpec` / `SideQuerySpec` 同一签名的座
26
26
  * (每次摘要按摘要器的模型解一次,`{ apiKey, headers }` 两半都收)⇒ 那层包装退役:`RunnerDeps.brain` 原样交给
27
- * 摘要器,座位由与 side-query / 记忆整理**同一只**座位工厂(`createPerModelAuthSeat`)填充:
27
+ * 摘要器,座位由与 side-query **同一只**座位工厂(`createPerModelAuthSeat`)填充(两面都每次现取模型、不焊模型;记忆整理席焊住 Model,凭据随座冻结,见 `boot/memory-consolidation.ts`):
28
28
  * · 有 per-model key ⇒ 请求带模型自己的凭据;
29
29
  * · 无 ⇒ 座位回 `undefined` ⇒ 交回 core 按它自己的 key↔URL 配对法判(部署根上的模型带网关 key;
30
30
  * entry URL 不在部署根上 ⇒ `route.credential_mismatch` 响亮拒 —— core 7.51.0 起没有「未声明部署根」的
@@ -15,7 +15,9 @@ export interface ReclaimableRunStore {
15
15
  }
16
16
  /** A checkpoint store just enough to answer "is this session a resume-in-progress?" (pending checkpoint). */
17
17
  export interface ReclaimCheckpointProbe {
18
- findPendingTokenBySession: (sessionId: string) => Promise<unknown>;
18
+ findPendingTokenBySession: (sessionId: string, scope: undefined, binding: {
19
+ readonly axis: "run";
20
+ }) => Promise<unknown>;
19
21
  }
20
22
  /**
21
23
  * Reclaim runs orphaned by a previous host-lane engine process (flip orphaned `running` → failed + release their
@@ -3,7 +3,7 @@ export async function reclaimOrphansAtBoot(runStore, checkpointStore, logger) {
3
3
  if (typeof store?.reclaimOrphanedAtBoot !== "function")
4
4
  return 0;
5
5
  const isResumable = checkpointStore
6
- ? async (sid) => Boolean(await checkpointStore.findPendingTokenBySession(sid))
6
+ ? async (sid) => Boolean(await checkpointStore.findPendingTokenBySession(sid, undefined, { axis: "run" }))
7
7
  : undefined;
8
8
  const reclaimedCount = await store.reclaimOrphanedAtBoot(isResumable);
9
9
  if (reclaimedCount > 0)