@sema-agent/server 7.141.0 → 7.143.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 (341) hide show
  1. package/MIGRATION.md +657 -0
  2. package/USAGE.md +102 -30
  3. package/dist/adoption/plan.js +22 -0
  4. package/dist/approval-ask-audit-store.d.ts +61 -43
  5. package/dist/approval-ask-audit-store.js +69 -44
  6. package/dist/approval-ask-machine.d.ts +15 -7
  7. package/dist/approval-ask-machine.js +10 -4
  8. package/dist/approval-card.d.ts +126 -27
  9. package/dist/approval-card.js +103 -23
  10. package/dist/approval-crash-convergence.d.ts +17 -7
  11. package/dist/approval-crash-convergence.js +94 -22
  12. package/dist/approval-deny-reasons.d.ts +34 -30
  13. package/dist/approval-deny-reasons.js +21 -6
  14. package/dist/approval-policy-settlement.d.ts +1 -1
  15. package/dist/approval-queue-kind.d.ts +27 -0
  16. package/dist/approval-queue-kind.js +6 -0
  17. package/dist/approval-reconciler.d.ts +41 -9
  18. package/dist/approval-reconciler.js +45 -42
  19. package/dist/audit.js +4 -2
  20. package/dist/auth-bridge.d.ts +9 -6
  21. package/dist/auth-bridge.js +9 -3
  22. package/dist/boot/adoption.js +2 -1
  23. package/dist/boot/budget-tracing.d.ts +17 -1
  24. package/dist/boot/budget-tracing.js +10 -6
  25. package/dist/boot/device-lane.d.ts +1 -1
  26. package/dist/boot/execution-env.d.ts +24 -4
  27. package/dist/boot/execution-env.js +26 -23
  28. package/dist/boot/execution-lane.js +2 -1
  29. package/dist/boot/exit-boundary.js +5 -4
  30. package/dist/boot/governance-seams.d.ts +26 -41
  31. package/dist/boot/governance-seams.js +61 -28
  32. package/dist/boot/late-binds.d.ts +7 -4
  33. package/dist/boot/late-binds.js +3 -1
  34. package/dist/boot/leader.js +2 -4
  35. package/dist/boot/memory-consolidation.d.ts +0 -8
  36. package/dist/boot/memory-consolidation.js +5 -4
  37. package/dist/boot/parked-revive-gate.js +2 -1
  38. package/dist/boot/permission-rules-audit.d.ts +0 -28
  39. package/dist/boot/permission-rules-audit.js +2 -1
  40. package/dist/boot/read-deny-anchor-audit.js +2 -1
  41. package/dist/boot/reapers.js +9 -7
  42. package/dist/boot/resolve-spec.d.ts +1 -1
  43. package/dist/boot/resolve-spec.js +19 -10
  44. package/dist/boot/retention-lane.js +5 -3
  45. package/dist/boot/runner-deps.d.ts +10 -7
  46. package/dist/boot/runner-deps.js +20 -29
  47. package/dist/boot/runtime-caps.js +3 -2
  48. package/dist/boot/session-faces.js +4 -3
  49. package/dist/boot/shutdown.d.ts +9 -0
  50. package/dist/boot/shutdown.js +19 -4
  51. package/dist/boot/stage-02-web-admin-pull.js +3 -0
  52. package/dist/boot/stage-03-store-backend.d.ts +4 -1
  53. package/dist/boot/stage-03-store-backend.js +1 -2
  54. package/dist/boot/stage-04-stores.d.ts +5 -2
  55. package/dist/boot/stage-04-stores.js +6 -7
  56. package/dist/boot/stage-05-execution-env.d.ts +6 -3
  57. package/dist/boot/stage-05-execution-env.js +8 -6
  58. package/dist/boot/stage-06-runners.d.ts +6 -3
  59. package/dist/boot/stage-06-runners.js +3 -4
  60. package/dist/boot/stage-07-capability-layer.d.ts +6 -3
  61. package/dist/boot/stage-07-capability-layer.js +7 -2
  62. package/dist/boot/stage-08-reapers.d.ts +6 -3
  63. package/dist/boot/stage-08-reapers.js +3 -2
  64. package/dist/boot/stage-09-leader.d.ts +6 -3
  65. package/dist/boot/stage-10-http-server.d.ts +6 -3
  66. package/dist/boot/stage-10-http-server.js +14 -5
  67. package/dist/boot/stores.d.ts +5 -2
  68. package/dist/boot/stores.js +10 -9
  69. package/dist/boot/web-admin.d.ts +5 -1
  70. package/dist/boot/web-admin.js +48 -36
  71. package/dist/boot/webfetch-summarize-lane.js +2 -1
  72. package/dist/boot/workflow-orchestration.js +3 -2
  73. package/dist/capabilities/builtin-tools.d.ts +2 -1
  74. package/dist/capabilities/builtin-tools.js +2 -4
  75. package/dist/capabilities/composite-members.d.ts +2 -1
  76. package/dist/capabilities/composite-members.js +2 -1
  77. package/dist/capabilities/hands-lane.d.ts +9 -39
  78. package/dist/capabilities/hands-lane.js +8 -13
  79. package/dist/capabilities/mcp-probe.d.ts +3 -2
  80. package/dist/capabilities/scenarios.d.ts +11 -1
  81. package/dist/capabilities/scenarios.js +1 -0
  82. package/dist/capabilities/skills.d.ts +1 -17
  83. package/dist/capabilities/skills.js +0 -8
  84. package/dist/capability-facts.d.ts +31 -7
  85. package/dist/capability-facts.js +27 -4
  86. package/dist/card-void.d.ts +6 -9
  87. package/dist/config-catalog.js +2 -1
  88. package/dist/config-dir-trust.js +58 -29
  89. package/dist/config-invariants.d.ts +7 -1
  90. package/dist/config-invariants.js +7 -0
  91. package/dist/config-provider.d.ts +10 -0
  92. package/dist/config-provider.js +15 -4
  93. package/dist/config-root-migration.d.ts +13 -0
  94. package/dist/config-root-migration.js +99 -0
  95. package/dist/config-types.d.ts +19 -8
  96. package/dist/config.d.ts +10 -3
  97. package/dist/config.js +18 -4
  98. package/dist/delegated-session-owner.d.ts +5 -3
  99. package/dist/delegated-session-owner.js +1 -1
  100. package/dist/device-ws-protocol.d.ts +1 -0
  101. package/dist/device-ws-protocol.js +2 -1
  102. package/dist/env-model-table-gate.d.ts +53 -0
  103. package/dist/env-model-table-gate.js +53 -0
  104. package/dist/execution-lane-caps.d.ts +2 -1
  105. package/dist/fleet/fleet-bus.d.ts +34 -55
  106. package/dist/fleet/fleet-bus.js +35 -100
  107. package/dist/fleet/fleet-reconciler.d.ts +4 -4
  108. package/dist/fleet/fleet-reconciler.js +1 -1
  109. package/dist/fleet/subagent-tail-bus.d.ts +14 -11
  110. package/dist/fleet/subagent-tail-bus.js +15 -28
  111. package/dist/hooks/hook-runner.d.ts +6 -0
  112. package/dist/hooks/hook-runner.js +58 -8
  113. package/dist/host-decision.d.ts +54 -20
  114. package/dist/host-decision.js +42 -14
  115. package/dist/http/admission.d.ts +1 -1
  116. package/dist/http/admission.js +7 -3
  117. package/dist/http/approval-sweeps.js +11 -8
  118. package/dist/http/caller-trust.d.ts +1 -1
  119. package/dist/http/dispatch.js +4 -2
  120. package/dist/http/durable-run-leg.js +2 -2
  121. package/dist/http/engine-refusal.d.ts +16 -0
  122. package/dist/http/engine-refusal.js +17 -0
  123. package/dist/http/execution-context.d.ts +2 -2
  124. package/dist/http/idempotency.d.ts +1 -1
  125. package/dist/http/memory-compliance-failure-reply.d.ts +1 -3
  126. package/dist/http/memory-compliance-failure-reply.js +4 -6
  127. package/dist/http/owner-access.d.ts +11 -0
  128. package/dist/http/owner-access.js +13 -0
  129. package/dist/http/principal-gate.d.ts +3 -1
  130. package/dist/http/principal-gate.js +17 -8
  131. package/dist/http/resume-legs.d.ts +21 -7
  132. package/dist/http/resume-legs.js +76 -58
  133. package/dist/http/resume-restatement.d.ts +39 -0
  134. package/dist/http/resume-restatement.js +25 -0
  135. package/dist/http/route-ctx.d.ts +35 -10
  136. package/dist/http/route-ctx.js +1 -1
  137. package/dist/http/route-table.js +2 -0
  138. package/dist/http/routes/approvals-assistant.d.ts +9 -1
  139. package/dist/http/routes/approvals-assistant.js +142 -31
  140. package/dist/http/routes/attachments.js +18 -0
  141. package/dist/http/routes/capabilities.js +16 -4
  142. package/dist/http/routes/memory-policy.d.ts +2 -2
  143. package/dist/http/routes/memory-policy.js +27 -7
  144. package/dist/http/routes/notify-wake.js +23 -25
  145. package/dist/http/routes/rules.js +48 -13
  146. package/dist/http/routes/runs.js +12 -11
  147. package/dist/http/routes/session-memory-sync.d.ts +91 -0
  148. package/dist/http/routes/session-memory-sync.js +174 -0
  149. package/dist/http/routes/session-sync.js +13 -20
  150. package/dist/http/routes/sessions-list.d.ts +2 -1
  151. package/dist/http/routes/sessions.d.ts +2 -2
  152. package/dist/http/routes/sessions.js +22 -23
  153. package/dist/http/routes/tasks.js +34 -54
  154. package/dist/http/run-read-face.d.ts +7 -0
  155. package/dist/http/run-read-face.js +9 -3
  156. package/dist/http/send.d.ts +5 -0
  157. package/dist/http/send.js +9 -2
  158. package/dist/http/server.d.ts +27 -15
  159. package/dist/http/server.js +4 -6
  160. package/dist/http/stored-body-replay.js +15 -4
  161. package/dist/http/submit-replay.d.ts +4 -3
  162. package/dist/http/submit-replay.js +2 -2
  163. package/dist/http/sync-submit-body.d.ts +21 -4
  164. package/dist/http/sync-submit-body.js +13 -0
  165. package/dist/http/wire-types.d.ts +17 -7
  166. package/dist/identity-source.d.ts +21 -2
  167. package/dist/identity-source.js +6 -0
  168. package/dist/leader/leader.js +5 -2
  169. package/dist/leader/wire.d.ts +7 -1
  170. package/dist/leader/wire.js +6 -5
  171. package/dist/leg-facts.d.ts +37 -0
  172. package/dist/leg-facts.js +15 -0
  173. package/dist/memory-bundle-engine.d.ts +1 -4
  174. package/dist/memory-bundle-engine.js +2 -2
  175. package/dist/memory-incident-sink.d.ts +19 -6
  176. package/dist/memory-incident-sink.js +8 -4
  177. package/dist/memory-operator-faces.d.ts +30 -66
  178. package/dist/memory-operator-faces.js +17 -88
  179. package/dist/memory-scope-stores.d.ts +38 -40
  180. package/dist/memory-scope-stores.js +51 -36
  181. package/dist/memory-scope.d.ts +0 -9
  182. package/dist/memory-scope.js +0 -9
  183. package/dist/memory-sync-client.d.ts +21 -21
  184. package/dist/memory-sync-client.js +62 -43
  185. package/dist/memory-sync-identity.d.ts +24 -0
  186. package/dist/memory-sync-identity.js +57 -0
  187. package/dist/memory-sync.d.ts +27 -5
  188. package/dist/memory-sync.js +29 -7
  189. package/dist/model-plane-face.d.ts +13 -7
  190. package/dist/model-plane-face.js +2 -1
  191. package/dist/observability/fail-open.d.ts +47 -14
  192. package/dist/observability/fail-open.js +37 -11
  193. package/dist/observability/run-terminal.d.ts +92 -34
  194. package/dist/observability/run-terminal.js +171 -162
  195. package/dist/orchestration/workflow-completion-inbox.d.ts +5 -19
  196. package/dist/orchestration/workflow-completion-inbox.js +0 -12
  197. package/dist/orchestration/workflow-notify-journal.d.ts +3 -2
  198. package/dist/orchestration/workflow-park-decision.d.ts +8 -3
  199. package/dist/orchestration/workflow-park-decision.js +5 -3
  200. package/dist/org-delivery-gate.d.ts +11 -0
  201. package/dist/org-delivery-gate.js +19 -1
  202. package/dist/parked-decide.d.ts +13 -9
  203. package/dist/parked-decide.js +7 -7
  204. package/dist/parked-revive-surface.js +1 -1
  205. package/dist/peer-inbound-face.d.ts +127 -0
  206. package/dist/peer-inbound-face.js +158 -0
  207. package/dist/permission-rule-list.d.ts +13 -9
  208. package/dist/permission-rule-list.js +7 -3
  209. package/dist/plugins/approval-ask-store-file.d.ts +14 -4
  210. package/dist/plugins/approval-ask-store-file.js +64 -11
  211. package/dist/plugins/approval-ask-store-memory.d.ts +2 -1
  212. package/dist/plugins/approval-ask-store-memory.js +17 -14
  213. package/dist/plugins/approval-ask-store-sql.d.ts +70 -23
  214. package/dist/plugins/approval-ask-store-sql.js +79 -30
  215. package/dist/plugins/checkpoint-store-sql.d.ts +4 -4
  216. package/dist/plugins/checkpoint-store-sql.js +9 -7
  217. package/dist/plugins/file-history-store-sql.d.ts +24 -18
  218. package/dist/plugins/file-history-store-sql.js +24 -19
  219. package/dist/plugins/file-run-store.d.ts +35 -1
  220. package/dist/plugins/file-run-store.js +108 -9
  221. package/dist/plugins/imported-layer-root-retirement.d.ts +82 -0
  222. package/dist/plugins/imported-layer-root-retirement.js +96 -0
  223. package/dist/plugins/local-checkpoint-store.d.ts +1 -1
  224. package/dist/plugins/local-checkpoint-store.js +2 -2
  225. package/dist/plugins/local-session-store.d.ts +42 -9
  226. package/dist/plugins/local-session-store.js +83 -33
  227. package/dist/plugins/local-task-attachment-store.d.ts +12 -2
  228. package/dist/plugins/local-task-attachment-store.js +67 -43
  229. package/dist/plugins/mailbox-recipient-lifecycle.d.ts +9 -31
  230. package/dist/plugins/mailbox-recipient-lifecycle.js +4 -0
  231. package/dist/plugins/mailbox-store-sql.d.ts +12 -8
  232. package/dist/plugins/mailbox-store-sql.js +76 -7
  233. package/dist/plugins/memory-key-guards.d.ts +3 -3
  234. package/dist/plugins/memory-run-store.d.ts +6 -1
  235. package/dist/plugins/memory-run-store.js +11 -1
  236. package/dist/plugins/memory-sync-store-pg.d.ts +15 -0
  237. package/dist/plugins/memory-sync-store-pg.js +21 -0
  238. package/dist/plugins/memory-sync-store-tidb.d.ts +2 -0
  239. package/dist/plugins/memory-sync-store-tidb.js +13 -1
  240. package/dist/plugins/one-time-migrations.d.ts +58 -2
  241. package/dist/plugins/one-time-migrations.js +161 -4
  242. package/dist/plugins/org-delivery-quota-store.d.ts +1 -1
  243. package/dist/plugins/org-delivery-quota-store.js +2 -12
  244. package/dist/plugins/park-commit-watch.d.ts +1 -1
  245. package/dist/plugins/permission-rule-store-file.d.ts +10 -1
  246. package/dist/plugins/permission-rule-store-file.js +15 -2
  247. package/dist/plugins/permission-rule-store-sql.d.ts +31 -1
  248. package/dist/plugins/permission-rule-store-sql.js +35 -2
  249. package/dist/plugins/remote-env-device.d.ts +8 -11
  250. package/dist/plugins/remote-env-device.js +6 -3
  251. package/dist/plugins/remote-env-e2b.d.ts +23 -4
  252. package/dist/plugins/remote-env-e2b.js +111 -28
  253. package/dist/plugins/remote-env-k8s.d.ts +61 -22
  254. package/dist/plugins/remote-env-k8s.js +133 -33
  255. package/dist/plugins/remote-env-local-docker.d.ts +15 -3
  256. package/dist/plugins/remote-env-local-docker.js +40 -12
  257. package/dist/plugins/retention-store-sql.d.ts +2 -2
  258. package/dist/plugins/run-store-sql.d.ts +9 -1
  259. package/dist/plugins/run-store-sql.js +9 -1
  260. package/dist/plugins/sandbox-read-floor.d.ts +5 -7
  261. package/dist/plugins/sandbox-read-floor.js +2 -7
  262. package/dist/plugins/sql-errors.d.ts +10 -1
  263. package/dist/plugins/sql-errors.js +13 -0
  264. package/dist/plugins/store-backend.d.ts +33 -35
  265. package/dist/plugins/store-backend.js +10 -1
  266. package/dist/plugins/store-contracts.d.ts +50 -1
  267. package/dist/plugins/store-contracts.js +6 -0
  268. package/dist/plugins/task-attachment-store.d.ts +112 -14
  269. package/dist/plugins/task-attachment-store.js +207 -29
  270. package/dist/plugins/tool-result-store-sql.d.ts +9 -8
  271. package/dist/plugins/tool-result-store-sql.js +23 -2
  272. package/dist/plugins/wiring-section-codec.d.ts +32 -0
  273. package/dist/plugins/wiring-section-codec.js +55 -0
  274. package/dist/plugins/workspace-fill.d.ts +60 -0
  275. package/dist/plugins/workspace-fill.js +106 -0
  276. package/dist/project-bundle.d.ts +38 -0
  277. package/dist/project-bundle.js +609 -0
  278. package/dist/rule-entry-list.d.ts +3 -2
  279. package/dist/rule-entry-list.js +5 -1
  280. package/dist/rules-consent.d.ts +28 -5
  281. package/dist/rules-consent.js +40 -28
  282. package/dist/run-local.js +11 -13
  283. package/dist/runs.d.ts +12 -8
  284. package/dist/runs.js +6 -8
  285. package/dist/runtime-governance.d.ts +1 -1
  286. package/dist/sandbox-egress-policy.d.ts +4 -1
  287. package/dist/sandbox-egress-policy.js +3 -1
  288. package/dist/sandbox-git-plane.d.ts +31 -12
  289. package/dist/sandbox-git-plane.js +24 -4
  290. package/dist/security.d.ts +9 -0
  291. package/dist/security.js +8 -0
  292. package/dist/server-secret-env.d.ts +4 -0
  293. package/dist/session-error-wire.d.ts +36 -0
  294. package/dist/session-error-wire.js +13 -0
  295. package/dist/session-incarnation.d.ts +1 -1
  296. package/dist/session-notify-door.d.ts +106 -0
  297. package/dist/session-notify-door.js +93 -0
  298. package/dist/session-sync.d.ts +9 -14
  299. package/dist/session-sync.js +5 -5
  300. package/dist/session-workspace.d.ts +3 -13
  301. package/dist/session-workspace.js +0 -9
  302. package/dist/standing-answer-grant.d.ts +5 -0
  303. package/dist/standing-answer-grant.js +10 -0
  304. package/dist/stores-sql/session-policy-store-sql.d.ts +4 -2
  305. package/dist/stores-sql/session-policy-store-sql.js +3 -13
  306. package/dist/task-mcp.d.ts +1 -1
  307. package/dist/task-settings.d.ts +21 -10
  308. package/dist/task-settings.js +46 -13
  309. package/dist/terminal.d.ts +39 -19
  310. package/dist/terminal.js +65 -22
  311. package/dist/tool-approval.d.ts +56 -37
  312. package/dist/tool-approval.js +78 -71
  313. package/dist/trace/core-keyset-guard.d.ts +134 -14
  314. package/dist/trace/engine-notice-wire.d.ts +9 -3
  315. package/dist/trace/engine-notice-wire.js +7 -3
  316. package/dist/trace/exit-seat.d.ts +9 -2
  317. package/dist/trace/exit-seat.js +1 -0
  318. package/dist/trace/ledger-sink.d.ts +10 -6
  319. package/dist/trace/ledger-sink.js +2 -2
  320. package/dist/trace/model-segment.d.ts +55 -25
  321. package/dist/trace/model-segment.js +101 -33
  322. package/dist/trace/project.d.ts +25 -5
  323. package/dist/trace/project.js +22 -0
  324. package/dist/trace/redact.d.ts +61 -9
  325. package/dist/trace/redact.js +1490 -468
  326. package/dist/trace/self-minted-wire.d.ts +745 -24
  327. package/dist/trace/self-minted-wire.js +239 -9
  328. package/dist/trace/wire-projection-faces.d.ts +2 -2
  329. package/dist/trace/wire-projection-faces.js +2 -2
  330. package/dist/verifier-pause-card.d.ts +33 -5
  331. package/dist/verifier-pause-card.js +15 -10
  332. package/dist/web-admin-client/apply-effective.d.ts +12 -16
  333. package/dist/web-admin-client/apply-effective.js +109 -9
  334. package/dist/web-admin-client/effective-keys.js +2 -0
  335. package/dist/web-admin-client/types.d.ts +4 -0
  336. package/dist/workspace-space.d.ts +19 -3
  337. package/dist/workspace-space.js +8 -4
  338. package/docs/DEVICE-EXECUTOR-PROTOCOL.md +3 -1
  339. package/package.json +3 -2
  340. package/wire-changes/server@7.142.0.json +639 -0
  341. package/wire-changes/server@7.143.0.json +1167 -0
