@sema-agent/server 7.146.0 → 7.148.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (850) hide show
  1. package/MIGRATION.md +1423 -24
  2. package/README.md +21 -8
  3. package/README.zh-CN.md +15 -9
  4. package/USAGE.md +537 -216
  5. package/deploy/facts/lanes.json +7 -0
  6. package/deploy/sema-up/README.md +18 -7
  7. package/deploy/sema-up/chart/templates/NOTES.txt +1 -1
  8. package/deploy/sema-up/chart/templates/_helpers.tpl +42 -4
  9. package/deploy/sema-up/chart/templates/server-v4pro.yaml +5 -4
  10. package/deploy/sema-up/chart/templates/server.yaml +5 -4
  11. package/deploy/sema-up/chart/values.yaml +4 -3
  12. package/deploy/sema-up/cluster-up.sh +75 -176
  13. package/deploy/sema-up/kube-up.sh +29 -49
  14. package/deploy/sema-up/lib/chart-run.sh +23 -0
  15. package/deploy/sema-up/lib/dataroot.sh +3 -3
  16. package/deploy/sema-up/lib/flagshape.sh +4 -0
  17. package/deploy/sema-up/lib/health.sh +62 -13
  18. package/deploy/sema-up/lib/helm-values-cluster.py +18 -0
  19. package/deploy/sema-up/lib/helm-values-kube.py +35 -0
  20. package/deploy/sema-up/lib/lanes.json +2 -5
  21. package/deploy/sema-up/lib/regcred.py +8 -0
  22. package/deploy/sema-up/lib/remote/helm-install.sh +3 -0
  23. package/deploy/sema-up/lib/remote/image-import.sh +6 -0
  24. package/deploy/sema-up/lib/remote/machine-precheck.sh +11 -0
  25. package/deploy/sema-up/lib/remote/region-probe.sh +3 -0
  26. package/deploy/sema-up/lib/remote/stack-ready.sh +26 -0
  27. package/deploy/sema-up/lib/remote/vxlan-guard.sh +8 -0
  28. package/deploy/sema-up/lib/render-stack.py +17 -0
  29. package/deploy/sema-up/lib/shell-text.sh +87 -0
  30. package/deploy/sema-up/lib/usage-flags.txt +10 -0
  31. package/deploy/sema-up/lib/usage-head.txt +1 -0
  32. package/deploy/sema-up/lib/usage-tail.txt +13 -0
  33. package/deploy/sema-up/preflight.sh +10 -8
  34. package/deploy/sema-up/sema-up.sh +26 -48
  35. package/deploy/sema-up/smoke.sh +7 -6
  36. package/deploy/sema-up/stack/compose.dataroot.yaml +3 -0
  37. package/deploy/sema-up/stack/compose.yaml +18 -5
  38. package/deploy/sema-up/stack/sema-stack-cluster.yaml +25 -3
  39. package/dist/adoption/plan.d.ts +24 -0
  40. package/dist/adoption/plan.js +53 -1
  41. package/dist/adoption/runner.d.ts +10 -1
  42. package/dist/adoption/runner.js +36 -16
  43. package/dist/adoption/wire.d.ts +3 -3
  44. package/dist/approval-card.d.ts +32 -34
  45. package/dist/approval-gate-currency.js +3 -2
  46. package/dist/approval-reconciler.d.ts +4 -13
  47. package/dist/approval-reconciler.js +2 -2
  48. package/dist/approval.d.ts +16 -14
  49. package/dist/approval.js +3 -3
  50. package/dist/audit.d.ts +10 -3
  51. package/dist/audit.js +17 -9
  52. package/dist/auth-bridge.d.ts +0 -14
  53. package/dist/auth-bridge.js +0 -7
  54. package/dist/auto-mode-face.d.ts +10 -7
  55. package/dist/auto-mode-face.js +7 -4
  56. package/dist/background-agent-name.d.ts +19 -1
  57. package/dist/background-agent-name.js +12 -2
  58. package/dist/background-session-reap.d.ts +1 -1
  59. package/dist/bake-runner/main.js +9 -6
  60. package/dist/bench/s1/arms.js +6 -5
  61. package/dist/bench/s1/live-deps.js +8 -3
  62. package/dist/bench/s1/run-firm.js +6 -5
  63. package/dist/bind-host.d.ts +25 -0
  64. package/dist/bind-host.js +25 -0
  65. package/dist/boot/adoption.d.ts +3 -0
  66. package/dist/boot/adoption.js +1 -0
  67. package/dist/boot/crash-last.js +2 -1
  68. package/dist/boot/deployment-mods.d.ts +1 -1
  69. package/dist/boot/device-lane.js +5 -5
  70. package/dist/boot/engine-lease.d.ts +12 -11
  71. package/dist/boot/execution-env.d.ts +19 -8
  72. package/dist/boot/execution-env.js +80 -62
  73. package/dist/boot/execution-lane.d.ts +37 -9
  74. package/dist/boot/execution-lane.js +74 -20
  75. package/dist/boot/exit-boundary.d.ts +3 -3
  76. package/dist/boot/exit-boundary.js +6 -5
  77. package/dist/boot/exit-last.js +2 -1
  78. package/dist/boot/fatal-exit.d.ts +3 -5
  79. package/dist/boot/fatal-exit.js +2 -2
  80. package/dist/boot/governance-seams.d.ts +2 -2
  81. package/dist/boot/leader.d.ts +15 -0
  82. package/dist/boot/leader.js +18 -16
  83. package/dist/boot/memory-boundary.d.ts +11 -11
  84. package/dist/boot/memory-boundary.js +3 -3
  85. package/dist/boot/memory-consolidation.d.ts +50 -53
  86. package/dist/boot/memory-consolidation.js +11 -18
  87. package/dist/boot/org-memory.js +4 -3
  88. package/dist/boot/parked-revive-gate.d.ts +1 -1
  89. package/dist/boot/parked-revive-gate.js +3 -3
  90. package/dist/boot/reapers.d.ts +4 -3
  91. package/dist/boot/reapers.js +20 -17
  92. package/dist/boot/resolve-spec.d.ts +5 -3
  93. package/dist/boot/resolve-spec.js +133 -165
  94. package/dist/boot/retention-lane.d.ts +7 -45
  95. package/dist/boot/retention-lane.js +2 -2
  96. package/dist/boot/runner-deps.d.ts +28 -7
  97. package/dist/boot/runner-deps.js +11 -4
  98. package/dist/boot/runtime-caps.d.ts +2 -2
  99. package/dist/boot/runtime-caps.js +16 -2
  100. package/dist/boot/session-faces.d.ts +17 -7
  101. package/dist/boot/session-faces.js +122 -96
  102. package/dist/boot/shutdown.d.ts +5 -4
  103. package/dist/boot/shutdown.js +6 -4
  104. package/dist/boot/stage-01-config.d.ts +1 -1
  105. package/dist/boot/stage-01-config.js +14 -2
  106. package/dist/boot/stage-02-web-admin-pull.d.ts +2 -1
  107. package/dist/boot/stage-02-web-admin-pull.js +15 -8
  108. package/dist/boot/stage-03-store-backend.d.ts +4 -1
  109. package/dist/boot/stage-03-store-backend.js +4 -3
  110. package/dist/boot/stage-04-stores.d.ts +3 -1
  111. package/dist/boot/stage-04-stores.js +2 -2
  112. package/dist/boot/stage-05-execution-env.d.ts +9 -5
  113. package/dist/boot/stage-05-execution-env.js +5 -5
  114. package/dist/boot/stage-06-runners.d.ts +13 -15
  115. package/dist/boot/stage-06-runners.js +24 -18
  116. package/dist/boot/stage-07-capability-layer.d.ts +14 -11
  117. package/dist/boot/stage-07-capability-layer.js +9 -12
  118. package/dist/boot/stage-08-reapers.d.ts +14 -11
  119. package/dist/boot/stage-08-reapers.js +3 -3
  120. package/dist/boot/stage-09-leader.d.ts +16 -18
  121. package/dist/boot/stage-09-leader.js +12 -4
  122. package/dist/boot/stage-10-http-server.d.ts +16 -18
  123. package/dist/boot/stage-10-http-server.js +9 -5
  124. package/dist/boot/store-evidence.d.ts +20 -0
  125. package/dist/boot/store-evidence.js +13 -0
  126. package/dist/boot/stores.d.ts +12 -0
  127. package/dist/boot/stores.js +39 -17
  128. package/dist/boot/task-list-lane.d.ts +4 -4
  129. package/dist/boot/web-admin.d.ts +4 -2
  130. package/dist/boot/web-admin.js +58 -38
  131. package/dist/boot/webfetch-summarize-lane.d.ts +1 -1
  132. package/dist/boot-reclaim.d.ts +3 -1
  133. package/dist/boot-reclaim.js +1 -1
  134. package/dist/brain.d.ts +7 -18
  135. package/dist/brain.js +5 -17
  136. package/dist/budget.js +6 -6
  137. package/dist/capabilities/center-plugins.d.ts +9 -1
  138. package/dist/capabilities/center-plugins.js +37 -11
  139. package/dist/capabilities/center-wiring.js +1 -1
  140. package/dist/capabilities/composite-members.d.ts +3 -2
  141. package/dist/capabilities/composite-members.js +3 -2
  142. package/dist/capabilities/execution-lane.d.ts +7 -7
  143. package/dist/capabilities/execution-lane.js +2 -2
  144. package/dist/capabilities/hands-lane.d.ts +1 -1
  145. package/dist/capabilities/repo-tools.d.ts +2 -0
  146. package/dist/capabilities/repo-tools.js +14 -12
  147. package/dist/capabilities/scenarios.d.ts +38 -33
  148. package/dist/capabilities/scenarios.js +24 -25
  149. package/dist/capabilities/settings-contract.d.ts +29 -0
  150. package/dist/capabilities/settings-contract.js +14 -0
  151. package/dist/capabilities/skills.d.ts +6 -6
  152. package/dist/capabilities/tool-defer.d.ts +1 -1
  153. package/dist/capability-facts.d.ts +69 -4
  154. package/dist/capability-facts.js +77 -5
  155. package/dist/card-void.d.ts +4 -4
  156. package/dist/card-void.js +1 -1
  157. package/dist/center-credential-renewer.d.ts +6 -2
  158. package/dist/center-credential-renewer.js +10 -5
  159. package/dist/config-catalog.d.ts +16 -1
  160. package/dist/config-catalog.js +68 -61
  161. package/dist/config-dir-trust.d.ts +37 -4
  162. package/dist/config-dir-trust.js +88 -44
  163. package/dist/config-invariants.d.ts +58 -4
  164. package/dist/config-invariants.js +104 -23
  165. package/dist/config-lkg.d.ts +24 -2
  166. package/dist/config-lkg.js +22 -9
  167. package/dist/config-provider.d.ts +9 -9
  168. package/dist/config-provider.js +25 -108
  169. package/dist/config-pull-failure.d.ts +50 -0
  170. package/dist/config-pull-failure.js +48 -0
  171. package/dist/config-types.d.ts +215 -202
  172. package/dist/config.d.ts +69 -14
  173. package/dist/config.js +188 -96
  174. package/dist/degenerate-instrument.js +1 -1
  175. package/dist/delegated-session-owner.d.ts +1 -1
  176. package/dist/deleted-session-ids.d.ts +3 -2
  177. package/dist/deploy-facts.js +3 -2
  178. package/dist/deployment-governance.d.ts +3 -3
  179. package/dist/deployment-shape.d.ts +51 -16
  180. package/dist/deployment-shape.js +31 -6
  181. package/dist/egress-redirect.d.ts +25 -7
  182. package/dist/egress-redirect.js +20 -2
  183. package/dist/elicitation.d.ts +6 -5
  184. package/dist/elicitation.js +23 -22
  185. package/dist/engine-identity.d.ts +28 -0
  186. package/dist/engine-identity.js +10 -0
  187. package/dist/entry-problems.d.ts +5 -7
  188. package/dist/entry-problems.js +1 -1
  189. package/dist/env-facts.d.ts +7 -5
  190. package/dist/env-facts.js +12 -7
  191. package/dist/env-witness.d.ts +7 -0
  192. package/dist/env-witness.js +16 -0
  193. package/dist/execution-config-root.d.ts +5 -5
  194. package/dist/execution-config-root.js +5 -5
  195. package/dist/execution-env-purpose.d.ts +14 -0
  196. package/dist/execution-env-purpose.js +29 -0
  197. package/dist/execution-lane-caps.d.ts +53 -103
  198. package/dist/execution-lane-caps.js +51 -83
  199. package/dist/execution-placement.d.ts +65 -9
  200. package/dist/execution-placement.js +58 -0
  201. package/dist/field-conflict.d.ts +7 -11
  202. package/dist/field-conflict.js +3 -3
  203. package/dist/file-history-capture.d.ts +3 -3
  204. package/dist/file-history-disclosure.d.ts +2 -2
  205. package/dist/file-history-disclosure.js +1 -0
  206. package/dist/fleet/drain-entry.d.ts +17 -10
  207. package/dist/fleet/drain-entry.js +1 -1
  208. package/dist/fleet/fleet-bus.d.ts +21 -3
  209. package/dist/fleet/fleet-bus.js +35 -25
  210. package/dist/fleet/fleet-reconciler.js +2 -2
  211. package/dist/fleet/serving-lease.js +6 -7
  212. package/dist/fleet-client.js +3 -3
  213. package/dist/fleet-lease.d.ts +0 -1
  214. package/dist/fleet-lease.js +4 -5
  215. package/dist/history-anchor.d.ts +42 -0
  216. package/dist/history-anchor.js +34 -0
  217. package/dist/hitl-delivery.d.ts +90 -0
  218. package/dist/hitl-delivery.js +98 -0
  219. package/dist/hooks/classic-stations.d.ts +8 -11
  220. package/dist/hooks/classic-stations.js +0 -7
  221. package/dist/hooks/command-spawn.d.ts +1 -4
  222. package/dist/hooks/command-spawn.js +0 -11
  223. package/dist/hooks/hook-llm.d.ts +5 -1
  224. package/dist/hooks/hook-llm.js +24 -15
  225. package/dist/hooks/hook-runner.d.ts +119 -65
  226. package/dist/hooks/hook-runner.js +415 -217
  227. package/dist/host-lsp-manager.d.ts +22 -8
  228. package/dist/host-lsp-manager.js +4 -1
  229. package/dist/http/active-run-conflict.d.ts +2 -43
  230. package/dist/http/active-run-conflict.js +3 -7
  231. package/dist/http/admission.d.ts +4 -18
  232. package/dist/http/admission.js +75 -78
  233. package/dist/http/approval-sweeps.d.ts +5 -8
  234. package/dist/http/approval-sweeps.js +55 -30
  235. package/dist/http/caller-trust.d.ts +8 -10
  236. package/dist/http/caller-trust.js +1 -2
  237. package/dist/http/checkpoint-ctx.d.ts +17 -0
  238. package/dist/http/checkpoint-ctx.js +6 -0
  239. package/dist/http/claim-heartbeat.d.ts +49 -0
  240. package/dist/http/claim-heartbeat.js +46 -0
  241. package/dist/http/claim-latency.d.ts +10 -0
  242. package/dist/http/claim-latency.js +12 -0
  243. package/dist/http/claimed-run.d.ts +4 -3
  244. package/dist/http/dispatch.d.ts +8 -1
  245. package/dist/http/dispatch.js +77 -31
  246. package/dist/http/durable-run-leg.d.ts +3 -3
  247. package/dist/http/durable-run-leg.js +18 -12
  248. package/dist/http/execution-context.d.ts +18 -42
  249. package/dist/http/execution-context.js +11 -5
  250. package/dist/http/health-reader.d.ts +36 -0
  251. package/dist/http/health-reader.js +21 -0
  252. package/dist/http/health-self-report.d.ts +9 -9
  253. package/dist/http/health-self-report.js +4 -4
  254. package/dist/http/idempotency.d.ts +9 -5
  255. package/dist/http/idempotency.js +4 -4
  256. package/dist/http/memory-compliance-failure-reply.d.ts +15 -16
  257. package/dist/http/memory-compliance-failure-reply.js +7 -2
  258. package/dist/http/memory-face-fault-reply.d.ts +67 -0
  259. package/dist/http/memory-face-fault-reply.js +71 -0
  260. package/dist/http/memory-store-refusal-reply.d.ts +3 -3
  261. package/dist/http/memory-store-refusal-reply.js +6 -0
  262. package/dist/http/owner-access.d.ts +391 -56
  263. package/dist/http/owner-access.js +372 -33
  264. package/dist/http/principal-gate.d.ts +26 -94
  265. package/dist/http/principal-gate.js +24 -81
  266. package/dist/http/refusal-body.d.ts +35 -2
  267. package/dist/http/refusal-body.js +34 -0
  268. package/dist/http/request-guards.d.ts +10 -14
  269. package/dist/http/request-guards.js +34 -68
  270. package/dist/http/resume-composition.d.ts +37 -0
  271. package/dist/http/resume-composition.js +18 -0
  272. package/dist/http/resume-ctx-read.d.ts +35 -12
  273. package/dist/http/resume-ctx-read.js +25 -6
  274. package/dist/http/resume-legs.d.ts +24 -24
  275. package/dist/http/resume-legs.js +260 -171
  276. package/dist/http/retired-skill-manifest.d.ts +1 -1
  277. package/dist/http/rewind-files-reply.d.ts +34 -0
  278. package/dist/http/rewind-files-reply.js +36 -0
  279. package/dist/http/route-ctx.d.ts +56 -47
  280. package/dist/http/route-table.js +2 -0
  281. package/dist/http/routes/a2a-serve.d.ts +43 -5
  282. package/dist/http/routes/a2a-serve.js +58 -37
  283. package/dist/http/routes/admin-config-refresh.js +2 -2
  284. package/dist/http/routes/admin-drain.js +2 -2
  285. package/dist/http/routes/admin-memory-optout.js +4 -3
  286. package/dist/http/routes/adoption.d.ts +3 -0
  287. package/dist/http/routes/adoption.js +17 -10
  288. package/dist/http/routes/agents-roster.js +13 -7
  289. package/dist/http/routes/approvals-assistant.js +73 -88
  290. package/dist/http/routes/attachments.js +2 -2
  291. package/dist/http/routes/background.d.ts +3 -3
  292. package/dist/http/routes/background.js +9 -17
  293. package/dist/http/routes/capabilities.js +23 -20
  294. package/dist/http/routes/config-catalog.js +2 -2
  295. package/dist/http/routes/devices.d.ts +3 -3
  296. package/dist/http/routes/devices.js +5 -5
  297. package/dist/http/routes/diagnostics.d.ts +27 -3
  298. package/dist/http/routes/diagnostics.js +27 -21
  299. package/dist/http/routes/engine.js +2 -2
  300. package/dist/http/routes/fleet.js +5 -3
  301. package/dist/http/routes/images.js +10 -6
  302. package/dist/http/routes/leader.d.ts +7 -2
  303. package/dist/http/routes/leader.js +12 -3
  304. package/dist/http/routes/mcp-reconnect.d.ts +1 -1
  305. package/dist/http/routes/mcp-reconnect.js +7 -15
  306. package/dist/http/routes/memory-bundle.js +4 -7
  307. package/dist/http/routes/memory-compliance.js +4 -4
  308. package/dist/http/routes/memory-consolidation.js +6 -9
  309. package/dist/http/routes/memory-origin.d.ts +3 -1
  310. package/dist/http/routes/memory-origin.js +7 -8
  311. package/dist/http/routes/memory-policy.js +17 -12
  312. package/dist/http/routes/notify-wake.js +12 -20
  313. package/dist/http/routes/observability.js +3 -3
  314. package/dist/http/routes/principal-inbox.d.ts +1 -1
  315. package/dist/http/routes/principal-inbox.js +2 -2
  316. package/dist/http/routes/projects.d.ts +70 -0
  317. package/dist/http/routes/projects.js +87 -0
  318. package/dist/http/routes/retention-ops.js +6 -9
  319. package/dist/http/routes/rules.js +50 -7
  320. package/dist/http/routes/run-memory-capture.d.ts +2 -2
  321. package/dist/http/routes/run-memory-capture.js +6 -12
  322. package/dist/http/routes/run-permission-mode.d.ts +2 -2
  323. package/dist/http/routes/run-permission-mode.js +10 -17
  324. package/dist/http/routes/runs.js +148 -233
  325. package/dist/http/routes/session-memory-sync.d.ts +2 -2
  326. package/dist/http/routes/session-memory-sync.js +7 -13
  327. package/dist/http/routes/session-sync.d.ts +4 -2
  328. package/dist/http/routes/session-sync.js +48 -30
  329. package/dist/http/routes/sessions-list.d.ts +3 -3
  330. package/dist/http/routes/sessions-list.js +9 -9
  331. package/dist/http/routes/sessions.d.ts +7 -1
  332. package/dist/http/routes/sessions.js +177 -112
  333. package/dist/http/routes/shared-memory.js +6 -6
  334. package/dist/http/routes/side-query.js +2 -2
  335. package/dist/http/routes/tasks.js +144 -122
  336. package/dist/http/routes/trace-usage.d.ts +0 -12
  337. package/dist/http/routes/trace-usage.js +40 -46
  338. package/dist/http/routes/workflows.d.ts +39 -4
  339. package/dist/http/routes/workflows.js +42 -14
  340. package/dist/http/run-concurrency-cap.d.ts +20 -12
  341. package/dist/http/run-concurrency-cap.js +39 -26
  342. package/dist/http/run-read-face.d.ts +3 -5
  343. package/dist/http/run-read-face.js +8 -13
  344. package/dist/http/send.d.ts +12 -3
  345. package/dist/http/send.js +42 -6
  346. package/dist/http/server.d.ts +63 -50
  347. package/dist/http/server.js +52 -16
  348. package/dist/http/sse-log.d.ts +17 -10
  349. package/dist/http/sse-log.js +7 -7
  350. package/dist/http/stored-body-replay.d.ts +17 -3
  351. package/dist/http/stored-body-replay.js +11 -2
  352. package/dist/http/submit-ctx.d.ts +16 -8
  353. package/dist/http/submit-ctx.js +6 -2
  354. package/dist/http/submit-replay.d.ts +19 -6
  355. package/dist/http/submit-replay.js +18 -6
  356. package/dist/http/sync-submit-body.d.ts +3 -4
  357. package/dist/http/sync-submit-body.js +4 -5
  358. package/dist/http/wire-types.d.ts +23 -13
  359. package/dist/identity-source.d.ts +36 -5
  360. package/dist/identity-source.js +27 -0
  361. package/dist/index.d.ts +3 -2
  362. package/dist/index.js +2 -1
  363. package/dist/instruction-source-notice.d.ts +1 -1
  364. package/dist/key-resolver.d.ts +32 -0
  365. package/dist/key-resolver.js +23 -9
  366. package/dist/leader/diffup.js +2 -1
  367. package/dist/leader/endpoint.d.ts +26 -5
  368. package/dist/leader/endpoint.js +154 -14
  369. package/dist/leader/fanout.d.ts +3 -0
  370. package/dist/leader/fanout.js +78 -63
  371. package/dist/leader/leader.d.ts +16 -0
  372. package/dist/leader/leader.js +43 -3
  373. package/dist/leader/merge.d.ts +9 -1
  374. package/dist/leader/merge.js +16 -1
  375. package/dist/leader/repair-wire.js +1 -1
  376. package/dist/leader/wire.d.ts +36 -3
  377. package/dist/leader/wire.js +59 -18
  378. package/dist/lsp-evict.d.ts +6 -4
  379. package/dist/lsp-evict.js +2 -3
  380. package/dist/memory-embedder-reembed.d.ts +38 -0
  381. package/dist/memory-embedder-reembed.js +20 -0
  382. package/dist/memory-incident-sink.d.ts +0 -28
  383. package/dist/memory-incident-sink.js +5 -0
  384. package/dist/memory-operator-faces.d.ts +5 -4
  385. package/dist/memory-operator-faces.js +1 -1
  386. package/dist/memory-scope.d.ts +31 -4
  387. package/dist/memory-scope.js +65 -16
  388. package/dist/memory-store-refusal.d.ts +20 -4
  389. package/dist/memory-store-refusal.js +1 -1
  390. package/dist/memory-sync-client.d.ts +5 -2
  391. package/dist/memory-sync-client.js +19 -14
  392. package/dist/memory-sync.js +1 -1
  393. package/dist/model-compat.d.ts +51 -28
  394. package/dist/model-compat.js +55 -23
  395. package/dist/model-context-window.d.ts +18 -0
  396. package/dist/model-context-window.js +2 -0
  397. package/dist/model-entry-headers.d.ts +46 -4
  398. package/dist/model-entry-headers.js +2 -2
  399. package/dist/model-entry-refusal.d.ts +46 -17
  400. package/dist/model-entry-refusal.js +47 -27
  401. package/dist/model-plane-face.d.ts +19 -11
  402. package/dist/model-plane-face.js +9 -1
  403. package/dist/model-plane-probe.d.ts +2 -0
  404. package/dist/model-plane-probe.js +17 -0
  405. package/dist/model-provider.d.ts +3 -3
  406. package/dist/model-route-endpoint.d.ts +9 -5
  407. package/dist/model-route-endpoint.js +29 -7
  408. package/dist/model-select.d.ts +16 -0
  409. package/dist/model-select.js +4 -0
  410. package/dist/mountinfo.d.ts +37 -0
  411. package/dist/mountinfo.js +47 -0
  412. package/dist/namespaced-rule-name.d.ts +28 -2
  413. package/dist/namespaced-rule-name.js +10 -1
  414. package/dist/net-address.d.ts +1 -1
  415. package/dist/observability/corrupt-read-seat.d.ts +4 -4
  416. package/dist/observability/corrupt-read-seat.js +5 -3
  417. package/dist/observability/fail-open.d.ts +75 -47
  418. package/dist/observability/fail-open.js +77 -47
  419. package/dist/observability/logger.d.ts +22 -1
  420. package/dist/observability/logger.js +89 -12
  421. package/dist/observability/metrics.d.ts +2 -0
  422. package/dist/observability/metrics.js +5 -4
  423. package/dist/observability/otel-exporter.js +2 -1
  424. package/dist/observability/principal-context.d.ts +14 -7
  425. package/dist/observability/principal-context.js +8 -3
  426. package/dist/observability/run-terminal.d.ts +7 -1
  427. package/dist/observability/run-terminal.js +5 -2
  428. package/dist/observability/secret-env-scrub.d.ts +30 -4
  429. package/dist/observability/secret-env-scrub.js +15 -3
  430. package/dist/orchestration/hardened-vm-runner.d.ts +1 -0
  431. package/dist/orchestration/hardened-vm-runner.js +11 -5
  432. package/dist/orchestration/hardened-vm-worker-runner.d.ts +0 -14
  433. package/dist/orchestration/hardened-vm-worker-runner.js +5 -0
  434. package/dist/orchestration/hardened-vm-worker.js +2 -1
  435. package/dist/orchestration/workflow-agent-session-index.d.ts +7 -12
  436. package/dist/orchestration/workflow-agent-session-index.js +1 -6
  437. package/dist/orchestration/workflow-completion-inbox.d.ts +29 -9
  438. package/dist/orchestration/workflow-completion-inbox.js +65 -46
  439. package/dist/org-delivery-gate.d.ts +5 -4
  440. package/dist/org-delivery-gate.js +7 -6
  441. package/dist/org-memory-admission.d.ts +5 -2
  442. package/dist/org-memory-admission.js +25 -10
  443. package/dist/outbound-dispatcher.d.ts +1 -1
  444. package/dist/outbound-dispatcher.js +6 -12
  445. package/dist/owner-brands.d.ts +81 -0
  446. package/dist/owner-brands.js +42 -0
  447. package/dist/owner-faces.d.ts +531 -0
  448. package/dist/owner-faces.js +126 -0
  449. package/dist/parked-decide.d.ts +100 -31
  450. package/dist/parked-decide.js +162 -48
  451. package/dist/parked-revive-surface.d.ts +14 -4
  452. package/dist/parked-revive-surface.js +5 -4
  453. package/dist/peer-directory.d.ts +6 -8
  454. package/dist/peer-directory.js +3 -2
  455. package/dist/permission-rule-vocab.d.ts +53 -8
  456. package/dist/permission-rule-vocab.js +30 -2
  457. package/dist/plugins/adoption-log-sql.d.ts +0 -22
  458. package/dist/plugins/adoption-log-sql.js +5 -3
  459. package/dist/plugins/approval-ask-retired-delete-by-task-m50.d.ts +7 -0
  460. package/dist/plugins/approval-ask-retired-delete-by-task-m50.js +17 -0
  461. package/dist/plugins/approval-ask-store-file.d.ts +28 -9
  462. package/dist/plugins/approval-ask-store-file.js +74 -18
  463. package/dist/plugins/approval-ask-store-memory.d.ts +17 -7
  464. package/dist/plugins/approval-ask-store-memory.js +35 -12
  465. package/dist/plugins/approval-ask-store-sql.d.ts +42 -20
  466. package/dist/plugins/approval-ask-store-sql.js +44 -11
  467. package/dist/plugins/approval-exemption-skill-m46.d.ts +20 -0
  468. package/dist/plugins/approval-exemption-skill-m46.js +25 -0
  469. package/dist/plugins/approval-exemption-store.d.ts +6 -1
  470. package/dist/plugins/approval-exemption-store.js +14 -0
  471. package/dist/plugins/approval-nonce-store.d.ts +39 -12
  472. package/dist/plugins/approval-nonce-store.js +72 -23
  473. package/dist/plugins/blob-backend.d.ts +40 -195
  474. package/dist/plugins/blob-backend.js +41 -234
  475. package/dist/plugins/caching-session-store.d.ts +22 -5
  476. package/dist/plugins/caching-session-store.js +43 -4
  477. package/dist/plugins/checkpoint-index-columns.d.ts +33 -6
  478. package/dist/plugins/checkpoint-index-columns.js +39 -3
  479. package/dist/plugins/checkpoint-store-face.d.ts +84 -11
  480. package/dist/plugins/checkpoint-store-face.js +18 -1
  481. package/dist/plugins/device-store-sql.d.ts +2 -2
  482. package/dist/plugins/device-store-sql.js +6 -10
  483. package/dist/plugins/ensure-index.d.ts +13 -1
  484. package/dist/plugins/ensure-index.js +154 -21
  485. package/dist/plugins/ensure-schema-lock-policy.d.ts +0 -15
  486. package/dist/plugins/ensure-schema-lock-policy.js +3 -2
  487. package/dist/plugins/execution-lane-rename-m40.d.ts +20 -0
  488. package/dist/plugins/execution-lane-rename-m40.js +10 -0
  489. package/dist/plugins/execution-placement-sql.d.ts +63 -88
  490. package/dist/plugins/execution-placement-sql.js +94 -54
  491. package/dist/plugins/file-run-store.d.ts +89 -35
  492. package/dist/plugins/file-run-store.js +197 -142
  493. package/dist/plugins/host-platform.d.ts +24 -3
  494. package/dist/plugins/host-platform.js +15 -1
  495. package/dist/plugins/image-bake-store-sql.js +2 -0
  496. package/dist/plugins/imported-layer-root-retirement.d.ts +19 -10
  497. package/dist/plugins/imported-layer-root-retirement.js +4 -8
  498. package/dist/plugins/inbox-payload-column.d.ts +14 -0
  499. package/dist/plugins/inbox-payload-column.js +13 -0
  500. package/dist/plugins/k8s-pod-reaper.d.ts +1 -3
  501. package/dist/plugins/k8s-pod-reaper.js +0 -1
  502. package/dist/plugins/leader-run-store-sql.d.ts +22 -0
  503. package/dist/plugins/leader-run-store-sql.js +34 -4
  504. package/dist/plugins/local-checkpoint-store.d.ts +63 -23
  505. package/dist/plugins/local-checkpoint-store.js +204 -81
  506. package/dist/plugins/local-data-dir-modes-m39.d.ts +48 -0
  507. package/dist/plugins/local-data-dir-modes-m39.js +183 -0
  508. package/dist/plugins/local-docker-capacity.d.ts +93 -0
  509. package/dist/plugins/local-docker-capacity.js +194 -0
  510. package/dist/plugins/local-docker-reaper.d.ts +92 -0
  511. package/dist/plugins/local-docker-reaper.js +102 -0
  512. package/dist/plugins/local-engine-high-water.d.ts +13 -0
  513. package/dist/plugins/local-engine-high-water.js +62 -0
  514. package/dist/plugins/local-session-store.d.ts +442 -143
  515. package/dist/plugins/local-session-store.js +941 -289
  516. package/dist/plugins/local-session-window.d.ts +3 -2
  517. package/dist/plugins/local-session-window.js +3 -2
  518. package/dist/plugins/local-sidecar-quarantine.js +3 -2
  519. package/dist/plugins/local-task-attachment-store.d.ts +20 -1
  520. package/dist/plugins/local-task-attachment-store.js +32 -12
  521. package/dist/plugins/memory-embedder-fingerprint.d.ts +33 -10
  522. package/dist/plugins/memory-embedder-fingerprint.js +52 -12
  523. package/dist/plugins/memory-embedder.d.ts +1 -1
  524. package/dist/plugins/memory-embedder.js +11 -9
  525. package/dist/plugins/memory-engine-pg.d.ts +7 -5
  526. package/dist/plugins/memory-engine-pg.js +18 -9
  527. package/dist/plugins/memory-engine-sql-apply.d.ts +21 -8
  528. package/dist/plugins/memory-engine-sql-apply.js +7 -9
  529. package/dist/plugins/memory-engine-tidb.d.ts +12 -7
  530. package/dist/plugins/memory-engine-tidb.js +18 -10
  531. package/dist/plugins/memory-optout-grant-store-sql.d.ts +1 -1
  532. package/dist/plugins/memory-optout-grant-store-sql.js +3 -3
  533. package/dist/plugins/memory-run-store.d.ts +39 -27
  534. package/dist/plugins/memory-run-store.js +72 -70
  535. package/dist/plugins/one-time-migration-marker.d.ts +10 -0
  536. package/dist/plugins/one-time-migration-marker.js +7 -0
  537. package/dist/plugins/one-time-migrations.d.ts +325 -74
  538. package/dist/plugins/one-time-migrations.js +705 -230
  539. package/dist/plugins/org-delivery-quota-store.js +2 -1
  540. package/dist/plugins/owner-only-file-mode.d.ts +29 -0
  541. package/dist/plugins/owner-only-file-mode.js +141 -0
  542. package/dist/plugins/permission-rule-store-file.d.ts +11 -11
  543. package/dist/plugins/permission-rule-store-file.js +14 -2
  544. package/dist/plugins/permission-rule-store-sql.d.ts +4 -63
  545. package/dist/plugins/permission-rule-store-sql.js +6 -86
  546. package/dist/plugins/pg-pool.d.ts +3 -32
  547. package/dist/plugins/pg-pool.js +27 -11
  548. package/dist/plugins/release-version.d.ts +20 -0
  549. package/dist/plugins/release-version.js +28 -0
  550. package/dist/plugins/remote-env-adb.d.ts +20 -4
  551. package/dist/plugins/remote-env-adb.js +39 -11
  552. package/dist/plugins/remote-env-e2b.d.ts +19 -28
  553. package/dist/plugins/remote-env-e2b.js +40 -29
  554. package/dist/plugins/remote-env-host.d.ts +11 -10
  555. package/dist/plugins/remote-env-host.js +40 -27
  556. package/dist/plugins/remote-env-k8s.d.ts +45 -47
  557. package/dist/plugins/remote-env-k8s.js +122 -62
  558. package/dist/plugins/remote-env-local-docker.d.ts +152 -15
  559. package/dist/plugins/remote-env-local-docker.js +370 -75
  560. package/dist/plugins/remote-env-ssh.d.ts +8 -2
  561. package/dist/plugins/remote-env-ssh.js +26 -24
  562. package/dist/plugins/remote-scratchpad.js +4 -0
  563. package/dist/plugins/remote-shell.d.ts +59 -30
  564. package/dist/plugins/remote-shell.js +175 -62
  565. package/dist/plugins/retention-declaration.d.ts +37 -0
  566. package/dist/plugins/retention-declaration.js +9 -0
  567. package/dist/plugins/retention-deployment.d.ts +158 -0
  568. package/dist/plugins/retention-deployment.js +119 -0
  569. package/dist/plugins/retention-lane-store-sql.d.ts +74 -4
  570. package/dist/plugins/retention-lane-store-sql.js +103 -1
  571. package/dist/plugins/retention-sql.d.ts +29 -0
  572. package/dist/plugins/retention-sql.js +8 -0
  573. package/dist/plugins/run-preview-m45.d.ts +11 -0
  574. package/dist/plugins/run-preview-m45.js +19 -0
  575. package/dist/plugins/run-store-sql.d.ts +56 -68
  576. package/dist/plugins/run-store-sql.js +127 -116
  577. package/dist/plugins/s3-answer.d.ts +2 -1
  578. package/dist/plugins/sandbox-reaper.d.ts +26 -0
  579. package/dist/plugins/sandbox-reaper.js +2 -0
  580. package/dist/plugins/scenario-prefix-switch-m42.d.ts +54 -0
  581. package/dist/plugins/scenario-prefix-switch-m42.js +55 -0
  582. package/dist/plugins/scheduler-support.d.ts +16 -1
  583. package/dist/plugins/scheduler-support.js +22 -2
  584. package/dist/plugins/schema-consistency.d.ts +42 -15
  585. package/dist/plugins/schema-consistency.js +213 -13
  586. package/dist/plugins/schema-drift-sentence.d.ts +4 -1
  587. package/dist/plugins/schema-drift-sentence.js +4 -4
  588. package/dist/plugins/schema-ensure-legs.d.ts +10 -1
  589. package/dist/plugins/schema-ensure-legs.js +12 -2
  590. package/dist/plugins/schema-indexes.js +3 -0
  591. package/dist/plugins/schema-live-columns.d.ts +14 -5
  592. package/dist/plugins/schema-live-columns.js +10 -10
  593. package/dist/plugins/send-user-file.js +2 -1
  594. package/dist/plugins/session-birth.d.ts +37 -0
  595. package/dist/plugins/session-birth.js +38 -0
  596. package/dist/plugins/session-epoch-anchor.d.ts +40 -12
  597. package/dist/plugins/session-epoch-anchor.js +33 -11
  598. package/dist/plugins/session-ext-table.d.ts +98 -0
  599. package/dist/plugins/session-ext-table.js +134 -0
  600. package/dist/plugins/session-fork.d.ts +16 -2
  601. package/dist/plugins/session-fork.js +3 -0
  602. package/dist/plugins/session-ownership.d.ts +1 -1
  603. package/dist/plugins/session-placement.d.ts +22 -16
  604. package/dist/plugins/session-placement.js +15 -12
  605. package/dist/plugins/session-row-sql.d.ts +20 -7
  606. package/dist/plugins/session-row-sql.js +16 -8
  607. package/dist/plugins/session-run-rollup.d.ts +29 -0
  608. package/dist/plugins/session-run-rollup.js +40 -0
  609. package/dist/plugins/session-store-sql.d.ts +157 -0
  610. package/dist/plugins/session-store-sql.js +398 -0
  611. package/dist/plugins/session-withdraw-sql.d.ts +36 -0
  612. package/dist/plugins/session-withdraw-sql.js +42 -0
  613. package/dist/plugins/session-workspace-cell.d.ts +2 -2
  614. package/dist/plugins/session-workspace-cell.js +2 -2
  615. package/dist/plugins/shared-memory-store-sql.d.ts +10 -69
  616. package/dist/plugins/shared-memory-store-sql.js +15 -14
  617. package/dist/plugins/shell-sentinel-owner-m48.d.ts +20 -0
  618. package/dist/plugins/shell-sentinel-owner-m48.js +3 -0
  619. package/dist/plugins/snapshot-bucket-presence.d.ts +2 -1
  620. package/dist/plugins/snapshot-bucket-presence.js +1 -1
  621. package/dist/plugins/sql-driver.d.ts +24 -8
  622. package/dist/plugins/sql-driver.js +43 -9
  623. package/dist/plugins/sql-errors.d.ts +35 -5
  624. package/dist/plugins/sql-errors.js +55 -3
  625. package/dist/plugins/sql-json-column.d.ts +8 -7
  626. package/dist/plugins/sql-json-column.js +10 -6
  627. package/dist/plugins/store-backend.d.ts +114 -18
  628. package/dist/plugins/store-backend.js +340 -87
  629. package/dist/plugins/store-contracts.d.ts +97 -30
  630. package/dist/plugins/store-contracts.js +23 -1
  631. package/dist/plugins/store-fault.d.ts +28 -2
  632. package/dist/plugins/store-fault.js +20 -2
  633. package/dist/plugins/task-attachment-store.d.ts +21 -11
  634. package/dist/plugins/task-attachment-store.js +37 -19
  635. package/dist/plugins/task-list-store-sql.d.ts +1 -1
  636. package/dist/plugins/text-column-capacity.d.ts +21 -0
  637. package/dist/plugins/text-column-capacity.js +5 -0
  638. package/dist/plugins/tidb-pool.d.ts +3 -2
  639. package/dist/plugins/tidb-pool.js +42 -39
  640. package/dist/plugins/user-input-ledger-sql.d.ts +1 -1
  641. package/dist/plugins/web-search.js +5 -3
  642. package/dist/plugins/workflow-run-store-sql.d.ts +6 -1
  643. package/dist/plugins/workflow-run-store-sql.js +11 -5
  644. package/dist/principal-jwt.d.ts +4 -4
  645. package/dist/principal-jwt.js +20 -5
  646. package/dist/principal-shape.d.ts +41 -0
  647. package/dist/principal-shape.js +19 -0
  648. package/dist/question.d.ts +13 -23
  649. package/dist/question.js +21 -39
  650. package/dist/read-face-posture.d.ts +6 -6
  651. package/dist/read-face-posture.js +2 -2
  652. package/dist/request-declaration-refusal.d.ts +35 -12
  653. package/dist/request-declaration-refusal.js +21 -9
  654. package/dist/request-form.d.ts +58 -0
  655. package/dist/request-form.js +72 -0
  656. package/dist/request-image-urls.d.ts +8 -2
  657. package/dist/request-image-urls.js +2 -1
  658. package/dist/request-images.d.ts +20 -0
  659. package/dist/request-images.js +59 -0
  660. package/dist/request-key-closure.d.ts +6 -7
  661. package/dist/request-key-closure.js +15 -2
  662. package/dist/request-value-closure.d.ts +5 -5
  663. package/dist/request-value-closure.js +1 -1
  664. package/dist/resource-suspend.d.ts +7 -16
  665. package/dist/resource-suspend.js +1 -1
  666. package/dist/retired-name-host-notice.d.ts +21 -0
  667. package/dist/retired-name-host-notice.js +12 -0
  668. package/dist/rule-entry-list.d.ts +2 -2
  669. package/dist/rule-entry-list.js +3 -4
  670. package/dist/rule-issue-reading.d.ts +58 -0
  671. package/dist/rule-issue-reading.js +14 -0
  672. package/dist/rules-consent.d.ts +46 -16
  673. package/dist/rules-consent.js +102 -53
  674. package/dist/run-acceptance.d.ts +3 -1
  675. package/dist/run-acceptance.js +3 -0
  676. package/dist/run-local.d.ts +14 -6
  677. package/dist/run-local.js +109 -93
  678. package/dist/run-stale-default.d.ts +7 -0
  679. package/dist/run-stale-default.js +2 -0
  680. package/dist/runs.d.ts +73 -44
  681. package/dist/runs.js +65 -43
  682. package/dist/runtime-caps-resolver.d.ts +36 -14
  683. package/dist/runtime-caps-resolver.js +31 -14
  684. package/dist/runtime-governance.d.ts +2 -2
  685. package/dist/runtime-governance.js +5 -3
  686. package/dist/sealed-key-layout.d.ts +12 -6
  687. package/dist/sealed-key-layout.js +5 -1
  688. package/dist/sealed-key.d.ts +12 -2
  689. package/dist/sealed-key.js +116 -26
  690. package/dist/security.d.ts +133 -161
  691. package/dist/security.js +163 -59
  692. package/dist/sema-config-dir.d.ts +20 -0
  693. package/dist/sema-config-dir.js +27 -2
  694. package/dist/server-secret-env.d.ts +23 -5
  695. package/dist/server-secret-env.js +14 -4
  696. package/dist/service-version.d.ts +2 -1
  697. package/dist/service-version.js +2 -2
  698. package/dist/session-children-retire.d.ts +7 -5
  699. package/dist/session-children-retire.js +7 -2
  700. package/dist/session-deletion.d.ts +88 -0
  701. package/dist/session-deletion.js +8 -0
  702. package/dist/session-erase.d.ts +145 -0
  703. package/dist/session-erase.js +115 -0
  704. package/dist/session-error-wire.d.ts +6 -6
  705. package/dist/session-error-wire.js +1 -1
  706. package/dist/session-incarnation.d.ts +60 -10
  707. package/dist/session-incarnation.js +19 -2
  708. package/dist/session-policy-wire.d.ts +6 -3
  709. package/dist/session-policy-wire.js +11 -1
  710. package/dist/session-resident-background.d.ts +29 -47
  711. package/dist/session-resident-background.js +77 -8
  712. package/dist/session-row.d.ts +3 -2
  713. package/dist/session-rules-seat.d.ts +12 -0
  714. package/dist/session-rules-seat.js +19 -0
  715. package/dist/session-sync-kernel.d.ts +1 -1
  716. package/dist/session-titler.d.ts +7 -15
  717. package/dist/session-titler.js +1 -1
  718. package/dist/session-workspace.d.ts +11 -2
  719. package/dist/session-workspace.js +5 -0
  720. package/dist/sighup-idle.d.ts +1 -1
  721. package/dist/spec-fields.d.ts +57 -3
  722. package/dist/spec-fields.js +72 -51
  723. package/dist/store-posture.d.ts +138 -21
  724. package/dist/store-posture.js +188 -3
  725. package/dist/stored-request-hooks-m20.d.ts +3 -2
  726. package/dist/stored-request-hooks-m20.js +21 -16
  727. package/dist/stores-sql/background-agent-store-sql.d.ts +11 -2
  728. package/dist/stores-sql/background-agent-store-sql.js +73 -20
  729. package/dist/stores-sql/blob-index-sql.d.ts +148 -0
  730. package/dist/stores-sql/blob-index-sql.js +154 -0
  731. package/dist/stores-sql/checkpoint-store-sql.d.ts +34 -29
  732. package/dist/stores-sql/checkpoint-store-sql.js +86 -71
  733. package/dist/{plugins → stores-sql}/file-history-store-sql.d.ts +23 -11
  734. package/dist/{plugins → stores-sql}/file-history-store-sql.js +23 -18
  735. package/dist/stores-sql/mailbox-store-sql.d.ts +7 -4
  736. package/dist/stores-sql/mailbox-store-sql.js +31 -32
  737. package/dist/{plugins → stores-sql}/pg-session-storage.d.ts +30 -81
  738. package/dist/{plugins → stores-sql}/pg-session-storage.js +123 -244
  739. package/dist/{plugins → stores-sql}/retention-store-sql.d.ts +197 -223
  740. package/dist/{plugins → stores-sql}/retention-store-sql.js +148 -207
  741. package/dist/{plugins → stores-sql}/session-event-payload.d.ts +1 -1
  742. package/dist/{plugins → stores-sql}/session-event-payload.js +1 -1
  743. package/dist/stores-sql/session-policy-store-sql.d.ts +33 -11
  744. package/dist/stores-sql/session-policy-store-sql.js +44 -36
  745. package/dist/stores-sql/session-write-hooks.d.ts +65 -0
  746. package/dist/stores-sql/session-write-hooks.js +2 -0
  747. package/dist/{plugins → stores-sql}/tidb-session-storage.d.ts +14 -15
  748. package/dist/{plugins → stores-sql}/tidb-session-storage.js +22 -28
  749. package/dist/{plugins → stores-sql}/tidb-session-store.d.ts +67 -138
  750. package/dist/{plugins → stores-sql}/tidb-session-store.js +130 -200
  751. package/dist/stores-sql/tool-result-store-sql.d.ts +1 -1
  752. package/dist/stores-sql/tool-result-store-sql.js +1 -1
  753. package/dist/stores-sql/windowed-session-storage.d.ts +61 -0
  754. package/dist/stores-sql/windowed-session-storage.js +70 -0
  755. package/dist/submission-exit.d.ts +50 -0
  756. package/dist/submission-exit.js +108 -0
  757. package/dist/task-a2a.d.ts +7 -1
  758. package/dist/task-a2a.js +18 -17
  759. package/dist/task-cwd.d.ts +31 -3
  760. package/dist/task-cwd.js +25 -1
  761. package/dist/task-mcp.d.ts +11 -3
  762. package/dist/task-mcp.js +16 -19
  763. package/dist/task-settings.d.ts +23 -14
  764. package/dist/task-settings.js +35 -13
  765. package/dist/terminal.d.ts +25 -43
  766. package/dist/terminal.js +31 -11
  767. package/dist/tool-approval.d.ts +152 -137
  768. package/dist/tool-approval.js +199 -199
  769. package/dist/trace/core-keyset-guard.d.ts +22 -9
  770. package/dist/trace/core-vocab-wire.d.ts +95 -0
  771. package/dist/trace/core-vocab-wire.js +15 -0
  772. package/dist/trace/engine-notice-wire.d.ts +1 -1
  773. package/dist/trace/engine-notice-wire.js +2 -0
  774. package/dist/trace/exit-seat.d.ts +52 -4
  775. package/dist/trace/exit-seat.js +43 -36
  776. package/dist/trace/extension-call-face.d.ts +3 -2
  777. package/dist/trace/extension-call-face.js +3 -1
  778. package/dist/trace/ledger-events.d.ts +4 -7
  779. package/dist/trace/ledger-sink.d.ts +1 -30
  780. package/dist/trace/ledger-sink.js +0 -11
  781. package/dist/trace/model-segment.d.ts +5 -5
  782. package/dist/trace/model-segment.js +5 -5
  783. package/dist/trace/project.d.ts +88 -58
  784. package/dist/trace/project.js +64 -28
  785. package/dist/trace/redact.d.ts +124 -28
  786. package/dist/trace/redact.js +936 -328
  787. package/dist/trace/self-minted-wire.d.ts +750 -29
  788. package/dist/trace/self-minted-wire.js +262 -25
  789. package/dist/trace/sema-provenance.d.ts +45 -41
  790. package/dist/trace/sema-provenance.js +81 -10
  791. package/dist/trace/task-notification-facets.d.ts +70 -2
  792. package/dist/trace/task-notification-facets.js +71 -1
  793. package/dist/trace/wire-projection-faces.d.ts +43 -8
  794. package/dist/trace/wire-projection-faces.js +28 -3
  795. package/dist/unread-request-members.d.ts +66 -0
  796. package/dist/unread-request-members.js +41 -0
  797. package/dist/upstream-body.d.ts +23 -0
  798. package/dist/upstream-body.js +16 -0
  799. package/dist/url-refusal.d.ts +3 -3
  800. package/dist/url-refusal.js +11 -4
  801. package/dist/user-authored-text.d.ts +1 -1
  802. package/dist/user-input-ledger.d.ts +7 -8
  803. package/dist/user-input-ledger.js +1 -1
  804. package/dist/web-admin-client/apply-effective.d.ts +6 -3
  805. package/dist/web-admin-client/apply-effective.js +33 -40
  806. package/dist/web-admin-client/apply-ledger.d.ts +16 -7
  807. package/dist/web-admin-client/apply-ledger.js +5 -2
  808. package/dist/web-admin-client/candidate-gate.d.ts +35 -3
  809. package/dist/web-admin-client/candidate-gate.js +53 -5
  810. package/dist/web-admin-client/center-request.d.ts +6 -3
  811. package/dist/web-admin-client/center-request.js +17 -16
  812. package/dist/web-admin-client/effective-keys.d.ts +1 -1
  813. package/dist/web-admin-client/effective-keys.js +1 -2
  814. package/dist/web-admin-client/entry-metadata.d.ts +8 -0
  815. package/dist/web-admin-client/entry-metadata.js +13 -0
  816. package/dist/web-admin-client/facade.d.ts +1 -1
  817. package/dist/web-admin-client/http-client.d.ts +2 -1
  818. package/dist/web-admin-client/http-client.js +40 -13
  819. package/dist/web-admin-client/mcp-revocation.d.ts +1 -1
  820. package/dist/web-admin-client/mcp-revocation.js +2 -1
  821. package/dist/web-admin-client/read-warnings.d.ts +1 -0
  822. package/dist/web-admin-client/read-warnings.js +1 -0
  823. package/dist/web-admin-client/restart-signal.js +13 -6
  824. package/dist/web-admin-client/skills-mcp.d.ts +22 -8
  825. package/dist/web-admin-client/skills-mcp.js +26 -21
  826. package/dist/web-admin-client/types.d.ts +35 -51
  827. package/dist/workspace-space.d.ts +3 -2
  828. package/docs/DEVICE-EXECUTOR-PROTOCOL.md +4 -4
  829. package/package.json +16 -12
  830. package/scripts/drain-check-local.mjs +118 -173
  831. package/scripts/drain-check.mysql.sql +20 -16
  832. package/scripts/drain-check.pg.sql +20 -16
  833. package/wire-changes/server@7.147.0.json +813 -0
  834. package/wire-changes/server@7.148.0.json +1517 -0
  835. package/dist/http/memory-control-plane-corrupt-reply.d.ts +0 -25
  836. package/dist/http/memory-control-plane-corrupt-reply.js +0 -19
  837. package/dist/http/memory-layer-reply.d.ts +0 -30
  838. package/dist/http/memory-layer-reply.js +0 -24
  839. package/dist/lsp/e2b-bridge.d.ts +0 -57
  840. package/dist/lsp/e2b-bridge.js +0 -139
  841. package/dist/lsp/e2b-manager.d.ts +0 -93
  842. package/dist/lsp/e2b-manager.js +0 -178
  843. package/dist/lsp/lsp-frames.d.ts +0 -14
  844. package/dist/lsp/lsp-frames.js +0 -25
  845. package/dist/lsp/manager.d.ts +0 -129
  846. package/dist/lsp/manager.js +0 -127
  847. package/dist/lsp/types.d.ts +0 -12
  848. package/dist/lsp/types.js +0 -2
  849. package/dist/lsp/ws-transport.d.ts +0 -40
  850. package/dist/lsp/ws-transport.js +0 -210
