@sema-agent/server 7.147.0 → 7.149.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (790) hide show
  1. package/MIGRATION.md +1468 -24
  2. package/README.md +35 -7
  3. package/README.zh-CN.md +18 -8
  4. package/USAGE.md +444 -193
  5. package/deploy/sema-up/README.md +16 -5
  6. package/deploy/sema-up/chart/templates/NOTES.txt +1 -1
  7. package/deploy/sema-up/chart/templates/_helpers.tpl +20 -4
  8. package/deploy/sema-up/chart/values.yaml +3 -2
  9. package/deploy/sema-up/cluster-up.sh +74 -176
  10. package/deploy/sema-up/kube-up.sh +29 -49
  11. package/deploy/sema-up/lib/chart-run.sh +23 -0
  12. package/deploy/sema-up/lib/dataroot.sh +3 -3
  13. package/deploy/sema-up/lib/health.sh +62 -13
  14. package/deploy/sema-up/lib/helm-values-cluster.py +18 -0
  15. package/deploy/sema-up/lib/helm-values-kube.py +35 -0
  16. package/deploy/sema-up/lib/regcred.py +8 -0
  17. package/deploy/sema-up/lib/remote/helm-install.sh +3 -0
  18. package/deploy/sema-up/lib/remote/image-import.sh +6 -0
  19. package/deploy/sema-up/lib/remote/machine-precheck.sh +11 -0
  20. package/deploy/sema-up/lib/remote/region-probe.sh +3 -0
  21. package/deploy/sema-up/lib/remote/stack-ready.sh +26 -0
  22. package/deploy/sema-up/lib/remote/vxlan-guard.sh +8 -0
  23. package/deploy/sema-up/lib/render-stack.py +17 -0
  24. package/deploy/sema-up/lib/shell-text.sh +87 -0
  25. package/deploy/sema-up/lib/usage-flags.txt +10 -0
  26. package/deploy/sema-up/lib/usage-head.txt +1 -0
  27. package/deploy/sema-up/lib/usage-tail.txt +13 -0
  28. package/deploy/sema-up/preflight.sh +10 -8
  29. package/deploy/sema-up/sema-up.sh +14 -39
  30. package/deploy/sema-up/smoke.sh +7 -6
  31. package/deploy/sema-up/stack/compose.dataroot.yaml +3 -0
  32. package/deploy/sema-up/stack/compose.yaml +13 -1
  33. package/deploy/sema-up/stack/sema-stack-cluster.yaml +21 -0
  34. package/dist/adoption/plan.d.ts +24 -0
  35. package/dist/adoption/plan.js +53 -1
  36. package/dist/adoption/runner.d.ts +10 -1
  37. package/dist/adoption/runner.js +36 -16
  38. package/dist/approval-card.d.ts +36 -38
  39. package/dist/approval-gate-currency.js +3 -2
  40. package/dist/approval-leg-origin.d.ts +33 -0
  41. package/dist/approval-leg-origin.js +4 -0
  42. package/dist/approval-reconciler.d.ts +4 -13
  43. package/dist/approval-reconciler.js +2 -2
  44. package/dist/approval.d.ts +13 -11
  45. package/dist/approval.js +3 -3
  46. package/dist/audit.d.ts +10 -3
  47. package/dist/audit.js +15 -7
  48. package/dist/auth-bridge.d.ts +9 -15
  49. package/dist/auth-bridge.js +4 -11
  50. package/dist/auth-keys.d.ts +10 -1
  51. package/dist/auth-keys.js +8 -0
  52. package/dist/auto-mode-face.d.ts +10 -7
  53. package/dist/auto-mode-face.js +7 -4
  54. package/dist/background-agent-name.d.ts +19 -1
  55. package/dist/background-agent-name.js +12 -2
  56. package/dist/background-session-reap.d.ts +1 -1
  57. package/dist/bake-runner/main.js +9 -6
  58. package/dist/bench/s1/arms.js +6 -5
  59. package/dist/bench/s1/live-deps.js +5 -2
  60. package/dist/bench/s1/run-firm.js +6 -5
  61. package/dist/bind-host.d.ts +25 -0
  62. package/dist/bind-host.js +25 -0
  63. package/dist/boot/adoption.d.ts +3 -0
  64. package/dist/boot/adoption.js +1 -0
  65. package/dist/boot/deployment-mods.d.ts +1 -1
  66. package/dist/boot/execution-env.d.ts +17 -7
  67. package/dist/boot/execution-env.js +47 -42
  68. package/dist/boot/execution-lane.d.ts +6 -4
  69. package/dist/boot/execution-lane.js +3 -1
  70. package/dist/boot/exit-boundary.d.ts +2 -2
  71. package/dist/boot/exit-boundary.js +6 -5
  72. package/dist/boot/fatal-exit.d.ts +3 -5
  73. package/dist/boot/fatal-exit.js +2 -2
  74. package/dist/boot/leader.d.ts +15 -0
  75. package/dist/boot/leader.js +17 -15
  76. package/dist/boot/memory-consolidation.d.ts +37 -29
  77. package/dist/boot/memory-consolidation.js +11 -5
  78. package/dist/boot/org-delivery.d.ts +3 -2
  79. package/dist/boot/org-memory.js +1 -1
  80. package/dist/boot/parked-revive-gate.js +2 -2
  81. package/dist/boot/reapers.d.ts +4 -3
  82. package/dist/boot/reapers.js +19 -16
  83. package/dist/boot/resolve-spec.d.ts +5 -3
  84. package/dist/boot/resolve-spec.js +60 -70
  85. package/dist/boot/retention-lane.d.ts +4 -4
  86. package/dist/boot/retention-lane.js +2 -2
  87. package/dist/boot/runner-deps.d.ts +28 -7
  88. package/dist/boot/runner-deps.js +14 -5
  89. package/dist/boot/runtime-caps.d.ts +2 -2
  90. package/dist/boot/runtime-caps.js +16 -2
  91. package/dist/boot/session-faces.d.ts +16 -7
  92. package/dist/boot/session-faces.js +114 -94
  93. package/dist/boot/shutdown.d.ts +5 -4
  94. package/dist/boot/shutdown.js +6 -4
  95. package/dist/boot/stage-01-config.d.ts +1 -0
  96. package/dist/boot/stage-01-config.js +13 -4
  97. package/dist/boot/stage-02-web-admin-pull.d.ts +2 -0
  98. package/dist/boot/stage-02-web-admin-pull.js +16 -3
  99. package/dist/boot/stage-03-store-backend.d.ts +4 -0
  100. package/dist/boot/stage-03-store-backend.js +4 -3
  101. package/dist/boot/stage-04-stores.d.ts +3 -0
  102. package/dist/boot/stage-04-stores.js +2 -2
  103. package/dist/boot/stage-05-execution-env.d.ts +8 -3
  104. package/dist/boot/stage-05-execution-env.js +2 -2
  105. package/dist/boot/stage-06-runners.d.ts +12 -13
  106. package/dist/boot/stage-06-runners.js +23 -15
  107. package/dist/boot/stage-07-capability-layer.d.ts +13 -9
  108. package/dist/boot/stage-07-capability-layer.js +5 -3
  109. package/dist/boot/stage-08-reapers.d.ts +13 -9
  110. package/dist/boot/stage-08-reapers.js +3 -3
  111. package/dist/boot/stage-09-leader.d.ts +14 -16
  112. package/dist/boot/stage-09-leader.js +12 -4
  113. package/dist/boot/stage-10-http-server.d.ts +14 -16
  114. package/dist/boot/stage-10-http-server.js +7 -4
  115. package/dist/boot/store-evidence.d.ts +20 -0
  116. package/dist/boot/store-evidence.js +13 -0
  117. package/dist/boot/stores.d.ts +6 -0
  118. package/dist/boot/stores.js +41 -27
  119. package/dist/boot/task-list-lane.d.ts +4 -4
  120. package/dist/boot/web-admin.d.ts +4 -2
  121. package/dist/boot/web-admin.js +55 -35
  122. package/dist/boot/webfetch-summarize-lane.d.ts +1 -1
  123. package/dist/boot-reclaim.d.ts +3 -1
  124. package/dist/boot-reclaim.js +1 -1
  125. package/dist/brain.d.ts +7 -18
  126. package/dist/brain.js +5 -17
  127. package/dist/budget.js +6 -6
  128. package/dist/capabilities/center-plugins.d.ts +7 -1
  129. package/dist/capabilities/center-plugins.js +32 -10
  130. package/dist/capabilities/center-wiring.js +1 -1
  131. package/dist/capabilities/composite-members.d.ts +2 -2
  132. package/dist/capabilities/composite-members.js +2 -2
  133. package/dist/capabilities/repo-tools.d.ts +2 -0
  134. package/dist/capabilities/repo-tools.js +14 -12
  135. package/dist/capabilities/scenarios.d.ts +6 -15
  136. package/dist/capabilities/scenarios.js +11 -16
  137. package/dist/capabilities/skills.d.ts +1 -1
  138. package/dist/capabilities/tool-defer.d.ts +1 -1
  139. package/dist/capability-facts.d.ts +39 -11
  140. package/dist/capability-facts.js +35 -7
  141. package/dist/card-settle-stored-scope.d.ts +56 -0
  142. package/dist/card-settle-stored-scope.js +27 -0
  143. package/dist/card-void.d.ts +8 -13
  144. package/dist/card-void.js +2 -7
  145. package/dist/center-credential-renewer.d.ts +6 -2
  146. package/dist/center-credential-renewer.js +7 -3
  147. package/dist/config-catalog.d.ts +28 -1
  148. package/dist/config-catalog.js +95 -85
  149. package/dist/config-dir-trust.d.ts +37 -4
  150. package/dist/config-dir-trust.js +88 -44
  151. package/dist/config-invariants.d.ts +43 -3
  152. package/dist/config-invariants.js +69 -5
  153. package/dist/config-lkg.d.ts +23 -1
  154. package/dist/config-lkg.js +17 -3
  155. package/dist/config-provider.d.ts +9 -9
  156. package/dist/config-provider.js +25 -110
  157. package/dist/config-pull-failure.d.ts +50 -0
  158. package/dist/config-pull-failure.js +48 -0
  159. package/dist/config-types.d.ts +62 -21
  160. package/dist/config.d.ts +14 -21
  161. package/dist/config.js +141 -64
  162. package/dist/context-window-notice.d.ts +31 -0
  163. package/dist/context-window-notice.js +28 -0
  164. package/dist/delegated-session-owner.d.ts +1 -1
  165. package/dist/deleted-session-ids.d.ts +3 -2
  166. package/dist/deployment-governance.d.ts +3 -3
  167. package/dist/deployment-shape.d.ts +46 -11
  168. package/dist/deployment-shape.js +8 -0
  169. package/dist/egress-redirect.d.ts +25 -7
  170. package/dist/egress-redirect.js +20 -2
  171. package/dist/elicitation.d.ts +6 -5
  172. package/dist/elicitation.js +23 -22
  173. package/dist/engine-identity.d.ts +28 -0
  174. package/dist/engine-identity.js +10 -0
  175. package/dist/entry-problems.d.ts +5 -7
  176. package/dist/entry-problems.js +1 -1
  177. package/dist/env-facts.js +2 -1
  178. package/dist/env-name-allowlist-knobs.d.ts +6 -5
  179. package/dist/env-name-allowlist-knobs.js +5 -0
  180. package/dist/env-witness.d.ts +7 -0
  181. package/dist/env-witness.js +16 -0
  182. package/dist/execution-lane-caps.d.ts +25 -23
  183. package/dist/execution-lane-caps.js +18 -26
  184. package/dist/execution-placement.d.ts +58 -18
  185. package/dist/execution-placement.js +41 -2
  186. package/dist/field-conflict.d.ts +7 -11
  187. package/dist/field-conflict.js +3 -3
  188. package/dist/file-history-capture.d.ts +3 -3
  189. package/dist/file-history-disclosure.js +1 -0
  190. package/dist/fleet/fleet-bus.d.ts +21 -3
  191. package/dist/fleet/fleet-bus.js +35 -25
  192. package/dist/fleet/fleet-reconciler.js +2 -2
  193. package/dist/fleet/serving-lease.js +3 -3
  194. package/dist/fleet-client.js +3 -3
  195. package/dist/fleet-lease.d.ts +0 -1
  196. package/dist/fleet-lease.js +4 -5
  197. package/dist/history-anchor.d.ts +23 -3
  198. package/dist/history-anchor.js +24 -4
  199. package/dist/hitl-delivery.d.ts +90 -0
  200. package/dist/hitl-delivery.js +98 -0
  201. package/dist/hooks/classic-stations.d.ts +8 -11
  202. package/dist/hooks/classic-stations.js +0 -7
  203. package/dist/hooks/command-spawn.d.ts +7 -2
  204. package/dist/hooks/command-spawn.js +13 -6
  205. package/dist/hooks/hook-llm.d.ts +5 -1
  206. package/dist/hooks/hook-llm.js +24 -15
  207. package/dist/hooks/hook-runner.d.ts +72 -57
  208. package/dist/hooks/hook-runner.js +271 -193
  209. package/dist/host-lsp-manager.d.ts +22 -8
  210. package/dist/host-lsp-manager.js +4 -1
  211. package/dist/http/active-run-conflict.d.ts +2 -43
  212. package/dist/http/active-run-conflict.js +3 -7
  213. package/dist/http/admission.d.ts +4 -18
  214. package/dist/http/admission.js +76 -79
  215. package/dist/http/approval-sweeps.d.ts +3 -3
  216. package/dist/http/approval-sweeps.js +56 -31
  217. package/dist/http/caller-trust.d.ts +8 -10
  218. package/dist/http/caller-trust.js +1 -2
  219. package/dist/http/claim-heartbeat.d.ts +49 -0
  220. package/dist/http/claim-heartbeat.js +46 -0
  221. package/dist/http/claimed-run.d.ts +16 -8
  222. package/dist/http/claimed-run.js +8 -0
  223. package/dist/http/dispatch.d.ts +8 -1
  224. package/dist/http/dispatch.js +78 -30
  225. package/dist/http/durable-run-leg.d.ts +11 -4
  226. package/dist/http/durable-run-leg.js +45 -21
  227. package/dist/http/execution-context.d.ts +122 -47
  228. package/dist/http/execution-context.js +135 -43
  229. package/dist/http/health-reader.d.ts +36 -0
  230. package/dist/http/health-reader.js +21 -0
  231. package/dist/http/health-self-report.d.ts +9 -9
  232. package/dist/http/health-self-report.js +4 -4
  233. package/dist/http/idempotency.d.ts +9 -5
  234. package/dist/http/idempotency.js +4 -4
  235. package/dist/http/memory-compliance-failure-reply.d.ts +15 -16
  236. package/dist/http/memory-compliance-failure-reply.js +4 -2
  237. package/dist/http/memory-face-fault-reply.d.ts +67 -0
  238. package/dist/http/memory-face-fault-reply.js +71 -0
  239. package/dist/http/memory-store-refusal-reply.d.ts +1 -1
  240. package/dist/http/memory-store-refusal-reply.js +3 -0
  241. package/dist/http/owner-access.d.ts +392 -67
  242. package/dist/http/owner-access.js +370 -35
  243. package/dist/http/principal-gate.d.ts +39 -89
  244. package/dist/http/principal-gate.js +26 -68
  245. package/dist/http/refusal-body.d.ts +35 -2
  246. package/dist/http/refusal-body.js +34 -0
  247. package/dist/http/request-guards.d.ts +9 -13
  248. package/dist/http/request-guards.js +34 -68
  249. package/dist/http/resume-composition.d.ts +37 -0
  250. package/dist/http/resume-composition.js +18 -0
  251. package/dist/http/resume-ctx-read.d.ts +46 -12
  252. package/dist/http/resume-ctx-read.js +31 -6
  253. package/dist/http/resume-legs.d.ts +54 -19
  254. package/dist/http/resume-legs.js +408 -196
  255. package/dist/http/retired-skill-manifest.d.ts +1 -1
  256. package/dist/http/route-ctx.d.ts +31 -32
  257. package/dist/http/routes/a2a-serve.d.ts +43 -5
  258. package/dist/http/routes/a2a-serve.js +60 -37
  259. package/dist/http/routes/admin-config-refresh.js +2 -2
  260. package/dist/http/routes/admin-drain.js +2 -2
  261. package/dist/http/routes/admin-memory-optout.js +4 -3
  262. package/dist/http/routes/adoption.d.ts +3 -0
  263. package/dist/http/routes/adoption.js +17 -10
  264. package/dist/http/routes/agents-roster.js +13 -7
  265. package/dist/http/routes/approvals-assistant.js +73 -67
  266. package/dist/http/routes/attachments.js +2 -2
  267. package/dist/http/routes/background.d.ts +3 -3
  268. package/dist/http/routes/background.js +9 -17
  269. package/dist/http/routes/capabilities.js +16 -19
  270. package/dist/http/routes/config-catalog.js +2 -2
  271. package/dist/http/routes/devices.d.ts +3 -3
  272. package/dist/http/routes/devices.js +4 -4
  273. package/dist/http/routes/diagnostics.d.ts +29 -3
  274. package/dist/http/routes/diagnostics.js +49 -18
  275. package/dist/http/routes/engine.js +2 -2
  276. package/dist/http/routes/fleet.js +5 -3
  277. package/dist/http/routes/images.js +10 -6
  278. package/dist/http/routes/leader.d.ts +7 -2
  279. package/dist/http/routes/leader.js +12 -3
  280. package/dist/http/routes/mcp-reconnect.d.ts +1 -1
  281. package/dist/http/routes/mcp-reconnect.js +7 -15
  282. package/dist/http/routes/memory-bundle.js +4 -7
  283. package/dist/http/routes/memory-compliance.js +4 -4
  284. package/dist/http/routes/memory-consolidation.js +6 -9
  285. package/dist/http/routes/memory-origin.d.ts +2 -0
  286. package/dist/http/routes/memory-origin.js +7 -8
  287. package/dist/http/routes/memory-policy.js +17 -12
  288. package/dist/http/routes/notify-wake.js +10 -19
  289. package/dist/http/routes/observability.js +3 -3
  290. package/dist/http/routes/principal-inbox.d.ts +4 -2
  291. package/dist/http/routes/principal-inbox.js +5 -4
  292. package/dist/http/routes/projects.d.ts +1 -1
  293. package/dist/http/routes/projects.js +3 -2
  294. package/dist/http/routes/retention-ops.js +6 -9
  295. package/dist/http/routes/rules.js +20 -5
  296. package/dist/http/routes/run-memory-capture.d.ts +2 -2
  297. package/dist/http/routes/run-memory-capture.js +6 -12
  298. package/dist/http/routes/run-permission-mode.d.ts +2 -2
  299. package/dist/http/routes/run-permission-mode.js +10 -17
  300. package/dist/http/routes/runs.js +155 -237
  301. package/dist/http/routes/session-memory-sync.d.ts +2 -2
  302. package/dist/http/routes/session-memory-sync.js +7 -13
  303. package/dist/http/routes/session-sync.d.ts +28 -7
  304. package/dist/http/routes/session-sync.js +63 -50
  305. package/dist/http/routes/sessions-list.d.ts +3 -3
  306. package/dist/http/routes/sessions-list.js +9 -9
  307. package/dist/http/routes/sessions.js +87 -124
  308. package/dist/http/routes/shared-memory.js +6 -6
  309. package/dist/http/routes/side-query.js +2 -2
  310. package/dist/http/routes/tasks.js +237 -187
  311. package/dist/http/routes/trace-usage.d.ts +0 -12
  312. package/dist/http/routes/trace-usage.js +40 -46
  313. package/dist/http/routes/workflows.d.ts +39 -4
  314. package/dist/http/routes/workflows.js +42 -14
  315. package/dist/http/run-concurrency-cap.d.ts +20 -12
  316. package/dist/http/run-concurrency-cap.js +39 -26
  317. package/dist/http/run-read-face.d.ts +3 -5
  318. package/dist/http/run-read-face.js +8 -13
  319. package/dist/http/send.d.ts +12 -3
  320. package/dist/http/send.js +42 -6
  321. package/dist/http/server.d.ts +43 -45
  322. package/dist/http/server.js +61 -11
  323. package/dist/http/sse-log.d.ts +17 -10
  324. package/dist/http/sse-log.js +7 -7
  325. package/dist/http/stored-body-replay.d.ts +12 -0
  326. package/dist/http/stored-body-replay.js +2 -2
  327. package/dist/http/submit-ctx.d.ts +17 -8
  328. package/dist/http/submit-ctx.js +8 -5
  329. package/dist/http/submit-replay.d.ts +19 -6
  330. package/dist/http/submit-replay.js +18 -6
  331. package/dist/http/sync-submit-body.d.ts +3 -4
  332. package/dist/http/sync-submit-body.js +4 -5
  333. package/dist/http/wire-types.d.ts +4 -3
  334. package/dist/identity-source.d.ts +36 -5
  335. package/dist/identity-source.js +27 -0
  336. package/dist/index.d.ts +4 -1
  337. package/dist/index.js +2 -0
  338. package/dist/key-resolver.d.ts +32 -0
  339. package/dist/key-resolver.js +23 -9
  340. package/dist/leader/diffup.js +2 -1
  341. package/dist/leader/endpoint.d.ts +26 -5
  342. package/dist/leader/endpoint.js +154 -14
  343. package/dist/leader/fanout.d.ts +3 -0
  344. package/dist/leader/fanout.js +78 -63
  345. package/dist/leader/leader.d.ts +16 -0
  346. package/dist/leader/leader.js +43 -3
  347. package/dist/leader/merge.d.ts +9 -1
  348. package/dist/leader/merge.js +16 -1
  349. package/dist/leader/repair-wire.js +1 -1
  350. package/dist/leader/wire.d.ts +36 -3
  351. package/dist/leader/wire.js +59 -18
  352. package/dist/leg-facts.d.ts +7 -2
  353. package/dist/leg-facts.js +1 -0
  354. package/dist/local-store-declaration.d.ts +54 -0
  355. package/dist/local-store-declaration.js +59 -0
  356. package/dist/lsp-evict.d.ts +6 -4
  357. package/dist/lsp-evict.js +2 -3
  358. package/dist/mcp-assertion-header.d.ts +1 -1
  359. package/dist/mcp-assertion-header.js +1 -1
  360. package/dist/memory-operator-faces.d.ts +5 -4
  361. package/dist/memory-operator-faces.js +1 -1
  362. package/dist/memory-project-layer.js +1 -1
  363. package/dist/memory-scope.d.ts +33 -6
  364. package/dist/memory-scope.js +68 -19
  365. package/dist/memory-store-refusal.d.ts +5 -2
  366. package/dist/memory-sync-client.d.ts +3 -2
  367. package/dist/memory-sync-client.js +8 -5
  368. package/dist/model-compat.d.ts +17 -8
  369. package/dist/model-compat.js +6 -2
  370. package/dist/model-context-window.d.ts +57 -0
  371. package/dist/model-context-window.js +21 -0
  372. package/dist/model-entry-headers.d.ts +46 -4
  373. package/dist/model-entry-headers.js +2 -2
  374. package/dist/model-entry-refusal.d.ts +40 -20
  375. package/dist/model-entry-refusal.js +57 -30
  376. package/dist/model-plane-face.d.ts +19 -11
  377. package/dist/model-plane-face.js +9 -1
  378. package/dist/model-plane-probe.d.ts +2 -0
  379. package/dist/model-plane-probe.js +17 -0
  380. package/dist/model-provider.d.ts +3 -3
  381. package/dist/model-reach-scope.d.ts +2 -1
  382. package/dist/model-route-endpoint.d.ts +9 -5
  383. package/dist/model-route-endpoint.js +29 -7
  384. package/dist/model-select.d.ts +16 -0
  385. package/dist/model-select.js +4 -0
  386. package/dist/mountinfo.d.ts +37 -0
  387. package/dist/mountinfo.js +47 -0
  388. package/dist/namespaced-rule-name.d.ts +23 -14
  389. package/dist/namespaced-rule-name.js +8 -11
  390. package/dist/net-address.d.ts +1 -1
  391. package/dist/observability/corrupt-read-seat.d.ts +4 -4
  392. package/dist/observability/corrupt-read-seat.js +5 -3
  393. package/dist/observability/fail-open.d.ts +72 -40
  394. package/dist/observability/fail-open.js +74 -40
  395. package/dist/observability/logger.d.ts +22 -1
  396. package/dist/observability/logger.js +89 -12
  397. package/dist/observability/metrics.js +4 -5
  398. package/dist/observability/otel-exporter.js +2 -1
  399. package/dist/observability/principal-context.d.ts +14 -7
  400. package/dist/observability/principal-context.js +8 -3
  401. package/dist/observability/run-terminal.d.ts +7 -1
  402. package/dist/observability/run-terminal.js +6 -2
  403. package/dist/observability/secret-env-scrub.d.ts +1 -1
  404. package/dist/observability/secret-env-scrub.js +1 -1
  405. package/dist/orchestration/hardened-vm-runner.d.ts +1 -0
  406. package/dist/orchestration/hardened-vm-runner.js +11 -5
  407. package/dist/orchestration/hardened-vm-worker-runner.d.ts +0 -14
  408. package/dist/orchestration/hardened-vm-worker-runner.js +5 -0
  409. package/dist/orchestration/hardened-vm-worker.js +2 -1
  410. package/dist/orchestration/workflow-completion-inbox.d.ts +3 -3
  411. package/dist/orchestration/workflow-completion-inbox.js +3 -2
  412. package/dist/org-delivery-gate.d.ts +36 -10
  413. package/dist/org-delivery-gate.js +12 -8
  414. package/dist/outbound-dispatcher.d.ts +1 -1
  415. package/dist/outbound-dispatcher.js +6 -12
  416. package/dist/owner-brands.d.ts +81 -0
  417. package/dist/owner-brands.js +42 -0
  418. package/dist/owner-faces.d.ts +532 -0
  419. package/dist/owner-faces.js +126 -0
  420. package/dist/park-row-commit.d.ts +67 -0
  421. package/dist/park-row-commit.js +76 -0
  422. package/dist/parked-decide.d.ts +76 -12
  423. package/dist/parked-decide.js +152 -11
  424. package/dist/parked-revive-surface.d.ts +14 -4
  425. package/dist/parked-revive-surface.js +5 -4
  426. package/dist/peer-directory.d.ts +7 -9
  427. package/dist/peer-directory.js +3 -2
  428. package/dist/permission-rule-vocab.d.ts +53 -8
  429. package/dist/permission-rule-vocab.js +30 -2
  430. package/dist/plugins/adoption-log-sql.d.ts +3 -25
  431. package/dist/plugins/adoption-log-sql.js +23 -21
  432. package/dist/plugins/approval-ask-retired-delete-by-task-m50.d.ts +7 -0
  433. package/dist/plugins/approval-ask-retired-delete-by-task-m50.js +17 -0
  434. package/dist/plugins/approval-ask-store-file.d.ts +18 -7
  435. package/dist/plugins/approval-ask-store-file.js +37 -14
  436. package/dist/plugins/approval-ask-store-memory.d.ts +12 -4
  437. package/dist/plugins/approval-ask-store-memory.js +24 -10
  438. package/dist/plugins/approval-ask-store-sql.d.ts +40 -21
  439. package/dist/plugins/approval-ask-store-sql.js +44 -15
  440. package/dist/plugins/approval-exemption-skill-cutoff.d.ts +64 -0
  441. package/dist/plugins/approval-exemption-skill-cutoff.js +122 -0
  442. package/dist/plugins/approval-exemption-skill-m46.d.ts +14 -0
  443. package/dist/plugins/approval-exemption-skill-m46.js +21 -0
  444. package/dist/plugins/approval-exemption-store.d.ts +32 -2
  445. package/dist/plugins/approval-exemption-store.js +42 -19
  446. package/dist/plugins/approval-nonce-store.d.ts +39 -12
  447. package/dist/plugins/approval-nonce-store.js +72 -23
  448. package/dist/plugins/blob-backend.d.ts +2 -0
  449. package/dist/plugins/blob-backend.js +9 -6
  450. package/dist/plugins/caching-session-store.d.ts +13 -1
  451. package/dist/plugins/caching-session-store.js +43 -4
  452. package/dist/plugins/checkpoint-index-columns.d.ts +32 -5
  453. package/dist/plugins/checkpoint-index-columns.js +36 -1
  454. package/dist/plugins/checkpoint-store-face.d.ts +83 -10
  455. package/dist/plugins/checkpoint-store-face.js +18 -1
  456. package/dist/plugins/device-store-sql.js +1 -0
  457. package/dist/plugins/ensure-index.d.ts +13 -1
  458. package/dist/plugins/ensure-index.js +154 -21
  459. package/dist/plugins/ensure-schema-lock-policy.d.ts +36 -18
  460. package/dist/plugins/ensure-schema-lock-policy.js +76 -9
  461. package/dist/plugins/file-run-store.d.ts +85 -32
  462. package/dist/plugins/file-run-store.js +177 -94
  463. package/dist/plugins/host-platform.d.ts +24 -3
  464. package/dist/plugins/host-platform.js +15 -1
  465. package/dist/plugins/image-bake-store-sql.js +2 -0
  466. package/dist/plugins/imported-layer-root-retirement.d.ts +2 -2
  467. package/dist/plugins/k8s-pod-reaper.d.ts +1 -3
  468. package/dist/plugins/k8s-pod-reaper.js +0 -1
  469. package/dist/plugins/leader-run-store-sql.d.ts +22 -0
  470. package/dist/plugins/leader-run-store-sql.js +34 -4
  471. package/dist/plugins/local-checkpoint-store.d.ts +62 -23
  472. package/dist/plugins/local-checkpoint-store.js +197 -77
  473. package/dist/plugins/local-data-dir-modes-m39.js +2 -1
  474. package/dist/plugins/local-data-root-admission.d.ts +52 -0
  475. package/dist/plugins/local-data-root-admission.js +100 -0
  476. package/dist/plugins/local-docker-capacity.d.ts +93 -0
  477. package/dist/plugins/local-docker-capacity.js +194 -0
  478. package/dist/plugins/local-docker-reaper.d.ts +92 -0
  479. package/dist/plugins/local-docker-reaper.js +102 -0
  480. package/dist/plugins/local-engine-high-water.d.ts +29 -6
  481. package/dist/plugins/local-engine-high-water.js +27 -19
  482. package/dist/plugins/local-session-store.d.ts +458 -140
  483. package/dist/plugins/local-session-store.js +906 -292
  484. package/dist/plugins/local-session-window.d.ts +3 -2
  485. package/dist/plugins/local-session-window.js +3 -2
  486. package/dist/plugins/local-sidecar-quarantine.js +3 -2
  487. package/dist/plugins/local-task-attachment-store.d.ts +18 -1
  488. package/dist/plugins/local-task-attachment-store.js +22 -1
  489. package/dist/plugins/memory-embedder.js +9 -7
  490. package/dist/plugins/memory-engine-pg.d.ts +3 -2
  491. package/dist/plugins/memory-engine-pg.js +14 -5
  492. package/dist/plugins/memory-engine-sql-apply.d.ts +8 -4
  493. package/dist/plugins/memory-engine-sql-apply.js +6 -8
  494. package/dist/plugins/memory-engine-tidb.d.ts +4 -2
  495. package/dist/plugins/memory-engine-tidb.js +11 -2
  496. package/dist/plugins/memory-optout-grant-store-sql.d.ts +1 -1
  497. package/dist/plugins/memory-optout-grant-store-sql.js +3 -3
  498. package/dist/plugins/memory-run-store.d.ts +53 -36
  499. package/dist/plugins/memory-run-store.js +116 -88
  500. package/dist/plugins/one-time-migration-marker.d.ts +26 -0
  501. package/dist/plugins/one-time-migration-marker.js +13 -0
  502. package/dist/plugins/one-time-migrations.d.ts +214 -47
  503. package/dist/plugins/one-time-migrations.js +481 -135
  504. package/dist/plugins/org-delivery-quota-store.d.ts +34 -11
  505. package/dist/plugins/org-delivery-quota-store.js +31 -15
  506. package/dist/plugins/permission-rule-store-file.d.ts +3 -3
  507. package/dist/plugins/permission-rule-store-sql.d.ts +5 -64
  508. package/dist/plugins/permission-rule-store-sql.js +11 -95
  509. package/dist/plugins/pg-pool.d.ts +2 -32
  510. package/dist/plugins/pg-pool.js +24 -17
  511. package/dist/plugins/remote-env-device.d.ts +3 -2
  512. package/dist/plugins/remote-env-e2b.d.ts +8 -32
  513. package/dist/plugins/remote-env-e2b.js +44 -32
  514. package/dist/plugins/remote-env-host.d.ts +51 -17
  515. package/dist/plugins/remote-env-host.js +111 -42
  516. package/dist/plugins/remote-env-k8s.d.ts +40 -45
  517. package/dist/plugins/remote-env-k8s.js +111 -60
  518. package/dist/plugins/remote-env-local-docker.d.ts +152 -15
  519. package/dist/plugins/remote-env-local-docker.js +352 -72
  520. package/dist/plugins/remote-scratchpad.js +4 -0
  521. package/dist/plugins/retention-deployment.d.ts +49 -17
  522. package/dist/plugins/retention-deployment.js +39 -8
  523. package/dist/plugins/run-preview-m45.d.ts +11 -0
  524. package/dist/plugins/run-preview-m45.js +19 -0
  525. package/dist/plugins/run-store-sql.d.ts +82 -75
  526. package/dist/plugins/run-store-sql.js +164 -125
  527. package/dist/plugins/s3-answer.d.ts +2 -1
  528. package/dist/plugins/sandbox-reaper.d.ts +26 -0
  529. package/dist/plugins/sandbox-reaper.js +2 -0
  530. package/dist/plugins/scenario-prefix-switch-m42.d.ts +56 -0
  531. package/dist/plugins/scenario-prefix-switch-m42.js +56 -0
  532. package/dist/plugins/scheduler-support.d.ts +16 -1
  533. package/dist/plugins/scheduler-support.js +22 -2
  534. package/dist/plugins/schema-consistency.d.ts +131 -14
  535. package/dist/plugins/schema-consistency.js +388 -18
  536. package/dist/plugins/schema-drift-sentence.d.ts +10 -6
  537. package/dist/plugins/schema-drift-sentence.js +15 -7
  538. package/dist/plugins/schema-ensure-legs.d.ts +9 -0
  539. package/dist/plugins/schema-ensure-legs.js +1 -1
  540. package/dist/plugins/schema-indexes.js +3 -0
  541. package/dist/plugins/schema-live-columns.d.ts +14 -5
  542. package/dist/plugins/schema-live-columns.js +10 -10
  543. package/dist/plugins/send-user-file.js +2 -1
  544. package/dist/plugins/session-birth.d.ts +37 -0
  545. package/dist/plugins/session-birth.js +38 -0
  546. package/dist/plugins/session-epoch-anchor.d.ts +40 -12
  547. package/dist/plugins/session-epoch-anchor.js +33 -11
  548. package/dist/plugins/session-ext-table.d.ts +27 -3
  549. package/dist/plugins/session-ext-table.js +19 -6
  550. package/dist/plugins/session-fork.d.ts +15 -1
  551. package/dist/plugins/session-fork.js +3 -0
  552. package/dist/plugins/session-ownership.d.ts +1 -1
  553. package/dist/plugins/session-placement.d.ts +27 -20
  554. package/dist/plugins/session-placement.js +15 -12
  555. package/dist/plugins/session-row-sql.d.ts +12 -0
  556. package/dist/plugins/session-row-sql.js +3 -3
  557. package/dist/plugins/session-run-rollup.d.ts +29 -0
  558. package/dist/plugins/session-run-rollup.js +40 -0
  559. package/dist/plugins/session-store-sql.d.ts +38 -12
  560. package/dist/plugins/session-store-sql.js +130 -30
  561. package/dist/plugins/session-withdraw-sql.d.ts +36 -0
  562. package/dist/plugins/session-withdraw-sql.js +42 -0
  563. package/dist/plugins/shared-memory-store-sql.d.ts +0 -69
  564. package/dist/plugins/shared-memory-store-sql.js +2 -1
  565. package/dist/plugins/shell-sentinel-owner-m48.d.ts +42 -0
  566. package/dist/plugins/shell-sentinel-owner-m48.js +9 -0
  567. package/dist/plugins/snapshot-bucket-presence.d.ts +2 -1
  568. package/dist/plugins/sql-driver.d.ts +1 -1
  569. package/dist/plugins/sql-driver.js +2 -1
  570. package/dist/plugins/sql-errors.d.ts +32 -5
  571. package/dist/plugins/sql-errors.js +55 -7
  572. package/dist/plugins/sql-json-column.d.ts +8 -7
  573. package/dist/plugins/sql-json-column.js +10 -6
  574. package/dist/plugins/stop-then-start-sentence.d.ts +16 -0
  575. package/dist/plugins/stop-then-start-sentence.js +7 -0
  576. package/dist/plugins/store-backend.d.ts +99 -16
  577. package/dist/plugins/store-backend.js +230 -65
  578. package/dist/plugins/store-contracts.d.ts +123 -33
  579. package/dist/plugins/store-contracts.js +38 -1
  580. package/dist/plugins/store-fault.d.ts +28 -2
  581. package/dist/plugins/store-fault.js +20 -2
  582. package/dist/plugins/task-attachment-store.d.ts +15 -3
  583. package/dist/plugins/task-attachment-store.js +22 -9
  584. package/dist/plugins/tidb-pool.d.ts +11 -6
  585. package/dist/plugins/tidb-pool.js +39 -18
  586. package/dist/plugins/web-search.js +5 -3
  587. package/dist/plugins/workflow-run-store-sql.d.ts +6 -1
  588. package/dist/plugins/workflow-run-store-sql.js +11 -5
  589. package/dist/plugins/workspace-custody.d.ts +44 -0
  590. package/dist/plugins/workspace-custody.js +47 -0
  591. package/dist/principal-jwt.d.ts +4 -4
  592. package/dist/principal-jwt.js +20 -5
  593. package/dist/principal-shape.d.ts +41 -0
  594. package/dist/principal-shape.js +19 -0
  595. package/dist/project-identity.d.ts +8 -7
  596. package/dist/project-identity.js +40 -17
  597. package/dist/project-layer-key.d.ts +13 -2
  598. package/dist/project-layer-key.js +9 -1
  599. package/dist/question.d.ts +13 -23
  600. package/dist/question.js +21 -39
  601. package/dist/read-deny-floor-notice.d.ts +36 -0
  602. package/dist/read-deny-floor-notice.js +40 -0
  603. package/dist/{plain-string-record.d.ts → request-declaration-disposition.d.ts} +9 -23
  604. package/dist/request-declaration-disposition.js +39 -0
  605. package/dist/request-declaration-refusal.d.ts +35 -12
  606. package/dist/request-declaration-refusal.js +21 -9
  607. package/dist/request-form.d.ts +58 -0
  608. package/dist/request-form.js +72 -0
  609. package/dist/request-image-urls.d.ts +8 -2
  610. package/dist/request-image-urls.js +2 -1
  611. package/dist/request-images.d.ts +20 -0
  612. package/dist/request-images.js +59 -0
  613. package/dist/request-key-closure.d.ts +6 -7
  614. package/dist/request-key-closure.js +15 -2
  615. package/dist/resource-suspend.d.ts +7 -16
  616. package/dist/resource-suspend.js +1 -1
  617. package/dist/retired-name-host-notice.d.ts +21 -0
  618. package/dist/retired-name-host-notice.js +12 -0
  619. package/dist/rule-entry-list.d.ts +2 -2
  620. package/dist/rule-entry-list.js +3 -4
  621. package/dist/rule-issue-reading.d.ts +58 -0
  622. package/dist/rule-issue-reading.js +14 -0
  623. package/dist/rules-consent.d.ts +5 -3
  624. package/dist/rules-consent.js +1 -0
  625. package/dist/run-acceptance.d.ts +3 -1
  626. package/dist/run-acceptance.js +3 -0
  627. package/dist/run-cancel-card.d.ts +28 -0
  628. package/dist/run-cancel-card.js +19 -0
  629. package/dist/run-cancel-context.d.ts +10 -0
  630. package/dist/run-cancel-context.js +1 -0
  631. package/dist/run-local.d.ts +14 -6
  632. package/dist/run-local.js +117 -90
  633. package/dist/run-stale-default.d.ts +7 -0
  634. package/dist/run-stale-default.js +2 -0
  635. package/dist/runs.d.ts +56 -21
  636. package/dist/runs.js +73 -43
  637. package/dist/runtime-caps-resolver.d.ts +21 -6
  638. package/dist/runtime-caps-resolver.js +17 -4
  639. package/dist/runtime-governance.d.ts +2 -2
  640. package/dist/runtime-governance.js +5 -3
  641. package/dist/sealed-key-layout.d.ts +12 -5
  642. package/dist/sealed-key-layout.js +5 -0
  643. package/dist/sealed-key.d.ts +12 -2
  644. package/dist/sealed-key.js +115 -27
  645. package/dist/security.d.ts +128 -158
  646. package/dist/security.js +163 -59
  647. package/dist/sema-config-dir.d.ts +20 -0
  648. package/dist/sema-config-dir.js +25 -0
  649. package/dist/server-secret-env.d.ts +55 -25
  650. package/dist/server-secret-env.js +75 -22
  651. package/dist/session-agent.d.ts +3 -2
  652. package/dist/session-children-retire.d.ts +13 -8
  653. package/dist/session-children-retire.js +9 -7
  654. package/dist/session-deletion.d.ts +88 -0
  655. package/dist/session-deletion.js +8 -0
  656. package/dist/session-erase.d.ts +145 -0
  657. package/dist/session-erase.js +115 -0
  658. package/dist/session-error-wire.d.ts +5 -5
  659. package/dist/session-error-wire.js +1 -1
  660. package/dist/session-incarnation.d.ts +52 -5
  661. package/dist/session-incarnation.js +19 -2
  662. package/dist/session-policy-wire.d.ts +6 -3
  663. package/dist/session-policy-wire.js +11 -1
  664. package/dist/session-resident-background.d.ts +0 -71
  665. package/dist/session-resident-background.js +4 -3
  666. package/dist/session-row.d.ts +2 -1
  667. package/dist/session-rules-seat.d.ts +12 -0
  668. package/dist/session-rules-seat.js +19 -0
  669. package/dist/session-titler.d.ts +7 -15
  670. package/dist/session-titler.js +1 -1
  671. package/dist/session-workspace.d.ts +3 -3
  672. package/dist/spec-fields.d.ts +57 -3
  673. package/dist/spec-fields.js +72 -51
  674. package/dist/store-admission.d.ts +33 -0
  675. package/dist/store-admission.js +49 -0
  676. package/dist/store-posture.d.ts +141 -20
  677. package/dist/store-posture.js +205 -3
  678. package/dist/stored-request-hooks-m20.js +2 -2
  679. package/dist/stores-sql/background-agent-store-sql.d.ts +11 -2
  680. package/dist/stores-sql/background-agent-store-sql.js +73 -20
  681. package/dist/stores-sql/checkpoint-store-sql.d.ts +34 -29
  682. package/dist/stores-sql/checkpoint-store-sql.js +78 -49
  683. package/dist/stores-sql/file-history-store-sql.d.ts +1 -1
  684. package/dist/stores-sql/file-history-store-sql.js +3 -5
  685. package/dist/stores-sql/mailbox-store-sql.d.ts +7 -4
  686. package/dist/stores-sql/mailbox-store-sql.js +31 -32
  687. package/dist/stores-sql/pg-session-storage.d.ts +7 -5
  688. package/dist/stores-sql/pg-session-storage.js +54 -46
  689. package/dist/stores-sql/retention-store-sql.d.ts +87 -19
  690. package/dist/stores-sql/retention-store-sql.js +92 -27
  691. package/dist/stores-sql/session-policy-store-sql.d.ts +32 -10
  692. package/dist/stores-sql/session-policy-store-sql.js +44 -36
  693. package/dist/stores-sql/session-write-hooks.d.ts +12 -6
  694. package/dist/stores-sql/tidb-session-storage.d.ts +4 -4
  695. package/dist/stores-sql/tidb-session-storage.js +13 -8
  696. package/dist/stores-sql/tidb-session-store.d.ts +36 -17
  697. package/dist/stores-sql/tidb-session-store.js +69 -39
  698. package/dist/stores-sql/tool-result-store-sql.d.ts +1 -1
  699. package/dist/stores-sql/tool-result-store-sql.js +4 -6
  700. package/dist/stores-sql/windowed-session-storage.d.ts +5 -0
  701. package/dist/stores-sql/windowed-session-storage.js +9 -0
  702. package/dist/submission-exit.d.ts +50 -0
  703. package/dist/submission-exit.js +108 -0
  704. package/dist/task-a2a.d.ts +3 -8
  705. package/dist/task-a2a.js +28 -30
  706. package/dist/task-cwd.d.ts +43 -7
  707. package/dist/task-cwd.js +11 -0
  708. package/dist/task-mcp.d.ts +3 -3
  709. package/dist/task-mcp.js +4 -4
  710. package/dist/task-settings.d.ts +14 -10
  711. package/dist/task-settings.js +19 -7
  712. package/dist/terminal.d.ts +27 -43
  713. package/dist/terminal.js +49 -14
  714. package/dist/tool-approval.d.ts +173 -163
  715. package/dist/tool-approval.js +247 -232
  716. package/dist/trace/core-keyset-guard.d.ts +13 -6
  717. package/dist/trace/core-vocab-wire.d.ts +95 -0
  718. package/dist/trace/core-vocab-wire.js +15 -0
  719. package/dist/trace/engine-notice-wire.d.ts +24 -21
  720. package/dist/trace/engine-notice-wire.js +7 -3
  721. package/dist/trace/exit-seat.d.ts +30 -4
  722. package/dist/trace/exit-seat.js +40 -36
  723. package/dist/trace/extension-call-face.d.ts +3 -2
  724. package/dist/trace/extension-call-face.js +3 -1
  725. package/dist/trace/ledger-events.d.ts +4 -7
  726. package/dist/trace/ledger-sink.d.ts +4 -31
  727. package/dist/trace/ledger-sink.js +0 -11
  728. package/dist/trace/model-segment.d.ts +5 -5
  729. package/dist/trace/model-segment.js +5 -5
  730. package/dist/trace/project.d.ts +59 -44
  731. package/dist/trace/project.js +60 -26
  732. package/dist/trace/redact.d.ts +135 -27
  733. package/dist/trace/redact.js +884 -260
  734. package/dist/trace/self-minted-wire.d.ts +567 -20
  735. package/dist/trace/self-minted-wire.js +205 -24
  736. package/dist/trace/wire-projection-faces.d.ts +5 -6
  737. package/dist/trace/wire-projection-faces.js +2 -2
  738. package/dist/upstream-body.d.ts +23 -0
  739. package/dist/upstream-body.js +16 -0
  740. package/dist/url-refusal.d.ts +3 -3
  741. package/dist/url-refusal.js +11 -4
  742. package/dist/user-authored-text.d.ts +1 -1
  743. package/dist/user-input-ledger.d.ts +7 -8
  744. package/dist/user-input-ledger.js +1 -1
  745. package/dist/web-admin-client/apply-effective.d.ts +6 -3
  746. package/dist/web-admin-client/apply-effective.js +33 -23
  747. package/dist/web-admin-client/apply-ledger.d.ts +16 -7
  748. package/dist/web-admin-client/apply-ledger.js +5 -2
  749. package/dist/web-admin-client/center-request.d.ts +2 -2
  750. package/dist/web-admin-client/center-request.js +15 -15
  751. package/dist/web-admin-client/effective-keys.d.ts +1 -1
  752. package/dist/web-admin-client/effective-keys.js +1 -1
  753. package/dist/web-admin-client/entry-metadata.d.ts +8 -0
  754. package/dist/web-admin-client/entry-metadata.js +13 -0
  755. package/dist/web-admin-client/http-client.d.ts +1 -1
  756. package/dist/web-admin-client/http-client.js +23 -4
  757. package/dist/web-admin-client/mcp-revocation.d.ts +1 -1
  758. package/dist/web-admin-client/mcp-revocation.js +2 -1
  759. package/dist/web-admin-client/read-warnings.d.ts +1 -0
  760. package/dist/web-admin-client/read-warnings.js +1 -0
  761. package/dist/web-admin-client/restart-signal.js +8 -4
  762. package/dist/web-admin-client/skills-mcp.d.ts +2 -2
  763. package/dist/web-admin-client/types.d.ts +1 -2
  764. package/dist/workspace-space.d.ts +3 -2
  765. package/docs/DEVICE-EXECUTOR-PROTOCOL.md +4 -4
  766. package/docs/error-text-lexicon.json +317 -0
  767. package/package.json +8 -3
  768. package/scripts/drain-check-local.mjs +118 -147
  769. package/scripts/drain-check.mysql.sql +22 -2
  770. package/scripts/drain-check.pg.sql +22 -2
  771. package/scripts/embed-minimal.mjs +183 -0
  772. package/wire-changes/server@7.148.0.json +1517 -0
  773. package/wire-changes/server@7.149.0.json +372 -0
  774. package/dist/http/memory-control-plane-corrupt-reply.d.ts +0 -25
  775. package/dist/http/memory-control-plane-corrupt-reply.js +0 -19
  776. package/dist/http/memory-layer-reply.d.ts +0 -30
  777. package/dist/http/memory-layer-reply.js +0 -24
  778. package/dist/lsp/e2b-bridge.d.ts +0 -57
  779. package/dist/lsp/e2b-bridge.js +0 -139
  780. package/dist/lsp/e2b-manager.d.ts +0 -93
  781. package/dist/lsp/e2b-manager.js +0 -178
  782. package/dist/lsp/lsp-frames.d.ts +0 -14
  783. package/dist/lsp/lsp-frames.js +0 -25
  784. package/dist/lsp/manager.d.ts +0 -129
  785. package/dist/lsp/manager.js +0 -127
  786. package/dist/lsp/types.d.ts +0 -12
  787. package/dist/lsp/types.js +0 -2
  788. package/dist/lsp/ws-transport.d.ts +0 -40
  789. package/dist/lsp/ws-transport.js +0 -210
  790. package/dist/plain-string-record.js +0 -70