@@ -88,7 +88,7 @@ export declare function runStage07(ctx: Awaited<ReturnType<typeof runStage06>>):
88
88
  lspManager: import("@sema-agent/core").NodeLspManager | import("../lsp/manager.js").E2bLspManager | undefined;
89
89
  spaceReclaimer: import("../workspace-space.js").SpaceReclaimer | undefined;
90
90
  sandboxPodReaper: import("../plugins/k8s-pod-reaper.js").SandboxPodReaper | undefined;
91
- sandboxGitPlane: import("../sandbox-git-plane.js").SandboxGitPlane;
91
+ sandboxGitPlane: () => import("../sandbox-git-plane.js").SandboxGitPlane;
92
92
  perSessionCwd: Map<string, string>;
93
93
  perTaskImage: import("../per-task-image.js").PerTaskImageRegistry;
94
94
  sendUserFileTaskEnvs: import("../capabilities/sandbox-file-send.js").TaskEnvRegistry | undefined;
@@ -125,14 +125,17 @@ export declare function runStage07(ctx: Awaited<ReturnType<typeof runStage06>>):
125
125
  sessionMemoryStatusFace: import("../memory-operator-faces.js").SessionMemoryStatusFace | undefined;
126
126
  sessionPolicyStore: import("@sema-agent/core").SessionPolicyStore | undefined;