package/dist/index.d.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  export { loadConfig, type ServiceConfig } from "./config.js";
2
- export { composeExecutionLane, assertExecutionLaneInvariants, type ExecutionLaneComposeCtx } from "./boot/execution-lane.js";
2
+ export { declareServerWithheldEnv } from "./server-secret-env.js";
3
+ export { composeExecutionLane, assertExecutionLaneInvariants, HTTP_SERVICE_LANE_ENTRY, type ExecutionLaneComposeCtx, type ExecutionLaneEntry } from "./boot/execution-lane.js";
3
4
  export { createBrain } from "./brain.js";
4
5
  export { createSessionStore } from "./plugins/session-store.js";
5
6
  export { createStoreBackend, type StoreBackend, type SessionCaptureRecordSource } from "./plugins/store-backend.js";
6
7
  export { RetiredSchemaPresentError } from "./plugins/schema-consistency.js";
7
- export { LocalDataRootSchemaMismatchError, type LocalSidecarMismatch } from "./plugins/local-session-store.js";
8
+ export { LocalDataRootSchemaMismatchError, type LocalDataRootMismatch } from "./plugins/local-session-store.js";
8
9
  export { CachingSessionStore, type CachingOptions } from "./plugins/caching-session-store.js";
9
10
  export type { RunRecord, RunEvent } from "./plugins/store-contracts.js";
