@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
package/dist/audit.d.ts CHANGED
@@ -2,6 +2,7 @@ import { type StoredPromptEpoch } from "@sema-agent/core";
2
2
  import type { Pool } from "mysql2/promise";
3
3
  import type { Pool as PgPool } from "pg";
4
4
  import { type LocalSessionRows } from "./plugins/local-session-window.js";
5
+ import type { Subject } from "./owner-brands.js";
5
6
  /**
6
7
  * Audit view of a session = its **current context** (the live messages + the last compaction's
7
8
  * summary), i.e. the floor-bounded window — never the full raw transcript. This matches the
@@ -38,10 +39,10 @@ export type RewindHandles = ReadonlyMap<string, string>;
38
39
  /** 会话视图读口(`ServiceDeps.sessionAudit`)的读者参数:`reader` = 读这张视图的**已验身份**(无身份 = `null`)。给了 ⇒ 这是一次**视图读**:用户消息行投回退手柄、体顶层投 `agent`(`session-agent.ts` 的 `readSessionAgent`);
39
40
  * 不给(只要归属的调用方:memory-status / 自助抹除)⇒ 两样投影的读都不付。 */
40
41
  export interface SessionAuditReadOpts {
41
- readonly reader: string | null;
42
+ readonly reader: Subject | null;
42
43
  }
43
44
  /**
44
- * {@link RewindHandles} 的唯一铸点。一条规则:**一只用户条目带手柄,当且仅当锚店里恰好一行 `entry_id` = 它、`owner` = 读者** ——
45
+ * {@link RewindHandles} 的唯一铸点。一条规则:**一只用户条目带手柄,当且仅当锚店里恰好一行 `entry_id` = 它、`owner` = 读者**(存储键的桥 `owner-faces.ts` 的 `sameKey`:锚属主经 `ownerKeyOf` 成键,null 只同 null)——
45
46
  * 这正是 `resumeAt` 解析的谓词(`resolve(sessionId, eventId, owner)`:同会话、同 event、属主 null-safe 相等),所以行上出现的手柄
46
47
  * 读者拿去回退一定解得出;别人的锚(混属主会话)不投,同一条目被两行锚点名不挑(两只都缺席,不猜)。老条目没有锚 ⇒ 缺席。
47
48
  * E18 助手文本锚(按 live eventId 键入,指向助手条目)也在锚店里 —— 它们只会点名助手条目,投影只看用户行,所以不上 wire。
@@ -50,7 +51,7 @@ export declare function buildRewindHandles(anchors: ReadonlyArray<{
50
51
  readonly eventId: string;
51
52
  readonly entryId: string;
52
53
  readonly owner: string | null;
53
- }>, reader: string | null): RewindHandles;
54
+ }>, reader: Subject | null): RewindHandles;
54
55
  /** Build the audit view from the durable log. Returns undefined if the session does not exist. `handles` = the reader's
55
56
  * rewind-handle projection ({@link buildRewindHandles}); absent ⇒ no `taskId` keys. */
56
57
  export declare function buildSessionAudit(pool: Pool, sessionId: string, handles?: RewindHandles): Promise<SessionAudit | undefined>;