127
127
  sideQueryAccounting: import("../budget.js").SideQueryAccounting;
128
- toolResultStore: import("../plugins/store-backend.js").ToolResultStoreFull | undefined;
128
+ toolResultStore: import("@sema-agent/core").ToolResultStore | undefined;
129
129
  tracer: import("@sema-agent/core").TracerHook;
130
130
  backend: import("../index.js").StoreBackend | undefined;
131
131
  backgroundAgentStore: import("@sema-agent/core").BackgroundAgentStore | undefined;
132
132
  breakerState: import("../plugins/breaker-state-sql.js").TiDBBreakerState | import("../plugins/breaker-state-sql.js").PgBreakerState | undefined;
133
133
  engineDataRoot: string;
134
134
  instanceId: string;
135
- mailboxRecipientLifecycle: import("../plugins/mailbox-recipient-lifecycle.js").MailboxRecipientLifecycle | undefined;
135
+ mailboxRecipientLifecycle: Readonly<{
136
+ retireRecipient: NonNullable<import("@sema-agent/core").MailboxStore["retireRecipient"]>;
137
+ listRetiredRecipients: NonNullable<import("@sema-agent/core").MailboxStore["listRetiredRecipients"]>;
138
+ }> | undefined;
136
139
  mailboxStore: import("@sema-agent/core").MailboxStore | undefined;