@@ -3,8 +3,10 @@ import { CATALOG_REPLACES_ENV_MODELS_CODE, SandboxGitConfig, WEB_ADMIN_ENV, envM
3
3
  import { modelKeyPoison } from "../key-resolver.js";
4
4
  import { DEFAULT_MODEL_REF, buildEnvModelIdNotServedNotice, mintCapabilityKeys, readAtMention, servedModelTableLeg } from "../model-select.js";
5
5
  import { applyAutoCompactWindow, buildModelCostKey, isRosterGateArmed, ownCredentialHitsInForce, parseAutonomy, unmatchableToolNamesRefusal } from "../config.js";
6
- import { NAME_TABLE_BEHAVIOR, retiredWithoutSuccessorEntries } from "../namespaced-rule-name.js";
6
+ import { NAME_TABLE_BEHAVIOR, retiredLeftOutEntries } from "../namespaced-rule-name.js";
7
7
  import { buildModelCompat, readModelCompat } from "../model-compat.js";
8
+ import { resolveContextWindow } from "../model-context-window.js";
9
+ import { warnAssumedContextWindows } from "../context-window-notice.js";
8
10
  import { buildModelHeadersKey } from "../model-entry-headers.js";
9
11
  import { validateCommandRules } from "../runtime-governance.js";
10
12
  import { stageLimits } from "./stage-limits.js";
@@ -14,11 +16,10 @@ import { crossInvariant } from "../config-invariants.js";
14
16
  import { DEFAULT_MODEL_MISSING_CODE, REFUSED_NAME_MINTED_CODE, judgeCatalogEntries, mintedRefusedNames, refusalEventOf, refusalWarnFields, refusedNameLogField, refusedNamesLogFields, malformedDroppedCarrierRefusal } from "../model-entry-refusal.js";
15
17
  import { judgeModelRouteEndpoint } from "../model-route-endpoint.js";
16
18
  import { gateIntentUnserviceableReason } from "../approval.js";
17
- import { refusedGroups } from "./apply-ledger.js";
19
+ import { modelPlaneOutcomeOf, refusedGroups } from "./apply-ledger.js";
18
20
  import { judgeConfigCandidate } from "./candidate-gate.js";
19
21
  import { declareServerWithheldEnv, withdrawServerWithheldEnv } from "../server-secret-env.js";
20
22
  import { MODEL_ROUTE_ENV_KEYS } from "../model-route-gap.js";
21
- const charsPerTokenOf = (v) => (typeof v === "number" && Number.isFinite(v) && v > 0 ? v : undefined);
22
23
  function envDerivedModel(config) {
23
24
  const m = config.envModel;
24
25
  if (m === undefined) {
@@ -27,7 +28,7 @@ function envDerivedModel(config) {
27
28
  }
28
29
  return m;
29
30
  }
30
- function toModel(m, envDefaults = {}, logger) {
31
+ function toModel(m, window, envDefaults = {}, logger) {
31
32
  const thinkingDefault = envDefaults.defaultThinking;
32
33
  const declared = readModelCompat(m.api, m.compat);
33
34
  if (!declared.ok)
@@ -41,21 +42,18 @@ function toModel(m, envDefaults = {}, logger) {
41
42
  api: m.api,
42
43
  baseUrl: m.baseUrl ?? "",
43
44
  ...mintCapabilityKeys({ reasoning: m.reasoning, vision: m.vision }),
44
- contextWindow: m.contextWindow ?? envDefaults.contextWindow ?? 262144,
45
+ contextWindow: window.window,
45
46
  maxTokens: m.maxTokens ?? envDefaults.maxTokens ?? 4096,
46
- ...(charsPerTokenOf(m.charsPerToken) !== undefined || envDefaults.charsPerToken !== undefined
47
- ? { charsPerToken: charsPerTokenOf(m.charsPerToken) ?? envDefaults.charsPerToken }
48
- : {}),
49
- ...buildModelCostKey(m.cost ? { input: m.cost.input, output: m.cost.output, cacheRead: m.cost.cacheRead ?? 0, cacheWrite: m.cost.cacheWrite ?? 0 } : undefined),
50
- params: { ...(m.tier ? { tier: m.tier } : {}), promptCacheFamily: m.provider === "anthropic" ? "input-excludes-cached" : "input-includes-cached" },
47
+ ...(m.charsPerToken !== undefined || envDefaults.charsPerToken !== undefined ? { charsPerToken: m.charsPerToken ?? envDefaults.charsPerToken } : {}),
48
+ ...buildModelCostKey(m.cost),
49
+ params: { tier: m.tier, promptCacheFamily: m.provider === "anthropic" ? "input-excludes-cached" : "input-includes-cached" },
51
50
  ...(thinkingDefault ? { defaultThinking: thinkingDefault } : {}),
52
51
  ...(compat ? { compat } : {}),
53
52
  ...(m.thinkingLevelMap !== undefined ? { thinkingLevelMap: m.thinkingLevelMap } : {}),
54
53
  ...(m.extraBody ? { extraBody: m.extraBody } : {}),
55
54
  ...buildModelHeadersKey(m.name, m.headers, m.api),
56
55
  };
57
- const explicitAct = m.autoCompactTokens;
58
- applyAutoCompactWindow(model, typeof explicitAct === "number" ? explicitAct : undefined);
56
+ applyAutoCompactWindow(model, m.autoCompactTokens);
59
57
  return model;
60
58
  }
61
59
  export function mutateInPlace(target, source) {
@@ -99,6 +97,7 @@ function envModelPlaneOf(config) {
99
97
  if (snap === undefined) {
100
98
  snap = {
101
99
  models: { ...config.models },
100
+ contextWindowSources: { ...config.contextWindowSources },
102
101
  model: config.envModel,
103
102
  modelApiKeyEnv: { ...config.modelApiKeyEnv },
104
103
  modelApiKeys: { ...config.modelApiKeys },
@@ -195,6 +194,8 @@ export function applyEffective(config, eff, logger, opts) {
195
194
  }
196
195
  if (mp !== undefined)
197
196
  warnDanglingEnvBindings(config, staged.modelPlaneGroup.envBindingsDangling ?? [], logger);
197
+ if (mp !== undefined)
198
+ warnAssumedContextWindows(config, logger, { envTableIsPlaceholder: isRosterGateArmed(config.webAdmin) });
198
199
  if (staged.approvalGate.next !== undefined)
199
200
  logger?.info("web_admin_runtime", { version: staged.version, approvalRequire: staged.approvalGate.next });
200
201
  if (Object.keys(staged.hot.infoLine).length > 0)
@@ -220,9 +221,9 @@ function declareCandidateWithheldEnv(seats, modelApiKeyEnv, version) {
220
221
  if (handedOn.length === 0)
221
222
  return;
222
223
  withdrawServerWithheldEnv();
223
- throw new Error(`model catalog (effective v${version}): a model entry's apiKeyEnv names a variable a name-list env knob hands on — ` +
224
+ throw new Error(`model catalog (effective v${version}): a model entry's apiKeyEnv makes a variable a name-list env knob hands on one of this deployment's own credentials (by its name, or by its value under another name) — ` +
224
225
  handedOn.map((h) => `env ${h.knob} hands on ${h.name}, which this candidate makes ${h.problem}`).join("; ") +
225
- `; or point that entry's apiKeyEnv at a variable no name list hands on. The name lists are read at boot (changing one takes a restart); ` +
226
+ `; or point that entry's apiKeyEnv at a variable that no name list hands on and whose value no handed-on variable holds. The name lists are read at boot (changing one takes a restart); ` +
226
227
  `the candidate is refused whole and the current generation keeps serving (entries: ${entries}).`);
227
228
  }
228
229
  function commitStaged(config, staged) {
@@ -234,6 +235,7 @@ function commitStaged(config, staged) {
234
235
  config.droppedCatalogEntries = mp.droppedCatalogEntries;
235
236
  mutateInPlace(config.modelQuotaWeights, mp.quotaWeights);
236
237
  mutateInPlace(config.models, mp.models);
238
+ config.contextWindowSources = mp.contextWindowSources;
237
239
  config.model = mp.model;
238
240
  mutateInPlace(config.roles, mp.roles);
239
241
  mutateInPlace(config.tiers, mp.activeTiers);
@@ -257,7 +259,7 @@ function commitStaged(config, staged) {
257
259
  }
258
260
  export const MODEL_PLANE_DOMAINS = ["models"];
259
261
  const MODEL_PLANE_SURFACES = {
260
- models: ["models", "model", "modelRefusals", "droppedCatalogEntries", "modelApiKeyEnv", "modelApiKeys", "modelQuotaWeights", "roles", "tiers", "atMention"],
262
+ models: ["models", "contextWindowSources", "model", "modelRefusals", "droppedCatalogEntries", "modelApiKeyEnv", "modelApiKeys", "modelQuotaWeights", "roles", "tiers", "atMention"],
261
263
  };
262
264
  const MODEL_PLANE_GROUP_KEYS = MODEL_PLANE_DOMAINS.flatMap((d) => MODEL_PLANE_SURFACES[d]);
263
265
  export function withModelPlaneOf(target, source) {
@@ -354,6 +356,7 @@ function stageEnvModelPlane(config) {
354
356
  stages: {
355
357
  models: {
356
358
  ...snap,
359
+ contextWindowSources: { ...snap.contextWindowSources },
357
360
  modelApiKeyEnv: { ...snap.modelApiKeyEnv },
358
361
  modelApiKeys: { ...snap.modelApiKeys },
359
362
  modelRefusals: { ...snap.modelRefusals },
@@ -368,7 +371,7 @@ function stageModelPlane(config, eff, source, logger, sealedKeys) {
368
371
  return stageEnvModelPlane(config);
369
372
  const enabled = (eff.models?.models ?? []).filter((m) => m.enabled !== false);
370
373
  const verdict = judgeCatalogEntries(enabled, { anthropicRouteMounted: config.anthropic !== undefined }, eff.models?.droppedCatalogEntries);
371
- if (enabled.length === 0 && verdict.malformed.length === 0 && verdict.dropped.every((row) => row.identity?.enabled === false))
374
+ if (!verdict.manages)
372
375
  return { stages: {} };
373
376
  {
374
377
  for (const [name, r] of Object.entries(verdict.refused))
@@ -395,14 +398,18 @@ function stageModelPlane(config, eff, source, logger, sealedKeys) {
395
398
  return refuse(REFUSED_NAME_MINTED_CODE, malformedDroppedCarrierRefusal(verdict.malformed), { entries: [...verdict.malformed] });
396
399
  const usable = verdict.usable;
397
400
  const models = {};
401
+ const contextWindowSources = {};
398
402
  const modelApiKeyEnv = {};
399
403
  const modelApiKeys = {};
400
404
  const envModel = envDerivedModel(config);
401
- const envDefaults = { maxTokens: envModel.maxTokens, contextWindow: envModel.contextWindow, charsPerToken: envModel.charsPerToken, defaultThinking: envModel.defaultThinking, api: envModel.api, compat: envModel.compat };
405
+ const envDefaults = { maxTokens: envModel.maxTokens, charsPerToken: envModel.charsPerToken, defaultThinking: envModel.defaultThinking, api: envModel.api, compat: envModel.compat };
406
+ const envWindow = { window: envModel.contextWindow, source: config.envModelContextWindowSource };
402
407
  for (const m of usable) {
403
408
  if (m.baseUrl)
404
409
  logger?.warn("web_admin_model_base_url", { model: m.name, baseUrl: buildDisplaySafeUrl(m.baseUrl), hint: "registry-directed gateway override — this model's key authenticates AGAINST THIS URL" });
405
- models[m.name] = toModel(m, envDefaults, logger);
410
+ const window = resolveContextWindow(m.contextWindow, envWindow);
411
+ models[m.name] = toModel(m, window, envDefaults, logger);
412
+ contextWindowSources[m.name] = window.source;
406
413
  if (m.sealedApiKey) {
407
414
  const s = m.sealedApiKey;
408
415
  if (!sealedKeys) {
@@ -449,7 +456,7 @@ function stageModelPlane(config, eff, source, logger, sealedKeys) {
449
456
  const roles = { ...envPlane.roles, ...centerRoles };
450
457
  const activeTiers = {};
451
458
  for (const [tier, target] of Object.entries(resolveActiveTiers(eff.models) ?? {})) {
452
- if (models[target] !== undefined) {
459
+ if (Object.hasOwn(models, target)) {
453
460
  activeTiers[tier] = target;
454
461
  continue;
455
462
  }
@@ -458,7 +465,7 @@ function stageModelPlane(config, eff, source, logger, sealedKeys) {
458
465
  }
459
466
  let picked;
460
467
  if (usable.length > 0) {
461
- const decided = resolveCatalogDefaultModel(eff.models, (n) => models[n] !== undefined, usable[0].name);
468
+ const decided = resolveCatalogDefaultModel(eff.models, (n) => Object.hasOwn(models, n), usable[0].name);
462
469
  switch (decided.kind) {
463
470
  case "named":
464
471
  for (const d of decided.dangling) {
@@ -485,8 +492,10 @@ function stageModelPlane(config, eff, source, logger, sealedKeys) {
485
492
  throw new Error(`catalog default: unknown kind ${JSON.stringify(unhandled)}`);
486
493
  }
487
494
  }
488
- if (picked !== undefined)
495
+ if (picked !== undefined) {
489
496
  models.default = models[picked.name];
497
+ contextWindowSources.default = contextWindowSources[picked.name];
498
+ }
490
499
  }
491
500
  const nextView = { ...config, models, tiers: activeTiers, modelRefusals: verdict.refused };
492
501
  const noDefault = crossInvariant("default-model-resolvable").check({ live: config, next: nextView });
@@ -510,6 +519,7 @@ function stageModelPlane(config, eff, source, logger, sealedKeys) {
510
519
  const envBindingsDangling = danglingEnvBindingsOf(envPlane.roles, centerRoles, envModelTableOf(config), expandTiers(models, activeTiers) ?? models);
511
520
  const plane = {
512
521
  models,
522
+ contextWindowSources,
513
523
  model: defaultModel,
514
524
  modelApiKeyEnv,
515
525
  modelApiKeys,
@@ -632,7 +642,7 @@ function stageApprovalRequire(raw) {
632
642
  kept: KEPT_WOULD_MATCH_NOTHING,
633
643
  };
634
644
  }
635
- return { ok: true, value: names, skipped: retiredWithoutSuccessorEntries(names, NAME_TABLE_BEHAVIOR) };
645
+ return { ok: true, value: names, skipped: retiredLeftOutEntries("published governance.approvalRequire", names) };
636
646
  }
637
647
  function unserviceableOnLeg(leg, candidate) {
638
648
  switch (leg.leg) {
@@ -755,7 +765,7 @@ export function logEffectiveDiff(config, eff, catalogSource, logger) {
755
765
  logger?.warn("web_admin_dry_run", {
756
766
  note: `DRY RUN — web-admin config NOT applied; unset ${WEB_ADMIN_ENV.dryRun} to go live`,
757
767
  version: eff.version,
758
- wouldOverrideModels: enabled.length > 0,
768
+ wouldOverrideModels: modelPlaneOutcomeOf(modelPlaneGroupReport(plane)) !== "unmanaged",
759
769
  wouldDefaultModel: plane.defaultName ?? null,
760
770
  ...(Object.keys(refused).length > 0 ? { wouldRefuse: Object.fromEntries(Object.entries(refused).map(([n, r]) => [n, r.code])) } : {}),
761
771
  ...(plane.rejected !== undefined ? { wouldRefuseModelPlane: { invariant: plane.rejected.invariant, code: plane.rejected.code, reason: plane.rejected.reason } } : {}),
@@ -70,11 +70,12 @@ export interface ConfigApplyGroupState {
70
70
  export interface ConfigApplyLedgerView {
71
71
  /** 本副本**最后**见到的源版本(身份标;拉到即算,哪怕候选被整拒)。 */
72
72
  readonly configTargetVersion: number;
73
- /** 最后一次成功 commit 的源版本(身份标)。 */
73
+ /** 最后一次**收口**的完整应用版本(身份标):这一代已提交、且应用它的那一拍的重启判定已发布(写口在 web-admin 的拍收口,
74
+ * 与 `/health.restart` 同一段同步写 ⇒ 读到它到版时 `restart` 已是这一拍的判定)。按组的落地另记在 `groups[*].appliedVersion`(提交即记)。 */
74
75
  readonly configAppliedVersion: number;
75
76
  /** [ref]:target 的收货序数(进程内单调)——「见过多少代」的推进判据,哈希方向免疫。 */
76
77
  readonly configTargetOrdinal: number;
77
- /** [ref]:applied 的收货序数。targetOrdinal 推进而这里停滞 = 「改了没生效」的机器判据。 */
78
+ /** [ref]:applied 的收货序数(与 `configAppliedVersion` 同一次写)。targetOrdinal 推进而这里停滞 = 「改了没生效」的机器判据。 */
78
79
  readonly configAppliedOrdinal: number;
79
80
  /** target≠applied 的**持续**时长(ms);收敛时键缺席(健康面不制造噪音)。 */
80
81
  readonly configApplyStaleMs?: number;
@@ -110,15 +111,23 @@ export declare function refusedGroups(report: ConfigApplyReport): Array<{
110
111
  readonly reason: string;
111
112
  }>;
112
113
  /**
113
- * O3:这一次 apply 的**模型面组**(组内各域 = `MODEL_PLANE_DOMAINS`)落地了没有(整组被拒 ⇒
114
- * false;报告缺席 = 没走到 commit ⇒ false,如实)。调用方据此决定「Runner 现在跑的是哪一代模型面」(`appliedPlaneEff`,swap 判据的
115
- * 基准)、名册门开不开、以及 boot 要不要按组回落 LKG —— 都只许从真落地的模型面推进。
114
+ * 一次 apply 里**模型面组**(组内各域 = `MODEL_PLANE_DOMAINS`)的结局 —— 闭集三词,调用方穷举:
115
+ * · `landed` —— 组内的域真落地了(Runner 换到这一代模型面);
116
+ * · `unmanaged` —— 候选**不管**模型面(目录条目批判据的判决位 `manages` 为假:零启用条目,含只有停用的被丢行;降档时服务的已是 env 表也是这一形)——
117
+ * 上一代 / env 继续服务,**不是拒,也不是落地**;
118
+ * · `refused` —— 整组拒(上一代继续服务)。
119
+ * 调用方据此决定「Runner 现在跑的是哪一代模型面」(`appliedPlaneEff`,swap 判据的基准)、名册门开不开、boot 要不要按组回落 LKG、
120
+ * 要不要说「在服 LKG 的模型面」—— 只有 `landed` 推进这些;`refused` 才走按组回落;`unmanaged` 两件都不做。
116
121
  */
117
- export declare function modelPlaneCommitted(report: ConfigApplyReport | undefined): boolean;
122
+ export type ModelPlaneOutcome = "landed" | "unmanaged" | "refused";
123
+ /** 模型面组报告 → 结局(组报告的唯一写者是 apply-effective 的 `modelPlaneGroupReport`:`applied` 非空 ⇔ 组内的域被 stage 出来并提交)。dry-run 读同一只。 */
124
+ export declare function modelPlaneOutcomeOf(group: ConfigApplyGroupReport): ModelPlaneOutcome;
125
+ /** 一次 apply 的模型面结局;报告缺席(没走到 commit:CAS 拒 / swap 席拒 / apply 抛)⇒ `undefined`,如实。 */
126
+ export declare function modelPlaneOutcome(report: ConfigApplyReport | undefined): ModelPlaneOutcome | undefined;
118
127
  export interface ConfigApplyLedger {
119
128
  /** 拉到一个候选(无论后续是否应用)。ordinal=收货序数,version=身份标。 */
120
129
  seenTarget(ordinal: number, version: number): void;
121
- /** 一个候选整体 commit 成功。 */
130
+ /** 应用这一代的那一拍收口(已提交 + 重启判定已发布;有组被拒的那一代只推进 target)。 */
122
131
  applied(ordinal: number, version: number): void;
123
132
  /** 消费 applyEffective 的报告(按组记账)。 */
124
133
  recordApply(report: ConfigApplyReport): void;
@@ -10,8 +10,11 @@ export function refusedGroups(report) {
10
10
  return r ? [{ group, keys: r.keys, reason: r.reason }] : [];
11
11
  });
12
12
  }
13
- export function modelPlaneCommitted(report) {
14
- return report !== undefined && report.groups.modelPlane.rejected === undefined;
13
+ export function modelPlaneOutcomeOf(group) {
14
+ return group.rejected !== undefined ? "refused" : group.applied.length > 0 ? "landed" : "unmanaged";
15
+ }
16
+ export function modelPlaneOutcome(report) {
17
+ return report === undefined ? undefined : modelPlaneOutcomeOf(report.groups.modelPlane);
15
18
  }
16
19
  export function createConfigApplyLedger(now = () => Date.now()) {
17
20
  let targetOrd = 0;
@@ -67,8 +67,8 @@ export declare function pullViewQuery(view: {
67
67
  readonly principal?: string | undefined;
68
68
  }): string;
69
69
  /**
70
- * 中心回了重定向(`egress-redirect.ts` 的判据:`opaqueredirect` 或任何 3xx;304 除外,见 {@link NOT_MODIFIED}):不跟、不重试,类型化拒。拒句是 `egress-redirect.ts` 既有 helper 的那一句(与 hook 直连腿 /
71
- * 记忆 embedder 同一条律),前面冠上这条请求打的那一席;不回显 `Location`。`status` 是中心回的码(续签器据此落「被拒」终态)。
70
+ * 中心回了重定向(`egress-redirect.ts` 的判据:`opaqueredirect` 或除 304 外的任何 3xx):不跟、不重试,类型化拒。拒句是 `egress-redirect.ts` 那一只出口的那一句(与本仓其余每个出站面同一条律),
71
+ * 前面冠上这条请求打的那一席;不回显 `Location`。`status` 是中心回的码(续签器据此落「被拒」终态)。
72
72
  */
73
73
  export declare class CenterRedirectRefusedError extends Error {
74
74
  readonly status: number;
@@ -4,7 +4,7 @@ import { FLEET_LIVE_PATHS, FLEET_PATHS } from "@sema-agent/settings-schema/fleet
4
4
  import { CenterCredentialUnavailableError } from "../center-credential.js";
5
5
  import { WEB_ADMIN_ENV, httpUrlFlaws, pathBaseUrlFlaws } from "@sema-agent/settings-schema";
6
6
  import { buildHttpUrlRefusal } from "../url-refusal.js";
7
- import { egressRedirectRefusal } from "../egress-redirect.js";
7
+ import { EgressRedirectRefusedError, createEgressFetch } from "../egress-redirect.js";
8
8
  export const SCHEMA_MAJOR_HEADER = "x-sema-schema-major";
9
9
  export const CENTER_PULL_TIMEOUT_MS = 8000;
10
10
  export const SETTINGS_SCHEMA_VERSION = settingsSchemaPackage.version;
@@ -67,21 +67,21 @@ export class CenterRedirectRefusedError extends Error {
67
67
  this.name = "CenterRedirectRefusedError";
68
68
  }
69
69
  }
70
- const NOT_MODIFIED = 304;
71
70
  async function sendToCenter(fix, url, wire) {
72
- const res = await (wire.fetchImpl ?? fetch)(url, {
73
- method: wire.method,
74
- headers: wire.headers,
75
- ...(wire.body !== undefined ? { body: wire.body } : {}),
76
- redirect: "manual",
77
- signal: AbortSignal.timeout(wire.timeoutMs),
78
- });
79
- if (res.status === NOT_MODIFIED)
80
- return res;
81
- const refusal = egressRedirectRefusal(res, fix);
82
- if (refusal !== undefined)
83
- throw new CenterRedirectRefusedError(res.status, `web-admin center request: ${refusal}`);
84
- return res;
71
+ const egress = createEgressFetch(fix, wire.fetchImpl);
72
+ try {
73
+ return await egress(url, {
74
+ method: wire.method,
75
+ headers: wire.headers,
76
+ ...(wire.body !== undefined ? { body: wire.body } : {}),
77
+ signal: AbortSignal.timeout(wire.timeoutMs),
78
+ });
79
+ }
80
+ catch (err) {
81
+ if (err instanceof EgressRedirectRefusedError)
82
+ throw new CenterRedirectRefusedError(err.status, `web-admin center request: ${err.message}`);
83
+ throw err;
84
+ }
85
85
  }
86
86
  export function pathBaseUrlRefusal(subject, raw) {
87
87
  const flaws = pathBaseUrlFlaws(raw);
@@ -18,7 +18,7 @@ export declare const EFFECTIVE_ENVELOPE_KEYS: readonly ["version", "updatedAt"];
18
18
  /** `governance` 域(治理三件)的键集——对账门与 schema `GovernanceConfig.shape` 钉集合等式。 */
19
19
  export declare const GOVERNANCE_DOMAIN_KEYS: readonly string[];
20
20
  /** EffectiveConfig 上**不是** settings-schema 域的顶层键(键 → 成文理由)。⚠️ 墓碑语义:任一键将来出现在 schema
21
- * `DOMAINS` 里 ⇒ 对账门红 ⇒ 清本行 + 接本地腿投影(mapToServiceEffective)+ 复核 restart 片归属。 */
21
+ * `DOMAINS` 里 ⇒ 对账门红 ⇒ 清本行 + 核本地腿线上视图(`publishLocalEffective`,契约投影整域承运)+ 复核 restart 片归属。 */
22
22
  export declare const NON_DOMAIN_EFFECTIVE_KEYS: Readonly<Record<string, string>>;
23
23
  /** schema `DOMAINS` 里 server **不消费**的域(域 → 成文理由)。⚠️ 新域(如 presets)到货而不入本表也不入
24
24
  * EffectiveConfig ⇒ 对账门红 ⇒ 逼一行显式决定(「加了域没人接」从此机器可见,[ref]③)。 */
@@ -36,6 +36,6 @@ export const DOMAINS_NOT_CONSUMED_BY_SERVER = {
36
36
  execution: "per-principal 执法面同 entitlement:ruling 骑 caps view(ExecutionRuling),/effective 域面 server 不读。",
37
37
  };
38
38
  export const LOCAL_LANE_REMOTE_ONLY_DOMAINS = {
39
- projects: "身份台账(design/142 §1.4,与租户身份同风险模型):settings-schema 便携表刻意排除(file-store.ts 成文)——本地腿无此域文件,mapToServiceEffective 不投影;远端腿 verbatim 消费(applyEffective → config.projects)。",
39
+ projects: "身份台账(design/142 §1.4,与租户身份同风险模型):settings-schema 便携表刻意排除(file-store.ts 成文)——本地腿无此域文件(线上视图里只有契约缺省的空登记簿,解出 `{}` 与缺席同);远端腿 verbatim 消费(applyEffective → config.projects)。",
40
40
  };
41
41
  //# sourceMappingURL=effective-keys.js.map
@@ -0,0 +1,8 @@
1
+ export declare const ENTRY_METADATA_KEYS: readonly ["notes", "rosters"];
2
+ type EntryMetadataKey = (typeof ENTRY_METADATA_KEYS)[number];
3
+ /** 条目去掉顶层元数据键之后的副本(浅拷;入参不动)。 */
4
+ export declare function withoutEntryMetadata<T extends object>(entry: T): Omit<T, EntryMetadataKey>;
5
+ /** MCP 条目的指纹面:减顶层元数据键 + 分组标签按挂载口的判据读(坏形 ≡ 缺席)。restart 的 mcp 片与撤销台账的恢复指纹同读这一只。 */
6
+ export declare function mcpEntryFingerprintFace(entry: object): Record<string, unknown>;
7
+ export {};
8
+ //# sourceMappingURL=entry-metadata.d.ts.map
@@ -0,0 +1,13 @@
1
+ import { isMcpSourceLabel } from "../mcp-source-label.js";
2
+ export const ENTRY_METADATA_KEYS = ["notes", "rosters"];
3
+ const METADATA = new Set(ENTRY_METADATA_KEYS);
4
+ export function withoutEntryMetadata(entry) {
5
+ return Object.fromEntries(Object.entries(entry).filter(([key]) => !METADATA.has(key)));
6
+ }
7
+ export function mcpEntryFingerprintFace(entry) {
8
+ const face = withoutEntryMetadata(entry);
9
+ if (!isMcpSourceLabel(face.source))
10
+ delete face.source;
11
+ return face;
12
+ }
13
+ //# sourceMappingURL=entry-metadata.js.map
@@ -4,7 +4,7 @@ import type { EffectiveConfig, ExecutionRuling } from "./types.js";
4
4
  import { type DroppedConfigEntry, type UnreadConfigFile } from "./read-warnings.js";
5
5
  import { type CenterEndpoint } from "./center-request.js";
6
6
  /** GET the effective config (Bearer + ETag). null = 304 (unchanged). Throws on transport/HTTP error, and on a
7
- * payload that is not an effective config at all(非对象 / version 非有限数 / gate 域坏形——[ref] 裁B)。
7
+ * payload that is not an effective config at all(非对象 / version 非有限数 / gate 域坏形——[ref] 裁B;这一类抛是 `ConfigCandidateRefusedError`,成因 `rejected`)。
8
8
  * `refusedDocuments`:被拒文档(契约类型 `ConfigDocumentRefusal`,与本地腿同键同义;wire 上只有一种 —— 带事实的退役域,墓碑,成因词 `retired_domain`)不抛 —— 交成发现、那一键不进 effective,
9
9
  * 候选判官整拒这份候选。
10
10
  * `domainErrors`:坏 catalog 域(schema default 已落)逐域单列——与本地腿 `FetchEffectiveResult` 同键同义,
@@ -3,15 +3,34 @@ import { isStringArray, readEffectiveWire, PrincipalCapsWire } from "@sema-agent
3
3
  import { separateRetiredDomains, splitFoldedReadWarnings, withDroppedCatalogEntries } from "./read-warnings.js";
4
4
  import { CENTER_PULL_TIMEOUT_MS, centerFetch } from "./center-request.js";
5
5
  import { answerStillCurrent } from "../center-credential.js";
6
+ import { candidateRefusedBy } from "../config-pull-failure.js";
7
+ import { readUpstreamJson } from "../upstream-body.js";
6
8
  export async function fetchEffective(center, etag, fetchImpl, worker) {
7
9
  const { res, identity } = await centerFetch(center, { kind: "effective", worker }, { etag, timeoutMs: CENTER_PULL_TIMEOUT_MS, fetchImpl });
8
10
  if (res.status === 304)
9
11
  return null;
10
12
  if (!res.ok)
11
13
  throw new Error(`web-admin HTTP ${res.status}`);
14
+ let raw;
15
+ try {
16
+ raw = await readUpstreamJson(res);
17
+ }
18
+ catch (bodyError) {
19
+ if (bodyError instanceof SyntaxError)
20
+ throw candidateRefusedBy(bodyError);
21
+ throw bodyError;
22
+ }
12
23
  const warnings = [];
13
- const { body, refusedDocuments } = separateRetiredDomains(await res.json());
14
- const wire = readEffectiveWire(body, (w) => warnings.push(w));
24
+ let body;
25
+ let refusedDocuments;
26
+ let wire;
27
+ try {
28
+ ({ body, refusedDocuments } = separateRetiredDomains(raw));
29
+ wire = readEffectiveWire(body, (w) => warnings.push(w));
30
+ }
31
+ catch (readerError) {
32
+ throw candidateRefusedBy(readerError);
33
+ }
15
34
  const { domainErrors, droppedEntries, droppedCatalogEntries, unreadFiles } = splitFoldedReadWarnings(warnings, "center");
16
35
  const effective = withDroppedCatalogEntries(wire, droppedCatalogEntries);
17
36
  return {
@@ -102,7 +121,7 @@ async function requestPrincipalView(center, principal, etag, fetchImpl, worker)
102
121
  if (!res.ok)
103
122
  throw new Error(`web-admin principal-caps HTTP ${res.status}`);
104
123
  const responseEtag = res.headers.get("etag");
105
- const json = await res.json();
124
+ const json = await readUpstreamJson(res);
106
125
  stillCurrent();
107
126
  return { json, ...(responseEtag !== null ? { etag: responseEtag } : {}) };
108
127
  }
@@ -141,7 +160,7 @@ export async function fetchPromptArtifact(center, artifactDigest, fetchImpl) {
141
160
  const { res } = await centerFetch(center, { kind: "prompt-artifact", digest: artifactDigest }, { timeoutMs: CENTER_PULL_TIMEOUT_MS, fetchImpl });
142
161
  if (!res.ok)
143
162
  throw new WebAdminHttpError(`prompt artifact HTTP ${res.status} for ${artifactDigest}`, res.status);
144
- return await res.json();
163
+ return await readUpstreamJson(res);
145
164
  }
146
165
  export async function fetchPromptBlob(center, contentDigest, fetchImpl) {
147
166
  const { res } = await centerFetch(center, { kind: "prompt-blob", digest: contentDigest }, { timeoutMs: CENTER_PULL_TIMEOUT_MS, fetchImpl });
@@ -45,7 +45,7 @@ export declare function createMcpRevocationLedger(onChange?: (ev: {
45
45
  restored: string[];
46
46
  }) => void): McpRevocationLedger;
47
47
  /** 一拍 EffectiveConfig 的 ENABLED MCP 服务器条目表(`resolveMcpServers` 同判据:`enabled !== false`;
48
- * 值=整条目的 key 排序 JSON 指纹,Map 插入序=发布序);mcp 域缺席 ⇒ `null`(台账不动)。
48
+ * 值=条目的指纹面(`entry-metadata.ts` `mcpEntryFingerprintFace`:减备注 / 名册标签,分组标签按挂载口判据读)的 key 排序 JSON 指纹,Map 插入序=发布序);mcp 域缺席 ⇒ `null`(台账不动)。
49
49
  * 指纹序列化器 = `@sema-agent/settings-schema/hash` 的 `stableStringify`([ref] 起;[ref] 2026-08-31 起与 restart-signal 同源:此前本文件
50
50
  * 持一份**逐字相同**的私有复刻 `fingerprintOf`;JSON 形输入上字节恒等,golden 钉 test/canonical-json-golden.test.ts)。
51
51
  * 两处指纹仍只在各自域内自比、不跨域比对——同源只是去掉一份多余的复刻,不引入跨域约束;也**不**改用
@@ -1,4 +1,5 @@
1
1
  import { stableStringify } from "@sema-agent/settings-schema/hash";
2
+ import { mcpEntryFingerprintFace } from "./entry-metadata.js";
2
3
  export function createMcpRevocationLedger(onChange) {
3
4
  let baseline;
4
5
  let seen;
@@ -41,7 +42,7 @@ export function enabledMcpEntries(mcp) {
41
42
  const out = new Map();
42
43
  for (const s of mcp.servers) {
43
44
  if (s.enabled !== false)
44
- out.set(s.name, stableStringify(s));
45
+ out.set(s.name, stableStringify(mcpEntryFingerprintFace(s)));
45
46
  }
46
47
  return out;
47
48
  }
@@ -143,6 +143,7 @@ export declare const DroppedCatalogEntryRow: z.ZodObject<{
143
143
  "entry-schema-invalid": "entry-schema-invalid";
144
144
  "entry-key-invalid": "entry-key-invalid";
145
145
  "entry-unreadable": "entry-unreadable";
146
+ "entry-unknown-key": "entry-unknown-key";
146
147
  }>;
147
148
  identity: z.ZodOptional<z.ZodObject<{
148
149
  name: z.ZodOptional<z.ZodString>;
@@ -209,6 +209,7 @@ function reasonCodeForWire(code) {
209
209
  case "entry-schema-invalid":
210
210
  case "entry-key-invalid":
211
211
  case "entry-unreadable":
212
+ case "entry-unknown-key":
212
213
  return code;
213
214
  default: {
214
215
  const never = code;
@@ -3,14 +3,18 @@ import { stableStringify } from "@sema-agent/settings-schema/hash";
3
3
  import { DEFAULT_PLUGIN_ALLOW_HOSTS, materializablePlugins } from "../capabilities/center-plugins.js";
4
4
  import { CENTER_READ_FACE_LIVE_KEYS } from "./read-face.js";
5
5
  import { enabledA2aPeerView } from "./skills-mcp.js";
6
+ import { mcpEntryFingerprintFace, withoutEntryMetadata } from "./entry-metadata.js";
6
7
  const RESTART_SLICES = ["skills", "mcp", "a2a", "scenarios", "degrade-route", "read-face", "memory-consolidation"];
7
8
  function enabledOnly(rows) {
8
9
  if (!rows)
9
10
  return null;
10
11
  return rows.filter((r) => r.enabled !== false);
11
12
  }
13
+ function enabledEntriesFingerprint(rows, face = withoutEntryMetadata) {
14
+ return enabledOnly(rows)?.map((r) => face(r)) ?? null;
15
+ }
12
16
  export function catalogEntryFingerprint(entry) {
13
- const { cost, quotaWeight: _quotaWeight, enabled: _enabled, ...route } = entry;
17
+ const { cost, quotaWeight: _quotaWeight, enabled: _enabled, ...route } = withoutEntryMetadata(entry);
14
18
  return { ...route, costDeclared: cost !== undefined };
15
19
  }
16
20
  function planeEntriesFingerprint(rows) {
@@ -35,19 +39,19 @@ function restartSliceValue(eff, slice, ctx) {
35
39
  return null;
36
40
  switch (slice) {
37
41
  case "skills": {
38
- const skills = enabledOnly(eff.skills?.skills);
42
+ const skills = enabledEntriesFingerprint(eff.skills?.skills);
39
43
  const materialized = materializablePlugins(eff, ctx?.pluginsAllowHosts ?? DEFAULT_PLUGIN_ALLOW_HOSTS);
40
44
  const plugins = materialized.length > 0 ? materialized : null;
41
45
  return skills === null && plugins === null ? null : { skills, plugins };
42
46
  }
43
47
  case "mcp":
44
- return enabledOnly(eff.mcp?.servers);
48
+ return enabledEntriesFingerprint(eff.mcp?.servers, mcpEntryFingerprintFace);
45
49
  case "a2a": {
46
50
  const views = (eff.a2a?.peers ?? []).flatMap((peer) => enabledA2aPeerView(peer) ?? []);
47
51
  return views.length > 0 ? views : null;
48
52
  }
49
53
  case "scenarios":
50
- return enabledOnly(eff.scenarios?.scenarios);
54
+ return enabledEntriesFingerprint(eff.scenarios?.scenarios);
51
55
  case "read-face": {
52
56
  const d = eff.readFace;
53
57
  if (!d)
@@ -17,8 +17,8 @@ export type SkillBodySource = Pick<ConfigProvider, "fetchSkillContent" | "skillB
17
17
  * **在场 ⇒ 整只数组原样**(含 `[]`;不去重、不排序、不判拼写 —— settings-schema 14.4.0 的读法一句话,判官在引擎:`allowedTools` 是 allow 规则来源、`disallowedTools` 拒侧读成空的条目让
18
18
  * 那次激活 fail-closed)。数组复制一份:规格上的数组是引擎规格自己的,不与配置源手里的 manifest / 本地店对象共享。
19
19
  *
20
- * 本函数住在技能域的读口旁,三个读者共用 —— 本地腿 CLOSED 投影(`config-provider.ts` 的 `mapToServiceEffective`)、manifest → 规格的铸点({@link applySkillsManifest})、
21
- * 已装技能 ↔ manifest 的投影一致判据({@link installedSkillMatchesManifest}):三处各写一份键表就是下一次同形丢位([ref] 族)。契约再加一个技能键时的看守不在这里,
20
+ * 本函数住在技能域的读口旁,两个读者共用 —— manifest → 规格的铸点({@link applySkillsManifest})、
21
+ * 已装技能 ↔ manifest 的投影一致判据({@link installedSkillMatchesManifest}):两处各写一份键表就是下一次同形丢位(本地腿的 manifest 由契约 `toSkillsManifest` 铸,条目整只过境,不再有第三份键表)。契约再加一个技能键时的看守不在这里,
22
22
  * 在 `test/skill-tool-lists-carry.test.ts` 的键处置表(按 `keyof SkillSpec` 铸型)与 `test/settings-schema-consumption-gates.test.ts` 门 4(叶路径由契约形状派生)。
23
23
  */
24
24
  export declare function skillToolListsOf(source: {
@@ -71,8 +71,7 @@ export interface CenterModel {
71
71
  * `readEffectiveWire`)都把它们当未知键剥掉(1.10.0 夹具实测:`unknown-keys-dropped
72
72
  * {keys:["models.0.defaultThinking","models.0.reasoningEffortLevels"]}`;settings-schema 3.0.0 起同一条
73
73
  * 告警的坐标是**段数组** `{keys:[["models",0,"defaultThinking"],…]}`,出门形走 `formatConfigPath`),
74
- * `mapToServiceEffective` 的
75
- * CLOSED 投影也从未列过它们。留着 = 一份读不到任何东西的类型承诺 + `compat.reasoningEffortLevels`
74
+ * 当年本地腿的 CLOSED 投影(已删)也从未列过它们。留着 = 一份读不到任何东西的类型承诺 + `compat.reasoningEffortLevels`
76
75
  * 之外的第二个写者([ref]:同一语义面禁两个写者)。roster 级 `defaultThinking` 若要真做,归 schema 补键
77
76
  * 另立单据(见 CHANGELOG 未闭环)。
78
77
  */
@@ -139,8 +139,9 @@ export interface EndedSpace {
139
139
  * no second read to fail — a head read that throws fails the delete itself (retried to convergence). */
140
140
  export type CacheReclaimReason = "delete_failed" | "budget";
141
141
  /**
142
- * The ONE reclaim seat for an ended space — called where a space ENDS: the session-delete coordinator (`boot/session-faces.ts` `purgeSession`)
143
- * and the managed-retention sweep after it deletes session trees (`boot/retention-lane.ts`); neither writes a reclaim of its own. It reclaims
142
+ * The ONE reclaim seat for an ended space — called where a space ENDS, through the one session-erase settler (`session-erase.ts`
143
+ * `createSessionEraseSettler`) both deciders run after a session tree is erased: the session-delete coordinator (`boot/session-faces.ts` `purgeSession`)
144
+ * and the managed-retention sweep (`boot/retention-lane.ts`); neither writes a reclaim of its own. It reclaims
144
145
  * everything the space left behind: the cache volume (when configured), the `space/` snapshot partition and the session's park snapshots whose names carry the ended occupant's ownership mark (when a
145
146
  * snapshot store is configured; old-form / `none` park objects are left to the bucket's lifecycle rule). ONE call runs under ONE
146
147
  * absolute deadline (`dataTimeoutMs`) built at its entry — the cache volume and the objects of every space in the call; a space the deadline passed
@@ -13,7 +13,7 @@ dials the device, so the device needs no inbound port, no public address and no
13
13
 
14
14
  | Plane | Transport | Who calls whom | Where it is specified |
15
15
  |---|---|---|---|
16
- | Management / enrollment / binding | HTTPS, JSON | the user's client calls the server | the repository's `docs/ASSISTANT-WIRE-CONTRACT.md` §14 (not shipped in the npm package) |
16
+ | Management / enrollment / binding | HTTPS, JSON | the user's client calls the server | the server's wire contract, device-management section (internal record, not shipped) |
17
17
  | Executor | WebSocket (upgrade on the WS path below), text frames, JSON | the device connects out to the server | **this document** |
18
18
 
19
19
  **Discovery before you connect**: `GET /v1/capabilities` carries a `deviceExecutor` key — either `false`
@@ -1103,6 +1103,6 @@ The short version for an executor implementer:
1103
1103
  *different* device is refused — changing devices is an explicit rebind action, never an implicit one;
1104
1104
  - a non-device deployment refuses the key outright rather than ignoring it.
1105
1105
 
1106
- The full contract — request shapes, every refusal code, the rebind verb, and the disclosed races — is in
1107
- the repository's `docs/ASSISTANT-WIRE-CONTRACT.md` §14.6 and, for the management verbs, §14.1–14.5 (not shipped in the npm package). It is not repeated
1108
- here.
1106
+ The full contract — request shapes, every refusal code, the rebind verb, and the disclosed races — is part of
1107
+ the server's wire contract, in its device-lane section (the first-bind write protocol and the management verbs;
1108
+ internal record, not shipped). It is not repeated here.