@@ -63,6 +64,12 @@ export declare function buildSessionAuditPg(pool: PgPool, sessionId: string, han
63
64
  * floor — and on every backend that is what the run reads: the SQL twins' run wakes the same window; the local run wakes the whole
64
65
  * tree, and the local window is cut from that tree's branch, with the anchor walking the branch below the floor. */
65
66
  export declare function buildSessionAuditLocal(rows: LocalSessionRows, sessionId: string, handles?: RewindHandles): Promise<SessionAudit | undefined>;
67
+ /**
68
+ * 🔴 **历史读面过脱敏的叶名表**(能力位 `sessionReadRedaction` 的唯一来源)= {@link SESSION_READ_SHAPES} 里处置词不是 `"verbatim"` 的每一叶,写作 `<形>.<键>`(表序)。
69
+ * 不在表里的叶是**逐字**的(人写的输入、标识 / join 键、闭集词、数字);表外的键 / 角色 / 段类型整只深扫、从不放行,不进名单(名单只列表上登记过的叶)。
70
+ * `"parts"` 叶(`assistant.content` / `toolResult.content` / `attachmentFrame.content`)按段表读:文本段 / reasoning 段 / 工具实参脱,图片 / 文档字节与签名逐字。
71
+ */
72
+ export declare const SESSION_READ_REDACTED_LEAVES: readonly string[];
66
73
  /**
67
74
  * 🔴 **会话视图的读面口 —— `GET /v1/sessions/:id` 的全部取法(整读 / `?tail` / `?before` / `?blobCap` / `?message=N`)共用这一只**。
68
75
  * 次序 = **选 → 脱 → 截**(路由 `http/routes/sessions.ts`):整条消息的选窗不切字符串,先选窗不改任何一条的脱敏读数、只把脱敏的量降到选中的那几条;
package/dist/audit.js CHANGED
@@ -6,10 +6,11 @@ import { redactModelText } from "./observability/run-terminal.js";
6
6
  import { redactDeepWith } from "./trace/redact.js";
7
7
  import { projectToolStructured } from "./trace/tool-output-media.js";
8
8
  import { INJECTED_BLOCK_RE, isAttachmentFrame } from "./user-authored-text.js";
9
+ import { ownerKeyOf, sameKey } from "./owner-faces.js";
9
10
  export function buildRewindHandles(anchors, reader) {
10
11
  const byEntry = new Map();
11
12
  for (const a of anchors) {
12
- if ((a.owner ?? null) !== reader)
13
+ if (!sameKey(reader, ownerKeyOf(a.owner ?? null)))
13
14
  continue;
14
15
  byEntry.set(a.entryId, byEntry.has(a.entryId) && byEntry.get(a.entryId) !== a.eventId ? null : a.eventId);
15
16
  }
@@ -144,14 +145,21 @@ const MESSAGE_READ_TREATMENT = {
144
145
  },
145
146
  };
146
147
  const ATTACHMENT_FRAME_READ_TREATMENT = { ...MESSAGE_READ_TREATMENT.user, content: "parts" };
148
+ const SESSION_READ_SHAPES = { ...MESSAGE_READ_TREATMENT, attachmentFrame: ATTACHMENT_FRAME_READ_TREATMENT };
149
+ export const SESSION_READ_REDACTED_LEAVES = Object.freeze(Object.entries(SESSION_READ_SHAPES).flatMap(([shape, table]) => Object.entries(table)
150
+ .filter(([, treatment]) => treatment !== "verbatim")
151
+ .map(([key]) => `${shape}.${key}`)));
152
+ function shapeOf(m) {
153
+ const role = m.role;
154
+ if (role === "user" && isAttachmentFrame(m))
155
+ return "attachmentFrame";
156
+ return typeof role === "string" && Object.hasOwn(MESSAGE_READ_TREATMENT, role) ? role : undefined;
157
+ }
147
158
  function readMessage(m) {
148
159
  if (isPlainRecord(m)) {
149
- const role = m.role;
150
- if (role === "user" && isAttachmentFrame(m))
151
- return readByTable(m, ATTACHMENT_FRAME_READ_TREATMENT);
152
- if (typeof role === "string" && Object.hasOwn(MESSAGE_READ_TREATMENT, role)) {
153
- return readByTable(m, MESSAGE_READ_TREATMENT[role]);
154
- }
160
+ const shape = shapeOf(m);
161
+ if (shape !== undefined)
162
+ return readByTable(m, SESSION_READ_SHAPES[shape]);
155
163
  }
156
164
  return deepScrub(m);
157
165
  }
@@ -2,20 +2,6 @@ import { VerifiedIdentity, type AuthBridgeErrorCode } from "@sema-agent/settings
2
2
  import { type TokenScopeRefusal } from "@sema-agent/settings-schema/api/scopes";
3
3
  import type { Logger } from "./observability/logger.js";
4
4
  import type { Metrics } from "./observability/metrics.js";
5
- /**
6
- * [ref] ② —— 鉴权桥 issuer 的**唯一**取值(装配 `boot/stage-09-leader.ts` 与 caps `centerWiring.issuer` 同读,不各写一份回退):
7
- * 显式 `AUTH_BRIDGE_ISSUER`(`config.authBridgeIssuer`)恒赢 ⇒ `source:"explicit"`;缺席则回退中心基址 `webAdmin.baseUrl`
8
- * (配了中心即默认开桥)⇒ `source:"fallback"`;两者都没有 ⇒ `undefined`(桥不装)。
9
- */
10
- export declare function authBridgeIssuerOf(config: {
11
- readonly authBridgeIssuer?: string | undefined;
12
- readonly webAdmin?: {
13
- readonly baseUrl: string;
14
- } | undefined;
15
- }): {
16
- readonly issuer: string;
17
- readonly source: "explicit" | "fallback";
18
- } | undefined;
19
5
  export interface WebAdminJwtVerifierOptions {
20
6
  /** R4 — 期望 iss(registry 的 SSO_ISSUER;默认=SEMA_WEB_ADMIN_URL,双侧去尾斜杠比较)。 */
21
7
  issuer: string;
@@ -72,14 +58,22 @@ type ReportedOutcome = {
72
58
  * (调用方按验证失败处置:不设身份 ⇒ 门答 generic 401)。验证失败的结局验证器自己已记过账,这里只答「不装」。
73
59
  */
74
60
  export declare function admitBridgeIdentity(outcome: ReportedOutcome, sinks: BridgeSinks): BridgeIdentity | undefined;
75
- /** The live object `createWebAdminJwtVerifier` produces — a single `verify` entry point over the process-level JWKS cache. */
61
+ /**
62
+ * The live object `createWebAdminJwtVerifier` produces — a single `verify` entry point over the process-level JWKS cache, and the issuer it verifies for.
63
+ * This is also the type of the injected seat (`ServiceDeps.webAdminJwtVerifier`): an embedder's verifier states which issuer it verifies, so `createHttpServer`
64
+ * can pair it with the config's bridge ("which issuer does this deployment accept" has one source — the config — and one comparison, at that seat).
65
+ */
76
66
  export interface WebAdminJwtVerifier {
67
+ /** The issuer this verifier verifies tokens for, in {@link normalizeBridgeIssuer} form (what the R4 `iss` check compares against). The factory mints it from its own option; the seat compares it with the config's reading. */
68
+ readonly issuer: string;
77
69
  verify: (bearer: string) => Promise<VerifyOutcome>;
78
70
  }
79
71
  /** 缓存键的常规刷新周期缺省(秒):过期后下一发在后台重拉,当前请求不等。 */
80
72
  export declare const DEFAULT_JWKS_TTL_SEC: number;
81
73
  /** 一次 JWKS 拉取的时限(毫秒):kid 未知、超离线宽限、后台刷新三条路用同一只拉取,同一个时限。 */
82
74
  export declare const JWKS_FETCH_TIMEOUT_MS = 10000;
75
+ /** The one normal form of a bridge issuer: trailing slashes folded. The R4 `iss` check compares both sides in this form, and the `createHttpServer` pairing seat compares the verifier's {@link WebAdminJwtVerifier.issuer} with the config's reading in this same form (one reading, so the two can never disagree about what "the same issuer" means). */
76
+ export declare const normalizeBridgeIssuer: (s: string) => string;
83
77
  /**
84
78
  * registry-JWT verifier(单例,进程级 JWKS 缓存)。`verify(bearer)` 全程不 throw——一切异常折为拒因闭集
85
79
  * {@link AuthBridgeRefusal}(HTTP 面由调用方恒答 generic 401,码只进日志/metrics,R9)。
@@ -3,13 +3,6 @@ import { AUTH_BRIDGE_ALGS, DEFAULT_CLOCK_SKEW_SEC, DEFAULT_JWKS_REFRESH_MIN_INTE
3
3
  import { readTokenScope } from "@sema-agent/settings-schema/api/scopes";
4
4
  import { buildDisplaySafeUrl } from "./trace/redact.js";
5
5
  import { centerJwksFetch } from "./web-admin-client/center-request.js";
6
- export function authBridgeIssuerOf(config) {
7
- if (config.authBridgeIssuer !== undefined)
8
- return { issuer: config.authBridgeIssuer, source: "explicit" };
9
- if (config.webAdmin !== undefined)
10
- return { issuer: config.webAdmin.baseUrl, source: "fallback" };
11
- return undefined;
12
- }
13
6
  function recordBridgeRefusal(sinks, error, at = {}) {
14
7
  sinks.metrics?.inc("auth_bridge_verify_total", { outcome: error });
15
8
  sinks.logger?.warn?.("auth_bridge_rejected", { error, ...(at.kid ? { kid: at.kid.slice(0, 128) } : {}), ...(at.iss !== undefined ? { iss: at.iss } : {}) });
@@ -47,9 +40,9 @@ function b64urlJson(seg) {
47
40
  return undefined;
48
41
  }
49
42
  }
50
- const stripSlash = (s) => s.replace(/\/+$/, "");
43
+ export const normalizeBridgeIssuer = (s) => s.replace(/\/+$/, "");
51
44
  export function createWebAdminJwtVerifier(opts) {
52
- const issuer = stripSlash(opts.issuer);
45
+ const issuer = normalizeBridgeIssuer(opts.issuer);
53
46
  const displayIssuer = buildDisplaySafeUrl(issuer);
54
47
  const jwksUrl = opts.jwksUrl ?? `${issuer}${WEB_ADMIN_JWKS_PATH}`;
55
48
  const clockSkewSec = opts.clockSkewSec ?? DEFAULT_CLOCK_SKEW_SEC;
@@ -129,7 +122,7 @@ export function createWebAdminJwtVerifier(opts) {
129
122
  const kid = typeof header.kid === "string" ? header.kid : undefined;
130
123
  if (!kid)
131
124
  return fail("malformed");
132
- const iss = typeof payload.iss === "string" ? stripSlash(payload.iss) : undefined;
125
+ const iss = typeof payload.iss === "string" ? normalizeBridgeIssuer(payload.iss) : undefined;
133
126
  if (iss !== issuer)
134
127
  return fail("unknown_issuer", kid);
135
128
  if (classifyTimeClaims(payload, Math.floor(now() / 1000), clockSkewSec) !== "ok")
@@ -170,6 +163,6 @@ export function createWebAdminJwtVerifier(opts) {
170
163
  opts.metrics?.inc("auth_bridge_verify_total", { outcome: "ok" });
171
164
  return { ok: true, identity: { ...mapped.identity, scope: scoped.scope } };
172
165
  }
173
- return { verify };
166
+ return { issuer, verify };
174
167
  }
175
168
  //# sourceMappingURL=auth-bridge.js.map
@@ -2,7 +2,8 @@
2
2
  * AUTH KEY-SET parsing ([ref] A4) — the env→key-set decoders for the two D-G credential planes, moved VERBATIM
3
3
  * out of security.ts: {@link parseApprovalHmacKeys} (APPROVAL_HMAC_KEYS — the rotating HMAC secret set, decision
4
4
  * INTEGRITY) and {@link parsePrincipalJwks} (PRINCIPAL_JWT_PUBKEYS — the rotating issuer public-key set, principal
5
- * IDENTITY). config.ts consumes ONLY these two functions + their row types at env-load time, and importing them from
5
+ * IDENTITY), plus {@link parseServiceAuthTokens} (SERVICE_AUTH_TOKENS — the per-system service token table). config.ts consumes
6
+ * these decoders + their row types at env-load time, and importing them from
6
7
  * security.ts made the base config layer value-depend on the whole 55KiB auth module (lens2 §F). This file is a pure
7
8
  * leaf (JSON.parse + shape filters, zero repo imports); the VERIFIERS that consume the parsed key-sets
8
9
  * (verifyApprovalHmac / verifyPrincipalJwt) stay in ./approval-hmac.ts and ./principal-jwt.ts; consumers import these four names from HERE ([ref] 兼容面全清).
@@ -54,4 +55,12 @@ export interface PrincipalJwtKey {
54
55
  * [ref]: fail-closed 语义逐字不变,但每条被丢弃的条目经 `onReject` 报出(序号 + 缺陷字段名,不带值)——
55
56
  * 这里的 key 是**公**钥,但 reason 仍只说字段名,与 HMAC 那条同形(两个出口的口径不该分岔)。 */
56
57
  export declare function parsePrincipalJwks(raw: string | undefined, onReject: OnKeySetRejection): PrincipalJwtKey[];
58
+ /**
59
+ * Parse SERVICE_AUTH_TOKENS — the per-system service credential table, `tok=system` pairs separated by commas (token →
60
+ * system name; the `source` of a run is derived from the token, never self-asserted). Each pair is trimmed and split at
61
+ * its FIRST `=` (a system name may hold `=`); a pair without `=`, or with an empty token or system, is not an entry.
62
+ * THE one reading: `loadConfig` builds `authTokens` from it, and the withheld table declares each token as a credential
63
+ * value of its own (`server-secret-env.ts`) — a copy of one token under another variable name is the same credential.
64
+ */
65
+ export declare function parseServiceAuthTokens(raw: string | undefined): Record<string, string>;
57
66
  //# sourceMappingURL=auth-keys.d.ts.map
package/dist/auth-keys.js CHANGED
@@ -63,4 +63,12 @@ export function parsePrincipalJwks(raw, onReject) {
63
63
  });
64
64
  return out;
65
65
  }
66
+ export function parseServiceAuthTokens(raw) {
67
+ return Object.fromEntries((raw ?? "")
68
+ .split(",")
69
+ .map((s) => s.trim())
70
+ .filter((s) => s.includes("="))
71
+ .map((s) => [s.slice(0, s.indexOf("=")).trim(), s.slice(s.indexOf("=") + 1).trim()])
72
+ .filter(([tok, sys]) => tok.length > 0 && sys.length > 0));
73
+ }
66
74
  //# sourceMappingURL=auth-keys.js.map
@@ -45,7 +45,8 @@
45
45
  * `entitlementSource`(既有位)说的是「center 源在不在」;`armed` 说的是「按三态谓词此刻会不会武装」。
46
46
  * 两者刻意并存:前者告诉壳有没有组织面,后者告诉壳这台机器上 auto 到底是不是 default 的别名。
47
47
  */
48
- import { type PermissionMode, type RunnerDeps, type RuntimeCaps } from "@sema-agent/core";
48
+ import { type PermissionMode, type RunnerDeps } from "@sema-agent/core";
49
+ import type { AutoModeRefusedBy, RuntimeCapsReading } from "./runtime-caps-resolver.js";
49
50
  /**
50
51
  * 分类器席的模型 —— **调 core 的单一解析器** `classifierSeatModel({deps, main})`(core 7.20.0 / [ref],
51
52
  * 本仓 [ref] 的跨仓诉求兑现;契约句 `classifier.seat.one_resolver` 逐字:引擎的武装点与**显示这个席**
@@ -97,10 +98,10 @@ export interface AutoModeFaceDeps {
97
98
  /** `RunnerDeps.autoMode !== undefined`——**读**装配点那一位,不写字面 true(与 parked-revive 的
98
99
  * `autoModeSeatMounted` 同一纪律:席位哪天改成有条件挂载,这里不能静默错供)。 */
99
100
  readonly seatMounted: boolean;
100
- /** 合成后的 per-principal caps resolver(= 递给 `RunnerDeps.runtimeCapsResolver` 的同一只:center 客户端
101
- * → observer env 基线 → memory grant → 本地 auto deny,单一属主 boot/runtime-caps.ts)。缺席 = 无任何
102
- * per-principal 源(无 center、无本地 deny)⇒ caps undefined ⇒ 三态之「缺席=不阻」。 */
103
- readonly resolveCaps?: ((principal: string | undefined) => RuntimeCaps | undefined | Promise<RuntimeCaps | undefined>) | undefined;
101
+ /** 合成后的 per-principal caps **读数**(与递给 `RunnerDeps.runtimeCapsResolver` 同一段合成:center 客户端
102
+ * → observer env 基线 → memory grant → 本地 auto deny,单一属主 boot/runtime-caps.ts 的 `runtimeCapsPeekReading`);读数里的 caps 与中心拒 auto 的来源词
103
+ * 出自同一个缓存项。缺席 = 无任何 per-principal 源(无 center、无本地 deny)⇒ caps undefined ⇒ 三态之「缺席=不阻」。 */
104
+ readonly resolveCaps?: ((principal: string | undefined) => RuntimeCapsReading | Promise<RuntimeCapsReading>) | undefined;
104
105
  /** 分类器**配置**的模型路由(server 侧按 core 的 role 回落序 `classifier → summarize → default` 从
105
106
  * `config.roles` 读到的 catalog 名)。这是「配置了什么」,不是「这次真用了什么」——core 的
106
107
  * `derivedRouteFallsBack` 可能在运行期回落到主模型;真值候 core 状态座。
@@ -115,8 +116,10 @@ export type AutoModeVerdict = {
115
116
  } | {
116
117
  readonly armed: false;
117
118
  readonly reason: AutoModeUnarmedReason;
118
- readonly model?: string; /** 仅 resolver_fault 臂:错误原文(不上 wire,路由记 warn)。 */
119
- readonly fault?: string;
119
+ readonly model?: string;
120
+ /** 仅 `org_denied` 臂、且中心亲口拒了 auto 时:是中心的哪一键拒的(上 wire 的 `permissionModeAuto.refusedBy`)。中心硬失败的 fail-closed 拒是本层自铸的,不带。 */
121
+ readonly refusedBy?: AutoModeRefusedBy;
122
+ /** 仅 resolver_fault 臂:错误原文(不上 wire,路由记 warn)。 */ readonly fault?: string;
120
123
  };