137
140
  memoryEngine: import("../memory-scope-stores.js").MemoryScopeStores | undefined;
138
141
  memoryExportStores: import("../memory-scope-stores.js").MemoryScopeStores | undefined;
@@ -23,11 +23,14 @@ import { createUserInputLedgerAtBoot, writerGoneEvidenceFor } from "../user-inpu
23
23
  import { createParkedReviveInheritedGate } from "./parked-revive-gate.js";
24
24
  import { createParkedReviveSurface } from "../parked-revive-surface.js";
25
25
  import { createWebFetchSummarizeLane } from "./webfetch-summarize-lane.js";
26
+ import { assertGovernanceAssemblable } from "./governance-seams.js";
26
27
  import { createRunnerDepsOnAsk } from "./runner-deps.js";
27
- import { bindRateLimiter, bindRunStore } from "./late-binds.js";
28
+ import { bindRateLimiter, bindRunStore, sessionNotifyDoor } from "./late-binds.js";
29
+ import { createBackgroundCompletionRelay } from "../session-notify-door.js";
28
30
  import { buildDisplaySafeUrl } from "../trace/redact.js";
29
31
  import * as facts from "../capability-facts.js";
30
32
  import { WEB_ADMIN_ENV } from "@sema-agent/settings-schema";
33
+ import { seatText } from "../trace/exit-seat.js";
31
34
  export async function runStage07(ctx) {
32
35
  const { approvalAskAudit, approvalExemptionStore, backend, backgroundAgentStore, brain, checkpointStore, config, webAdmin, counterDegradeHook, peerDesk, durableEnabled, instanceId, localRoot, logger, question, runner, runnerDeps, sendUserFileToolSpec, sessionEnvSelection, sessionStore, subRunner, taskListLane, toolApproval } = ctx;
33
36
  const authorize = createAuthorizer(config, sessionStore);
@@ -152,6 +155,7 @@ export async function runStage07(ctx) {
152
155
  bindRateLimiter(rateLimiter);
153
156
  let skills = loadDeploymentSkills(config, logger);
154
157
  skills = await webAdmin.applyCenterCapabilities(skills, peerDesk, peerDesk.lease("roster"));
158
+ assertGovernanceAssemblable(config);
155
159
  const repoClient = config.gitApiBaseUrl ? createRepoClient(config.gitApiKind, config.gitApiBaseUrl, config.gitApiToken) : undefined;
156
160
  const webSearchCfg = webSearchConfigFromEnv();
157
161
  const webSearch = webSearchCfg ? createWebSearchBackend(webSearchCfg) : undefined;
@@ -165,7 +169,7 @@ export async function runStage07(ctx) {
165
169
  else
166
170
  logger.warn("web_search_probe_failed", { provider: webSearchCfg.provider, error: r.error, note: "WebSearch stays mounted — the tool will fail per-call until this is fixed; the service is not blocked by it." });
167
171
  })
168
- .catch((e) => logger.warn("web_search_probe_failed", { provider: webSearchCfg.provider, error: e instanceof Error ? e.message : String(e) }));
172
+ .catch((e) => logger.warn("web_search_probe_failed", { provider: webSearchCfg.provider, error: seatText("operator-log-text", e instanceof Error ? e.message : String(e)) }));
169
173
  }
170
174
  const ensureChildSessionDurable = checkpointStore && resolveSubagentTranscriptTier(backgroundAgentStore !== undefined, sessionStore) === "full"
171
175
  ? (sessionId, root) => attestChildSessionDurable(sessionStore, sessionId, root, logger)
@@ -180,6 +184,7 @@ export async function runStage07(ctx) {
180
184
  ensureChildSessionDurable: ensureChildSessionDurable ? ensureChildSessionDurable : undefined,
181
185
  taskListStoreFor: taskListLane.storeFor,
182
186
  subagentExtraTools: sendUserFileToolSpec ? subagentSendUserFileExtraTools({ spec: sendUserFileToolSpec }) : undefined,
187
+ backgroundCompletionSinkFor: createBackgroundCompletionRelay({ door: () => sessionNotifyDoor, logger }),
183
188
  };
184
189
  const scenarios = buildScenarios(scenarioDeps);
185
190
  const builtinDefaultScenario = scenarios.default;
@@ -101,7 +101,7 @@ export declare function runStage08(ctx: Awaited<ReturnType<typeof runStage07>>):
101
101
  lspManager: import("@sema-agent/core").NodeLspManager | import("../lsp/manager.js").E2bLspManager | undefined;
102
102
  spaceReclaimer: import("../workspace-space.js").SpaceReclaimer | undefined;
103
103
  sandboxPodReaper: import("../plugins/k8s-pod-reaper.js").SandboxPodReaper | undefined;
104
- sandboxGitPlane: import("../sandbox-git-plane.js").SandboxGitPlane;
104
+ sandboxGitPlane: () => import("../sandbox-git-plane.js").SandboxGitPlane;
105
105
  perSessionCwd: Map<string, string>;
106
106
  perTaskImage: import("../per-task-image.js").PerTaskImageRegistry;
107
107
  sendUserFileTaskEnvs: import("../capabilities/sandbox-file-send.js").TaskEnvRegistry | undefined;