10
11
  export { runInBackground } from "./runs.js";
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export { loadConfig } from "./config.js";
2
- export { composeExecutionLane, assertExecutionLaneInvariants } from "./boot/execution-lane.js";
2
+ export { declareServerWithheldEnv } from "./server-secret-env.js";
3
+ export { composeExecutionLane, assertExecutionLaneInvariants, HTTP_SERVICE_LANE_ENTRY } from "./boot/execution-lane.js";
3
4
  export { createBrain } from "./brain.js";
4
5
  export { createSessionStore } from "./plugins/session-store.js";
5
6
  export { createStoreBackend } from "./plugins/store-backend.js";
@@ -10,7 +10,7 @@
10
10
  *
11
11
  * ## 基线 = 会话的服务端元数据
12
12
  * 基线是「同一 session 上一次 run 选中的链成员相对路径」(不是指纹:指纹密钥每进程随机,跨进程不可比)。它住在会话店的
13
- * 服务端元数据面 —— SQL 两孪生是 `session_meta.instruction_source` 一列,local 文件店是一只 sidecar —— 所以重启 /
13
+ * 服务端元数据面 —— SQL 两孪生是 `session_ext.instruction_source` 一列,local 文件店是一只 sidecar —— 所以重启 /
14
14
  * 跨副本都读得到、随会话删除一起消失,且不进模型上下文、不进 wire 会话面。不接这张面的店(core 的内存 dev 店、
15
15
  * `run-local` 的 core 文件店)⇒ 席缺席 ⇒ 一帧不发(诚实缺席:那两形的会话本来就活不过进程,或没有会话流可投)。