121
124
  /**
122
125
  * 三项合取的 server 侧裁决。`requestedMode` 缺席 = 按 auto 意图答(「若请求会不会武装」);`principal` =
@@ -28,15 +28,18 @@ export async function judgeAutoModeArming(face, input) {
28
28
  return { armed: false, reason: entry.clamped ? "operator_floor" : "mode_not_auto", ...model };
29
29
  if (face === undefined || !face.seatMounted)
30
30
  return { armed: false, reason: "deployment_incapable" };
31
- let caps;
31
+ let reading;
32
32
  try {
33
- caps = face.resolveCaps !== undefined ? await face.resolveCaps(input.principal) : undefined;
33
+ reading = face.resolveCaps !== undefined ? await face.resolveCaps(input.principal) : undefined;
34
34
  }
35
35
  catch (err) {
36
36
  return { armed: false, reason: "resolver_fault", ...model, fault: err instanceof Error ? err.message : String(err) };
37
37
  }
38
- if (caps?.autoMode === false)
39
- return { armed: false, reason: input.localDeny ? "local_denied" : "org_denied", ...model };
38
+ if (reading?.caps?.autoMode === false) {
39
+ if (input.localDeny)
40
+ return { armed: false, reason: "local_denied", ...model };
41
+ return { armed: false, reason: "org_denied", ...model, ...(reading.autoModeRefusedBy !== undefined ? { refusedBy: reading.autoModeRefusedBy } : {}) };
42
+ }
40
43
  return { armed: true, ...model };
41
44
  }
42
45
  //# sourceMappingURL=auto-mode-face.js.map
@@ -1,5 +1,23 @@
1
+ /** 一行的名字读出来没有(判别式):读不出 = 这一行是**坏行**(无名 ∧ 句柄不是引擎形),`problem` 是给人读的一句话(进店的拒绝 / 跳行明细)。 */
2
+ export type BackgroundAgentNameRead = {
3
+ readonly ok: true;
4
+ readonly name: string;
5
+ } | {
6
+ readonly ok: false;
7
+ readonly problem: string;
8
+ };
9
+ /**
10
+ * 名字的**唯一读法**(上面那条规则)。判据 = 引擎自己的判据:`engineAgentName` 只为 `DURABLE_AGENT_HANDLE_RE` 形的句柄派生名字(core 导出的同一只正则),
11
+ * 于是「读不出」与「引擎会抛」是同一个事实,不是本仓另写一份判法。坏行怎么处置由读口按形定(后台子代店:按键读带码拒、列表只在证得不活时跳过 ——
12
+ * `stores-sql/background-agent-store-sql.ts`);单行读者用 {@link backgroundAgentNameOf}。
13
+ */
14
+ export declare function readBackgroundAgentName(row: {
15
+ readonly name?: string | null;
16
+ readonly handle: string;
17
+ }): BackgroundAgentNameRead;
18
+ /** 单行读者的出口(停驻卡的复活参数、名册投影、写口的展示列):读不出 ⇒ 响亮抛(`TypeError`,与引擎同类)。 */
1
19
  export declare function backgroundAgentNameOf(row: {
2
- readonly name?: string;
20
+ readonly name?: string | null;
3
21
  readonly handle: string;
4
22
  }): string;