@@ -138,14 +138,17 @@ export declare function runStage08(ctx: Awaited<ReturnType<typeof runStage07>>):
138
138
  sessionMemoryStatusFace: import("../memory-operator-faces.js").SessionMemoryStatusFace | undefined;
139
139
  sessionPolicyStore: import("@sema-agent/core").SessionPolicyStore | undefined;
140
140
  sideQueryAccounting: import("../budget.js").SideQueryAccounting;
141
- toolResultStore: import("../plugins/store-backend.js").ToolResultStoreFull | undefined;
141
+ toolResultStore: import("@sema-agent/core").ToolResultStore | undefined;
142
142
  tracer: import("@sema-agent/core").TracerHook;
143
143
  backend: import("../index.js").StoreBackend | undefined;
144
144
  backgroundAgentStore: import("@sema-agent/core").BackgroundAgentStore | undefined;
145
145
  breakerState: import("../plugins/breaker-state-sql.js").TiDBBreakerState | import("../plugins/breaker-state-sql.js").PgBreakerState | undefined;
146
146
  engineDataRoot: string;
147
147
  instanceId: string;
148
- mailboxRecipientLifecycle: import("../plugins/mailbox-recipient-lifecycle.js").MailboxRecipientLifecycle | undefined;
148
+ mailboxRecipientLifecycle: Readonly<{
149
+ retireRecipient: NonNullable<import("@sema-agent/core").MailboxStore["retireRecipient"]>;
150
+ listRetiredRecipients: NonNullable<import("@sema-agent/core").MailboxStore["listRetiredRecipients"]>;
151
+ }> | undefined;
149
152
  mailboxStore: import("@sema-agent/core").MailboxStore | undefined;
150
153
  memoryEngine: import("../memory-scope-stores.js").MemoryScopeStores | undefined;
151
154
  memoryExportStores: import("../memory-scope-stores.js").MemoryScopeStores | undefined;
@@ -4,6 +4,7 @@ import { startReapers } from "./reapers.js";
4
4
  import { startRetentionLane, RETENTION_LEASE_TTL_FACTOR } from "./retention-lane.js";
5
5
  import { createLimitSync } from "./limit-sync.js";
6
6
  import { runDenySweep } from "./late-binds.js";