16
16
  *
@@ -84,6 +84,38 @@ export type ModelKeyRef = Pick<Model, "name">;
84
84
  export declare function createKeyResolver(modelApiKeyEnv: Record<string, string>, env?: NodeJS.ProcessEnv, modelApiKeys?: Record<string, string | SealedCustodyPoison>): ((model: ModelKeyRef) => Promise<{
85
85
  apiKey: string;
86
86
  } | undefined>) | undefined;
87
+ /** 两张 per-model 钥匙表(`config.modelApiKeyEnv` / `config.modelApiKeys` 的形;缺席读作空表)。 */
88
+ export interface ModelKeyTables {
89
+ readonly modelApiKeyEnv?: Readonly<Record<string, string>>;
90
+ readonly modelApiKeys?: Readonly<Record<string, string | SealedCustodyPoison>>;
91
+ }
92
+ /**
93
+ * 一只模型的**凭据身份**(不是值):它声明的钥匙来源是谁。
94
+ * · `sealed` —— 托管密钥的解封产物(明文,或解不开时的毒丸;与 `config.modelApiKeys` 的值同型)。本进程的托管店 boot 只读一次,同一密文恒解出同一产物 ⇒
95
+ * 持有产物就是持有那一代的身份;重贴 = 新身份。
96
+ * · `apiKeyEnv` —— 目录给它配的 env 变量**名**;值在取值那一刻按名读(同名轮换是同一身份)。
97
+ * 没有自有凭据 ⇒ `{}`。两张表至多一个条目有效(托管压过 env 引用,registry-core 互斥)。
98
+ */
99
+ export interface CredentialIdentity {
100
+ readonly apiKeyEnv?: string;
101
+ readonly sealed?: string | SealedCustodyPoison;
102
+ }
103
+ /**
104
+ * 凭据身份的**唯一读法** —— key 链({@link resolveModelApiKey} / {@link modelKeyPoisonOf} / {@link createKeyResolver})取值前先问它,
105
+ * boot 焊死模型的两只座(降级壳焊住的目标、记忆整理席解到的条目)冻结的也是它的读数:**焊死的 Model 与它的凭据身份同一代**,
106
+ * 目录把两者一起换掉之后、重启之前,座仍打焊死的端点、带焊死那一代的身份(值按身份现取:env 引用同名轮换仍热)。身份变了 ⇒ 那只座的重启片签
107
+ * (指纹读 {@link credentialIdentityFingerprint})。
108
+ */
109
+ export declare function credentialIdentityOf(tables: ModelKeyTables, modelName: string): CredentialIdentity;
110
+ /**
111
+ * 凭据身份的**非明文**读数 —— 重启片两侧读数里凭据那一位的唯一铸法(明文是活秘密:只取摘要,绝不进日志 / 序列化面)。
112
+ * `apiKeyEnv` = 变量名(值热、同名轮换不签);`sealedKey`:缺席 ⇒ `null`;毒丸 ⇒ `{ poisoned, reason }`(不含检测时刻 —— 每次 apply 都会重铸);
113
+ * 明文 ⇒ `{ digest }`(sha256 前 16 位十六进制;同一明文重封一次 = 同一把 key ⇒ 不签)。
114
+ */
115
+ export declare function credentialIdentityFingerprint(identity: CredentialIdentity): {
116
+ readonly apiKeyEnv: string | null;
117
+ readonly sealedKey: unknown;
118
+ };
87
119
  /** 「这只模型声明的钥匙来源今天拿不到」⇒ 那一只毒丸;拿得到 / 没声明 ⇒ `undefined`。能力面的配对标注据它答 `"unknown"`(判别,不是 catch)。 */