5
23
  //# sourceMappingURL=background-agent-name.d.ts.map
@@ -1,5 +1,15 @@
1
- import { engineAgentName } from "@sema-agent/core";
1
+ import { DURABLE_AGENT_HANDLE_RE, engineAgentName } from "@sema-agent/core";
2
+ export function readBackgroundAgentName(row) {
3
+ if (row.name !== undefined && row.name !== null)
4
+ return { ok: true, name: row.name };
5
+ if (!DURABLE_AGENT_HANDLE_RE.test(row.handle))
6
+ return { ok: false, problem: `the row carries no name and its handle ${JSON.stringify(row.handle)} is not an engine agent handle ("a" + 6–32 hex digits), so no name can be derived` };
7
+ return { ok: true, name: engineAgentName(row.handle) };
8
+ }
2
9
  export function backgroundAgentNameOf(row) {
3
- return row.name ?? engineAgentName(row.handle);
10
+ const read = readBackgroundAgentName(row);
11
+ if (!read.ok)
12
+ throw new TypeError(`backgroundAgentNameOf: ${read.problem}`);
13
+ return read.name;
4
14
  }
5
15
  //# sourceMappingURL=background-agent-name.js.map
@@ -11,7 +11,7 @@ export interface HardKillTally {
11
11
  /**
12
12
  * 受据的**唯一读者**:逐行一条 `background_shell_hard_kill`(`{ taskId, type, outcome, reason, owner?, retained? }` —— 不带
13
13
  * pid / shellId:core 契约「pid 不出 env」,受据上本来就没有),返回四词计数。本函数自己不抛;注入形 logger 若抛,异常**原样上抛**
14
- * 给调用方(kill 已在调用前落地,受据不丢):退出边界与 E21 级联各自在外层 try 里 warn / `console.error`(生产 sink 不抛,
14
+ * 给调用方(kill 已在调用前落地,受据不丢):退出边界与 E21 级联各自在外层 try 里 warn / 接缝的文本出口 `writeLogText`(生产 sink 不抛,
15
15
  * `observability/logger.ts` 的 `emit` 已包),停止口则让它走全局 500 —— 不在这里写静默的空 catch([ref] 棘轮)。
16
16
  * `outcome` 按 core 闭集穷举分派:集外词 = 编译红(`never` 臂),不是运行期的静默默认。
17
17
  */
@@ -1,12 +1,14 @@
1
1
  import { spawn } from "node:child_process";
2
2
  import { readFile } from "node:fs/promises";
3
3
  import { createLogger } from "../observability/logger.js";
4
+ import { createEgressFetch } from "../egress-redirect.js";
4
5
  import { logConfigDiagnostics, parseEnvNameAllowlist, parseNumOrFailNonNegative } from "../config.js";
5
6
  import { installSecretEnvScrubRecorder } from "../observability/secret-env-scrub.js";
6
7
  import { declareServerWithheldEnv, hostSubprocessEnv } from "../server-secret-env.js";
7
8
  import { shellQuote as shellSafe } from "../plugins/remote-shell.js";
8
9
  import { echoCallerText } from "../caller-text-echo.js";
9
10
  import { BakeRunner, } from "./runner.js";
11
+ import { readUpstreamJson } from "../upstream-body.js";
10
12
  const BAKE_CLAIM_INGEST_FETCH_TIMEOUT_MS = 30_000;
11
13
  const BAKE_HEARTBEAT_FETCH_TIMEOUT_MS = 10_000;
12
14
  const BAKE_HOST_PROBE_TIMEOUT_MS = 10_000;
@@ -37,9 +39,10 @@ function loadEnv() {
37
39
  }
38
40
  function makeApiClient(env, log) {
39
41
  const auth = { authorization: `Bearer ${env.token}`, "content-type": "application/json" };
42
+ const egressFetch = createEgressFetch("declare the final image-api address as IMAGE_API_BASE");
40
43
  return {
41
44
  async claimNext() {
42
- const res = await fetch(`${env.imageApiBase}/v1/images/bakes/claim`, {
45
+ const res = await egressFetch(`${env.imageApiBase}/v1/images/bakes/claim`, {
43
46
  method: "POST",
44
47
  headers: auth,
45
48
  body: JSON.stringify({ runnerId: env.runnerId }),
@@ -51,7 +54,7 @@ function makeApiClient(env, log) {
51
54
  log.warn("bake_claim_rejected", { status: res.status });
52
55
  return null;
53
56
  }
54
- const c = (await res.json());
57
+ const c = (await readUpstreamJson(res));
55
58
  if (!c.bakeId || !Array.isArray(c.argv) || !c.ingestSecret) {
56
59
  log.warn("bake_claim_malformed", { status: res.status, bakeId: typeof c.bakeId === "string" ? c.bakeId : undefined });
57
60
  return null;
@@ -68,7 +71,7 @@ function makeApiClient(env, log) {
68
71
  };
69
72
  },
70
73
  async ingest(bakeId, ingestSecret, frame) {
71
- const res = await fetch(`${env.imageApiBase}/v1/images/bakes/${encodeURIComponent(bakeId)}/ingest`, {
74
+ const res = await egressFetch(`${env.imageApiBase}/v1/images/bakes/${encodeURIComponent(bakeId)}/ingest`, {
72
75
  method: "POST",
73
76
  headers: { ...auth, "x-bake-ingest-secret": ingestSecret },
74
77
  body: JSON.stringify(frame),
@@ -77,13 +80,13 @@ function makeApiClient(env, log) {
77
80
  await res.arrayBuffer().catch(() => undefined);
78
81
  },
79
82
  async heartbeat(bakeId, ingestSecret) {
80
- const res = await fetch(`${env.imageApiBase}/v1/images/bakes/${encodeURIComponent(bakeId)}/ingest`, {
83
+ const res = await egressFetch(`${env.imageApiBase}/v1/images/bakes/${encodeURIComponent(bakeId)}/ingest`, {
81
84
  method: "POST",
82
85
  headers: { ...auth, "x-bake-ingest-secret": ingestSecret },
83
86
  body: JSON.stringify({ event: "heartbeat" }),
84
87
  signal: AbortSignal.timeout(BAKE_HEARTBEAT_FETCH_TIMEOUT_MS),
85
88
  });
86
- const body = res.ok ? (await res.json().catch(() => ({}))) : {};
89
+ const body = res.ok ? (await readUpstreamJson(res).catch(() => ({}))) : {};
87
90
  return {
88
91
  accepted: res.ok,
89
92
  cancelRequested: body.cancelRequested === true,
@@ -304,7 +307,7 @@ async function main() {
304
307
  const invokedDirectly = process.argv[1] !== undefined && /bake-runner[/\\]main\.(ts|js)$/.test(process.argv[1]);
305
308
  if (invokedDirectly) {
306
309
  main().catch((err) => {
307
- console.error(JSON.stringify({ ts: new Date().toISOString(), level: "error", msg: "bake_runner_fatal", err: String(err) }));
310
+ createLogger().error("bake_runner_fatal", { err: String(err) });
308
311
  process.exit(1);
309
312
  });
310
313
  }
@@ -1,3 +1,4 @@
1
+ import { writeLogText } from "../../observability/logger.js";
1
2
  import { pausedCauseOf, outwardPlane } from "../../terminal.js";
2
3
  import { leafBudgetFields, s1DebugGit } from "./runner-ctx.js";
3
4
  import {} from "./tasks.js";
@@ -61,7 +62,7 @@ export async function driveSupSuspendResume(initial, deps, implSpec, trap, advan
61
62
  foldCost(vr.stats);
62
63
  const legPlane = outwardPlane(vr.terminal);
63
64
  if (process.env.S1_DEBUG_SUPCOST)
64
- console.error(`[SUPCOST leg=${leg}] status=${legPlane.status} reason=${vr.verification?.unverifiedReason} c1µ=${vr.stats?.costBreakdown?.llmRootMicroUsd} accC1µ=${c1Acc.llmRootMicroUsd} hrGates=${vr.stats?.humanReview?.gates?.length}`);
65
+ writeLogText("stderr", `[SUPCOST leg=${leg}] status=${legPlane.status} reason=${vr.verification?.unverifiedReason} c1µ=${vr.stats?.costBreakdown?.llmRootMicroUsd} accC1µ=${c1Acc.llmRootMicroUsd} hrGates=${vr.stats?.humanReview?.gates?.length}`);
65
66
  const paused = pausedCauseOf(vr.terminal);
66
67
  const gateKind = paused?.gate.kind;
67
68
  const parkWord = paused === undefined ? undefined : outwardPlane(paused).status;
@@ -148,7 +149,7 @@ export async function runArm(arm, trap, seed, ctx, deps, supStore) {
148
149
  }
149
150
  catch (e) {
150
151
  if (s1DebugGit())
151
- console.error("[S1 SOLO infra throw]", e instanceof Error ? (e.stack ?? e.message) : String(e));
152
+ writeLogText("stderr", "[S1 SOLO infra throw]", e instanceof Error ? (e.stack ?? e.message) : String(e));
152
153
  return assembleRow({
153
154
  arm, trap, seed, ctx,
154
155
  stats: captureStats(undefined),
@@ -161,7 +162,7 @@ export async function runArm(arm, trap, seed, ctx, deps, supStore) {
161
162
  }
162
163
  const soloPlane = outwardPlane(vr.terminal);
163
164
  if (s1DebugGit())
164
- console.error("[S1 SOLO vr.status]", soloPlane.status, "| stats:", JSON.stringify(vr.stats)?.slice(0, 200));
165
+ writeLogText("stderr", "[S1 SOLO vr.status]", soloPlane.status, "| stats:", JSON.stringify(vr.stats)?.slice(0, 200));
165
166
  const oracle = pickOracleVerdicts(await deps.runOracle());
166
167
  return assembleRow({
167
168
  arm,
@@ -195,7 +196,7 @@ export async function runArm(arm, trap, seed, ctx, deps, supStore) {
195
196
  }
196
197
  catch (e) {
197
198
  if (s1DebugGit())
198
- console.error(`[S1 SUP infra throw driver=${trap.supDriver}]`, e instanceof Error ? (e.stack ?? e.message) : String(e));
199
+ writeLogText("stderr", `[S1 SUP infra throw driver=${trap.supDriver}]`, e instanceof Error ? (e.stack ?? e.message) : String(e));
199
200
  return assembleRow({
200
201
  arm, trap, seed, ctx,
201
202
  stats: captureStats(undefined),
@@ -208,7 +209,7 @@ export async function runArm(arm, trap, seed, ctx, deps, supStore) {
208
209
  }
209
210
  const supPlane = outwardPlane(vr.terminal);
210
211
  if (s1DebugGit())
211
- console.error(`[S1 SUP vr.status driver=${trap.supDriver}]`, supPlane.status, "| repairTerminal:", repairTerminal, "| verdict:", vr.verification?.verdict, "| unverifiedReason:", vr.verification?.unverifiedReason, "| checkpointGate:", JSON.stringify(pausedCauseOf(vr.terminal)?.gate), "| error:", vr.error, "| stats:", JSON.stringify(vr.stats)?.slice(0, 180));
212
+ writeLogText("stderr", `[S1 SUP vr.status driver=${trap.supDriver}]`, supPlane.status, "| repairTerminal:", repairTerminal, "| verdict:", vr.verification?.verdict, "| unverifiedReason:", vr.verification?.unverifiedReason, "| checkpointGate:", JSON.stringify(pausedCauseOf(vr.terminal)?.gate), "| error:", vr.error, "| stats:", JSON.stringify(vr.stats)?.slice(0, 180));
212
213
  const oracle = pickOracleVerdicts(await deps.runOracle());
213
214
  const runStatus = classifyRunStatus({ status: supPlane.status, repairTerminal });
214
215
  const lastGate = vr.stats?.humanReview?.gates?.at(-1);
@@ -1,6 +1,8 @@
1
+ import { writeLogText } from "../../observability/logger.js";
1
2
  import { outwardPlane } from "../../terminal.js";
2
3
  import { Runner, runWithVerification, resumeWithVerification, runRepairLoop, combinePolicies, createDurableQuestionPolicy, QUESTION_AWAITS_RESUME, } from "@sema-agent/core";
3
4
  import { loadConfig } from "../../config.js";
5
+ import { declareServerWithheldEnv } from "../../server-secret-env.js";
4
6
  import { composeDeclaredExecutionLane } from "../../boot/execution-lane.js";
5
7
  import { ALL_EXECUTION_LANES } from "../../execution-lane-caps.js";
6
8
  import { assertServedModelRoute } from "../../model-route-endpoint.js";
@@ -53,6 +55,7 @@ function buildBrainIngredients(rt) {
53
55
  process.env.MODEL_COST_CACHE_READ = String(rt.costCacheRead);
54
56
  if (rt.costCacheWrite != null)
55
57
  process.env.MODEL_COST_CACHE_WRITE = String(rt.costCacheWrite);
58
+ declareServerWithheldEnv();
56
59
  const config = composeDeclaredExecutionLane(loadConfig(), { info: () => { } }, { name: "the s1 bench", runs: ALL_EXECUTION_LANES, declares: "none" });
57
60
  assertServedModelRoute(config, { envTableIsPlaceholder: false });
58
61
  const brain = createBrain(config, {});
@@ -121,7 +124,7 @@ async function transferWorkerTreeToGrader(worker, grader) {
121
124
  if (ext.code !== 0 || !ext.out.includes("EXTRACTED="))
122
125
  throw new Error(`s1 grader tar extract failed: ${ext.out.slice(-400)}`);
123
126
  if (s1DebugGit())
124
- console.error(`[S1_DEBUG_TAR] head=${head.slice(0, 8)} base=${base.slice(0, 8)} tarBytes=${buf.length} ${ext.out.slice(-60)}`);
127
+ writeLogText("stderr", `[S1_DEBUG_TAR] head=${head.slice(0, 8)} base=${base.slice(0, 8)} tarBytes=${buf.length} ${ext.out.slice(-60)}`);
125
128
  return { head, base };
126
129
  }
127
130
  function oracleTaskFromTrap(trap) {
@@ -171,7 +174,7 @@ export function buildLiveDeps(rt, trap, seed, cellId) {
171
174
  const task = { ...oracleTaskFromTrap(trap), ...(state.shas ? { deliveredShas: state.shas } : {}) };
172
175
  const v = await runStandaloneOracle(grader, graderTransport(grader), worker, task);
173
176
  if (s1DebugGit())
174
- console.error(`[S1_DEBUG_ORACLE ${trap.id}] delivered=${v.delivered} tests=${v.hiddenTestsGreen} build=${v.buildPassed} inv=${v.invariantsOk} | raw=`, JSON.stringify(v.raw)?.slice(0, 700));
177
+ writeLogText("stderr", `[S1_DEBUG_ORACLE ${trap.id}] delivered=${v.delivered} tests=${v.hiddenTestsGreen} build=${v.buildPassed} inv=${v.invariantsOk} | raw=`, JSON.stringify(v.raw)?.slice(0, 700));
175
178
  return v;
176
179
  };
177
180
  const deps = {
@@ -1,3 +1,4 @@
1
+ import { writeLogText } from "../../observability/logger.js";
1
2
  import { promises as fs } from "node:fs";
2
3
  import path from "node:path";
3
4
  import { AppendLog, Runner, InMemoryCheckpointStore } from "@sema-agent/core";
@@ -213,7 +214,7 @@ export function positiveIntArg(raw, def, flag) {
213
214
  return def;
214
215
  const n = Number(raw);
215
216
  if (!Number.isInteger(n) || n < 1) {
216
- console.error(`[s1 run-firm] ${flag} must be a positive integer, got: ${raw}`);
217
+ writeLogText("stderr", `[s1 run-firm] ${flag} must be a positive integer, got: ${raw}`);
217
218
  process.exit(2);
218
219
  }
219
220
  return n;
@@ -251,13 +252,13 @@ export async function main(argv = process.argv.slice(2)) {
251
252
  setS1DebugGit(args.debugGit);
252
253
  const liveRuntime = liveRuntimeConfigFromEnv();
253
254
  if (!args.dryRun && !liveRuntime) {
254
- console.error("[s1 run-firm] LIVE path refused: E2B_API_KEY + DEEPSEEK_API_KEY are required (the brain gateway). " +
255
+ writeLogText("stderr", "[s1 run-firm] LIVE path refused: E2B_API_KEY + DEEPSEEK_API_KEY are required (the brain gateway). " +
255
256
  "Run with --dry-run for the deterministic loop, or export the keys for the owner's gated live run.");
256
257
  process.exit(2);
257
258
  return;
258
259
  }
259
260
  const modelId = liveRuntime?.modelId ?? "deepseek-v4-flash";
260
- const log = (msg, meta) => console.error(`[s1 run-firm] ${msg}`, meta ? JSON.stringify(meta) : "");
261
+ const log = (msg, meta) => writeLogText("stderr", `[s1 run-firm] ${msg}`, meta ? JSON.stringify(meta) : "");
261
262
  const result = await runFirm({
262
263
  seeds: args.seeds,
263
264
  cellTimeoutMs: args.cellTimeoutMs,
@@ -271,7 +272,7 @@ export async function main(argv = process.argv.slice(2)) {
271
272
  ...(args.dryRun ? { mockDepsFactory: dryRunMockFactory() } : { liveRuntime: liveRuntime }),
272
273
  log,
273
274
  });
274
- console.log(JSON.stringify({
275
+ writeLogText("stdout", JSON.stringify({
275
276
  runId: args.runId,
276
277
  mode: args.dryRun ? "dry-run" : "live",
277
278
  ranThisPass: result.ranThisPass,
@@ -297,7 +298,7 @@ const isMain = (() => {
297
298
  })();
298
299
  if (isMain) {
299
300
  void main().catch((e) => {
300
- console.error("[s1 run-firm] fatal:", e instanceof Error ? e.stack : String(e));
301
+ writeLogText("stderr", "[s1 run-firm] fatal:", e instanceof Error ? e.stack : String(e));
301
302
  process.exit(1);
302
303
  });
303
304
  }
@@ -0,0 +1,25 @@
1
+ /** 读监听地址要的那几格(取自配置的同名键)。 */
2
+ export interface BindHostConfig {
3
+ bindHost?: string;
4
+ /** 缝合审 M5:`bindHost` 的**来源**决定它算不算 operator 明示,见 {@link resolveBindHost}。 */
5
+ bindHostSource?: "BIND_HOST" | "HOST";
6
+ allowUnauthedWrites?: boolean;
7
+ authToken?: string;
8
+ authTokens?: Record<string, string>;
9
+ }
10
+ /** 这台部署配了任何一把 service 凭据吗(`SERVICE_AUTH_TOKEN` / `SERVICE_AUTH_TOKENS`)。 */
11
+ export declare function anyServiceCredential(config: Pick<BindHostConfig, "authToken" | "authTokens">): boolean;
12
+ /** 无鉴权写面(`ALLOW_UNAUTHED_WRITES`)+ 零凭据 ⇒ 起服把监听地址收窄到 loopback(见 {@link resolveBindHost})。 */
13
+ export declare function bindMustNarrow(config: Pick<BindHostConfig, "allowUnauthedWrites" | "authToken" | "authTokens">): boolean;
14
+ /**
15
+ * 这台进程的监听地址(绑址旋钮 + 无鉴权自收窄)。`undefined` = Node 缺省全接口。
16
+ * `BIND_HOST`(兼容 `HOST`)显式值恒生效;缺省:**无鉴权写面(`allowUnauthedWrites` 且零凭据)自动收窄到 127.0.0.1**,其余维持全接口。
17
+ */
18
+ export declare function resolveBindHost(config: BindHostConfig): string | undefined;
19
+ /**
20
+ * 监听地址是不是**只在本机回环上**(别的主机连不上这个口)。`undefined`(Node 缺省全接口)、`0.0.0.0` / `::`(全接口)、任何别的地址或主机名 ⇒ 否。
21
+ * 认:IPv4 `127.0.0.0/8`、IPv6 `::1`、它们的 IPv4 映射拼法(经 {@link canonicalAddress} 折回点分 IPv4)、字面 `localhost`(大小写不敏感;
22
+ * 刻意不认 `*.localhost` 与别的主机名 —— 落不落在本机取决于系统解析器,不是这个值本身的事实)。
23
+ */
24
+ export declare function listensLoopbackOnly(bindHost: string | undefined): boolean;
25
+ //# sourceMappingURL=bind-host.d.ts.map
@@ -0,0 +1,25 @@
1
+ import { isIP } from "node:net";
2
+ import { canonicalAddress } from "./net-address.js";
3
+ export function anyServiceCredential(config) {
4
+ return Boolean(config.authToken) || Object.keys(config.authTokens ?? {}).length > 0;
5
+ }
6
+ export function bindMustNarrow(config) {
7
+ return Boolean(config.allowUnauthedWrites) && !anyServiceCredential(config);
8
+ }
9
+ export function resolveBindHost(config) {
10
+ const mustNarrow = bindMustNarrow(config);
11
+ if (config.bindHost && !(mustNarrow && config.bindHostSource === "HOST"))
12
+ return config.bindHost;
13
+ return mustNarrow ? "127.0.0.1" : undefined;
14
+ }
15
+ export function listensLoopbackOnly(bindHost) {
16
+ if (bindHost === undefined)
17
+ return false;
18
+ if (bindHost.toLowerCase() === "localhost")
19
+ return true;
20
+ const address = canonicalAddress(bindHost);
21
+ if (address === undefined)
22
+ return false;
23
+ return isIP(address) === 4 ? address.startsWith("127.") : address === "::1";
24
+ }
25
+ //# sourceMappingURL=bind-host.js.map
@@ -1,6 +1,9 @@
1
+ import type { AdoptionWiring } from "../adoption/plan.js";
1
2
  import type { StoreBackend } from "../plugins/store-backend.js";
2
3
  export interface AdoptionBootCtx {
3
4
  backend: StoreBackend | undefined;
5
+ /** 可选存储面的接线事实(必填、无默认值;与 `POST /v1/adoption` 路由读的是同一对 boot 事实,见 {@link AdoptionWiring})。 */
6
+ wiring: AdoptionWiring;
4
7
  logger: {
5
8
  info?(msg: string, meta?: unknown): void;
6
9
  warn?(msg: string, meta?: unknown): void;
@@ -8,6 +8,7 @@ export async function runAdoptionBootScan(ctx) {
8
8
  store,
9
9
  dialect: ctx.backend?.kind === "pg" ? "pg" : "mysql",
10
10
  now: ctx.now ?? Date.now,
11
+ wiring: ctx.wiring,
11
12
  logger: ctx.logger,
12
13
  });
13
14
  try {
@@ -44,7 +44,7 @@ export interface LoadedModPackage {
44
44
  export interface DeploymentModsAssembly {
45
45
  readonly registrations: readonly ModRegistration<EngineDollar>[];
46
46
  readonly loaded: readonly LoadedModPackage[];
47
- /** 部署座在**任务座之下**挂了链成员(不是观察者)的站点式样 —— 引擎这一次准入的记录读出({@link belowTaskChainPatternsOf})。读者:请求 `settings.hooks` 托管车道的只许收紧判据(`hooks/hook-runner.ts` 的 `managedTightenOnlyOn`)。 */
47
+ /** 部署座在**任务座之下**挂了链成员(不是观察者)的站点式样 —— 引擎这一次准入的记录读出({@link belowTaskChainPatternsOf})。读者:请求 `settings.hooks` 两条车道的只许收紧判据(`hooks/hook-runner.ts` 的 `chainsBelowTaskOn` 一处)。 */
48
48
  readonly belowTaskChainPatterns: readonly string[];
49
49
  }
50
50
  /**