7
+ import { seatText } from "../trace/exit-seat.js";
7
8
  export function runStage08(ctx) {
8
9
  const { approvalAskAudit, approvalNonceStore, backend, backgroundAgentStore, ceilingVerdict, checkpointStore, parkCommits, config, webAdmin, consolidationSeatWatch, costQuota, degradeRouteWatch, fileHistoryErasure, spaceReclaimer, sandboxPodReaper, handslessRunner, hookAgentRunner, imageBakes, instanceId, localRoot, logger, mailboxStore, metrics, permissionRuleStores, pricing, rateLimiter, retentionExecutor, retentionLaneStore, rosterStore, runStore, runner, sqlWorkflowRunStore, subRunner, taskAttachmentStore, toolApproval, toolResultStore, userInputLedger, workflowJournalStore, workflowNotifyGate, workflowNotifyJournal, workflowRecoverOpts, worktreeReap } = ctx;
9
10
  const reaper = startReapers({
@@ -48,7 +49,7 @@ export function runStage08(ctx) {
48
49
  const otelExporter = config.otel
49
50
  ? startOtlpExporter(metrics, {
50
51
  ...config.otel,
51
- onError: (err) => logger.warn("otel_export_failed", { err: String(err) }),
52
+ onError: (err) => logger.warn("otel_export_failed", { err: seatText("operator-log-text", String(err)) }),
52
53
  })
53
54
  : undefined;
54
55
  const limitSync = createLimitSync({ config, rateGate: rateLimiter, quota: costQuota, logger });
@@ -67,7 +68,7 @@ export function runStage08(ctx) {
67
68
  }
68
69
  catch (err) {
69
70
  if (i > 0)
70
- logger.error("runner_deps_swap_split", { failedAt: name, seats: Object.keys(next), swapped: bootRunners.slice(0, i).map(([n]) => n), err: String(err) });
71
+ logger.error("runner_deps_swap_split", { failedAt: name, seats: Object.keys(next), swapped: bootRunners.slice(0, i).map(([n]) => n), err: seatText("operator-log-text", String(err)) });
71
72
  throw err;
72
73
  }
73
74
  }
@@ -125,7 +125,7 @@ export declare function runStage09(ctx: Awaited<ReturnType<typeof runStage08>>):
125
125
  lspManager: import("@sema-agent/core").NodeLspManager | import("../lsp/manager.js").E2bLspManager | undefined;
126
126
  spaceReclaimer: import("../workspace-space.js").SpaceReclaimer | undefined;
127
127
  sandboxPodReaper: import("../plugins/k8s-pod-reaper.js").SandboxPodReaper | undefined;
128
- sandboxGitPlane: import("../sandbox-git-plane.js").SandboxGitPlane;
128
+ sandboxGitPlane: () => import("../sandbox-git-plane.js").SandboxGitPlane;
129
129
  perSessionCwd: Map<string, string>;
130
130
  perTaskImage: import("../per-task-image.js").PerTaskImageRegistry;
131
131
  sendUserFileTaskEnvs: import("../capabilities/sandbox-file-send.js").TaskEnvRegistry | undefined;
@@ -162,14 +162,17 @@ export declare function runStage09(ctx: Awaited<ReturnType<typeof runStage08>>):
162
162
  sessionMemoryStatusFace: import("../memory-operator-faces.js").SessionMemoryStatusFace | undefined;
163
163
  sessionPolicyStore: import("@sema-agent/core").SessionPolicyStore | undefined;
164
164
  sideQueryAccounting: import("../budget.js").SideQueryAccounting;
165
- toolResultStore: import("../plugins/store-backend.js").ToolResultStoreFull | undefined;
165
+ toolResultStore: import("@sema-agent/core").ToolResultStore | undefined;
166
166
  tracer: import("@sema-agent/core").TracerHook;
167
167
  backend: import("../index.js").StoreBackend | undefined;
168
168
  backgroundAgentStore: import("@sema-agent/core").BackgroundAgentStore | undefined;
169
169
  breakerState: import("../plugins/breaker-state-sql.js").TiDBBreakerState | import("../plugins/breaker-state-sql.js").PgBreakerState | undefined;
170
170
  engineDataRoot: string;
171
171
  instanceId: string;
172
- mailboxRecipientLifecycle: import("../plugins/mailbox-recipient-lifecycle.js").MailboxRecipientLifecycle | undefined;
172
+ mailboxRecipientLifecycle: Readonly<{
173
+ retireRecipient: NonNullable<import("@sema-agent/core").MailboxStore["retireRecipient"]>;
174
+ listRetiredRecipients: NonNullable<import("@sema-agent/core").MailboxStore["listRetiredRecipients"]>;
175
+ }> | undefined;
173
176
  mailboxStore: import("@sema-agent/core").MailboxStore | undefined;
174
177
  memoryEngine: import("../memory-scope-stores.js").MemoryScopeStores | undefined;
175
178
  memoryExportStores: import("../memory-scope-stores.js").MemoryScopeStores | undefined;
@@ -124,7 +124,7 @@ export declare function runStage10(ctx: Awaited<ReturnType<typeof runStage09>>):
124
124
  lspManager: import("@sema-agent/core").NodeLspManager | import("../lsp/manager.js").E2bLspManager | undefined;
125
125
  spaceReclaimer: import("../workspace-space.js").SpaceReclaimer | undefined;
126
126
  sandboxPodReaper: import("../plugins/k8s-pod-reaper.js").SandboxPodReaper | undefined;
127
- sandboxGitPlane: import("../sandbox-git-plane.js").SandboxGitPlane;
127
+ sandboxGitPlane: () => import("../sandbox-git-plane.js").SandboxGitPlane;
128
128
  perSessionCwd: Map<string, string>;
129
129
  perTaskImage: import("../per-task-image.js").PerTaskImageRegistry;
130
130
  sendUserFileTaskEnvs: import("../capabilities/sandbox-file-send.js").TaskEnvRegistry | undefined;
@@ -161,14 +161,17 @@ export declare function runStage10(ctx: Awaited<ReturnType<typeof runStage09>>):
161
161
  sessionMemoryStatusFace: import("../memory-operator-faces.js").SessionMemoryStatusFace | undefined;
162
162
  sessionPolicyStore: import("@sema-agent/core").SessionPolicyStore | undefined;
163
163
  sideQueryAccounting: import("../budget.js").SideQueryAccounting;
164
- toolResultStore: import("../plugins/store-backend.js").ToolResultStoreFull | undefined;
164
+ toolResultStore: import("@sema-agent/core").ToolResultStore | undefined;
165
165
  tracer: import("@sema-agent/core").TracerHook;
166
166
  backend: import("../plugins/store-backend.js").StoreBackend | undefined;
167
167
  backgroundAgentStore: import("@sema-agent/core").BackgroundAgentStore | undefined;
168
168
  breakerState: import("../plugins/breaker-state-sql.js").TiDBBreakerState | import("../plugins/breaker-state-sql.js").PgBreakerState | undefined;
169
169
  engineDataRoot: string;
170
170
  instanceId: string;
171
- mailboxRecipientLifecycle: import("../plugins/mailbox-recipient-lifecycle.js").MailboxRecipientLifecycle | undefined;
171
+ mailboxRecipientLifecycle: Readonly<{
172
+ retireRecipient: NonNullable<import("@sema-agent/core").MailboxStore["retireRecipient"]>;
173
+ listRetiredRecipients: NonNullable<import("@sema-agent/core").MailboxStore["listRetiredRecipients"]>;
174
+ }> | undefined;
172
175
  mailboxStore: import("@sema-agent/core").MailboxStore | undefined;
173
176
  memoryEngine: import("../memory-scope-stores.js").MemoryScopeStores | undefined;
174
177
  memoryExportStores: import("../memory-scope-stores.js").MemoryScopeStores | undefined;
@@ -13,6 +13,7 @@ import { backgroundAgentOutput, taskHandleOutput, taskHandleStop } from "../runs
13
13
  import { createStoreLiveProbe } from "../store-live-probe.js";
14
14
  import { counterStoreLabel } from "../plugins/store-backend.js";
15
15
  import { sessionStoreLabelOf } from "../store-posture.js";
16
+ import { defaultPeerInboundFace, peerBoxScope } from "../peer-inbound-face.js";
16
17
  import { startFleetClientFromConfig } from "../fleet-client.js";
17
18
  import { createCenterWiringReader } from "../capabilities/center-wiring.js";
18
19
  import { mintEngineSignal } from "../fleet/engine-signal.js";
@@ -29,6 +30,7 @@ import { installShutdownHandlers } from "./shutdown.js";
29
30
  import { bindServerLateSeats } from "./late-binds.js";
30
31
  import { serviceVersion } from "../service-version.js";
31
32
  import { buildDisplaySafeUrl } from "../trace/redact.js";
33
+ import { seatText } from "../trace/exit-seat.js";
32
34
  export async function runStage10(ctx) {
33
35
  const { peerDesk, approvalAskAudit, approvalExemptionStore, approvalNonceStore, authorize, backend, backgroundAgentStore, brain, breakerState, centerRuntimeCapsResolver, checkpointStore, checkpointCtxSealing, parkCommits, config, webAdmin, consolidationValve, costQuota, deploymentModsLoaded, deviceLane, drainState, durableEnabled, elicitation, fenceSessionOwner, fileHistoryStore, fleetBus, fleetLease, fleetUsage, governanceSeams, handslessRunner, hookAgent, hookLlm, hookWakeBus, imageBakes, imageIndex, instanceId, instrumentDegenerate, leaderEndpoint, loadedSkills, localRoot, logger, lspManager, mcpRevocations, memoryBundleFaces, memoryComplianceFaces, memoryConsolidationFaces, memoryEngine, memoryExportStores, memoryOptOutGrantStore, memoryOriginFaces, memoryPosture, memorySyncCursors, memorySyncRunner, metrics, modelUsageTracker, orgMemoryAdmission, otelExporter, outcomeSink, ownerAware, parkedReviveInheritedGate, parkedReviveSurface, perSessionCwd, perTaskImage, planCacheProbe, pricing, principalCaps, promptManifestTracker, purgeSession, question, rateLimiter, reaper, webAdminJwtVerifier, resumeAnchorStore, retentionLaneStarted, retentionLaneStore, ruleConsent, runStore, runner, runnerDeps, runtimeCapsPeekResolver, sandboxGitPlane, scenarioDetails, scenarios, selectEnvTool, sendFileLedger, sendUserFileEmitter, sendUserFileToolSpec, sessionAudit, sessionEnvSelection, sessionMemoryStatusFace, sessionPolicyStore, sessionTitler, sessionWatchRegistry, setSessionCwd, setSessionInheritEnv, setSessionShellEnv, sharedMemoryStore, sideQueryAccounting, sqlEngine, sqlWorkflowRunStore, staticWiring, storePosture, subRunner, subagentSteerRegistry, taskAttachmentStore, taskLimitCaps, taskTimeoutSec, toolApproval, toolResultStore, usageWindowStore, userInputLedger, webSearchProvider, workflowAgentRegistry, workflowAgentSessionIndex, workflowParkDecisions, workflowCompletionInbox, workflowJournalStore, workflowModelAllowlistSnapshot, workflowNotifyGate, workflowNotifyJournal, workflowRecoverOpts, workflowRunStore, workflowsCapable, orgDeliveryGate } = ctx;
34
36
  const stores = {
@@ -132,7 +134,7 @@ export async function runStage10(ctx) {
132
134
  classifierModel: () => {
133
135
  const route = classifierRouteFor(runnerDeps);
134
136
  if (route.fault !== undefined)
135
- logger.debug("auto_mode_classifier_route_unresolved", { fault: route.fault });
137
+ logger.debug("auto_mode_classifier_route_unresolved", { fault: seatText("operator-log-text", route.fault) });
136
138
  return route.id;
137
139
  },
138
140
  },
@@ -186,6 +188,7 @@ export async function runStage10(ctx) {
186
188
  centerIdentityNoticeState: () => webAdmin.centerIdentityNoticeState(),
187
189
  modelRefusalsState: () => webAdmin.modelRefusalsState(),
188
190
  candidateRejectionState: () => webAdmin.candidateRejectionState(),
191
+ latestPlaneRefusalState: () => webAdmin.latestPlaneRefusalState(),
189
192
  configHandoffState: () => webAdmin.configHandoffState(),
190
193
  mcpRevocations,
191
194
  mcpRevocationState: () => webAdmin.mcpRevocationState(),
@@ -224,7 +227,7 @@ export async function runStage10(ctx) {
224
227
  ...(runStore ? { runs: runStore } : {}),
225
228
  ...(workflowRunStore ? { workflows: workflowRunStore } : {}),
226
229
  agents: backgroundAgentStore,
227
- hasPendingAsk: toolApproval ? (originTaskId) => toolApproval.hasLivePendingFrom(originTaskId) : undefined,
230
+ hasPendingAsk: toolApproval ? (names) => toolApproval.hasLivePendingFromLeg(names) : undefined,
228
231
  instanceId,
229
232
  logger,
230
233
  metrics,
@@ -257,7 +260,7 @@ export async function runStage10(ctx) {
257
260
  bindHost: bindHost ?? "0.0.0.0/::(all interfaces)",
258
261
  ...(config.bindHostSource ? { bindHostSource: config.bindHostSource } : {}),
259
262
  ...(config.bindHostSource === "HOST" ? { note: "bind failed for a host inherited from the HOST env var — set BIND_HOST explicitly (e.g. BIND_HOST=127.0.0.1)." } : {}),
260
- error: e instanceof Error ? e.message : String(e),
263
+ error: seatText("operator-log-text", e instanceof Error ? e.message : String(e)),
261
264
  });
262
265
  throw e;
263
266
  }
@@ -267,7 +270,7 @@ export async function runStage10(ctx) {
267
270
  }
268
271
  server.on("error", (e) => {
269
272
  logger.error("server_error", {
270
- error: e.message,
273
+ error: seatText("operator-log-text", e.message),
271
274
  ...("code" in e ? { code: String(e.code) } : {}),
272
275
  });
273
276
  });
@@ -324,7 +327,7 @@ export async function runStage10(ctx) {
324
327
  void workflowNotifyGate
325
328
  .recover(workflowRecoverOpts)
326
329
  .then((tally) => logger.info("workflow_notify_recovered", tally))
327
- .catch((err) => logger.warn("workflow_notify_recover_failed", { err: String(err) }))
330
+ .catch((err) => logger.warn("workflow_notify_recover_failed", { err: seatText("operator-log-text", String(err)) }))
328
331
  .finally(() => resolveFleetRecovery());
329
332
  }
330
333
  else {
@@ -341,6 +344,12 @@ export async function runStage10(ctx) {
341
344
  retentionLane: retentionLaneStarted,
342
345
  releaseRetentionLease: retentionLaneStore !== undefined ? () => retentionLaneStore.release(instanceId) : undefined,
343
346
  servingLease,
347
+ peerInbound: {
348
+ shutdown: () => defaultPeerInboundFace.shutdown(async (sessionId) => {
349
+ const head = await ownerAware.headOf?.(sessionId);
350
+ return head === undefined ? undefined : peerBoxScope(head.owner);
351
+ }),
352
+ },
344
353
  });
345
354
  servingLease?.resumeStickyDenial();
346
355
  return { ...ctx };
@@ -3,7 +3,6 @@ import { type MemorySyncRunner } from "../memory-sync-client.js";
3
3
  import type { Logger } from "../observability/logger.js";
4
4
  import type { Metrics } from "../observability/metrics.js";
5
5
  import { type MemorySyncStore } from "../plugins/memory-sync-store-pg.js";
6
- import { type MailboxRecipientLifecycle } from "../plugins/mailbox-recipient-lifecycle.js";
7
6
  import { type TaskAttachmentStore } from "../plugins/task-attachment-store.js";
8
7
  import { type StoreBackend } from "../plugins/store-backend.js";
9
8
  import { type MemoryScopeStores } from "../memory-scope-stores.js";
@@ -29,7 +28,10 @@ export declare function openStores(ctx: OpenStoresCtx): Promise<{
29
28
  memorySyncCursors: MemorySyncStore | undefined;
30
29
  rosterStore: import("@sema-agent/core").RosterStore | undefined;
31
30
  backgroundAgentStore: import("@sema-agent/core").BackgroundAgentStore | undefined;
32
- mailboxRecipientLifecycle: MailboxRecipientLifecycle | undefined;
31
+ mailboxRecipientLifecycle: Readonly<{
32
+ retireRecipient: NonNullable<import("@sema-agent/core").MailboxStore["retireRecipient"]>;
33
+ listRetiredRecipients: NonNullable<import("@sema-agent/core").MailboxStore["listRetiredRecipients"]>;
34
+ }> | undefined;
33
35
  taskAttachmentStore: TaskAttachmentStore | undefined;
34
36
  mailboxStore: import("@sema-agent/core").MailboxStore | undefined;
35
37
  memoryExportStores: MemoryScopeStores | undefined;
@@ -40,5 +42,6 @@ export declare function openStores(ctx: OpenStoresCtx): Promise<{
40
42
  memoryPosture: import("../memory-posture.js").MemoryPosture;
41
43
  taskListLane: import("./task-list-lane.js").TaskListLane;
42
44
  sqlEngine: import("../plugins/sql-driver.js").SqlEngineReading | undefined;
45
+ sessionCaptureRecords: import("../plugins/store-backend.js").SessionCaptureRecordSource | undefined;
43
46
  }>;
44
47
  //# sourceMappingURL=stores.d.ts.map
@@ -12,7 +12,7 @@ import { MinioBlobBackend } from "../plugins/blob-backend.js";
12
12
  import { ensureSnapshotBuckets } from "../plugins/snapshot-bucket-presence.js";
13
13
  import { PgBackgroundAgentStore, TiDBBackgroundAgentStore, ensurePgBackgroundAgentSchema, ensureTiDBBackgroundAgentSchema } from "../stores-sql/background-agent-store-sql.js";
14
14
  import { PgMailboxStore, TiDBMailboxStore, ensurePgMailboxSchema, ensureTiDBMailboxSchema } from "../plugins/mailbox-store-sql.js";
15
- import { createDropOnlyRecipientLifecycle } from "../plugins/mailbox-recipient-lifecycle.js";
15
+ import { recipientLifecycleOf } from "../plugins/mailbox-recipient-lifecycle.js";
16
16
  import { PgUsageWindowStore, TiDBUsageWindowStore, ensurePgUsageWindowSchema, ensureTiDBUsageWindowSchema } from "../stores-sql/usage-window-store-sql.js";
17
17
  import { PgRosterStore, TiDBRosterStore, ensurePgRosterSchema, ensureTiDBRosterSchema } from "../plugins/roster-store-sql.js";
18
18
  import { LocalTaskAttachmentStore } from "../plugins/local-task-attachment-store.js";
@@ -29,7 +29,7 @@ import { assertCloudSnapshotBlobPosture, openStoreBackendWithFallback } from "..
29
29
  import { createMemoryEngineIncidentSink } from "../memory-incident-sink.js";
30
30
  import { announceLockedLegacyMemoryLayers } from "../memory-layer-legacy-lock.js";
31
31
  import { createEngineNoticeForwarder } from "./runner-deps.js";
32
- import { buildMemoryRemoteLaneWarn, memoryEngineBackendFor, memoryEngineRemoteLanePosture, memoryEngineRootFor, memoryLayersNamedBy, memoryMountRootOf } from "../memory-scope.js";
32
+ import { buildMemoryRemoteLaneWarn, memoryEngineBackendFor, memoryEngineRemoteLanePosture, memoryEngineRootFor, memoryMountRootOf } from "../memory-scope.js";
33
33
  import { createMemoryScopeStores } from "../memory-scope-stores.js";
34
34
  import { assertToolResultProvenanceSchema } from "../plugins/tool-result-store-sql.js";
35
35
  import { assertPermissionRuleApprovalSchema, assertPermissionRuleTicketSchema } from "../plugins/permission-rule-store-sql.js";
@@ -42,6 +42,7 @@ import { buildMemoryPosture } from "../memory-posture.js";
42
42
  import { headReadOf } from "../session-incarnation.js";
43
43
  import { establishSqlEnginePosture, sqlPoolsOf } from "../sql-engine-posture.js";
44
44
  import { buildStorePosture } from "../store-posture.js";
45
+ import { seatText } from "../trace/exit-seat.js";
45
46
  const DARK_REASON_PROSE = {
46
47
  engine_off: () => "MEMORY_ENGINE=off",
47
48
  multi_tenant_file_backend: () => "multi-tenant on the FILE backend (no tenant isolation; set MEMORY_ENGINE_BACKEND=pg|mysql to light up)",
@@ -123,7 +124,8 @@ export async function openStores(ctx) {
123
124
  let memoryEngine;
124
125
  const engineDataRoot = memoryEngineRootFor(config, localRoot);
125
126
  const memoryEngineIncident = createMemoryEngineIncidentSink({ logger, metrics });
126
- const scopeStoresOver = (deployment) => createMemoryScopeStores({ backend: deployment, root: engineDataRoot, namedLayers: () => memoryLayersNamedBy(config), onIncident: memoryEngineIncident });
127
+ const sessionCaptureRecords = backend?.sessionCaptureRecords();
128
+ const scopeStoresOver = (deployment) => createMemoryScopeStores({ backend: deployment, root: engineDataRoot, onIncident: memoryEngineIncident, ...(sessionCaptureRecords !== undefined ? { captureRecords: sessionCaptureRecords } : {}) });
127
129
  let memorySyncCursors;
128
130
  let vectorMode;
129
131
  if (config.memoryEngineBackend !== "file" && config.memoryEngineEnabled) {
@@ -153,7 +155,7 @@ export async function openStores(ctx) {
153
155
  metrics.inc("memory_embed_failed_total", { backend: dialect });
154
156
  logger.warn("memory_embedder_failed", {
155
157
  model: config.memoryEmbedder?.model,
156
- err: String(err).slice(0, 300),
158
+ err: seatText("operator-log-text", String(err)),
157
159
  note: "memory writes for this batch report an io-error conflict and retrieval falls back to the lexical floor until the embedder recovers",
158
160
  });
159
161
  },
@@ -277,7 +279,7 @@ export async function openStores(ctx) {
277
279
  if (pgPool) {
278
280
  const q = async (text, params) => { const r = await pgPool.query(text, params); return { rows: r.rows }; };
279
281
  await ensurePgTaskAttachmentSchema(q);
280
- taskAttachmentStore = new PgTaskAttachmentStore(q, bytes);
282
+ taskAttachmentStore = new PgTaskAttachmentStore(pgPool, bytes);
281
283
  }
282
284
  else {
283
285
  await ensureTiDBTaskAttachmentSchema(mysqlPool);
@@ -300,20 +302,19 @@ export async function openStores(ctx) {
300
302
  await ensurePgMailboxSchema(async (text, params) => pgPool.query(text, params));
301
303
  const store = new PgMailboxStore(pgPool, logger);
302
304
  mailboxStore = store;
303
- mailboxRecipientLifecycle = store;
304
305
  }
305
306
  else if (mysqlPool) {
306
307
  await ensureTiDBMailboxSchema(mysqlPool);
307
308
  const store = new TiDBMailboxStore(mysqlPool, logger);
308
309
  mailboxStore = store;
309
- mailboxRecipientLifecycle = store;
310
310
  }
311
311
  else if (backend?.kind === "local") {
312
312
  mailboxStore = new FileMailboxStore(config.localDataRoot ?? localRoot, {
313
313
  onCorruptRead: createCorruptReadFailOpenSeat("server.mailbox.corrupt-record-skipped"),
314
314
  });
315
- mailboxRecipientLifecycle = createDropOnlyRecipientLifecycle(mailboxStore);
316
315
  }
316
+ if (mailboxStore)
317
+ mailboxRecipientLifecycle = recipientLifecycleOf(mailboxStore);
317
318
  if (mailboxStore) {
318
319
  const laneVerdict = mailboxCrossProcessMountVerdict(mailboxStore);
319
320
  logger.info("mailbox_store_enabled", {
@@ -438,7 +439,7 @@ export async function openStores(ctx) {
438
439
  return {
439
440
  backend, storePosture, memoryEngine, engineDataRoot, memorySyncCursors, rosterStore, backgroundAgentStore, mailboxRecipientLifecycle,
440
441
  taskAttachmentStore, mailboxStore, memoryExportStores, memorySyncRunner, sessionStore, breakerState,
441
- usageWindowStore, memoryPosture, taskListLane, sqlEngine,
442
+ usageWindowStore, memoryPosture, taskListLane, sqlEngine, sessionCaptureRecords,
442
443
  };
443
444
  }
444
445
  //# sourceMappingURL=stores.js.map
@@ -1,4 +1,4 @@
1
- import { type ModelRefusalsSignal } from "@sema-agent/settings-schema";
1
+ import { type ModelPlaneRefusalCode, type ModelRefusalsSignal } from "@sema-agent/settings-schema";
2
2
  import { CenterPromptSource, type SwappableDeps } from "@sema-agent/core";
3
3
  import { buildPricing } from "../budget.js";
4
4
  import { type Scenario, type ScenarioDeps, type ScenarioDetail } from "../capabilities/scenarios.js";
@@ -128,6 +128,10 @@ export interface WebAdminRuntime {
128
128
  * 名 → 码 + 组拒码)。描述**最近一次被判的那份中心候选目录**(每次候选 apply 的报告 `ApplyReport.modelRefusals` 投影;组拒时就是被拒
129
129
  * 的那份 —— 引擎自己的拒因表不换代)。没有可报的拒 / 没有配置管道 / 还没判过候选 ⇒ `undefined`(键缺席)。值变了 ⇒ 通知自报订阅者。 */
130
130
  modelRefusalsState(): ModelRefusalsSignal | undefined;
131
+ /** `GET /v1/models.modelPlane` 的 `planeRefusalCode` 与 `catalog` 的模型面那一半的**同一只**取值口:**最新到达**的目录候选被模型面组拒的码。
132
+ * 在场 ⇔ 模型拒因信号带 `plane` ∧ 落下它的那次 apply 是最新一次到达(到达计数相等,不按收货序数比 —— 本地腿只改决定文件时同一序数再到达)。
133
+ * 与 {@link modelRefusalsState} 的 `plane` 分两个主语:那一键 = 最近一份**被 stage 判过**的模型面的组拒判决(不随更新的到达撤);本口随每一次更新的到达撤。 */
134
+ latestPlaneRefusalState(): ModelPlaneRefusalCode | undefined;
131
135
  /** [ref]:`GET /v1/models.candidateRejected` 的取值口 —— 最近一次候选被判官整拒的结论(`candidateRejection` 座;域集就是判官交出的 `rejected.domains`)。
132
136
  * present-iff 当前生效的配置是因判官整拒了最近一份候选而回落的那一份:后来的候选被判 clean 即撤下;还没判过候选 / 没有配置管道 ⇒ `undefined`(键缺席)。
133
137
  * dry-run 姿势(`webAdmin.dryRun`,compare-only)恒 `undefined`:候选从不被应用,生效配置恒是 env,拒判是预演读数(日志行照响),不是配置没换的原因。 */