@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
@@ -3,13 +3,16 @@ import { skillCardFacts } from "../../approval-card.js";
3
3
  import { hostDecisionFacts, readDecider, retiredDecisionKeyFacts, DECIDED_BY_NOT_IN_PROOF } from "../../host-decision.js";
4
4
  import { sameExecutionRecord } from "@sema-agent/core";
5
5
  import { findParkedAgentForCheckpoint } from "../../parked-decide.js";
6
- import { DECIDED_REPLAY_SCAN_CAP } from "../../plugins/checkpoint-store-face.js";
6
+ import { DECIDED_REPLAY_SCAN_CAP, pendingTriageOrder } from "../../plugins/checkpoint-store-face.js";
7
7
  import { approvalPayloadFingerprint } from "../../plugins/approval-payload-fingerprint.js";
8
8
  import { carriesDeploymentListQuestion, standingAnswerDurablyRecordable } from "../../tool-approval.js";
9
9
  import { APPROVAL_GATE_KINDS } from "../../approval-content-kind.js";
10
10
  import { isParkedRunStatus } from "../../plugins/store-contracts.js";
11
- import { principalFrom, decodeCheckpointScope, ownerOfCheckpointScope, CHECKPOINT_PUBLIC_SCOPE, PRINCIPAL_TOKEN_HEADER, APPROVAL_MAC_HEADER, APPROVAL_MAC_KID_HEADER } from "../../security.js";
12
- import { editedPlanBinding, isWellFormedUnicode, verifyDirectDoorProof } from "../../principal-jwt.js";
11
+ import { principalFrom, ownerOfCheckpointScope, scopeCellOf, CHECKPOINT_PUBLIC_SCOPE, PRINCIPAL_TOKEN_HEADER, APPROVAL_MAC_HEADER, APPROVAL_MAC_KID_HEADER } from "../../security.js";
12
+ import { keyAdmits } from "../../owner-faces.js";
13
+ import { personOf } from "../../owner-brands.js";
14
+ import { editedPlanBinding, verifyDirectDoorProof } from "../../principal-jwt.js";
15
+ import { isWellFormedUnicode } from "../../principal-shape.js";
13
16
  import { MAX_APPROVAL_REASON_CHARS, projectQuestionAnswer, questionAnswerFromProjection } from "../../approval-hmac.js";
14
17
  import { PLAN_APPROVE_PERMISSION_MODES_AFTER, isPlanApprovePermissionModeAfter, planReviewDecisionExitsPlan, storedBodyPermissionMode } from "../../task-settings.js";
15
18
  import { MAX_APPROVAL_NONCE_CHARS } from "../../plugins/approval-nonce-store.js";
@@ -19,8 +22,8 @@ import { buildRunName } from "../../fleet/fleet-bus.js";
19
22
  import { sleep } from "../sse-log.js";
20
23
  import { bindSseLifecycle } from "../sse-lifecycle.js";
21
24
  import { sendJson, sendError, sseHeaders, logRequestError, SSE_MAX_STREAM_MS, SSE_HEARTBEAT_IDLE_MS } from "../send.js";
22
- import { gatedPrincipal, explicitOperatorOk, sendPrincipalRefusal, sessionCallerOf } from "../principal-gate.js";
23
- import { readOwnedRun, readOwnedSession } from "../owner-access.js";
25
+ import { gatedSubject, explicitOperatorOk, sendPrincipalRefusal } from "../principal-gate.js";
26
+ import { admitRunById, admitSessionById, callerEntry, callerOf, callerOfDecision, deciderSubjectOf, enter, judgeRun, protocolEntry, readVisibleRun, refuse, withCaller } from "../owner-access.js";
24
27
  import { governanceOriginOf } from "../../runtime-governance.js";
25
28
  import { deploymentListAsks } from "../../approval.js";
26
29
  import { grantBindingOf } from "../../standing-answer-grant.js";
@@ -32,7 +35,7 @@ import { recordFailOpen } from "../../observability/fail-open.js";
32
35
  import { MAX_CHECKPOINT_ID_CHARS, durableRowIdentity } from "../../checkpoint-identity.js";
33
36
  import { MAX_KEY_ECHO, keyClosureClause, scanKeyClosure } from "../../request-key-closure.js";
34
37
  import { fieldConflictFacts } from "../../field-conflict.js";
35
- import { buildSettlementEvidence, decisionCommittedOf } from "../../gate-settlement.js";
38
+ import { buildSettlementEvidence } from "../../gate-settlement.js";
36
39
  import { seatText } from "../../trace/exit-seat.js";
37
40
  import { approvalQueueKindOfDoorId } from "../../approval-queue-kind.js";
38
41
  import { defaultPeerInboundFace, parsePeerInboundId, peerBoxScope } from "../../peer-inbound-face.js";
@@ -215,7 +218,7 @@ export function checkQuestionAnswer(v) {
215
218
  return shapeOk ? { ok: true, value: v } : { ok: false, kind: "shape" };
216
219
  }
