@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
@@ -1,23 +1,18 @@
1
- import { persistedPlaneOf } from "../terminal.js";
2
1
  import { memoRedactedRead, memoRedactTerminalResult, redactErrorMessage, sealStoredRunRowResult } from "../observability/run-terminal.js";
3
- import { RUN_HOLDER_DEATH_CODES, isTerminalRunStatus } from "../plugins/store-contracts.js";
2
+ import { isTerminalRunStatus } from "../plugins/store-contracts.js";
4
3
  import { composeSupervisorCost, infraCost, infraUsageFromEvents, hasInfraPricing } from "../observability/cost-taxonomy.js";
5
4
  import { recordFailOpen } from "../observability/fail-open.js";
6
5
  import { readTurnActivityMs } from "../turn-activity.js";
7
6
  import { buildCrossSliceUsage, readResourceWindow } from "../resource-window.js";
8
- export function runRowStale(deps, run) {
9
- return run.status === "running" && Date.now() - new Date(run.updatedAt).getTime() > deps.config.runStaleSec * 1000;
10
- }
11
7
  export function runRowExitResult(run) {
12
8
  return isTerminalRunStatus(run.status) ? memoRedactTerminalResult("run.result", run.result ?? undefined) : (sealStoredRunRowResult(run.result ?? null, "run.result") ?? undefined);
13
9
  }