88
120
  export declare function modelKeyPoisonOf(modelName: string, modelApiKeyEnv: Record<string, string>, env?: NodeJS.ProcessEnv, modelApiKeys?: Record<string, string | SealedCustodyPoison>): ModelKeyPoison | undefined;
89
121
  /**
@@ -1,3 +1,4 @@
1
+ import { createHash } from "node:crypto";
1
2
  export function modelKeyPoison(p) {
2
3
  const at = new Date().toISOString();
3
4
  if (p.source === "sealed")
@@ -50,16 +51,29 @@ export function createKeyResolver(modelApiKeyEnv, env = process.env, modelApiKey
50
51
  };
51
52
  }
52
53
  function chainLookup(modelName, modelApiKeyEnv, env, modelApiKeys) {
53
- const sealed = modelApiKeys[modelName];
54
- if (isModelKeyPoison(sealed))
55
- return { kind: "poison", poison: sealed };
56
- if (sealed)
57
- return { kind: "key", key: sealed };
58
- const envName = modelApiKeyEnv[modelName];
59
- if (!envName)
54
+ const identity = credentialIdentityOf({ modelApiKeyEnv, modelApiKeys }, modelName);
55
+ if (identity.sealed !== undefined)
56
+ return isModelKeyPoison(identity.sealed) ? { kind: "poison", poison: identity.sealed } : { kind: "key", key: identity.sealed };
57
+ if (identity.apiKeyEnv === undefined)
60
58
  return { kind: "undeclared" };
61
- const value = env[envName];
62
- return value ? { kind: "key", key: value } : { kind: "poison", poison: modelKeyPoison({ source: "env", reason: "env_missing", apiKeyEnv: envName }) };
59
+ const value = env[identity.apiKeyEnv];
60
+ return value ? { kind: "key", key: value } : { kind: "poison", poison: modelKeyPoison({ source: "env", reason: "env_missing", apiKeyEnv: identity.apiKeyEnv }) };
61
+ }
62
+ export function credentialIdentityOf(tables, modelName) {
63
+ const sealed = tables.modelApiKeys !== undefined && Object.hasOwn(tables.modelApiKeys, modelName) ? tables.modelApiKeys[modelName] : undefined;
64
+ if (isModelKeyPoison(sealed) || typeof sealed === "string" && sealed !== "")
65
+ return { sealed };
66
+ const apiKeyEnv = tables.modelApiKeyEnv !== undefined && Object.hasOwn(tables.modelApiKeyEnv, modelName) ? tables.modelApiKeyEnv[modelName] : undefined;
67
+ return typeof apiKeyEnv === "string" && apiKeyEnv !== "" ? { apiKeyEnv } : {};
68
+ }
69
+ export function credentialIdentityFingerprint(identity) {
70
+ const sealed = identity.sealed;
71
+ const sealedKey = sealed === undefined
72
+ ? null
73
+ : isModelKeyPoison(sealed)
74
+ ? { poisoned: modelKeyPoisonIdentity(sealed), reason: sealed.reason }
75
+ : { digest: createHash("sha256").update(sealed, "utf8").digest("hex").slice(0, 16) };
76
+ return { apiKeyEnv: identity.apiKeyEnv ?? null, sealedKey };
63
77
  }
64
78
  export function modelKeyPoisonOf(modelName, modelApiKeyEnv, env = process.env, modelApiKeys = {}) {
65
79
  const r = chainLookup(modelName, modelApiKeyEnv, env, modelApiKeys);
@@ -1,5 +1,6 @@
1
1
  import { safeRev, DEFAULT_MAX_DIFF_BYTES } from "./diffout.js";
2
2
  import { OBJECT_STORE_IO_TIMEOUT_MS } from "../plugins/blob-backend.js";
3
+ import { createEgressFetch } from "../egress-redirect.js";
3
4
  export function buildUploadScript(p) {
4
5
  if (!safeRev(p.baseSha))
5
6
  throw new Error(`buildUploadScript: unsafe baseSha ${JSON.stringify(p.baseSha)}`);
@@ -114,7 +115,7 @@ export function buildUploadLoopScript(p) {
114
115
  }
115
116
  export async function fetchUploadedDiff(getUrl, opts = {}) {
116
117
  const maxBytes = opts.maxBytes ?? DEFAULT_MAX_DIFF_BYTES;
117
- const f = opts.fetchImpl ?? fetch;
118
+ const f = createEgressFetch("declare the final object-store address as MINIO_ENDPOINT / S3_ENDPOINT", opts.fetchImpl);
118
119
  let res;
119
120
  try {
120
121
  res = await f(getUrl, { signal: AbortSignal.timeout(OBJECT_STORE_IO_TIMEOUT_MS) });
@@ -1,6 +1,9 @@
1
1
  import type { LeaderResult } from "./leader.js";
2
2
  import { type LeaderRunRecord, type LeaderRunStatus, type NewLeaderRun, type LeaderRunTerminal } from "../plugins/leader-run-store-sql.js";
3
3
  import { type IdemCaller } from "../http/idempotency.js";
4
+ import type { Subject } from "../owner-brands.js";
5
+ import type { RunIdentity } from "../identity-source.js";
6
+ import type { LeaderParkExpiry } from "./wire.js";
4
7
  /**
5
8
  * endpoint 消费的 store 面(结构型,不是 nominal union):真实现是 `SqlLeaderRunStore` 的两个方言孪生,
6
9
  * 测试用进程内假件。窄到只有 endpoint 真调的三个方法 —— 端点不该看见店的其余口。
@@ -14,6 +17,8 @@ export interface LeaderRunStore {
14
17
  /** 按提交幂等键(已 scope 的定宽 hash)读行 —— `GET /v1/leader?idempotencyKey=` 的读口。 */