217
220
  async function decideIdempotentReplay(cs, args) {
218
- const { sessionId, out, binding, decision, payload, deciderPrincipal, explicitOperator, warn } = args;
221
+ const { sessionId, out, binding, decision, payload, decider, warn } = args;
219
222
  if (out.status !== 404 || out.body.errorCode !== "not_found.approval")
220
223
  return undefined;
221
224
  const boundCallId = binding.boundCallId;
@@ -238,12 +241,9 @@ async function decideIdempotentReplay(cs, args) {
238
241
  for (const row of rows) {
239
242
  if (row.decision === null)
240
243
  return undefined;
241
- if (!explicitOperator) {
242
- const owner = decodeCheckpointScope(row.scope);
243
- if (owner !== undefined && owner !== deciderPrincipal) {
244
- warn("decide_replay_scope_mismatch", { sessionId });
245
- return undefined;
246
- }
244
+ if (!keyAdmits("scope.decide", decider, scopeCellOf(row.scope))) {
245
+ warn("decide_replay_scope_mismatch", { sessionId });
246
+ return undefined;
247
247
  }
248
248
  if (binding.boundInputHash === undefined || row.boundInputHash !== binding.boundInputHash)
249
249
  return undefined;
@@ -279,9 +279,9 @@ async function decideIdempotentReplay(cs, args) {
279
279
  },
280
280
  };
281
281
  }
282
- async function gateObjectivePreview(reader, runStore, agentStore, gate) {
283
- const previewOf = async (taskId) => readOwnedRun(reader.config, runStore, reader.principal, taskId, "owner_or_operator");
284
- const own = (await runStore.getActiveTaskId(gate.sessionId)) ?? (await runStore.latestRunForSession(gate.sessionId))?.taskId;
282
+ async function gateObjectivePreview(reader, runStore, agentStore, gate, runSessionId) {
283
+ const previewOf = (taskId) => readVisibleRun(reader, runStore, taskId);
284
+ const own = typeof runSessionId === "string" ? ((await runStore.getActiveTaskId(runSessionId)) ?? (await runStore.latestRunForSession(runSessionId))?.taskId) : undefined;
285
285
  if (own !== undefined)
286
286
  return (await previewOf(own))?.objectivePreview ?? null;
287
287
  if (agentStore === undefined)
@@ -311,8 +311,8 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
311
311
  return;
312
312
  }
313
313
  const cs = park.checkpointStore;
314
- const principal = gatedPrincipal(req, deps.config);
315
- const operator = explicitOperatorOk(principal, deps.config);
314
+ const principal = gatedSubject(req, deps.config);
315
+ const operator = explicitOperatorOk(principal === undefined ? undefined : personOf(principal), deps.config);
316
316
  const ownScope = principal ?? CHECKPOINT_PUBLIC_SCOPE;
317
317
  if (match.decl.id === "approvals-stream") {
318
318
  const ownerParam = operator ? (new URLSearchParams(match.search).get("owner") ?? undefined) : undefined;
@@ -354,16 +354,15 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
354
354
  sendError(res, 400, "request.path_malformed", "malformed id (invalid percent-encoding)");
355
355
  return;
356
356
  }
357
- if (!explicitOperatorOk(principal, deps.config)) {
357
+ const exEntry = callerEntry(req, deps, match.decl.id);
358
+ if (!exEntry.caller.operator) {
358
359
  const owned = facts.sessionOwnership(deps);
359
360
  if (!owned.available) {
360
361
  sendError(res, 501, "capability.session_store_required", "approval exemptions require a session-store backend");
361
362
  return;
362
363
  }
363
- if ((await readOwnedSession(deps, owned.sessionStorage, sessionCallerOf(req, deps), exSessionId, "owner")) === undefined) {
364
- sendError(res, 404, "not_found.session", "not found");
364
+ if ((await admitSessionById(exEntry, res, owned.sessionStorage, exSessionId)) === undefined)
365
365
  return;
366
- }
367
366
  }
368
367
  if (match.decl.id === "approval-exemptions-list") {
369
368
  if (exToolName !== undefined) {
@@ -398,11 +397,12 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
398
397
  }
399
398
  const ledger = facts.durableRuns(deps);
400
399
  const agentStore = deps.backgroundAgentStore;
400
+ const previewEntry = protocolEntry(req, deps, "run.preview", callerOf(req, deps));
401
401
  const inbox = (await Promise.all(summaries.map(async (s) => {
402
402
  let objective = null;
403
403
  if (ledger.available) {
404
404
  try {
405
- objective = await gateObjectivePreview({ config: deps.config, principal }, ledger.runStore, agentStore, s);
405
+ objective = await gateObjectivePreview(previewEntry, ledger.runStore, agentStore, s, await cs.hostSessionOfCard(s.token));
406
406
  }
407
407
  catch (err) {
408
408
  recordFailOpen("server.assistant-inbox.objective-preview-unreadable", `run row read for the inbox row of session ${JSON.stringify(s.sessionId)} failed: ${err instanceof Error ? err.message : String(err)}`);
@@ -428,11 +428,12 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
428
428
  ...(s.boundGrantDigest !== undefined ? { boundGrantDigest: s.boundGrantDigest } : {}),
429
429
  ...skillCardFacts(s),
430
430
  ...(s.boundGrantAbsence !== undefined ? { boundGrantAbsence: s.boundGrantAbsence } : {}),
431
+ ...(s.runOrigin !== undefined ? { runOrigin: s.runOrigin } : {}),
431
432
  objective,
432
433
  input,
433
434
  };
434
435
  })))
435
- .sort((a, b) => (b.severity ?? 0) - (a.severity ?? 0) || (a.createdAt ?? 0) - (b.createdAt ?? 0));
436
+ .sort(pendingTriageOrder);
436
437
  sendJson(res, 200, { inbox });
437
438
  return;
438
439
  }
@@ -453,7 +454,13 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
453
454
  sendApprovalsReadFailure(req, res, deps.logger, err);
454
455
  return;
455
456
  }
456
- const byGate = new Map(summaries.map((s) => [s.sessionId, s]));
457
+ const hosts = await Promise.all(summaries.map((s) => cs.hostSessionOfCard(s.token)));
458
+ const byGate = new Map();
459
+ summaries.forEach((s, i) => {
460
+ const host = hosts[i];
461
+ if (typeof host === "string")
462
+ byGate.set(host, s);
463
+ });
457
464
  const runs = await runStore.listRuns({ owner: ownerOfCheckpointScope(scope), limit: 100 });
458
465
  const tasks = runs
459
466
  .filter((r) => r.status === "running" || isParkedRunStatus(r.status))
@@ -482,20 +489,18 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
482
489
  return;
483
490
  }
484
491
  const runStore = runs.runStore;
485
- if (deps.config.requirePrincipal && principal === undefined) {
486
- sendPrincipalRefusal(res, req, deps.config);
492
+ const preemptEntry = enter(req, res, deps, match.decl.id);
493
+ if (preemptEntry === undefined)
487
494
  return;
488
- }
489
495
  if (!deps.config.resourceSuspend) {
490
496
  sendError(res, 501, "feature.preemption_disabled", "preemption not enabled on this worker (needs RESOURCE_SUSPEND=true + a durable checkpoint store)");
491
497
  return;
492
498
  }
493
499
  const taskId = match.params.taskId;
494
- const run = await readOwnedRun(deps.config, runStore, principal, taskId, "owner_or_operator");
495
- if (!run) {
496
- sendError(res, 404, "not_found.run", "task not found");
500
+ const preemptAdmitted = (await admitRunById(preemptEntry, res, runStore, taskId));
501
+ if (preemptAdmitted === undefined)
497
502
  return;
498
- }
503
+ const run = preemptAdmitted.row;
499
504
  if (run.status === "running") {
500
505
  const ownedHere = run.instanceId != null && run.instanceId === deps.instanceId;
501
506
  if (ownedHere && !preemptableRuns.has(taskId)) {
@@ -541,23 +546,17 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
541
546
  return;
542
547
  }
543
548
  const runStore = runs.runStore;
544
- if (deps.config.requirePrincipal && principal === undefined) {
545
- sendPrincipalRefusal(res, req, deps.config);
549
+ const resumeEntry = enter(req, res, deps, match.decl.id);
550
+ if (resumeEntry === undefined)
546
551
  return;
547
- }
548
552
  const restatement = readResumeRestatement(await readJson(req));
549
553
  const taskId = match.params.taskId;
550
- const run = await runStore.getRun(taskId);
551
- if (!run) {
552
- sendError(res, 404, "not_found.run", "task not found");
553
- return;
554
- }
555
- const explicitOperator = explicitOperatorOk(principal, deps.config);
556
- if (!explicitOperator && run.owner !== null && run.owner !== principal) {
557
- sendError(res, 404, "not_found.run", "task not found");
554
+ const resumeAdmitted = (await admitRunById(resumeEntry, res, runStore, taskId));
555
+ if (resumeAdmitted === undefined)
558
556
  return;
559
- }
560
- const out = await resumePreempted(run.sessionId, req, true, { principal, explicitOperator }, restatement);
557
+ const run = resumeAdmitted.row;
558
+ const explicitOperator = resumeAdmitted.quals.has("operator");
559
+ const out = await resumePreempted(run.sessionId, req, true, { subject: resumeEntry.caller.subject, operator: explicitOperator }, restatement);
561
560
  sendResumeOutcome(res, out, deps.logger);
562
561
  return;
563
562
  }
@@ -660,17 +659,15 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
660
659
  }
661
660
  }
662
661
  const sighting = typeof body.checkpointId === "string" ? { face: "checkpointId", value: body.checkpointId } : undefined;
662
+ const decisionEntry = callerEntry(req, deps, match.decl.id);
663
663
  const run = await runStore.getRun(taskId);
664
664
  if (!run) {
665
- if (deps.config.directDoorActive) {
666
- sendError(res, 401, "principal_unverified", "principal proof required");
667
- return;
668
- }
669
- deps.logger?.info?.("decide_404", { reason: "no-row", taskId, principalPresent: principal !== undefined });
670
- sendError(res, 404, "not_found.run", "task not found");
665
+ if (!deps.config.directDoorActive)
666
+ deps.logger?.info?.("decide_404", { reason: "no-row", taskId, principalPresent: principal !== undefined });
667
+ refuse(decisionEntry, res, "missing");
671
668
  return;
672
669
  }
673
- let deciderPrincipal = principal;
670
+ let deciderPrincipal = principal === undefined ? undefined : personOf(principal);
674
671
  let singleUse;
675
672
  if (deps.config.directDoorActive) {
676
673
  const store = deps.approvalNonceStore;
@@ -695,13 +692,15 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
695
692
  deciderPrincipal = proof.principal;
696
693
  singleUse = proof.singleUse === undefined ? undefined : { proof: proof.singleUse, store };
697
694
  }
698
- const explicitOperator = explicitOperatorOk(deciderPrincipal, deps.config);
699
- if (!explicitOperator && run.owner !== null && run.owner !== deciderPrincipal) {
695
+ const deciderEntry = withCaller(decisionEntry, callerOfDecision(decisionEntry.caller, deciderPrincipal, deps.config));
696
+ const decisionAdmitted = judgeRun(deciderEntry, run);
697
+ if (decisionAdmitted === undefined) {
700
698
  deps.logger?.info?.("decide_404", { reason: "owner-mismatch", taskId, principalPresent: principal !== undefined });
701
- sendError(res, 404, "not_found.run", "task not found");
699
+ refuse(deciderEntry, res, "not_visible");
702
700
  return;
703
701
  }
704
- const plan = await preparePlanReview(run.sessionId, { taskId, principalPresent: principal !== undefined }, { principal: deciderPrincipal, explicitOperator }, sighting);
702
+ const explicitOperator = decisionAdmitted.quals.has("operator");
703
+ const plan = await preparePlanReview(run.sessionId, { taskId, principalPresent: principal !== undefined }, { subject: deciderSubjectOf(principal, deciderPrincipal), operator: explicitOperator }, sighting, restated.restatement);
705
704
  if (!plan.ok) {
706
705
  sendResumeOutcome(res, plan.answer, deps.logger);
707
706
  return;
@@ -725,7 +724,7 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
725
724
  return;
726
725
  }
727
726
  }
728
- const out = await drivePlanReview(plan.prepared, decision, decision === "edit" ? body.editedPlan : undefined, typeof body.reason === "string" ? body.reason : undefined, hostDecisionFacts(decidedByReading.decider, deciderPrincipal), req, true, isPlanApprovePermissionModeAfter(body.permissionModeAfter) ? body.permissionModeAfter : undefined, restated.restatement);
727
+ const out = await drivePlanReview(plan.prepared, decision, decision === "edit" ? body.editedPlan : undefined, typeof body.reason === "string" ? body.reason : undefined, hostDecisionFacts(decidedByReading.decider, deciderPrincipal), req, true, isPlanApprovePermissionModeAfter(body.permissionModeAfter) ? body.permissionModeAfter : undefined);
729
728
  sendResumeOutcome(res, out, deps.logger);
730
729
  return;
731
730
  }