14
10
  export async function readRunFace(deps, runStore, run) {
15
11
  const taskId = run.taskId;
16
- const stale = runRowStale(deps, run);
17
12
  const infraRates = deps.config.infraCostRates;
18
- const needCost = Boolean(run.result?.stats && !stale && infraRates && hasInfraPricing(infraRates));
19
- const needSuggestions = !stale && run.status === "completed";
20
- const resourceWindow = run.status === "running" && !stale ? readResourceWindow(run.taskId) : undefined;
13
+ const needCost = Boolean(run.result?.stats && infraRates && hasInfraPricing(infraRates));
14
+ const needSuggestions = run.status === "completed";
15
+ const resourceWindow = run.status === "running" ? readResourceWindow(run.taskId) : undefined;
21
16
  let events;
22
17
  let eventsUnavailable = false;
23
18
  if (needCost || needSuggestions || resourceWindow !== undefined) {
@@ -45,7 +40,7 @@ export async function readRunFace(deps, runStore, run) {
45
40
  if (Array.isArray(arr))
46
41
  suggestions = arr.map((s) => String(s));
47
42
  }
48
- const lastActivityAt = run.status === "running" && !stale ? readTurnActivityMs(run.taskId) : undefined;
43
+ const lastActivityAt = run.status === "running" ? readTurnActivityMs(run.taskId) : undefined;
49
44
  let crossSliceUsage;
50
45
  if (resourceWindow !== undefined) {
51
46
  if (eventsUnavailable || events === undefined)
@@ -56,14 +51,14 @@ export async function readRunFace(deps, runStore, run) {
56
51
  return {
57
52
  taskId: run.taskId,
58
53
  sessionId: run.sessionId,
59
- status: stale ? "failed" : run.status,
54
+ status: run.status,
60
55
  ...(lastActivityAt !== undefined ? { msSinceLastActivity: Math.max(0, Date.now() - lastActivityAt) } : {}),
61
56
  ...(crossSliceUsage !== undefined ? { crossSliceUsage } : {}),
62
57
  result: runRowExitResult(run),
63
58
  supervisorCost,
64
59
  suggestions,
65
- errorCode: stale ? RUN_HOLDER_DEATH_CODES.stalled : (persistedPlaneOf(run.result).errorCode ?? run.errorCode ?? undefined),
66
- error: stale ? "run stalled (instance lost?)" : isTerminalRunStatus(run.status) ? memoRedactedRead("run.error", run.error ?? undefined, redactErrorMessage) : redactErrorMessage(run.error ?? undefined),
60
+ errorCode: run.errorCode ?? undefined,
61
+ error: isTerminalRunStatus(run.status) ? memoRedactedRead("run.error", run.error ?? undefined, redactErrorMessage) : redactErrorMessage(run.error ?? undefined),
67
62
  jobId: run.jobId ?? undefined,
68
63
  source: run.source ?? undefined,
69
64
  heldBy: isTerminalRunStatus(run.status) ? null : (run.instanceId ?? null),
@@ -64,10 +64,12 @@ export declare function endSseWithError(res: ServerResponse, frame: {
64
64
  readonly message: string;
65
65
  }): void;
66
66
  export declare function sendJson(res: ServerResponse, status: number, body: unknown): void;
67
+ /** HTTP 入口给每条响应挂上本部署的日志器(缺席 = 本部署没有日志器,与全局兜底同读)。 */
68
+ export declare function attachResponseLogger(res: ServerResponse, logger: Logger | undefined): void;
67
69
  /** A6([ref] lens1 §C3/lens3 §C3a): canonical error-response sender for sites that already carry a
68
70
  * machine `errorCode` — `errorCode` is a required positional arg (not optional-bag) so a call site
69
71
  * cannot regress to the "code but no errorCode" shape the error-code-key-gate forbids. Body shape is
70
- * `{ error: message, errorCode, ...extra }`; a site that used to ALSO emit a legacy `code` key keeps it
72
+ * `{ error: message, errorCode, ...extra }` (written by the one refusal writer {@link sendRefusal}); a site that used to ALSO emit a legacy `code` key keeps it
71
73
  * by passing `{ code: ... }` inside `extra` — this is a pure call-site migration (zero wire-contract
72
74
  * change), not a new response shape. Sites where the two machine-code channels genuinely disagree, or
73
75
  * where `error`/`errorCode` aren't cleanly separable from the rest of the body, are left on raw
@@ -93,13 +95,13 @@ export declare function invalidJsonError(reason: InvalidJsonReason): HttpError;
93
95
  export declare function httpErrorCode(status: number, code?: string): string;
94
96
  /**
95
97
  * 一只 `HttpError` 读成 {@link Refusal}:码经 {@link httpErrorCode}(带码的 throw 原样优先,否则按状态给粗码),句 = `message`,机读事实 = `extra`
96
- * (如场景门的 `detail: { scenario, source }`、条数帽的 `field` / `reason` / `count` / `cap`)。**拆 `HttpError` 的唯一一处** —— 别的站点自己拆
98
+ * (如场景门的 `scenario` / `source`、条数帽的 `field` / `reason` / `count` / `cap`)。**拆 `HttpError` 的唯一一处** —— 别的站点自己拆
97
99
  * `status` / `code` / `message` 拼体就丢了 `extra`(`test/refusal-one-composer.test.ts` 的静态门钉着)。
98
100
  */
99
101
  export declare function httpErrorRefusal(e: HttpError): Refusal;
100
102
  /** 一只 `HttpError` 的拒体成员 = {@link refusalBody}({@link httpErrorRefusal})。 */
101
103
  export declare function httpErrorBody(e: HttpError): RefusalBody;
102
- /** 整面拒:状态 = `e.status`,体 = {@link httpErrorBody}。手里拿着一只 `HttpError` 的路由站点一律调它。 */
104
+ /** 整面拒:状态 = `e.status`,体 = {@link httpErrorRefusal} 经出线点 {@link sendRefusal}(与 {@link httpErrorBody} 同一只组句)。手里拿着一只 `HttpError` 的路由站点一律调它。 */
103
105
  export declare function sendHttpError(res: ServerResponse, e: HttpError): void;
104
106
  /**
105
107
  * 🔴 B1 / [ref] —— `SessionPolicyError` → 应答,经 {@link sessionPolicyErrorHttp} 那**一只**映射
@@ -135,4 +137,11 @@ export declare function msg(e: unknown): string;
135
137
  * codex r10 [high] 纵深:错误句可带凭据回显 ⇒ 先过 `redactHead`(有上限、不抛)。
136
138
  */
137
139
  export declare function logRequestError(logger: Logger | undefined, req: IncomingMessage, err: unknown): void;
140
+ /**
141
+ * 一只抛出物的**栈顶帧**,写成 `<仓内路径>:<行>`(`request_error` 行的出处位:排障时「哪一行读到了 `undefined`」不必再复现)。
142
+ * 取栈的第一条读得出位置的帧(内建 / 匿名帧跳过);路径只留 `src/` · `dist/` · `node_modules/` 起的尾段 —— 宿主机的绝对前缀(用户目录 / 容器卷名)不出门;
143
+ * 不带列、不带函数名、不带消息体(消息已在 `err` 位,过它自己的脱敏)。读不出(非 `Error` / 无栈 / 无位置帧)⇒ `undefined`,调用点不写该键。
144
+ * 纯解析、无 catch:只读 `stack` 这一个成员(与 {@link msg} 读 `message` 同一姿势 —— 同一只抛出物读两个成员,守不守访问器是同一个问题,不在这里单独设一道兜底)。
145
+ */
146
+ export declare function topFrameOf(err: unknown): string | undefined;
138
147
  //# sourceMappingURL=send.d.ts.map
package/dist/http/send.js CHANGED
@@ -2,8 +2,9 @@ import { SessionError, SessionPolicyError } from "@sema-agent/core";
2
2
  import { sessionPolicyErrorFacts, sessionPolicyErrorHttp, sessionPolicyErrorSentence } from "../session-policy-wire.js";
3
3
  import { openFaceFaultWire, sessionErrorWireOf } from "../session-error-wire.js";
4
4
  import { redactErrorMessage, redactHead } from "../observability/run-terminal.js";
5
+ import { seatText } from "../trace/exit-seat.js";
5
6
  import { createCodedHttpError } from "../security.js";
6
- import { refusalBody } from "./refusal-body.js";
7
+ import { refusalBody, refusalWireBytes } from "./refusal-body.js";
7
8
  export const SSE_RESPONSE_MARK = Symbol("sema.http.sse-response");
8
9
  export function isSseResponse(res) {
9
10
  return res[SSE_RESPONSE_MARK] === true;
@@ -32,8 +33,27 @@ export function sendJson(res, status, body) {
32
33
  res.writeHead(status, { "content-type": "application/json" });
33
34
  res.end(JSON.stringify(body));
34
35
  }
36
+ const RESPONSE_LOGGER = Symbol("sema.http.response-logger");
37
+ export function attachResponseLogger(res, logger) {
38
+ if (logger !== undefined)
39
+ res[RESPONSE_LOGGER] = logger;
40
+ }
41
+ function sendRefusal(res, status, refusal) {
42
+ let bytes;
43
+ try {
44
+ bytes = refusalWireBytes(refusal);
45
+ }
46
+ catch (fault) {
47
+ const reported = new TypeError(`refusal ${refusal.errorCode} was not written: its facts carry a reserved key, or reading / serializing them threw`, { cause: fault });
48
+ logRequestError(res[RESPONSE_LOGGER], res.req, reported);
49
+ sendOpenFaceFault(res, reported);
50
+ return;
51
+ }
52
+ res.writeHead(status, { "content-type": "application/json" });
53
+ res.end(bytes);
54
+ }
35
55
  export function sendError(res, status, errorCode, message, extra) {
36
- sendJson(res, status, refusalBody(extra === undefined ? { errorCode, message } : { errorCode, message, facts: extra }));
56
+ sendRefusal(res, status, extra === undefined ? { errorCode, message } : { errorCode, message, facts: extra });
37
57
  }
38
58
  export const INVALID_JSON_REASONS = ["not_json", "not_object"];
39
59
  export const INVALID_JSON_MESSAGES = {
@@ -66,14 +86,14 @@ export function httpErrorBody(e) {
66
86
  return refusalBody(httpErrorRefusal(e));
67
87
  }
68
88
  export function sendHttpError(res, e) {
69
- sendJson(res, e.status, httpErrorBody(e));
89
+ sendRefusal(res, e.status, httpErrorRefusal(e));
70
90
  }
71
91
  export function sendSessionPolicyError(res, e, sentencePrefix = "") {
72
92
  if (!(e instanceof SessionPolicyError))
73
93
  return false;
74
94
  const h = sessionPolicyErrorHttp(e.code);
75
95
  const facts = sessionPolicyErrorFacts(e);
76
- sendError(res, h.status, h.errorCode, redactErrorMessage(`${sentencePrefix}${sessionPolicyErrorSentence(e)}`) ?? "session policy error", facts === undefined ? undefined : { ...facts });
96
+ sendError(res, h.status, h.errorCode, redactErrorMessage(`${sentencePrefix}${sessionPolicyErrorSentence(e)}`) ?? "session policy error", facts);
77
97
  return true;
78
98
  }
79
99
  export function sendSessionError(res, e, face) {
@@ -90,12 +110,28 @@ export function sendOpenFaceFault(res, e) {
90
110
  }
91
111
  function sendSessionWire(res, e, wire) {
92
112
  const sentence = wire.sentence ?? (e instanceof SessionError ? redactErrorMessage(e.message) : undefined) ?? "session store error";
93
- sendError(res, wire.status, wire.errorCode, sentence, wire.detail === undefined ? undefined : { detail: wire.detail });
113
+ sendError(res, wire.status, wire.errorCode, sentence, wire.facts);
94
114
  }
95
115
  export function msg(e) {
96
116
  return e instanceof Error ? e.message : String(e);
97
117
  }
98
118
  export function logRequestError(logger, req, err) {
99
- logger?.error("request_error", { method: req.method, url: req.url, err: redactHead(msg(err), 2000) });
119
+ const at = topFrameOf(err);
120
+ logger?.error("request_error", { method: req.method, url: req.url, err: redactHead(msg(err), 2000), ...(at !== undefined ? { at } : {}) });
121
+ }
122
+ const STACK_FRAME_LOCATION = /^\s*at (?:.*? \()?(?:file:\/\/)?(\/.*?|[A-Za-z]:[\\/].*?):(\d+):\d+\)?$/;
123
+ export function topFrameOf(err) {
124
+ const stack = err instanceof Error ? err.stack : undefined;
125
+ if (typeof stack !== "string")
126
+ return undefined;
127
+ for (const line of stack.split("\n")) {
128
+ const m = STACK_FRAME_LOCATION.exec(line);
129
+ if (m === null)
130
+ continue;
131
+ const path = m[1].replace(/\\/g, "/");
132
+ const tail = /(?:^|\/)((?:src|dist|node_modules)\/.*)$/.exec(path)?.[1] ?? path.slice(path.lastIndexOf("/") + 1);
133
+ return seatText("operator-log-text", `${tail}:${m[2]}`);
134
+ }
135
+ return undefined;
100
136
  }
101
137
  //# sourceMappingURL=send.js.map
@@ -1,13 +1,14 @@
1
1
  import http from "node:http";
2
2
  import type { MemoryComplianceFaces, MemoryOriginFaces, SessionMemoryStatusFace } from "../memory-operator-faces.js";
3
3
  import type { SideQueryAccounting } from "../budget.js";
4
+ import type { SessionPurgeOutcome } from "../session-deletion.js";
4
5
  import type { IncomingMessage } from "node:http";
5
6
  import { type Runner, type RunnerDeps, type TaskSpec, type TaskResult, type WorkflowRunStore, type MemoryEntry, type MemoryExportBundle, type MemoryImportReport, type SideQuerySpec, type SideQueryResult, type Brain, type EngineNotice } from "@sema-agent/core";
6
7
  import type { TaskRequestBody } from "./wire-types.js";
7
8
  import type { ServiceConfig } from "../config-types.js";
8
9
  import { type SessionMirrorRuling } from "../web-admin-client/facade.js";
9
10
  import type { RestartSignal } from "@sema-agent/settings-schema/fleet";
10
- import { type OwnerAwareSessionStore } from "../security.js";
11
+ import { type AuthorizeInput, type OwnerAwareSessionStore } from "../security.js";
11
12
  import type { PeerDesk, PeerLease } from "../peer-seat.js";
12
13
  import type { ExecutionRoot, ResolvedTaskSpec } from "./execution-context.js";
13
14
  import type { RunStore, ImageIndex, ImageBake, CheckpointStoreFull, ResumeAnchorStore, ApprovalExemptionStore, ApprovalNonceStore, ServiceSessionPolicyStore, ServiceFileHistoryStore, ToolResultStoreFull, StoreBackend } from "../plugins/store-backend.js";
@@ -42,13 +43,17 @@ export { coarseStatusForState, errorCodeForExit };
42
43
  import type { SessionNotifyDoor } from "../session-notify-door.js";
43
44
  import { MAX_SKILL_CONTENT_CHARS, MAX_SYSTEM_PROMPT_CHARS, MAX_OUTPUT_SCHEMA_CHARS, validateUserSkills } from "./admission.js";
44
45
  import { routeLabel, isBillableSubmitPath, isCredentialGatedRewrite, isMethodDispatchedSubmitPath } from "./route-table.js";
45
- export { routeLabel, isBillableSubmitPath, isCredentialGatedRewrite, isMethodDispatchedSubmitPath, hasServiceAuth };
46
+ export { routeLabel, isBillableSubmitPath, isCredentialGatedRewrite, isMethodDispatchedSubmitPath };
46
47
  export { MAX_SKILL_CONTENT_CHARS, MAX_SYSTEM_PROMPT_CHARS, MAX_OUTPUT_SCHEMA_CHARS, validateUserSkills };
47
- import { explicitOperatorOk, hasServiceAuth } from "./principal-gate.js";
48
+ import { explicitOperatorOk } from "./principal-gate.js";
48
49
  export { explicitOperatorOk };
49
50
  /** Per-request authorization context resolved before building the spec (identity, owned session). */
50
51
  export interface RequestAuth {
51
- principal?: string;
52
+ /**
53
+ * 这次请求 / 这条腿的**主体**(分区键;`owner-brands.ts`):没带场景头 ⇒ 与验过的人逐字节同;带了 ⇒ `_scn:<场景>:<人>`。行属主 / 检查点 scope / 附件 / 锚读它,
54
+ * 人面(场景裁定 / 运维 / 治理 / 引擎 `spec.principal`)由装配器经 `partsOf` 解码出人。自建 authorizer 交它自己验过的那一只身份串(没有场景时就是人)。
55
+ */
56
+ subject?: string;
52
57
  sessionId: string;
53
58
  memoryScope?: string;
54
59
  /** 142-S4:the SHAPE-VALIDATED **且已归一(小写)** 的 `body.projectId`(authorizer 的 core
@@ -94,10 +99,7 @@ export interface ServiceCoreDeps {
94
99
  * 不带 ⇒ 现铸并登记)。省掉是编译错;绕过类型造的 deps 在 {@link createHttpServer} 入口拒启。单用户嵌入传
95
100
  * `createAuthorizer(config, runner.sessions)`(包根导出)—— 店没有属主读时它退化为只派 principal 与会话 id。
96
101
  */
97
- authorize: (ctx: {
98
- req: IncomingMessage;
99
- body: TaskRequestBody;
100
- }) => Promise<RequestAuth>;
102
+ authorize: (ctx: AuthorizeInput) => Promise<RequestAuth>;
101
103
  /**
102
104
  * Map an inbound request body + resolved auth to a TaskSpec. The SERVICE/deployment owns model
103
105
  * + tools + mcp here (callers only supply content). `auth` carries the principal-derived memory scope —
@@ -240,7 +242,8 @@ export interface ServiceStoreDeps {
240
242
  /** §0.5 session-ownership: the durable session abstraction (`SessionRepo`-style) the service OWNS — session
241
243
  * IDENTITY/enumeration (E16 list) + lifecycle (E17 fork, E21 history delete) come from HERE, not the
242
244
  * `task_run` runs ledger. When it carries `listSessions`, GET /v1/sessions sources sessions from the session
243
- * store (task_run only joins for run preview); `fork`/`deleteSession` enable the fork/delete routes. */
245
+ * store (task_run only joins for the run-derived half of the row); without it the list answers 501 — the run store is
246
+ * not a session lister. `fork` enables the fork route; the delete route rides `purgeSession` (the coordinator over the one session eraser). */
244
247
  sessionStorage?: OwnerAwareSessionStore;
245
248
  /**
246
249
  * [ref] —— 跨会话车道的**发现席**(core `RunnerDeps.peerDirectory`),与 `RunnerDeps` 侧**同一个对象**
@@ -287,7 +290,7 @@ export interface ServiceStoreDeps {
287
290
  * 已配 AND 有 store backend(main.ts 建;写点在两条 send lane 的 withLedgerRecording)。 */
288
291
  sendFileLedger?: import("../plugins/send-file-ledger.js").SendFileLedger;
289
292
  /** [ref] 用户输入受理账本(「200 applied」受理的影子;单写者 = `src/user-input-ledger.ts` 的活对象,boot 装配在 stage-07 并跑一次收敛)。
290
- * 在场 ⇔ 有 store backend(生产恒与 `runStore` 同源于 backend)。消费点:steer 的 live 腿 / interrupt{text} / 同步子代的 steer([ref])受理前写 `accepted`(写不进 ⇒ 503
293
+ * 在场 ⇔ 有 store backend(生产恒与 `runStore` 同源于 backend)。消费点:steer 的 live 腿 / 同步子代的 steer([ref])受理前写 `accepted`(写不进 ⇒ 503
291
294
  * `steering.ledger_unavailable`)、三条 run 腿开通告口那一拍铸 `crashed` 通告并在收场时 settle、`GET /v1/sessions/:id` 的
292
295
  * `userInputUndrained` 读面。缺席只出现在不接 backend 的 stub-harness 上(那时没有这一面,行为与修前逐字相同)。 */
293
296
  userInputLedger?: import("../user-input-ledger.js").UserInputLedger;
@@ -377,8 +380,8 @@ export interface ServiceCoordinatorDeps {
377
380
  sessionTitler?: import("../session-titler.js").SessionTitler;
378
381
  }
379
382
  /** **函数/构件缝**:main.ts 把跨多个子系统的动作编译成一个可调用面交给路由(路由不该自己
380
- * 重组零件——见 backend 的同款论证)。parked-revive 三件是同族的构件缝(boot 期从生产装配取的裸
381
- * ToolSpec + 成员集 + 父约束重建器),与 backgroundAgentStore 齐备才构成赎回腿。 */
383
+ * 重组零件——见 backend 的同款论证)。parked-revive 两件是同族的构件缝(按行解析的赎回面工厂 +
384
+ * 父约束重建器),与 backgroundAgentStore 齐备才构成赎回腿。 */
382
385
  export interface ServiceSeamDeps {
383
386
  /**
384
387
  * device lane 的 WS 汇聚端(design/device-executor-lane-v2 §5,车A-3)—— 本仓**首个** WS 服务端。
@@ -389,7 +392,7 @@ export interface ServiceSeamDeps {
389
392
  * ——两者刻意不在这里自动耦合,因为 §8-R7 的顺序(新提交 503 → 新 upgrade 拒 → 停发新指令 →
390
393
  * 在途结果照收 → 才断连)是**部署编排**的语义,不是 HTTP 层能自作主张的。
391
394
  *
392
- * 🔴 **当前生产装配恒缺席,这是有意的**(`parkedKnownAgentTypes` 同族形):车A-3 只交汇聚端与这条
395
+ * 🔴 **当前生产装配恒缺席,这是有意的**:车A-3 只交汇聚端与这条
393
396
  * 挂载缝;`main.ts` 侧的真装配(建店 → 建 hub → 传这个键 → 与 `drainState` 联动 → 与
394
397
  * `REMOTE_EXEC=device` 拒启门对齐)属**车A-4/端点车**。在那之前本键只有测试口消费,不是死枝。
395
398
  */
@@ -421,25 +424,21 @@ export interface ServiceSeamDeps {
421
424
  * 缺席 = 本部署不是 host 车道(没有工厂读这一格)⇒ 提交点 no-op。装配 = `boot/stage-10-http-server.ts`(host 车道才给)。
422
425
  */
423
426
  bindSessionInheritEnv?: import("./session-inherit-env.js").SessionInheritEnvCommitCtx["bindSessionInheritEnv"];
427
+ /**
428
+ * 会话登记簿四表(cwd / shellEnv / inheritEnv / 属主,`boot/execution-env.ts` `createSessionScopedRegistries` 的 `dropSessionOf`)按**住客**清掉一只 ——
429
+ * 记下的住客恰是交来的化身才清、答 `true`。读者只有提交出口(`submission-exit.ts`):被拒提交铸下的会话撤回之后清(同 id 的下一位已登记、写下的条目不动)。
430
+ * 缺席(夹具 / 嵌入方没接)⇒ 本部署没有那几张表。
431
+ */
432
+ dropSessionScopedOf?: (sessionId: string, incarnation: string) => boolean;
424
433
  /** Audit回溯: current context (+ summary) for a session, plus its owner. Enables GET /v1/sessions/:id. `opts.reader` (the
425
434
  * verified identity reading the view) ⇒ user message rows carry the rewind handle `taskId` (`audit.ts` `buildRewindHandles`);
426
435
  * an embedder's one-parameter implementation stays assignable (it simply never projects handles). */
427
436
  sessionAudit?: (sessionId: string, opts?: import("../audit.js").SessionAuditReadOpts) => Promise<({
428
437
  owner: string | null;
429
438
  } & Record<string, unknown>) | undefined>;
430
- /** E21 session delete coordinator: purge a session's history (sessionStorage) PLUS the service-owned
431
- * run-ledger/checkpoint/tool-result rows, owner-guarded, in one call. Returns `{ deleted }` (idempotent) — or
432
- * `{ active }` when the runs-ledger TX re-asserted a still-live run (a concurrent createRun raced the route's
433
- * pre-check), which the route maps to 409. Enables DELETE /v1/sessions/:id. Wired by main.ts (all the stores). */
434
- /** E21 删除协调器。三种结局:删了 / 有活跑(`{active}`,409 `conflict.session_active_run`)/ [ref]:以本会话为根的后台子代没停干净
435
- * (`{childrenAlive}` = 仍活着的子代句柄,409 `conflict.session_children_alive` 的 `remaining[]`;会话记录不动)。 */
436
- purgeSession?: (sessionId: string, owner: string | null) => Promise<{
437
- deleted: boolean;
438
- } | {
439
- active: string;
440
- } | {
441
- childrenAlive: readonly string[];
442
- }>;
439
+ /** E21 删除协调器(会话三态 活 → 在删 → 没了,`session-deletion.ts`):删会话的对话史与服务自己的 run 账 / 检查点 / 卸载结果等全部挂靠行,一次调用。
440
+ * 结局 = {@link SessionPurgeOutcome}(删了 / 不在 · 围栏判到认领 · 子代预检拒 · 被接管)。点亮 DELETE /v1/sessions/:id。 */
441
+ purgeSession?: (sessionId: string, owner: string | null) => Promise<SessionPurgeOutcome>;
443
442
  /** [ref]③(b): read a BACKGROUND agent-handle child's final report / current status out of the core
444
443
  * TaskRegistry (the same face the TaskOutput tool reads — agent handles are NEVER in the run store).
445
444
  * Wired in main.ts to `defaultTaskRegistry.pollTask` (non-blocking). Access is the REGISTRATION tuple:
@@ -573,8 +572,8 @@ export interface ServiceSeamDeps {
573
572
  * (`controlPlaneRoot`)。②在**挂载期**判掉(工厂返 undefined)。这一族的理由比合规两口更硬:清标的
574
573
  * 写前托管行(`OriginClearanceRow.entryText`)在墓碑已落、重录未成的崩溃窗内是那条记忆**唯一的一份**
575
574
  * ——落在副本本地盘上 = pod 重建即永久丢失。全文见 src/memory-operator-faces.ts 头注。
576
- * 🔴 `listClearances` 是**同步**的(core 的读面就是一次严格 sidecar 读),且账本损坏时**抛**
577
- * `ControlPlaneCorruptError` —— 那是 fail-closed 信号,不是空数组。 */
575
+ * 🔴 `listClearances` 答 `Promise`(core 7.66.0 [ref] 起引擎经治理店读那份账),账本损坏时**拒**
576
+ * `ControlPlaneCorruptError` —— 那是 fail-closed 信号,不是空数组(路由在 try 内 await)。 */
578
577
  memoryOriginFace?: MemoryOriginFaces;
579
578
  /** [ref](core 5.58.0 `runMemoryConsolidationDriver`):记忆 **consolidation 阀门**的操作面。
580
579
  * 启用 `POST /v1/admin/memory/consolidation/run` 与 `GET /v1/admin/memory/consolidation`(两口 operator-only)。
@@ -607,7 +606,7 @@ export interface ServiceSeamDeps {
607
606
  /** [ref] §10.2 —— 跨主体投递门(`createOrgDeliveryGate` 的产物,`boot/stage-06-runners.ts` 装配的唯一实例)。
608
607
  * `POST /v1/principal-inbox/messages` 只经它投递;缺席 = 本部署没声明收件箱消费方(`PRINCIPAL_INBOX_ASSISTANT` 未设)⇒
609
608
  * 那一口 501、能力位 `principalInboxDelivery` false(同读事实 `principalInboxDelivery`)。 */
610
- orgDeliveryGate?: import("@sema-agent/core").OrgDeliveryGate;
609
+ orgDeliveryGate?: import("../org-delivery-gate.js").ServerOrgDeliveryGate;
611
610
  /** WEB-SETUP-RECON 附B — org sessionMirror 治理态的 SERVICE 半场 = **观测面(audit),非执法面**。
612
611
  * 裁定 (c):「该镜像而未镜像」发生在数据产生端(壳)——本 server 是镜像**目标**,只看得见到达的 push;
613
612
  * 没到达的会话对 server 不存在(无客户端会话清单、无心跳契约),required 锁的真执法只能在壳(CC
@@ -631,11 +630,6 @@ export interface ServiceSeamDeps {
631
630
  * 🔴 **在场 ⇒ `sessionStorage` 必须带执行席 `executionPlacement`**:认领之后对根会话住客的唯一判官是执行席上的写口;缺 ⇒ `createHttpServer` 拒启
632
631
  * (句子 = `PARKED_REVIVE_EXECUTION_SEAT_REQUIRED`)。 */
633
632
  parkedReviveSurface?: import("../parked-revive-surface.js").ParkedReviveSurfaceFactory;
634
- /** 可选第三件:revive args 的 `subagent_type` roster 成员集([ref] Q1 成员性规则)。当前生产装配
635
- * **恒缺席**(boot 内建 default 无自定义 agents roster,per-request 的 spec.agents 不进 boot 工具)
636
- * = 恒省略 subagent_type,typed 子代按 general-purpose 形复活(保真度 caveat 已报 core,[ref]
637
- * 批复审 G-F1;center roster 接线是候件,字段先留给它与测试口)。 */
638
- parkedKnownAgentTypes?: ReadonlySet<string>;
639
633
  /** [ref]/[ref] 跨进程父约束重供:decide 腿按部署配置重建 host 任务的同语义父策略链(exempt 锚=
640
634
  * row.rootSessionId),经 core 1.396 的 `parkedResume.inheritedGate` 席位透传——缺席时重启后带
641
635
  * requiresParentConstraint 的 parked checkpoint 恒被 core pre-CAS 门诚实拒(不可赎回)。
@@ -665,10 +659,9 @@ export interface ServiceObservabilityDeps {
665
659
  * 缺席 = 该道门不存在(不是「默认放行的门」——两者在事故复盘里语义完全不同)。 */
666
660
  export interface ServiceGovernanceDeps {
667
661
  /** 鉴权桥(registry-core api/auth-bridge):registry 用户 JWT → principal。缺席=分支不存在
668
- * (bearer 只认 SERVICE_AUTH_TOKEN(S),现状不变)。 */
669
- webAdminJwtVerifier?: {
670
- verify: (bearer: string) => Promise<import("../auth-bridge.js").VerifyOutcome>;
671
- };
662
+ * (bearer 只认 SERVICE_AUTH_TOKEN(S),现状不变)。席上的型就是工厂 `createWebAdminJwtVerifier` 铸的那一种(含只读成员 `issuer` = 它验的 issuer):
663
+ * 与配置里的桥成对(在不在、验的是谁),`createHttpServer` 构造期判。 */
664
+ webAdminJwtVerifier?: import("../auth-bridge.js").WebAdminJwtVerifier;
672
665
  /** Per-principal rate limiter for task/run endpoints. In-memory (single replica) or TiDB-backed
673
666
  * (cross-replica soft limit) — both satisfy RateGate. */
674
667
  rateLimiter?: RateGate;
@@ -698,14 +691,14 @@ export interface ServiceDeploymentDeps {
698
691
  * (内建 details+center 条目同判定源盖同名)。absent = 404(与 capabilities 缺席同姿势)。 */
699
692
  scenarioDetails?: Record<string, import("../capabilities/scenarios.js").ScenarioDetail>;
700
693
  /** Honest /health `sessionBackend` label — the wiring coerces the config enum to "tidb"
701
- * (meaning "durable, generically"), which on a pg deployment reads as SQL-TiDB and misleads triage.
702
- * main.ts passes the effective store label (`durable(pg)` / `durable(mysql)` / `durable(local)` / "memory",
703
- * same derivation as the boot `listening` log). Absent → fall back to the raw config enum. */
694
+ * (meaning "the backend's store, generically"), which on a pg deployment reads as SQL-TiDB and misleads triage.
695
+ * main.ts passes the backend KIND the session store landed on (`pg` / `mysql` / `local` / "memory", `sessionStoreLabelOf`,
696
+ * same derivation as the boot `listening` log) — the kind only; durability is `/health.store.durability`. Absent → fall back to the raw config enum. */
704
697
  sessionStoreLabel?: string;
705
- /** S5 → [ref] ①:持久化姿态的**唯一**装配值(`store-posture.ts`,`boot/stores.ts` 铸):`/health` 的 `storeDegraded` / `durable:false`
706
- * (present-iff `degradedReason` 在场)与 caps `store` 同读它,gauge `store_backend_degraded` 在装配点读同一只。
707
- * 缺席 = 这个进程不是由 composition root 装起来的(测试夹具形)⇒ `/health` 不带降级位、caps `store` 取诚实下限
708
- * (`declared` = 配置词,`backend:"memory"` —— 本面不知道任何装出来的后端)。 */
698
+ /** S5 → [ref] ①:持久化姿态的**唯一**装配值(`store-posture.ts`,`boot/stores.ts` 铸):`/health` 的 `storeDegraded`(present-iff `degradedReason` 在场)
699
+ * 与 `store.durability`、caps `store`、诊断 `storeDurability` 同读它,gauge `store_backend_degraded` 与起服布线审计在装配点读同一只。
700
+ * 缺席 = 这个进程不是由 composition root 装起来的(测试夹具形)⇒ `/health` 不带降级位、caps / `/health` / 诊断取诚实下限
701
+ * `unwiredStorePosture`(`declared` = 配置词,`backend:"memory"` ⇒ `ephemeral` —— 本面不知道任何装出来的后端)。 */
709
702
  storePosture?: import("../store-posture.js").StorePosture;
710
703
  /** [ref] ②:caps `centerWiring` 的读面(`capabilities/center-wiring.ts` `createCenterWiringReader`;入参 = 请求的已验 principal)。
711
704
  * 缺席 = 没接中心(或测试夹具)⇒ 键整个缺席。 */
@@ -715,6 +708,11 @@ export interface ServiceDeploymentDeps {
715
708
  * Caps `credentialPlane.sandboxGit` calls it on every read and projects the answer as is. Absent = not built by the composition root (a fixture) ⇒
716
709
  * the same judge on config alone, the seat counted as not asked. */
717
710
  sandboxGitPlane?: () => import("../sandbox-git-plane.js").SandboxGitPlane;
711
+ /**
712
+ * local-docker 车道容器帽的闸的只读面(`plugins/local-docker-capacity.ts`;`DOCKER_MAX_CONTAINERS` 开着才在)。
713
+ * 两个读者:提交门(`run-concurrency-cap.ts`:闸里有起动在等空位 ⇒ 新提交 429 `sandbox_capacity`)与 `/health.sandboxCapacity`。缺席 ⇒ 两处都不读、形状不变。
714
+ */
715
+ sandboxCapacity?: import("../plugins/local-docker-capacity.js").SandboxCapacityView | undefined;
718
716
  /**
719
717
  * 本进程起服装上的**运维声明** mod 包数(部署座装配口 `assembleDeploymentMods` 的 `loaded.length`;本服务自铸的注册不算)。一个事实两个出口,同读这一格:
720
718
  * `/health` 的 `mods: { deploymentPackages }` 与 `/v1/capabilities` 的 `modsDeploymentPackages: true` —— 都只在 > 0 时在场;0 / 缺席(没声明,或不是由
@@ -4,7 +4,8 @@ import { validatePendingSteer } from "@sema-agent/core";
4
4
  import {} from "../web-admin-client/facade.js";
5
5
  import { describeValueShape } from "@sema-agent/settings-schema";
6
6
  import { HttpError } from "../security.js";
7
- import { SessionForkInProgressError } from "../execution-placement.js";
7
+ import { SessionDeletingError, SessionForkInProgressError } from "../execution-placement.js";
8
+ import { ORG_DELIVERY_QUOTA_UNREADABLE_SENTENCE, OrgDeliveryQuotaUnreadableError } from "../plugins/org-delivery-quota-store.js";
8
9
  import {} from "../memory-sync.js";
9
10
  import {} from "../orchestration/workflow-agent-steer.js";
10
11
  import {} from "../orchestration/workflow-completion-inbox.js";
@@ -19,14 +20,14 @@ import { cascadeConfig } from "./run-meta.js";
19
20
  export { cascadeConfig };
20
21
  import { coarseStatusForState, errorCodeForExit } from "./routes/images.js";
21
22
  export { coarseStatusForState, errorCodeForExit };
22
- import { sendError, sendHttpError, sendOpenFaceFault, logRequestError } from "./send.js";
23
+ import { attachResponseLogger, sendError, sendHttpError, sendOpenFaceFault, logRequestError } from "./send.js";
23
24
  import { createRequestGuards } from "./request-guards.js";
24
25
  import { createRunConcurrencyGate, liveRunIdsOf } from "./run-concurrency-cap.js";
25
26
  import { sqlEngineSeatIssue } from "../sql-engine-posture.js";
26
27
  import { parkDecisionStoreRefusal } from "../orchestration/workflow-park-decision.js";
27
28
  import { CHECKPOINT_CTX_SEALING_REQUIRED } from "./checkpoint-ctx.js";
28
29
  import { PARKED_REVIVE_EXECUTION_SEAT_REQUIRED } from "../parked-decide.js";
29
- import { operatorDeclarationRefusal } from "../config-invariants.js";
30
+ import { a2aAudienceVerifiedSourceRefusal, operatorDeclarationRefusal } from "../config-invariants.js";
30
31
  import { retiredServiceDepsRefusal } from "./retired-service-deps.js";
31
32
  import { createAdmission, MAX_SKILL_CONTENT_CHARS, MAX_SYSTEM_PROMPT_CHARS, MAX_OUTPUT_SCHEMA_CHARS, validateUserSkills } from "./admission.js";
32
33
  import { createResumeLegs } from "./resume-legs.js";
@@ -34,9 +35,12 @@ import * as facts from "../capability-facts.js";
34
35
  import { createDispatch } from "./dispatch.js";
35
36
  import { routeLabel, isBillableSubmitPath, isCredentialGatedRewrite, isMethodDispatchedSubmitPath, isProbePath } from "./route-table.js";
36
37
  import { createApprovalSweeps } from "./approval-sweeps.js";
37
- export { routeLabel, isBillableSubmitPath, isCredentialGatedRewrite, isMethodDispatchedSubmitPath, hasServiceAuth };
38
+ export { routeLabel, isBillableSubmitPath, isCredentialGatedRewrite, isMethodDispatchedSubmitPath };
38
39
  export { MAX_SKILL_CONTENT_CHARS, MAX_SYSTEM_PROMPT_CHARS, MAX_OUTPUT_SCHEMA_CHARS, validateUserSkills };
39
- import { explicitOperatorOk, hasServiceAuth } from "./principal-gate.js";
40
+ import { explicitOperatorOk } from "./principal-gate.js";
41
+ import { authBridgeIssuerOf, configuredIdentitySources } from "../identity-source.js";
42
+ import { normalizeBridgeIssuer } from "../auth-bridge.js";
43
+ import { buildDisplaySafeUrl } from "../trace/redact.js";
40
44
  export { explicitOperatorOk };
41
45
  class DrainYieldingPreemptBook extends Map {
42
46
  drainingNow;
@@ -72,6 +76,12 @@ export function createHttpServer(rawDeps) {
72
76
  if (!Array.isArray(deps.deploymentMods)) {
73
77
  throw new Error("createHttpServer: the deploymentMods seat is required — it is how the server learns whether a prompt screen runs on its legs (the same registrations the Runners carry as `mods`); pass `[]` for an embedding without mods; refusing to start rather than store objective text before the screen decides");
74
78
  }
79
+ if (typeof deps.peerDesk?.lease !== "function" || typeof deps.peerDesk.declare !== "function" || typeof deps.peerDesk.seat?.answer !== "function") {
80
+ throw new Error("createHttpServer: the peerDesk seat is required — it is the one registry of the MCP / A2A credential pieces a send carries, and the submission and resume funnels open their host leases over it; pass `createPeerDesk()` (package root, zero IO — an embedding without MCP / A2A credentials passes one too), the very desk each Runner carries as `peerSeat: desk.seat`; refusing to start rather than answer every submission with a 500 at its first lease");
81
+ }
82
+ if (typeof deps.scenarioGate !== "function" || typeof deps.scenarioGate.known !== "function") {
83
+ throw new Error("createHttpServer: the scenarioGate seat is required — it is the one reading of which scenario names this deployment serves and lets a principal use, and the capability status face, the two session panels and the scenario request header all ask it; pass the gate that `createScenarioGate` (package root) mints from your config, scenario table and principal caps on its \"peek\" leg; refusing to start rather than answer those reads with a 500");
84
+ }
75
85
  {
76
86
  const retired = retiredServiceDepsRefusal(deps);
77
87
  if (retired !== undefined)
@@ -83,6 +93,37 @@ export function createHttpServer(rawDeps) {
83
93
  throw new Error(operatorDeclarationFailure);
84
94
  }
85
95
  }
96
+ {
97
+ const bridgeDeclared = configuredIdentitySources(deps.config).includes("sso");
98
+ const verifierWired = deps.webAdminJwtVerifier !== undefined;
99
+ if (verifierWired && !bridgeDeclared) {
100
+ throw new Error("createHttpServer: a webAdminJwtVerifier was injected but the config declares no auth bridge — set authBridgeIssuer (AUTH_BRIDGE_ISSUER) or configure the center (webAdmin), " +
101
+ "since which identity sources this deployment has is read from the config alone (the owner gates, /health.auth and the one-time migrations read it); " +
102
+ "refusing to start rather than verify SSO tokens on a deployment the owner gates read as having no identity boundary");
103
+ }
104
+ if (bridgeDeclared && !verifierWired) {
105
+ throw new Error("createHttpServer: the config declares an auth bridge (authBridgeIssuer, or the center base webAdmin.baseUrl when that is unset) but no webAdminJwtVerifier was injected — " +
106
+ "the service boot builds one from that same issuer; inject a verifier for it, or remove the bridge and the center from the config, " +
107
+ "since /health.auth, the owner gates and the one-time migrations read the bridge from the config alone; refusing to start rather than report SSO sign-in that verifies nobody");
108
+ }
109
+ const configured = authBridgeIssuerOf(deps.config);
110
+ const verifier = deps.webAdminJwtVerifier;
111
+ if (verifier !== undefined && configured !== undefined) {
112
+ const verifies = verifier.issuer;
113
+ if (typeof verifies !== "string" || normalizeBridgeIssuer(verifies) !== normalizeBridgeIssuer(configured.issuer)) {
114
+ throw new Error(`createHttpServer: the injected webAdminJwtVerifier verifies issuer ${typeof verifies === "string" ? buildDisplaySafeUrl(verifies) : `<${describeValueShape(verifies)}>`}, ` +
115
+ `but the config's auth bridge issuer is ${buildDisplaySafeUrl(configured.issuer)} (authBridgeIssuer / AUTH_BRIDGE_ISSUER, or the center base webAdmin.baseUrl when that is unset) — ` +
116
+ "the gate would accept one issuer's tokens while /health.center.issuer reports another; the config is the only place the deployment's issuer is read, " +
117
+ "so inject a verifier whose `issuer` member (the issuer it verifies tokens for) is that one, or change the config to the issuer the verifier verifies " +
118
+ "(the values are shown display-safe: credentials, query and fragment are folded); refusing to start rather than verify tokens for an issuer this deployment does not report");
119
+ }
120
+ }
121
+ }
122
+ {
123
+ const audienceSourceFailure = a2aAudienceVerifiedSourceRefusal(deps.config.a2aServe, configuredIdentitySources(deps.config).length === 0);
124
+ if (audienceSourceFailure !== undefined)
125
+ throw new Error(audienceSourceFailure);
126
+ }
86
127
  {
87
128
  const issue = sqlEngineSeatIssue(deps.backend, deps.sqlEngine);
88
129
  if (issue !== undefined) {
@@ -165,10 +206,10 @@ export function createHttpServer(rawDeps) {
165
206
  const cs = deps.checkpointStore;
166
207
  if (!cs)
167
208
  return false;
168
- const scope = await cs.peekPendingScope(sessionId);
209
+ const scope = await cs.peekPendingScope(sessionId, { axis: "run" });
169
210
  if (scope === null || scope === undefined)
170
211
  return false;
171
- const token = await cs.findPendingTokenBySession(sessionId, scope);
212
+ const token = await cs.findPendingTokenBySession(sessionId, scope, { axis: "run" });
172
213
  if (!token)
173
214
  return false;
174
215
  return await cs.setPendingSteer(token, scope, { text, trusted: false });
@@ -178,13 +219,14 @@ export function createHttpServer(rawDeps) {
178
219
  }
179
220
  };
180
221
  }
181
- const { quotaExceeded, ownerCostQuotaDenied, ownerFleetLeaseDenied, ownerLeaseDenied, ownerQuotaDenied, leaseDenied, usageWindowDenialFor, usageWindowDenied, rateLimited, safeDecode, runOwnerOk, sessionOwnerOk, runSessionAcceptOk, readJson, readRawBody } = createRequestGuards({ deps });
222
+ const { quotaExceeded, ownerCostQuotaDenied, ownerFleetLeaseDenied, ownerLeaseDenied, ownerQuotaDenied, leaseDenied, usageWindowDenialFor, usageWindowDenied, rateLimited, safeDecode, readJson, readRawBody } = createRequestGuards({ deps });
182
223
  const { prepareSpec } = createAdmission({ deps, readJson, runnerFor });
183
224
  const { admitRun } = createRunConcurrencyGate({ deps, inflightRuns, steerableRuns });
184
- const { routeCtxBase, resumeCheckpoint, driveResumeIntoRunLog, driveResumeLeg, mayDiscloseRowError, resumePreempted, startFreshHostTurn, resumeWake, sessionNotifyDoor } = createResumeLegs({ deps, runnerFor, idemCache, inflightRuns, preemptableRuns, steerableRuns, wakeParkMints, counters, readJson, readRawBody, rateLimited, quotaExceeded, ownerQuotaDenied, leaseDenied, ownerLeaseDenied, usageWindowDenied, admitRun, safeDecode, runOwnerOk, sessionOwnerOk, runSessionAcceptOk, prepareSpec, finalizeTaskResult, ownerCostQuotaDenied, ownerFleetLeaseDenied, usageWindowDenialFor });
185
- const { denyExpiredApprovals, redeemParkedAsk } = createApprovalSweeps({ deps, resumeCheckpoint, mayDiscloseRowError });
225
+ const { routeCtxBase, resumeCheckpoint, driveResumeIntoRunLog, driveResumeLeg, decisionRowAdmits, resumePreempted, startFreshHostTurn, resumeWake, sessionNotifyDoor } = createResumeLegs({ deps, runnerFor, idemCache, inflightRuns, preemptableRuns, steerableRuns, wakeParkMints, counters, readJson, readRawBody, rateLimited, quotaExceeded, ownerQuotaDenied, leaseDenied, ownerLeaseDenied, usageWindowDenied, admitRun, safeDecode, prepareSpec, finalizeTaskResult, ownerCostQuotaDenied, ownerFleetLeaseDenied, usageWindowDenialFor });
226
+ const { denyExpiredApprovals, redeemParkedAsk } = createApprovalSweeps({ deps, resumeCheckpoint, decisionRowAdmits });
186
227
  const { handle } = createDispatch({ deps, noteActivity, routeCtxBase, counters });
187
228
  const server = http.createServer((req, res) => {
229
+ attachResponseLogger(res, deps.logger);
188
230
  void handle(req, res).catch((err) => {
189
231
  if (err instanceof HttpError) {
190
232
  if (!res.headersSent)
@@ -202,6 +244,14 @@ export function createHttpServer(rawDeps) {
202
244
  sendError(res, 409, err.code, err.message);
203
245
  return;
204
246
  }
247
+ if (err instanceof SessionDeletingError) {
248
+ sendError(res, 409, err.code, err.message);
249
+ return;
250
+ }
251
+ if (err instanceof OrgDeliveryQuotaUnreadableError) {
252
+ sendError(res, 500, "internal.org_delivery_quota_unreadable", ORG_DELIVERY_QUOTA_UNREADABLE_SENTENCE);
253
+ return;
254
+ }
205
255
  sendOpenFaceFault(res, err);
206
256
  });
207
257
  });
@@ -234,7 +284,7 @@ export function createHttpServer(rawDeps) {
234
284
  recordTaskResult(result);
235
285
  deps.planCacheProbe?.record(principal, objective, result.terminal.kind === "completed");
236
286
  }
237
- const isRunLiveOnThisReplica = (taskId) => inflightRuns.has(taskId) || steerableRuns.has(taskId);
287
+ const isRunLiveOnThisReplica = (taskId) => liveRunIdsOf(inflightRuns, steerableRuns).has(taskId);
238
288
  return Object.assign(server, { denyExpiredApprovals, isRunLiveOnThisReplica, redeemParkedAsk, sessionNotifyDoor });
239
289
  }
240
290
  //# sourceMappingURL=server.js.map
@@ -8,13 +8,16 @@
8
8
  import type { IncomingMessage, ServerResponse } from "node:http";
9
9
  export interface SseLogProvider<E extends {
10
10
  seq: number;
11
+ }, R extends {
12
+ status: string;
13
+ } = {
14
+ status: string;
11
15
  }> {
12
- /** The coarse terminality status + the freshness clock (`updatedAt`). Undefined/null ⇒ unknown id (the
13
- * caller already 404'd existence before opening the stream, so this is the in-flight terminal poll). */
14
- statusOf(id: string): Promise<{
15
- status: string;
16
- updatedAt: string;
17
- } | null | undefined>;
16
+ /** The log's row as the provider answers it (the coarse terminality status rides on it). Undefined/null ⇒ unknown id (the
17
+ * caller already 404'd existence before opening the stream, so this is the in-flight terminal poll).
18
+ * 🔴 **本泵不看钟**:「这条日志的写者死了没」不是泵的问题 —— 行答 `running` 就接着 tail,行答别的就收尾。run 日志的 provider 交回的是
19
+ * 过了观察口的行(心跳过期 ⇒ 当场落死亡判决,行随之不再 `running`);bake 日志的 provider 在自己这一侧折叠(它的判据是 bake 的,另票收)。 */
20
+ statusOf(id: string): Promise<R | null | undefined>;
18
21
  /** Events with seq strictly greater than `after`, ascending. */
19
22
  getEvents(id: string, after: number): Promise<E[]>;
20
23
  /** Map ONE event to its SSE frame (the `id:`/`event:`/`data:` lines differ per log). */
@@ -23,11 +26,13 @@ export interface SseLogProvider<E extends {
23
26
  event: string;
24
27
  data: unknown;
25
28
  };
26
- /** The synthetic frame written when the log is stale (no events + `updatedAt` older than `staleMs`). */
27
- staleFrame(): {
29
+ /** 这一行账本是不是一帧**终帧**(本连接投过它 ⇒ 收尾时不再合成)。 */
30
+ isTerminalEvent(ev: E): boolean;
31
+ /** 行不再 `running`、剩余事件写完之后的**收尾帧**(从行合成;`deliveredTerminal` = 本连接已投过一帧账本终帧);交回 `undefined` ⇒ 不写。 */
32
+ closingFrameOf(row: R, deliveredTerminal: boolean): {
28
33
  event: string;
29
34
  data: unknown;
30
- };
35
+ } | undefined;
31
36
  /**
32
37
  * [ref] 车3 §5:**开流 preamble** —— 在 `sseHeaders` **之后**、日志 tail **之前**写的
33
38
  * 一批**非账本**帧(今天唯一的用户 = 审批未决卡的全量对账基准)。
@@ -84,6 +89,8 @@ export declare function collectSsePreamble<F>(preamble: (signal: AbortSignal) =>
84
89
  * 是一句谎。续读语义因此只有一句:投 `seq > from` 的每一行(缺的行就是缺的,不补、不猜)。 */
85
90
  export declare function streamSseLog<E extends {
86
91
  seq: number;
87
- }>(req: IncomingMessage, res: ServerResponse, provider: SseLogProvider<E>, id: string, staleMs: number): Promise<void>;
92
+ }, R extends {
93
+ status: string;
94
+ }>(req: IncomingMessage, res: ServerResponse, provider: SseLogProvider<E, R>, id: string): Promise<void>;
88
95
  export declare function sleep(ms: number): Promise<void>;
89
96
  //# sourceMappingURL=sse-log.d.ts.map