15
18
  getByIdem(idemKey: string): Promise<LeaderRunRecord | undefined>;
16
19
  finishRun(id: string, patch: LeaderRunTerminal): Promise<boolean>;
20
+ /** 翻耐久取消旗(只翻 `running` 行;回执 = 翻没翻)。驱动副本经 `getRun` 读它(一次读拿到状态 + 旗)。 */
21
+ requestCancel(id: string): Promise<boolean>;
17
22
  }
18
23
  export interface LeaderRequestBody {
19
24
  /** The task to decompose + execute (the Planner turns it into N disjoint sub-tasks). */
@@ -36,6 +41,10 @@ export interface LeaderRun {
36
41
  /** BL-4: the principal that submitted this run (null = anonymous/single-tenant). The GET is owner-checked so
37
42
  * an owned run is visible ONLY to its owner (404 to others — no existence oracle), like GET /v1/runs/:id. */
38
43
  owner?: string | null;
44
+ /** 降级臂的取消旗(店在场时以库上的旗为准,本地这一格只服务降级臂的读面)。 */
45
+ cancelRequested: boolean;
46
+ /** 取消口停下的终局带 `cancelled`。 */
47
+ errorCode?: LeaderRunTerminal["errorCode"];
39
48
  }
40
49
  export interface LeaderEndpoint {
41
50
  /** Returns a {status,body} to send, or null if the (method,url) is not a leader route. Kicks the background
@@ -45,7 +54,9 @@ export interface LeaderEndpoint {
45
54
  * header; `GET /v1/leader`: the `idempotencyKey` query — the read port "which leader run did this key create"; scoped by the
46
55
  * caller's identity bit `principal ?? source` before it reaches the store — the one key minter `idemKeyOf(raw, caller, "leader")`).
47
56
  * ASYNC because the durable arm reads/writes SQL. */
48
- handle(method: string, url: string, body: unknown, caller?: IdemCaller, idempotencyKey?: string | null): Promise<{
57
+ handle(method: string, url: string, body: unknown, caller?: IdemCaller, idempotencyKey?: string | null,
58
+ /** POST 受理时的身份元组(路由经 `runIdentityOf` 铸;缺席 = `null` = 不合格)。只写进行,不上 wire。 */
59
+ identity?: RunIdentity | null): Promise<{
49
60
  status: number;
50
61
  body: object;
51
62
  } | null>;
@@ -59,7 +70,9 @@ export interface LeaderEndpoint {
59
70
  * With a store in place this Map holds only the runs THIS replica is driving. Exposed for tests. */
60
71
  runs: Map<string, LeaderRun>;
61
72
  }
62
- export declare function createLeaderEndpoint(runLeader: (body: LeaderRequestBody) => Promise<LeaderResult>, opts: {
73
+ /** 取消终局的 `error` 句(机读位是 `errorCode: "cancelled"`)。 */
74
+ export declare const LEADER_RUN_CANCELLED_ERROR = "leader run cancelled (POST /v1/leader/:id/cancel): it stopped at an abort checkpoint before any push";
75
+ export declare function createLeaderEndpoint(runLeader: (body: LeaderRequestBody, signal: AbortSignal) => Promise<LeaderResult>, opts: {
63
76
  logger?: {
64
77
  info?: (m: string, x?: Record<string, unknown>) => void;
65
78
  error?: (m: string, x?: Record<string, unknown>) => void;
@@ -73,8 +86,16 @@ export declare function createLeaderEndpoint(runLeader: (body: LeaderRequestBody
73
86
  requiredFields?: readonly string[];
74
87
  /** [ref] 车4 件1:durable 登记表。缺席 ⇒ 显式的单副本内存降级臂(见文件头注)。 */
75
88
  store?: LeaderRunStore;
76
- /** [ref] RH-3:「这个调用方读得到这一行 leader run 吗」—— 属主存取器的判官形(`http/owner-access.ts` 的 `createLeaderRunVisibility`,boot 装一次)。
77
- * 必填:本模块不自判属主(修前手抄 `owner == null || owner === requester`,缺 [ref] C8 窄互认臂而注称 mirrors runOwnerOk),读面与幂等重放同读它。 */
78
- ownerVisible: (principal: string | null | undefined, owner: string | null | undefined) => boolean;
89
+ /** [ref] RH-3:「这个调用方读得到这一行 leader run 吗」—— 属主存取器的判官形(`http/owner-access.ts` 的 `seesRunAs("run.leader")`,boot 装一次)。
90
+ * 必填:本模块不自判属主(修前手抄 `owner == null || owner === requester`,缺 [ref] C8 窄互认臂而注称 mirrors admitRunRow),读面与幂等重放同读它。 */
91
+ ownerVisible: (subject: Subject | null | undefined, owner: string | null | undefined) => boolean;
92
+ /** 过期一组 worker 会话的待决停驻(`wire.ts` 的 `createLeaderParkExpirer`,boot 在有 checkpoint 店时递)。缺席 = 本部署没有 checkpoint 店 ⇒
93
+ * worker 由构造即不可能停驻(durable spec 要那只店),没有可过期的东西。 */
94
+ expireWorkerParks?: (workers: ReadonlyArray<{
95
+ readonly workerId: string;
96
+ readonly sessionId: string;
97
+ }>) => Promise<LeaderParkExpiry>;
98
+ /** 旗读拍距(ms)。缺席 = `LIVENESS_HEARTBEAT_MS`(与 run 心跳同一个数);测试注入短拍。 */
99
+ cancelPollMs?: number;
79
100
  }): LeaderEndpoint;
80
101
  //# sourceMappingURL=endpoint.d.ts.map
@@ -1,9 +1,11 @@
1
1
  import { uuidv7 } from "@sema-agent/core";
2
2
  import { redactErrorMessage, redactHead, redactLeaderResult, redactLeaderResultWithFlag } from "../observability/run-terminal.js";
3
- import { withPrincipal } from "../observability/principal-context.js";
3
+ import { withSubject } from "../observability/principal-context.js";
4
4
  import {} from "../plugins/leader-run-store-sql.js";
5
5
  import { idemKeyOf } from "../http/idempotency.js";
6
6
  import { refusalBody } from "../http/refusal-body.js";
7
+ import { LIVENESS_HEARTBEAT_MS } from "../config-invariants.js";
8
+ import { seatText } from "../trace/exit-seat.js";
7
9
  function statusForLeaderResult(result) {
8
10
  if (result.conflict)
9
11
  return "needs_human";
@@ -20,6 +22,9 @@ function statusForLeaderResult(result) {
20
22
  }
21
23
  }
22
24
  const LEADER_ID_RE = /^\/v1\/leader\/([^/]+)$/;
25
+ const LEADER_CANCEL_RE = /^\/v1\/leader\/([^/]+)\/cancel$/;
26
+ export const LEADER_RUN_CANCELLED_ERROR = "leader run cancelled (POST /v1/leader/:id/cancel): it stopped at an abort checkpoint before any push";
27
+ const LEADER_RUN_ROW_SETTLED_ELSEWHERE = "leader run stopped: its row was settled elsewhere (stale sweep or external delete) — this replica stopped driving it";
23
28
  const RUN_RETENTION_MS = 60 * 60_000;
24
29
  const TERMINAL_WRITE_ATTEMPTS = 3;
25
30
  const TERMINAL_WRITE_RETRY_MS = 200;
@@ -31,6 +36,12 @@ function idemShapeError(raw) {
31
36
  }
32
37
  export function createLeaderEndpoint(runLeader, opts) {
33
38
  const runs = new Map();
39
+ const controllers = new Map();
40
+ const abortLocal = (id, cause) => {
41
+ const ac = controllers.get(id);
42
+ if (ac && !ac.signal.aborted)
43
+ ac.abort(cause);
44
+ };
34
45
  const memIdem = new Map();
35
46
  function reap() {
36
47
  const cutoff = Date.now() - RUN_RETENTION_MS;
@@ -44,24 +55,63 @@ export function createLeaderEndpoint(runLeader, opts) {
44
55
  }
45
56
  }
46
57
  function drive(id, body, owner) {
58
+ const ac = new AbortController();
59
+ controllers.set(id, ac);
60
+ let pollWarned = false;
61
+ const poll = opts.store
62
+ ? setInterval(() => {
63
+ if (ac.signal.aborted)
64
+ return;
65
+ void readRow(id).then((row) => {
66
+ if (row === undefined || row.status !== "running")
67
+ abortLocal(id, "stall_verdict");
68
+ else if (row.cancelRequested)
69
+ abortLocal(id, "cancel_verb");
70
+ }, (e) => {
71
+ if (pollWarned)
72
+ return;
73
+ pollWarned = true;
74
+ opts.logger?.error?.("leader_cancel_poll_failed", { id, err: opErr(e), effect: "a cancel landed on another replica is not seen until a later tick reads the row" });
75
+ });
76
+ }, opts.cancelPollMs ?? LIVENESS_HEARTBEAT_MS)
77
+ : undefined;
78
+ poll?.unref?.();
47
79
  void (async () => {
48
80
  let terminal;
81
+ let result;
49
82
  try {
50
- const result = redactLeaderResult(await withPrincipal(owner ?? undefined, () => runLeader(body)));
51
- const status = statusForLeaderResult(result);
52
- terminal = { status: status, result };
53
- opts.logger?.info?.("leader_run_done", { id, ok: result.ok, status, ...(result.repairTerminal ? { repairTerminal: result.repairTerminal } : {}), merged: result.merge && result.merge.ok ? result.merge.merged : undefined });
83
+ result = redactLeaderResult(await withSubject(owner ?? undefined, () => runLeader(body, ac.signal)));
84
+ const cause = ac.signal.aborted ? ac.signal.reason : undefined;
85
+ if (result.stopped === true && cause === "cancel_verb") {
86
+ terminal = { status: "failed", result, error: LEADER_RUN_CANCELLED_ERROR, errorCode: "cancelled" };
87
+ }
88
+ else if (result.stopped === true && cause === "stall_verdict") {
89
+ terminal = { status: "failed", result, error: LEADER_RUN_ROW_SETTLED_ELSEWHERE };
90
+ }
91
+ else {
92
+ const status = statusForLeaderResult(result);
93
+ terminal = { status: status, result };
94
+ }
95
+ opts.logger?.info?.("leader_run_done", { id, ok: result.ok, status: terminal.status, ...(terminal.errorCode ? { errorCode: terminal.errorCode } : {}), ...(cause ? { stopCause: cause } : {}), ...(result.repairTerminal ? { repairTerminal: result.repairTerminal } : {}), merged: result.merge && result.merge.ok ? result.merge.merged : undefined });
54
96
  }
55
97
  catch (e) {
56
98
  terminal = { status: "failed", error: redactErrorMessage(e instanceof Error ? e.message : String(e)) ?? "" };
57
99
  opts.logger?.error?.("leader_run_error", { id, err: terminal.error });
58
100
  }
101
+ finally {
102
+ if (poll)
103
+ clearInterval(poll);
104
+ controllers.delete(id);
105
+ }
106
+ let settledElsewhere = ac.signal.reason === "stall_verdict";
59
107
  if (opts.store) {
60
108
  for (let attempt = 1;; attempt += 1) {
61
109
  try {
62
110
  const moved = await opts.store.finishRun(id, terminal);
63
- if (!moved)
111
+ if (!moved) {
112
+ settledElsewhere = true;
64
113
  opts.logger?.error?.("leader_run_terminal_not_applied", { id, status: terminal.status, why: "row missing or already terminal — another writer settled it (e.g. the stale-running sweep), or the row was deleted" });
114
+ }
65
115
  break;
66
116
  }
67
117
  catch (e) {
@@ -74,16 +124,68 @@ export function createLeaderEndpoint(runLeader, opts) {
74
124
  }
75
125
  }
76
126
  const local = runs.get(id);
127
+ const residueEnds = settledElsewhere || ac.signal.reason === "cancel_verb" || (opts.store ? await cancelFlagAfterSettle(id) : local?.cancelRequested === true);
128
+ if (residueEnds && result)
129
+ await expireResidue(id, result, "drive");
77
130
  if (local) {
78
131
  local.status = terminal.status;
79
132
  if (terminal.result !== undefined)
80
133
  local.result = terminal.result;
81
134
  if (terminal.error !== undefined)
82
135
  local.error = terminal.error;
136
+ if (terminal.errorCode !== undefined)
137
+ local.errorCode = terminal.errorCode;
83
138
  local.finishedAt = Date.now();
84
139
  }
85
140
  })();
86
141
  }
142
+ function readRow(id) {
143
+ return opts.store.getRun(id);
144
+ }
145
+ const opErr = (e) => seatText("operator-log-error", e instanceof Error ? e.message : String(e));
146
+ async function cancelFlagAfterSettle(id) {
147
+ try {
148
+ return (await readRow(id))?.cancelRequested === true;
149
+ }
150
+ catch (e) {
151
+ opts.logger?.error?.("leader_cancel_flag_reread_failed", { id, err: opErr(e), effect: "if a cancel landed on this run just before its terminal write, its worker parks are expired only when the cancel is re-sent" });
152
+ return false;
153
+ }
154
+ }
155
+ function workerSessionsOf(result) {
156
+ const out = new Map();
157
+ const r = result && typeof result === "object" ? result : {};
158
+ for (const list of [r.reports, r.suspended]) {
159
+ if (!Array.isArray(list))
160
+ continue;
161
+ for (const x of list) {
162
+ const w = x;
163
+ if (w && typeof w.workerId === "string" && typeof w.sessionId === "string")
164
+ out.set(`${w.workerId}\u0000${w.sessionId}`, { workerId: w.workerId, sessionId: w.sessionId });
165
+ }
166
+ }
167
+ return [...out.values()];
168
+ }
169
+ async function expireResidue(id, result, site) {
170
+ const none = { expired: 0, lost: 0 };
171
+ if (!opts.expireWorkerParks)
172
+ return none;
173
+ const sessions = workerSessionsOf(result);
174
+ if (sessions.length === 0)
175
+ return none;
176
+ try {
177
+ const r = await opts.expireWorkerParks(sessions);
178
+ if (r.expired > 0 || r.lost > 0)
179
+ opts.logger?.info?.("leader_cancel_parks_expired", { id, site, expired: r.expired, lost: r.lost });
180
+ return r;
181
+ }
182
+ catch (e) {
183
+ if (site === "cancel")
184
+ throw e;
185
+ opts.logger?.error?.("leader_cancel_parks_expire_failed", { id, err: opErr(e), effect: "the worker parks of this cancelled run stay pending until their own deadline or until the cancel is re-sent" });
186
+ return none;
187
+ }
188
+ }
87
189
  const CLEAN_MEMO_CAP = 4096;
88
190
  const cleanIds = new Set();
89
191
  const DIRTY_MEMO_CAP = 256;
@@ -125,12 +227,12 @@ export function createLeaderEndpoint(runLeader, opts) {
125
227
  return view;
126
228
  }
127
229
  function getBody(run) {
128
- return { status: 200, body: { id: run.id, status: run.status, ...redactedView(run) } };
230
+ return { status: 200, body: { id: run.id, status: run.status, cancelRequested: run.cancelRequested, ...(run.errorCode ? { errorCode: run.errorCode } : {}), ...redactedView(run) } };
129
231
  }
130
232
  const NOT_FOUND = { status: 404, body: refusalBody({ errorCode: "not_found.leader_run", message: "leader run not found" }) };
131
- async function handle(method, url, body, caller, idempotencyKey) {
132
- const requester = caller?.principal ?? null;
133
- const idemCaller = caller ?? { principal: null, source: null };
233
+ async function handle(method, url, body, caller, idempotencyKey, identity) {
234
+ const requester = caller?.subject ?? null;
235
+ const idemCaller = caller ?? { subject: null, source: null };
134
236
  if (method === "POST" && url === "/v1/leader") {
135
237
  const b = body;
136
238
  if (!b || typeof b.objective !== "string" || b.objective.trim() === "") {
@@ -152,14 +254,14 @@ export function createLeaderEndpoint(runLeader, opts) {
152
254
  }
153
255
  reap();
154
256
  if (opts.store) {
155
- const { created, run } = await opts.store.createRun({ objective: b.objective, owner, idemKey: scopedIdem });
257
+ const { created, run } = await opts.store.createRun({ objective: b.objective, owner, idemKey: scopedIdem, identity: identity ?? null });
156
258
  if (!created) {
157
259
  if (!opts.ownerVisible(requester, run.owner)) {
158
260
  return { status: 409, body: refusalBody({ errorCode: "conflict.leader_run_exists", message: "idempotency key already used by another principal" }) };
159
261
  }
160
262
  return { status: 202, body: { leaderRunId: run.id, status: run.status } };
161
263
  }
162
- runs.set(run.id, { id: run.id, status: "running", startedAt: run.startedAtMs, owner });
264
+ runs.set(run.id, { id: run.id, status: "running", startedAt: run.startedAtMs, owner, cancelRequested: false });
163
265
  drive(run.id, b, owner);
164
266
  return { status: 202, body: { leaderRunId: run.id, status: "running" } };
165
267
  }
@@ -170,7 +272,7 @@ export function createLeaderEndpoint(runLeader, opts) {
170
272
  return { status: 202, body: { leaderRunId: priorRun.id, status: priorRun.status } };
171
273
  }
172
274
  const id = uuidv7();
173
- runs.set(id, { id, status: "running", startedAt: Date.now(), owner });
275
+ runs.set(id, { id, status: "running", startedAt: Date.now(), owner, cancelRequested: false });
174
276
  if (scopedIdem)
175
277
  memIdem.set(scopedIdem, id);
176
278
  drive(id, b, owner);
@@ -196,11 +298,14 @@ export function createLeaderEndpoint(runLeader, opts) {
196
298
  return NOT_FOUND;
197
299
  return getBody(run);
198
300
  }
301
+ const c = method === "POST" ? LEADER_CANCEL_RE.exec(url) : null;
302
+ if (c)
303
+ return cancel(c[1], ownerOk);
199
304
  const m = method === "GET" ? LEADER_ID_RE.exec(url) : null;
200
305
  if (m) {
201
306
  const id = m[1];
202
307
  if (opts.store) {
203
- const run = await opts.store.getRun(id);
308
+ const run = await readRow(id);
204
309
  if (!run || !ownerOk(run.owner))
205
310
  return NOT_FOUND;
206
311
  return getBody(run);
@@ -212,6 +317,41 @@ export function createLeaderEndpoint(runLeader, opts) {
212
317
  }
213
318
  return null;
214
319
  }
320
+ async function answerTerminal(id, row) {
321
+ abortLocal(id, "cancel_verb");
322
+ const r = await expireResidue(id, row.result, "cancel");
323
+ if (r.lost > 0) {
324
+ return { status: 409, body: refusalBody({ errorCode: "conflict.approval_settled", message: `this run is already ${row.status}; ${r.lost} of its worker approvals were settled concurrently (decided or expired) while this cancel tried to expire them — a decided approval continues as its own run (stop it with POST /v1/runs/:id/cancel); retry cancel to expire what is still pending` }) };
325
+ }
326
+ return { status: 202, body: { leaderRunId: id, status: row.status, cancelRequested: row.cancelRequested, note: r.expired > 0 ? `already ${row.status} — ${r.expired} pending worker approval(s) it left behind were expired` : `already ${row.status} — nothing left to stop` } };
327
+ }
328
+ async function cancel(id, ownerOk) {
329
+ if (opts.store) {
330
+ const row = await readRow(id);
331
+ if (!row || !ownerOk(row.owner))
332
+ return NOT_FOUND;
333
+ if (row.status === "running") {
334
+ if (await opts.store.requestCancel(id)) {
335
+ abortLocal(id, "cancel_verb");
336
+ return { status: 202, body: { leaderRunId: id, status: "cancelling", cancelRequested: true } };
337
+ }
338
+ const now = await readRow(id);
339
+ if (!now)
340
+ return NOT_FOUND;
341
+ return answerTerminal(id, now);
342
+ }
343
+ return answerTerminal(id, row);
344
+ }
345
+ const run = runs.get(id);
346
+ if (!run || !ownerOk(run.owner))
347
+ return NOT_FOUND;
348
+ if (run.status === "running") {
349
+ run.cancelRequested = true;
350
+ abortLocal(id, "cancel_verb");
351
+ return { status: 202, body: { leaderRunId: id, status: "cancelling", cancelRequested: true } };
352
+ }
353
+ return answerTerminal(id, run);
354
+ }
215
355
  return { handle, inflight: () => [...runs.values()].filter((r) => r.status === "running").length, runs };
216
356
  }
217
357
  //# sourceMappingURL=endpoint.js.map
@@ -100,6 +100,9 @@ export interface FanOutOptions {
100
100
  * suspended worker itself has already settled (its stream is deregistered), so the cancel sweep cannot
101
101
  * touch its checkpoint/paused env (the destroy-exemption falls out of the registration lifecycle). */
102
102
  cancelOnSuspend?: boolean;
103
+ /** 这条 leader run 的中止信号(取消口 / 陈旧裁决;与 core `TaskSpec.signal` 同一约定:缺席 = 不可外部取消)。abort ⇒ 走同一只
104
+ * {@link fanOut} 内的 `cancelAll`(先 abort 共享信号、再 destroy 已登记的流)—— 父中止与总超时是同一个动作的两个触发,不是两套收法。 */
105
+ signal?: AbortSignal;
103
106
  }
104
107
  export interface FanOutResult {
105
108
  reports: WorkerReport[];