@@ -862,7 +861,7 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
862
861
  updatedInput: body.updatedInput,
863
862
  ...(typeof body.feedback === "string" ? { feedback: body.feedback } : {}),
864
863
  };
865
- let deciderPrincipal = principal;
864
+ let deciderPrincipal = principal === undefined ? undefined : personOf(principal);
866
865
  if (deps.config.directDoorActive) {
867
866
  const hdr = (n) => {
868
867
  const h = req.headers[n];
@@ -881,39 +880,17 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
881
880
  }
882
881
  deciderPrincipal = proof.principal;
883
882
  }
884
- const explicitOperator = explicitOperatorOk(deciderPrincipal, deps.config);
885
- if (!explicitOperator) {
883
+ const deciderCaller = { subject: deciderSubjectOf(principal, deciderPrincipal), operator: explicitOperatorOk(deciderPrincipal, deps.config) };
884
+ if (!deciderCaller.operator) {
886
885
  const cpScope = await cs
887
886
  .peekPendingScope(sessionId, { gateKinds: APPROVAL_GATE_KINDS })
888
887
  .then((s) => (s === undefined ? cs.peekPendingScope(sessionId) : s));
889
- const decodedCpScope = cpScope != null ? decodeCheckpointScope(cpScope) : undefined;
890
- const ownsIt = cpScope == null || decodedCpScope === undefined || decodedCpScope === deciderPrincipal;
891
- if (!ownsIt) {
888
+ if (!keyAdmits("scope.decide", deciderCaller, scopeCellOf(cpScope ?? CHECKPOINT_PUBLIC_SCOPE))) {
892
889
  sendError(res, 404, "not_found.approval", "approval not found");
893
890
  return;
894
891
  }
895
892
  }
896
- let rememberApplied = false;
897
- let pendingGrant;
898
- const grantOnCommit = remember && deps.approvalExemptionStore
899
- ? async (grant) => {
900
- const canonical = grant.rememberableToolName;
901
- if (!canonical)
902
- return;
903
- pendingGrant = { sessionId: grant.overrideSessionId ?? sessionId, toolName: canonical };
904
- }
905
- : undefined;
906
- const out = await resumeCheckpoint(sessionId, decision, body.reason ?? undefined, hostDecisionFacts(decider, deciderPrincipal), req, answer, binding, grantOnCommit, true, { principal: deciderPrincipal, explicitOperator }, restated.restatement);
907
- if (pendingGrant !== undefined && decisionCommittedOf(out) && deps.approvalExemptionStore) {
908
- try {
909
- await deps.approvalExemptionStore.grant(pendingGrant.sessionId, pendingGrant.toolName, deciderPrincipal ?? null);
910
- rememberApplied = true;
911
- deps.logger?.info?.("approval_exemption_granted", { sessionId: pendingGrant.sessionId, toolName: pendingGrant.toolName, grantedBy: deciderPrincipal ?? null });
912
- }
913
- catch (e) {
914
- deps.logger?.warn?.("approval_exemption_grant_failed", { sessionId: pendingGrant.sessionId, toolName: pendingGrant.toolName, error: String(e).slice(0, 200) });
915
- }
916
- }
893
+ const out = await resumeCheckpoint(sessionId, decision, body.reason ?? undefined, hostDecisionFacts(decider, deciderPrincipal), req, answer, binding, remember ? { grantedBy: deciderPrincipal ?? null, laneCannotRecord: "refuse" } : undefined, true, deciderCaller, restated.restatement);
917
894
  const replay = await decideIdempotentReplay(cs, {
918
895
  sessionId,
919
896
  out,
@@ -925,15 +902,14 @@ export async function handleApprovalsAssistant(req, res, match, ctx) {
925
902
  ...((r) => (r !== undefined ? { reason: r } : {}))(decisionReasonOf(body)),
926
903
  ...(binding.feedback !== undefined ? { feedback: binding.feedback } : {}),
927
904
  },
928
- deciderPrincipal,
929
- explicitOperator,
905
+ decider: deciderCaller,
930
906
  warn: (event, fields) => deps.logger?.warn?.(event, fields),
931
907
  });
932
908
  if (replay !== undefined) {
933
909
  sendResumeOutcome(res, replay, deps.logger);
934
910
  return;
935
911
  }
936
- sendResumeOutcome(res, out, deps.logger, remember && deps.approvalExemptionStore ? { rememberApplied } : undefined);
912
+ sendResumeOutcome(res, out, deps.logger, remember ? { rememberApplied: out.rememberApplied === true } : undefined);
937
913
  return;
938
914
  }
939
915
  }
@@ -1003,6 +979,8 @@ function approvalsReadFailureOf(err) {
1003
979
  case "deployment":
1004
980
  case "unclassified":
1005
981
  return "approvals.read_unavailable";
982
+ case "defect":
983
+ return "internal.error";
1006
984
  default: {
1007
985
  const unhandled = fault;
1008
986
  throw new Error(`store fault class without an approvals read answer: ${String(unhandled)}`);
@@ -1010,15 +988,18 @@ function approvalsReadFailureOf(err) {
1010
988
  }
1011
989
  }
1012
990
  function sendApprovalsReadFailure(req, res, logger, err) {
1013
- logRequestError(logger, req, err);
1014
991
  const failure = approvalsReadFailureOf(err);
1015
992
  switch (failure) {
1016
993
  case "approvals.read_corrupt":
994
+ logRequestError(logger, req, err);
1017
995
  sendError(res, 500, "approvals.read_corrupt", "a stored approval row cannot be read - retrying this request will fail the same way until an operator repairs or removes the row");
1018
996
  return;
1019
997
  case "approvals.read_unavailable":
998
+ logRequestError(logger, req, err);
1020
999
  sendError(res, 503, "approvals.read_unavailable", "the approvals queue could not be read right now - retry this request; until a read succeeds, this answer does not mean nothing is pending");
1021
1000
  return;
1001
+ case "internal.error":
1002
+ throw err;
1022
1003
  default: {
1023
1004
  const unhandled = failure;
1024
1005
  throw new Error(`approvals read failure word without an answer: ${String(unhandled)}`);
@@ -1156,6 +1137,10 @@ export async function streamApprovals(req, res, cs, live, peerInbound, sessions,
1156
1137
  if (!res.writableEnded)
1157
1138
  res.write(`event: error\ndata: ${JSON.stringify({ type: "error", errorCode: "approvals.read_unavailable", message: "the approvals queue could not be read - this stream stays open and retries on its next poll; until a read succeeds, silence here does not mean nothing is pending" })}\n\n`);
1158
1139
  break;
1140
+ case "internal.error":
1141
+ if (!res.writableEnded)
1142
+ res.write(`event: error\ndata: ${JSON.stringify({ type: "error", errorCode: "internal.error", message: "the approvals queue could not be read because of an internal error - this stream is closing; reconnecting will fail the same way until the server is fixed" })}\n\n`);
1143
+ throw err;
1159
1144
  default: {
1160
1145
  const unhandled = failure;
1161
1146
  throw new Error(`approvals read failure word without a stream answer: ${String(unhandled)}`);
@@ -2,7 +2,7 @@ import { createHash } from "node:crypto";
2
2
  import { uuidv7, sanitizePathComponent } from "@sema-agent/core";
3
3
  import { HttpError } from "../../security.js";
4
4
  import { sendJson, sendError } from "../send.js";
5
- import { gatedPrincipal, sendPrincipalRefusal } from "../principal-gate.js";
5
+ import { gatedSubject, sendPrincipalRefusal } from "../principal-gate.js";
6
6
  import { assertNever } from "../route-ctx.js";
7
7
  import { attachmentKindOf, readProjectBundle } from "../../project-bundle.js";
8
8
  export async function handleAttachments(req, res, match, ctx) {
@@ -17,7 +17,7 @@ export async function handleAttachments(req, res, match, ctx) {
17
17
  sendError(res, 501, "capability.attachment_store_required", "attachment store not configured");
18
18
  return;
19
19
  }
20
- const principal = gatedPrincipal(req, deps.config);
20
+ const principal = gatedSubject(req, deps.config);
21
21
  if (deps.config.requirePrincipal && principal === undefined) {
22
22
  sendPrincipalRefusal(res, req, deps.config);
23
23
  return;
@@ -31,7 +31,7 @@
31
31
  * ── 结清口:子代结清只有一只协调器 ─────────────────────────────────────────────────────────────────
32
32
  * `POST /v1/sessions/:id/children/retire`(无体)→ 200 `{ children: string[] }`:**显式**结清以本会话为根的后台子代(running 停掉、parked
33
33
  * 作废卡并对账翻终态),与 `DELETE /v1/sessions/:id` 同调**一只**预检 `probeSessionChildren` 与**一只**协调器 `retireSessionChildren`
34
- * (`session-children-retire.ts`)、同一个 scope(`sessionChildrenScope`)。预检有本副本结束不了的 ⇒ 409 `conflict.session_children_alive{remaining}`
34
+ * (`session-children-retire.ts`)、同一个 scope(`sessionTenantScope`)。预检有本副本结束不了的 ⇒ 409 `conflict.session_children_alive{remaining}`
35
35
  * (与删除门同码同投影,一只都不动);停不净(时序失败)⇒ 与删除门同一失败契约(通用 500,重试收敛)。`children` = 首轮观察到、且已全部
36
36
  * 结清的子代,每项经名册的 id 投影 `rosterAgentId`(与换绑 / 导入两门 409 体的 `children` 同形同投影)。它不判根认领(停止口也不判):
37
37
  * 根 run 活着时它可再派子代 —— 由换绑 / 导入门写事务内的认领读兜。鉴权 / 限流 / 无凭据写门与停止口同。
@@ -39,7 +39,7 @@
39
39
  * 「把树结清」是两个意图、两只口。
40
40
  *
41
41
  * 🔴 **停止口在无凭据写门内**(`credentialGated: ["POST"]`;车OL F1 = 7.102.0 合并复审 gpt-6 腿 [high]):门的两个合取项它都中
42
- * —— ① 授权的唯一输入是 principal 头(属主判 `sessionOwnerOk` 与 operator 臂 `explicitOperatorOk` 读的都是 `gatedPrincipal`,
42
+ * —— ① 授权的唯一输入是 principal 头(属主判 `admitSessionRow` 与 operator 臂 `explicitOperatorOk` 读的都是 `gatedSubject`,
43
43
  * 无 service 凭证的部署上它收调用方自报的头);② 不可撤销、爆炸半径跨租户(知道会话 id + 自报它的属主 ⇒ 停掉那个会话的后台
44
44
  * 进程,`includeRetained:true` 连显式 retain 的活服务一起停)。于是无 service 凭证且未开 `ALLOW_UNAUTHED_WRITES` 的部署上它与
45
45
  * 其余改写门同码同句 503 `auth.service_token_required`(在路由之前,`dispatch.ts` 那一道),同一只会话级收敛函数的另一个调用点
@@ -49,7 +49,7 @@
49
49
  */
50
50
  import type { IncomingMessage, ServerResponse } from "node:http";
51
51
  import { type TaskRegistry, type BackgroundShellHardKillReceipt } from "@sema-agent/core";
52
- import { type RouteCtx, type RouteMatch, type RouteIdsOf } from "../route-ctx.js";
52
+ import type { RouteCtx, RouteMatch, RouteIdsOf } from "../route-ctx.js";
53
53
  /** `description` 的显示截断(模型描述通常一句话;回落的命令文本可能是一整段脚本)。 */
54
54
  export declare const DESCRIPTION_MAX = 500;
55
55
  /** core `list()` 的行型(从唯一的消费位取,不抄结构)。 */
@@ -1,15 +1,13 @@
1
1
  import { z } from "zod";
2
2
  import { defaultTaskRegistry } from "@sema-agent/core";
3
3
  import { reapSessionBackgroundHard } from "../../background-session-reap.js";
4
- import { probeSessionChildren, retireSessionChildren, sessionChildrenScope, SessionChildrenStopIncompleteError } from "../../session-children-retire.js";
4
+ import { probeSessionChildren, retireSessionChildren, sessionTenantScope, SessionChildrenStopIncompleteError } from "../../session-children-retire.js";
5
5
  import { rosterAgentId } from "./agents-roster.js";
6
6
  import { redactSecrets } from "../../trace/redact.js";
7
7
  import { sendJson, sendError } from "../send.js";
8
- import { gatedPrincipal, explicitOperatorOk, sendPrincipalRefusal } from "../principal-gate.js";
9
- import {} from "../route-ctx.js";
10
- import { assertNever, SESSION_NOT_FOUND_MESSAGE } from "../route-ctx.js";
8
+ import { admitSessionById, enter } from "../owner-access.js";
9
+ import { assertNever } from "../route-ctx.js";
11
10
  import * as facts from "../../capability-facts.js";
12
- import { sessionOwnerCellOf } from "../../security.js";
13
11
  const LIST_LIMIT = 500;
14
12
  export const DESCRIPTION_MAX = 500;
15
13
  const ROW_KEY_DISPOSITION = {
@@ -50,11 +48,9 @@ export async function handleBackground(req, res, match, ctx) {
50
48
  const id = match.decl.id;
51
49
  if ((id === "session-background-stop" || id === "session-children-retire") && ctx.helpers.rateLimited(req, res))
52
50
  return;
53
- const principal = gatedPrincipal(req, deps.config);
54
- if (deps.config.requirePrincipal && principal === undefined) {
55
- sendPrincipalRefusal(res, req, deps.config);
51
+ const entry = enter(req, res, deps, id);
52
+ if (entry === undefined)
56
53
  return;
57
- }
58
54
  let includeRetained = false;
59
55
  if (id === "session-background-stop") {
60
56
  const parsed = StopBodySchema.safeParse((await ctx.helpers.readJson(req)) ?? {});
@@ -74,15 +70,11 @@ export async function handleBackground(req, res, match, ctx) {
74
70
  sendError(res, 501, "capability.session_ownership_required", "the session background faces require the session-ownership face (sessionStorage.headOf)");
75
71
  return;
76
72
  }
77
- const owner = (await owned.sessionStorage.headOf(sessionId))?.owner;
78
- if (owner === undefined) {
79
- sendError(res, 404, "not_found.session", SESSION_NOT_FOUND_MESSAGE);
80
- return;
81
- }
82
- const operator = explicitOperatorOk(principal, deps.config);
83
- if (!operator && !ctx.helpers.sessionOwnerOk(req, res, await sessionOwnerCellOf(owned.sessionStorage, sessionId, owner)))
73
+ const admitted = await admitSessionById(entry, res, owned.sessionStorage, sessionId);
74
+ if (admitted === undefined)
84
75
  return;
85
- const scope = sessionChildrenScope(owner);
76
+ const owner = admitted.row.owner;
77
+ const scope = sessionTenantScope(owner);
86
78
  switch (id) {
87
79
  case "session-background-list": {
88
80
  const rows = defaultTaskRegistry.list({ owner: sessionId, sessionId, scope }, { limit: LIST_LIMIT }).map(projectRow);
@@ -2,10 +2,10 @@ import { PERMISSION_MODES, USER_ATTACHMENT_SEAT, expandTiers, reasoningEffortLev
2
2
  import { modelImageInput, modelReasoningDecl, isAtMentionable, selectableAliasNames, selectableCatalog } from "../../model-select.js";
3
3
  import { buildDroppedEntriesWire } from "../../web-admin-client/read-warnings.js";
4
4
  import { buildCandidateRejectedWire } from "../../web-admin-client/candidate-gate.js";
5
- import { buildModelPlaneFace } from "../../model-plane-face.js";
6
- import { isRosterGateArmed } from "../../config.js";
5
+ import { readModelPlaneFace } from "../../model-plane-face.js";
7
6
  import { modelKeyPoisonOf, resolveModelApiKey } from "../../key-resolver.js";
8
7
  import { projectSealedKeyCapability } from "../../sealed-key.js";
8
+ import { SESSION_READ_REDACTED_LEAVES } from "../../audit.js";
9
9
  import { DEPLOYMENT_SHAPE_PREDICATES } from "../../deployment-shape.js";
10
10
  import { taskWriteFaceRefusal } from "../../hosted-posture.js";
11
11
  import { leaderEntryRefusal, leaderRunEntry } from "../../leader/run-entry.js";
@@ -22,9 +22,10 @@ import { assertNever } from "../route-ctx.js";
22
22
  import { fileHistoryCaptureOf } from "../../file-history-capture.js";
23
23
  import { projectMemoryEngineCapability } from "../../memory-posture.js";
24
24
  import { projectWriteProtectionCapability } from "../../write-protection.js";
25
- import { projectStoreCapability } from "../../store-posture.js";
25
+ import { projectStoreCapability, unwiredStorePosture } from "../../store-posture.js";
26
26
  import { projectWebSearchCapability } from "../../plugins/web-search.js";
27
27
  import { projectExecutionLaneCapability } from "../../capabilities/execution-lane.js";
28
+ import { SETTINGS_CONTRACT_CAPABILITY } from "../../capabilities/settings-contract.js";
28
29
  import { judgeSandboxGitPlane, sandboxGitPlanePremisesOf } from "../../sandbox-git-plane.js";
29
30
  import { MCP_ASSERTION_HEADER_SENT, MCP_REQUEST_TRANSPORT_KINDS } from "../../mcp-assertion-header.js";
30
31
  import { gateCompositeMembers } from "../../capabilities/composite-members.js";
@@ -34,7 +35,7 @@ import { centerEntitlementSourceWired } from "../../runtime-caps-resolver.js";
34
35
  import * as facts from "../../capability-facts.js";
35
36
  import { judgeAutoModeArming } from "../../auto-mode-face.js";
36
37
  import { coercePermissionModeStrict, PERMISSION_MODE_WORDS, taskHooksHonored } from "../../task-settings.js";
37
- import { gatedPrincipal, sendPrincipalRefusal } from "../principal-gate.js";
38
+ import { gatedPerson, sendPrincipalRefusal } from "../principal-gate.js";
38
39
  import { readAdoptionImportCapability } from "../../adoption/import.js";
39
40
  import { headReadOf } from "../../session-incarnation.js";
40
41
  import { callerTrust } from "../caller-trust.js";
@@ -78,10 +79,10 @@ export async function handleCapabilities(req, res, match, ctx) {
78
79
  return;
79
80
  }
80
81
  const entitlementSource = centerEntitlementSourceWired(deps.config);
81
- const { fault: autoModeFault, ...autoMode } = await judgeAutoModeArming(deps.autoModeFace, { requestedMode, floor: autonomyModeFloor(deps.config.autonomy), principal: gatedPrincipal(req, deps.config), localDeny: deps.config.permissionsDisableAutoMode });
82
+ const { fault: autoModeFault, ...autoMode } = await judgeAutoModeArming(deps.autoModeFace, { requestedMode, floor: autonomyModeFloor(deps.config.autonomy), principal: gatedPerson(req, deps.config), localDeny: deps.config.permissionsDisableAutoMode });
82
83
  if (autoModeFault !== undefined)
83
84
  deps.logger?.warn("auto_mode_face_resolver_fault", { fault: autoModeFault });
84
- const rulesLaneForCaller = facts.ruleLaneForCaller(deps, gatedPrincipal(req, deps.config)).available;
85
+ const rulesLaneForCaller = facts.ruleLaneForCaller(deps, gatedPerson(req, deps.config)).available;
85
86
  const streamApprovalFact = facts.streamApproval(deps);
86
87
  sendJson(res, 200, gateCompositeMembers({
87
88
  ...deps.capabilities,
@@ -96,10 +97,10 @@ export async function handleCapabilities(req, res, match, ctx) {
96
97
  ? {
97
98
  enabled: true,
98
99
  protocolVersion: DEVICE_PROTOCOL_VERSION,
99
- maxInflightPerDevice: deps.config.remoteExec?.provider === "device" ? (deps.config.remoteExec.maxInflightPerDevice ?? 4) : 4,
100
+ maxInflightPerDevice: deps.config.remoteExec.provider === "device" ? (deps.config.remoteExec.maxInflightPerDevice ?? 4) : 4,
100
101
  wsPath: DEVICE_WS_PATH,
101
102
  management: facts.deviceManagement(deps).available,
102
- ...(deps.config.remoteExec?.provider === "device" && deps.config.remoteExec.relay.kind === "url" ? { relayUrl: deps.config.remoteExec.relay.url } : {}),
103
+ ...(deps.config.remoteExec.provider === "device" && deps.config.remoteExec.relay.kind === "url" ? { relayUrl: deps.config.remoteExec.relay.url } : {}),
103
104
  }
104
105
  : false,
105
106
  sessionEvents: facts.sessionEventStream(deps).available,
@@ -112,8 +113,8 @@ export async function handleCapabilities(req, res, match, ctx) {
112
113
  memory: false,
113
114
  memoryWrite: false,
114
115
  memoryEngine: projectMemoryEngineCapability(deps.memoryPosture),
115
- store: projectStoreCapability(deps.storePosture ?? { declared: deps.config.dbBackend, backend: "memory" }, deps.sqlEngine?.facts),
116
- centerWiring: deps.centerWiring?.(gatedPrincipal(req, deps.config)),
116
+ store: projectStoreCapability(deps.storePosture ?? unwiredStorePosture(deps.config.dbBackend), deps.sqlEngine?.facts),
117
+ centerWiring: deps.centerWiring?.(gatedPerson(req, deps.config)),
117
118
  webSearch: projectWebSearchCapability(deps.webSearchProvider),
118
119
  sessionBackgroundable: facts.durableRuns(deps).available,
119
120
  runMemoryCaptureOptOut: facts.durableRuns(deps).available,
@@ -122,7 +123,7 @@ export async function handleCapabilities(req, res, match, ctx) {
122
123
  sharedMemory: facts.sharedMemoryRead(deps).available,
123
124
  principalInboxDelivery: facts.principalInboxDelivery(deps).available,
124
125
  adoption: facts.adoption(deps).available,
125
- adoptionImport: await readAdoptionImportCapability(facts.adoptionSessionImport(deps), gatedPrincipal(req, deps.config), deps.config),
126
+ adoptionImport: await readAdoptionImportCapability(facts.adoptionSessionImport(deps), gatedPerson(req, deps.config), deps.config),
126
127
  memoryBundle: facts.memoryBundle(deps).available,
127
128
  memoryCompliance: facts.memoryCompliance(deps).available,
128
129
  memoryOrigin: facts.memoryOrigin(deps).available,
@@ -151,6 +152,7 @@ export async function handleCapabilities(req, res, match, ctx) {
151
152
  subagentResume: facts.subagentSteer(deps).available,
152
153
  taskSettings: { permissions: true, permissionMode: true, model: true, outputStyle: true, env: DEPLOYMENT_SHAPE_PREDICATES.callerCwd.holds(deps.config), hooks: taskHooksHonored(deps.config), pluginHooks: taskHooksHonored(deps.config), managedHookGroups: taskHooksHonored(deps.config), httpHookAllowlists: taskHooksHonored(deps.config), tightenOnlySeats: true, approvalFrameFamilies: true, autoCompactEnabled: true },
153
154
  settings: { permissions: { allowGrant: true, allowLayer: true, layers: true, layeredAllow: true, callerTrust: callerTrust(req, deps.config).trust } },
155
+ settingsContract: SETTINGS_CONTRACT_CAPABILITY,
154
156
  permissionModeAuto: {
155
157
  accepted: true,
156
158
  classifierSeat: deps.autoModeFace?.seatMounted === true,
@@ -201,11 +203,13 @@ export async function handleCapabilities(req, res, match, ctx) {
201
203
  approvalDecidedVia: true,
202
204
  planReviewCheckpointId: true,
203
205
  permissionModes: [...PERMISSION_MODES],
204
- sessionReadRedaction: true,
206
+ sessionReadRedaction: [...SESSION_READ_REDACTED_LEAVES],
205
207
  sideQuery: true,
206
208
  agentRoster: facts.agentRoster(deps).available,
209
+ projects: facts.projectRegistry(deps).available,
207
210
  retention: retentionAdvertisement(deps.config),
208
211
  peerLane: Boolean(deps.peerDirectory),
212
+ scenarioSubject: true,
209
213
  sessionList: facts.sessionList(deps).available,
210
214
  sessionSearch: facts.sessionList(deps).available,
211
215
  sessionFork: facts.sessionFork(deps).available,
@@ -214,9 +218,10 @@ export async function handleCapabilities(req, res, match, ctx) {
214
218
  promptSuggestions: true,
215
219
  sessionPolicy: facts.sessionPolicy(deps).available,
216
220
  sessionRulesNamespaceForms: sessionRulesNamespaceFormsHonored(),
217
- rewindFiles: Boolean(deps.fileHistoryStore),
218
221
  restoreFiles: Boolean(deps.fileHistoryStore),
219
222
  rewindFilesTo: Boolean(deps.fileHistoryStore && deps.resumeAnchorStore && headReadOf(deps.sessionStorage)),
223
+ sessionRewindFiles: facts.sessionRewindFiles(deps).available,
224
+ sessionRewindFilesPreview: facts.sessionRewindFilesPreview(deps).available,
220
225
  fileHistoryCapture: fileHistoryCaptureOf(deps.fileHistoryStore, deps.config.fileHistoryCapture),
221
226
  scheduler: facts.hostScheduler(deps.config).available,
222
227
  sessionSync: facts.sessionSync(deps).available,
@@ -249,7 +254,7 @@ export async function handleCapabilities(req, res, match, ctx) {
249
254
  return;
250
255
  }
251
256
  case "capability-mcp": {
252
- const principal = gatedPrincipal(req, deps.config);
257
+ const principal = gatedPerson(req, deps.config);
253
258
  if (deps.config.requirePrincipal && !principal) {
254
259
  sendPrincipalRefusal(res, req, deps.config);
255
260
  return;
@@ -264,7 +269,7 @@ export async function handleCapabilities(req, res, match, ctx) {
264
269
  return;
265
270
  }
266
271
  case "capability-mcp-probe": {
267
- const principal = gatedPrincipal(req, deps.config);
272
+ const principal = gatedPerson(req, deps.config);
268
273
  if (deps.config.requirePrincipal && !principal) {
269
274
  sendPrincipalRefusal(res, req, deps.config);
270
275
  return;
@@ -298,6 +303,8 @@ export async function handleCapabilities(req, res, match, ctx) {
298
303
  ...(m.maxTokens ? { maxOutputTokens: m.maxTokens } : {}),
299
304
  ...((levels) => (levels !== undefined ? { supportedEffortLevels: [...levels] } : {}))(reasoningEffortLevelsOf(m)),
300
305
  ...(m.compat !== undefined ? { compat: m.compat } : {}),
306
+ ...(m.thinkingLevelMap !== undefined ? { thinkingLevelMap: m.thinkingLevelMap } : {}),
307
+ ...(m.defaultThinking !== undefined ? { defaultThinking: m.defaultThinking } : {}),
301
308
  ...mentionBit(name),
302
309
  routePairing: routePairingOf(deps, name, m),
303
310
  }));
@@ -310,11 +317,7 @@ export async function handleCapabilities(req, res, match, ctx) {
310
317
  defaultModel: { id: deps.config.model.id, ...(defaultName ? { name: defaultName } : {}) },
311
318
  droppedEntries: buildDroppedEntriesWire(deps.config.droppedCatalogEntries),
312
319
  ...(candidateRejection !== undefined ? { candidateRejected: buildCandidateRejectedWire(candidateRejection) } : {}),
313
- modelPlane: buildModelPlaneFace(deps.config, {
314
- envTableIsPlaceholder: isRosterGateArmed(deps.config.webAdmin),
315
- candidateRejection,
316
- latestPlaneRefusal: deps.latestPlaneRefusalState?.(),
317
- }),
320
+ modelPlane: readModelPlaneFace(deps.config, deps),
318
321
  aliases: selectableAliasNames(deps.config.models, atCatalog, deps.config.modelRefusals).map((name) => ({ name, ...mentionBit(name) })),
319
322
  });
320
323
  return;