@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.
- package/MIGRATION.md +1423 -24
- package/README.md +21 -8
- package/README.zh-CN.md +15 -9
- package/USAGE.md +537 -216
- package/deploy/facts/lanes.json +7 -0
- package/deploy/sema-up/README.md +18 -7
- package/deploy/sema-up/chart/templates/NOTES.txt +1 -1
- package/deploy/sema-up/chart/templates/_helpers.tpl +42 -4
- package/deploy/sema-up/chart/templates/server-v4pro.yaml +5 -4
- package/deploy/sema-up/chart/templates/server.yaml +5 -4
- package/deploy/sema-up/chart/values.yaml +4 -3
- package/deploy/sema-up/cluster-up.sh +75 -176
- package/deploy/sema-up/kube-up.sh +29 -49
- package/deploy/sema-up/lib/chart-run.sh +23 -0
- package/deploy/sema-up/lib/dataroot.sh +3 -3
- package/deploy/sema-up/lib/flagshape.sh +4 -0
- package/deploy/sema-up/lib/health.sh +62 -13
- package/deploy/sema-up/lib/helm-values-cluster.py +18 -0
- package/deploy/sema-up/lib/helm-values-kube.py +35 -0
- package/deploy/sema-up/lib/lanes.json +2 -5
- package/deploy/sema-up/lib/regcred.py +8 -0
- package/deploy/sema-up/lib/remote/helm-install.sh +3 -0
- package/deploy/sema-up/lib/remote/image-import.sh +6 -0
- package/deploy/sema-up/lib/remote/machine-precheck.sh +11 -0
- package/deploy/sema-up/lib/remote/region-probe.sh +3 -0
- package/deploy/sema-up/lib/remote/stack-ready.sh +26 -0
- package/deploy/sema-up/lib/remote/vxlan-guard.sh +8 -0
- package/deploy/sema-up/lib/render-stack.py +17 -0
- package/deploy/sema-up/lib/shell-text.sh +87 -0
- package/deploy/sema-up/lib/usage-flags.txt +10 -0
- package/deploy/sema-up/lib/usage-head.txt +1 -0
- package/deploy/sema-up/lib/usage-tail.txt +13 -0
- package/deploy/sema-up/preflight.sh +10 -8
- package/deploy/sema-up/sema-up.sh +26 -48
- package/deploy/sema-up/smoke.sh +7 -6
- package/deploy/sema-up/stack/compose.dataroot.yaml +3 -0
- package/deploy/sema-up/stack/compose.yaml +18 -5
- package/deploy/sema-up/stack/sema-stack-cluster.yaml +25 -3
- package/dist/adoption/plan.d.ts +24 -0
- package/dist/adoption/plan.js +53 -1
- package/dist/adoption/runner.d.ts +10 -1
- package/dist/adoption/runner.js +36 -16
- package/dist/adoption/wire.d.ts +3 -3
- package/dist/approval-card.d.ts +32 -34
- package/dist/approval-gate-currency.js +3 -2
- package/dist/approval-reconciler.d.ts +4 -13
- package/dist/approval-reconciler.js +2 -2
- package/dist/approval.d.ts +16 -14
- package/dist/approval.js +3 -3
- package/dist/audit.d.ts +10 -3
- package/dist/audit.js +17 -9
- package/dist/auth-bridge.d.ts +0 -14
- package/dist/auth-bridge.js +0 -7
- package/dist/auto-mode-face.d.ts +10 -7
- package/dist/auto-mode-face.js +7 -4
- package/dist/background-agent-name.d.ts +19 -1
- package/dist/background-agent-name.js +12 -2
- package/dist/background-session-reap.d.ts +1 -1
- package/dist/bake-runner/main.js +9 -6
- package/dist/bench/s1/arms.js +6 -5
- package/dist/bench/s1/live-deps.js +8 -3
- package/dist/bench/s1/run-firm.js +6 -5
- package/dist/bind-host.d.ts +25 -0
- package/dist/bind-host.js +25 -0
- package/dist/boot/adoption.d.ts +3 -0
- package/dist/boot/adoption.js +1 -0
- package/dist/boot/crash-last.js +2 -1
- package/dist/boot/deployment-mods.d.ts +1 -1
- package/dist/boot/device-lane.js +5 -5
- package/dist/boot/engine-lease.d.ts +12 -11
- package/dist/boot/execution-env.d.ts +19 -8
- package/dist/boot/execution-env.js +80 -62
- package/dist/boot/execution-lane.d.ts +37 -9
- package/dist/boot/execution-lane.js +74 -20
- package/dist/boot/exit-boundary.d.ts +3 -3
- package/dist/boot/exit-boundary.js +6 -5
- package/dist/boot/exit-last.js +2 -1
- package/dist/boot/fatal-exit.d.ts +3 -5
- package/dist/boot/fatal-exit.js +2 -2
- package/dist/boot/governance-seams.d.ts +2 -2
- package/dist/boot/leader.d.ts +15 -0
- package/dist/boot/leader.js +18 -16
- package/dist/boot/memory-boundary.d.ts +11 -11
- package/dist/boot/memory-boundary.js +3 -3
- package/dist/boot/memory-consolidation.d.ts +50 -53
- package/dist/boot/memory-consolidation.js +11 -18
- package/dist/boot/org-memory.js +4 -3
- package/dist/boot/parked-revive-gate.d.ts +1 -1
- package/dist/boot/parked-revive-gate.js +3 -3
- package/dist/boot/reapers.d.ts +4 -3
- package/dist/boot/reapers.js +20 -17
- package/dist/boot/resolve-spec.d.ts +5 -3
- package/dist/boot/resolve-spec.js +133 -165
- package/dist/boot/retention-lane.d.ts +7 -45
- package/dist/boot/retention-lane.js +2 -2
- package/dist/boot/runner-deps.d.ts +28 -7
- package/dist/boot/runner-deps.js +11 -4
- package/dist/boot/runtime-caps.d.ts +2 -2
- package/dist/boot/runtime-caps.js +16 -2
- package/dist/boot/session-faces.d.ts +17 -7
- package/dist/boot/session-faces.js +122 -96
- package/dist/boot/shutdown.d.ts +5 -4
- package/dist/boot/shutdown.js +6 -4
- package/dist/boot/stage-01-config.d.ts +1 -1
- package/dist/boot/stage-01-config.js +14 -2
- package/dist/boot/stage-02-web-admin-pull.d.ts +2 -1
- package/dist/boot/stage-02-web-admin-pull.js +15 -8
- package/dist/boot/stage-03-store-backend.d.ts +4 -1
- package/dist/boot/stage-03-store-backend.js +4 -3
- package/dist/boot/stage-04-stores.d.ts +3 -1
- package/dist/boot/stage-04-stores.js +2 -2
- package/dist/boot/stage-05-execution-env.d.ts +9 -5
- package/dist/boot/stage-05-execution-env.js +5 -5
- package/dist/boot/stage-06-runners.d.ts +13 -15
- package/dist/boot/stage-06-runners.js +24 -18
- package/dist/boot/stage-07-capability-layer.d.ts +14 -11
- package/dist/boot/stage-07-capability-layer.js +9 -12
- package/dist/boot/stage-08-reapers.d.ts +14 -11
- package/dist/boot/stage-08-reapers.js +3 -3
- package/dist/boot/stage-09-leader.d.ts +16 -18
- package/dist/boot/stage-09-leader.js +12 -4
- package/dist/boot/stage-10-http-server.d.ts +16 -18
- package/dist/boot/stage-10-http-server.js +9 -5
- package/dist/boot/store-evidence.d.ts +20 -0
- package/dist/boot/store-evidence.js +13 -0
- package/dist/boot/stores.d.ts +12 -0
- package/dist/boot/stores.js +39 -17
- package/dist/boot/task-list-lane.d.ts +4 -4
- package/dist/boot/web-admin.d.ts +4 -2
- package/dist/boot/web-admin.js +58 -38
- package/dist/boot/webfetch-summarize-lane.d.ts +1 -1
- package/dist/boot-reclaim.d.ts +3 -1
- package/dist/boot-reclaim.js +1 -1
- package/dist/brain.d.ts +7 -18
- package/dist/brain.js +5 -17
- package/dist/budget.js +6 -6
- package/dist/capabilities/center-plugins.d.ts +9 -1
- package/dist/capabilities/center-plugins.js +37 -11
- package/dist/capabilities/center-wiring.js +1 -1
- package/dist/capabilities/composite-members.d.ts +3 -2
- package/dist/capabilities/composite-members.js +3 -2
- package/dist/capabilities/execution-lane.d.ts +7 -7
- package/dist/capabilities/execution-lane.js +2 -2
- package/dist/capabilities/hands-lane.d.ts +1 -1
- package/dist/capabilities/repo-tools.d.ts +2 -0
- package/dist/capabilities/repo-tools.js +14 -12
- package/dist/capabilities/scenarios.d.ts +38 -33
- package/dist/capabilities/scenarios.js +24 -25
- package/dist/capabilities/settings-contract.d.ts +29 -0
- package/dist/capabilities/settings-contract.js +14 -0
- package/dist/capabilities/skills.d.ts +6 -6
- package/dist/capabilities/tool-defer.d.ts +1 -1
- package/dist/capability-facts.d.ts +69 -4
- package/dist/capability-facts.js +77 -5
- package/dist/card-void.d.ts +4 -4
- package/dist/card-void.js +1 -1
- package/dist/center-credential-renewer.d.ts +6 -2
- package/dist/center-credential-renewer.js +10 -5
- package/dist/config-catalog.d.ts +16 -1
- package/dist/config-catalog.js +68 -61
- package/dist/config-dir-trust.d.ts +37 -4
- package/dist/config-dir-trust.js +88 -44
- package/dist/config-invariants.d.ts +58 -4
- package/dist/config-invariants.js +104 -23
- package/dist/config-lkg.d.ts +24 -2
- package/dist/config-lkg.js +22 -9
- package/dist/config-provider.d.ts +9 -9
- package/dist/config-provider.js +25 -108
- package/dist/config-pull-failure.d.ts +50 -0
- package/dist/config-pull-failure.js +48 -0
- package/dist/config-types.d.ts +215 -202
- package/dist/config.d.ts +69 -14
- package/dist/config.js +188 -96
- package/dist/degenerate-instrument.js +1 -1
- package/dist/delegated-session-owner.d.ts +1 -1
- package/dist/deleted-session-ids.d.ts +3 -2
- package/dist/deploy-facts.js +3 -2
- package/dist/deployment-governance.d.ts +3 -3
- package/dist/deployment-shape.d.ts +51 -16
- package/dist/deployment-shape.js +31 -6
- package/dist/egress-redirect.d.ts +25 -7
- package/dist/egress-redirect.js +20 -2
- package/dist/elicitation.d.ts +6 -5
- package/dist/elicitation.js +23 -22
- package/dist/engine-identity.d.ts +28 -0
- package/dist/engine-identity.js +10 -0
- package/dist/entry-problems.d.ts +5 -7
- package/dist/entry-problems.js +1 -1
- package/dist/env-facts.d.ts +7 -5
- package/dist/env-facts.js +12 -7
- package/dist/env-witness.d.ts +7 -0
- package/dist/env-witness.js +16 -0
- package/dist/execution-config-root.d.ts +5 -5
- package/dist/execution-config-root.js +5 -5
- package/dist/execution-env-purpose.d.ts +14 -0
- package/dist/execution-env-purpose.js +29 -0
- package/dist/execution-lane-caps.d.ts +53 -103
- package/dist/execution-lane-caps.js +51 -83
- package/dist/execution-placement.d.ts +65 -9
- package/dist/execution-placement.js +58 -0
- package/dist/field-conflict.d.ts +7 -11
- package/dist/field-conflict.js +3 -3
- package/dist/file-history-capture.d.ts +3 -3
- package/dist/file-history-disclosure.d.ts +2 -2
- package/dist/file-history-disclosure.js +1 -0
- package/dist/fleet/drain-entry.d.ts +17 -10
- package/dist/fleet/drain-entry.js +1 -1
- package/dist/fleet/fleet-bus.d.ts +21 -3
- package/dist/fleet/fleet-bus.js +35 -25
- package/dist/fleet/fleet-reconciler.js +2 -2
- package/dist/fleet/serving-lease.js +6 -7
- package/dist/fleet-client.js +3 -3
- package/dist/fleet-lease.d.ts +0 -1
- package/dist/fleet-lease.js +4 -5
- package/dist/history-anchor.d.ts +42 -0
- package/dist/history-anchor.js +34 -0
- package/dist/hitl-delivery.d.ts +90 -0
- package/dist/hitl-delivery.js +98 -0
- package/dist/hooks/classic-stations.d.ts +8 -11
- package/dist/hooks/classic-stations.js +0 -7
- package/dist/hooks/command-spawn.d.ts +1 -4
- package/dist/hooks/command-spawn.js +0 -11
- package/dist/hooks/hook-llm.d.ts +5 -1
- package/dist/hooks/hook-llm.js +24 -15
- package/dist/hooks/hook-runner.d.ts +119 -65
- package/dist/hooks/hook-runner.js +415 -217
- package/dist/host-lsp-manager.d.ts +22 -8
- package/dist/host-lsp-manager.js +4 -1
- package/dist/http/active-run-conflict.d.ts +2 -43
- package/dist/http/active-run-conflict.js +3 -7
- package/dist/http/admission.d.ts +4 -18
- package/dist/http/admission.js +75 -78
- package/dist/http/approval-sweeps.d.ts +5 -8
- package/dist/http/approval-sweeps.js +55 -30
- package/dist/http/caller-trust.d.ts +8 -10
- package/dist/http/caller-trust.js +1 -2
- package/dist/http/checkpoint-ctx.d.ts +17 -0
- package/dist/http/checkpoint-ctx.js +6 -0
- package/dist/http/claim-heartbeat.d.ts +49 -0
- package/dist/http/claim-heartbeat.js +46 -0
- package/dist/http/claim-latency.d.ts +10 -0
- package/dist/http/claim-latency.js +12 -0
- package/dist/http/claimed-run.d.ts +4 -3
- package/dist/http/dispatch.d.ts +8 -1
- package/dist/http/dispatch.js +77 -31
- package/dist/http/durable-run-leg.d.ts +3 -3
- package/dist/http/durable-run-leg.js +18 -12
- package/dist/http/execution-context.d.ts +18 -42
- package/dist/http/execution-context.js +11 -5
- package/dist/http/health-reader.d.ts +36 -0
- package/dist/http/health-reader.js +21 -0
- package/dist/http/health-self-report.d.ts +9 -9
- package/dist/http/health-self-report.js +4 -4
- package/dist/http/idempotency.d.ts +9 -5
- package/dist/http/idempotency.js +4 -4
- package/dist/http/memory-compliance-failure-reply.d.ts +15 -16
- package/dist/http/memory-compliance-failure-reply.js +7 -2
- package/dist/http/memory-face-fault-reply.d.ts +67 -0
- package/dist/http/memory-face-fault-reply.js +71 -0
- package/dist/http/memory-store-refusal-reply.d.ts +3 -3
- package/dist/http/memory-store-refusal-reply.js +6 -0
- package/dist/http/owner-access.d.ts +391 -56
- package/dist/http/owner-access.js +372 -33
- package/dist/http/principal-gate.d.ts +26 -94
- package/dist/http/principal-gate.js +24 -81
- package/dist/http/refusal-body.d.ts +35 -2
- package/dist/http/refusal-body.js +34 -0
- package/dist/http/request-guards.d.ts +10 -14
- package/dist/http/request-guards.js +34 -68
- package/dist/http/resume-composition.d.ts +37 -0
- package/dist/http/resume-composition.js +18 -0
- package/dist/http/resume-ctx-read.d.ts +35 -12
- package/dist/http/resume-ctx-read.js +25 -6
- package/dist/http/resume-legs.d.ts +24 -24
- package/dist/http/resume-legs.js +260 -171
- package/dist/http/retired-skill-manifest.d.ts +1 -1
- package/dist/http/rewind-files-reply.d.ts +34 -0
- package/dist/http/rewind-files-reply.js +36 -0
- package/dist/http/route-ctx.d.ts +56 -47
- package/dist/http/route-table.js +2 -0
- package/dist/http/routes/a2a-serve.d.ts +43 -5
- package/dist/http/routes/a2a-serve.js +58 -37
- package/dist/http/routes/admin-config-refresh.js +2 -2
- package/dist/http/routes/admin-drain.js +2 -2
- package/dist/http/routes/admin-memory-optout.js +4 -3
- package/dist/http/routes/adoption.d.ts +3 -0
- package/dist/http/routes/adoption.js +17 -10
- package/dist/http/routes/agents-roster.js +13 -7
- package/dist/http/routes/approvals-assistant.js +73 -88
- package/dist/http/routes/attachments.js +2 -2
- package/dist/http/routes/background.d.ts +3 -3
- package/dist/http/routes/background.js +9 -17
- package/dist/http/routes/capabilities.js +23 -20
- package/dist/http/routes/config-catalog.js +2 -2
- package/dist/http/routes/devices.d.ts +3 -3
- package/dist/http/routes/devices.js +5 -5
- package/dist/http/routes/diagnostics.d.ts +27 -3
- package/dist/http/routes/diagnostics.js +27 -21
- package/dist/http/routes/engine.js +2 -2
- package/dist/http/routes/fleet.js +5 -3
- package/dist/http/routes/images.js +10 -6
- package/dist/http/routes/leader.d.ts +7 -2
- package/dist/http/routes/leader.js +12 -3
- package/dist/http/routes/mcp-reconnect.d.ts +1 -1
- package/dist/http/routes/mcp-reconnect.js +7 -15
- package/dist/http/routes/memory-bundle.js +4 -7
- package/dist/http/routes/memory-compliance.js +4 -4
- package/dist/http/routes/memory-consolidation.js +6 -9
- package/dist/http/routes/memory-origin.d.ts +3 -1
- package/dist/http/routes/memory-origin.js +7 -8
- package/dist/http/routes/memory-policy.js +17 -12
- package/dist/http/routes/notify-wake.js +12 -20
- package/dist/http/routes/observability.js +3 -3
- package/dist/http/routes/principal-inbox.d.ts +1 -1
- package/dist/http/routes/principal-inbox.js +2 -2
- package/dist/http/routes/projects.d.ts +70 -0
- package/dist/http/routes/projects.js +87 -0
- package/dist/http/routes/retention-ops.js +6 -9
- package/dist/http/routes/rules.js +50 -7
- package/dist/http/routes/run-memory-capture.d.ts +2 -2
- package/dist/http/routes/run-memory-capture.js +6 -12
- package/dist/http/routes/run-permission-mode.d.ts +2 -2
- package/dist/http/routes/run-permission-mode.js +10 -17
- package/dist/http/routes/runs.js +148 -233
- package/dist/http/routes/session-memory-sync.d.ts +2 -2
- package/dist/http/routes/session-memory-sync.js +7 -13
- package/dist/http/routes/session-sync.d.ts +4 -2
- package/dist/http/routes/session-sync.js +48 -30
- package/dist/http/routes/sessions-list.d.ts +3 -3
- package/dist/http/routes/sessions-list.js +9 -9
- package/dist/http/routes/sessions.d.ts +7 -1
- package/dist/http/routes/sessions.js +177 -112
- package/dist/http/routes/shared-memory.js +6 -6
- package/dist/http/routes/side-query.js +2 -2
- package/dist/http/routes/tasks.js +144 -122
- package/dist/http/routes/trace-usage.d.ts +0 -12
- package/dist/http/routes/trace-usage.js +40 -46
- package/dist/http/routes/workflows.d.ts +39 -4
- package/dist/http/routes/workflows.js +42 -14
- package/dist/http/run-concurrency-cap.d.ts +20 -12
- package/dist/http/run-concurrency-cap.js +39 -26
- package/dist/http/run-read-face.d.ts +3 -5
- package/dist/http/run-read-face.js +8 -13
- package/dist/http/send.d.ts +12 -3
- package/dist/http/send.js +42 -6
- package/dist/http/server.d.ts +63 -50
- package/dist/http/server.js +52 -16
- package/dist/http/sse-log.d.ts +17 -10
- package/dist/http/sse-log.js +7 -7
- package/dist/http/stored-body-replay.d.ts +17 -3
- package/dist/http/stored-body-replay.js +11 -2
- package/dist/http/submit-ctx.d.ts +16 -8
- package/dist/http/submit-ctx.js +6 -2
- package/dist/http/submit-replay.d.ts +19 -6
- package/dist/http/submit-replay.js +18 -6
- package/dist/http/sync-submit-body.d.ts +3 -4
- package/dist/http/sync-submit-body.js +4 -5
- package/dist/http/wire-types.d.ts +23 -13
- package/dist/identity-source.d.ts +36 -5
- package/dist/identity-source.js +27 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +2 -1
- package/dist/instruction-source-notice.d.ts +1 -1
- package/dist/key-resolver.d.ts +32 -0
- package/dist/key-resolver.js +23 -9
- package/dist/leader/diffup.js +2 -1
- package/dist/leader/endpoint.d.ts +26 -5
- package/dist/leader/endpoint.js +154 -14
- package/dist/leader/fanout.d.ts +3 -0
- package/dist/leader/fanout.js +78 -63
- package/dist/leader/leader.d.ts +16 -0
- package/dist/leader/leader.js +43 -3
- package/dist/leader/merge.d.ts +9 -1
- package/dist/leader/merge.js +16 -1
- package/dist/leader/repair-wire.js +1 -1
- package/dist/leader/wire.d.ts +36 -3
- package/dist/leader/wire.js +59 -18
- package/dist/lsp-evict.d.ts +6 -4
- package/dist/lsp-evict.js +2 -3
- package/dist/memory-embedder-reembed.d.ts +38 -0
- package/dist/memory-embedder-reembed.js +20 -0
- package/dist/memory-incident-sink.d.ts +0 -28
- package/dist/memory-incident-sink.js +5 -0
- package/dist/memory-operator-faces.d.ts +5 -4
- package/dist/memory-operator-faces.js +1 -1
- package/dist/memory-scope.d.ts +31 -4
- package/dist/memory-scope.js +65 -16
- package/dist/memory-store-refusal.d.ts +20 -4
- package/dist/memory-store-refusal.js +1 -1
- package/dist/memory-sync-client.d.ts +5 -2
- package/dist/memory-sync-client.js +19 -14
- package/dist/memory-sync.js +1 -1
- package/dist/model-compat.d.ts +51 -28
- package/dist/model-compat.js +55 -23
- package/dist/model-context-window.d.ts +18 -0
- package/dist/model-context-window.js +2 -0
- package/dist/model-entry-headers.d.ts +46 -4
- package/dist/model-entry-headers.js +2 -2
- package/dist/model-entry-refusal.d.ts +46 -17
- package/dist/model-entry-refusal.js +47 -27
- package/dist/model-plane-face.d.ts +19 -11
- package/dist/model-plane-face.js +9 -1
- package/dist/model-plane-probe.d.ts +2 -0
- package/dist/model-plane-probe.js +17 -0
- package/dist/model-provider.d.ts +3 -3
- package/dist/model-route-endpoint.d.ts +9 -5
- package/dist/model-route-endpoint.js +29 -7
- package/dist/model-select.d.ts +16 -0
- package/dist/model-select.js +4 -0
- package/dist/mountinfo.d.ts +37 -0
- package/dist/mountinfo.js +47 -0
- package/dist/namespaced-rule-name.d.ts +28 -2
- package/dist/namespaced-rule-name.js +10 -1
- package/dist/net-address.d.ts +1 -1
- package/dist/observability/corrupt-read-seat.d.ts +4 -4
- package/dist/observability/corrupt-read-seat.js +5 -3
- package/dist/observability/fail-open.d.ts +75 -47
- package/dist/observability/fail-open.js +77 -47
- package/dist/observability/logger.d.ts +22 -1
- package/dist/observability/logger.js +89 -12
- package/dist/observability/metrics.d.ts +2 -0
- package/dist/observability/metrics.js +5 -4
- package/dist/observability/otel-exporter.js +2 -1
- package/dist/observability/principal-context.d.ts +14 -7
- package/dist/observability/principal-context.js +8 -3
- package/dist/observability/run-terminal.d.ts +7 -1
- package/dist/observability/run-terminal.js +5 -2
- package/dist/observability/secret-env-scrub.d.ts +30 -4
- package/dist/observability/secret-env-scrub.js +15 -3
- package/dist/orchestration/hardened-vm-runner.d.ts +1 -0
- package/dist/orchestration/hardened-vm-runner.js +11 -5
- package/dist/orchestration/hardened-vm-worker-runner.d.ts +0 -14
- package/dist/orchestration/hardened-vm-worker-runner.js +5 -0
- package/dist/orchestration/hardened-vm-worker.js +2 -1
- package/dist/orchestration/workflow-agent-session-index.d.ts +7 -12
- package/dist/orchestration/workflow-agent-session-index.js +1 -6
- package/dist/orchestration/workflow-completion-inbox.d.ts +29 -9
- package/dist/orchestration/workflow-completion-inbox.js +65 -46
- package/dist/org-delivery-gate.d.ts +5 -4
- package/dist/org-delivery-gate.js +7 -6
- package/dist/org-memory-admission.d.ts +5 -2
- package/dist/org-memory-admission.js +25 -10
- package/dist/outbound-dispatcher.d.ts +1 -1
- package/dist/outbound-dispatcher.js +6 -12
- package/dist/owner-brands.d.ts +81 -0
- package/dist/owner-brands.js +42 -0
- package/dist/owner-faces.d.ts +531 -0
- package/dist/owner-faces.js +126 -0
- package/dist/parked-decide.d.ts +100 -31
- package/dist/parked-decide.js +162 -48
- package/dist/parked-revive-surface.d.ts +14 -4
- package/dist/parked-revive-surface.js +5 -4
- package/dist/peer-directory.d.ts +6 -8
- package/dist/peer-directory.js +3 -2
- package/dist/permission-rule-vocab.d.ts +53 -8
- package/dist/permission-rule-vocab.js +30 -2
- package/dist/plugins/adoption-log-sql.d.ts +0 -22
- package/dist/plugins/adoption-log-sql.js +5 -3
- package/dist/plugins/approval-ask-retired-delete-by-task-m50.d.ts +7 -0
- package/dist/plugins/approval-ask-retired-delete-by-task-m50.js +17 -0
- package/dist/plugins/approval-ask-store-file.d.ts +28 -9
- package/dist/plugins/approval-ask-store-file.js +74 -18
- package/dist/plugins/approval-ask-store-memory.d.ts +17 -7
- package/dist/plugins/approval-ask-store-memory.js +35 -12
- package/dist/plugins/approval-ask-store-sql.d.ts +42 -20
- package/dist/plugins/approval-ask-store-sql.js +44 -11
- package/dist/plugins/approval-exemption-skill-m46.d.ts +20 -0
- package/dist/plugins/approval-exemption-skill-m46.js +25 -0
- package/dist/plugins/approval-exemption-store.d.ts +6 -1
- package/dist/plugins/approval-exemption-store.js +14 -0
- package/dist/plugins/approval-nonce-store.d.ts +39 -12
- package/dist/plugins/approval-nonce-store.js +72 -23
- package/dist/plugins/blob-backend.d.ts +40 -195
- package/dist/plugins/blob-backend.js +41 -234
- package/dist/plugins/caching-session-store.d.ts +22 -5
- package/dist/plugins/caching-session-store.js +43 -4
- package/dist/plugins/checkpoint-index-columns.d.ts +33 -6
- package/dist/plugins/checkpoint-index-columns.js +39 -3
- package/dist/plugins/checkpoint-store-face.d.ts +84 -11
- package/dist/plugins/checkpoint-store-face.js +18 -1
- package/dist/plugins/device-store-sql.d.ts +2 -2
- package/dist/plugins/device-store-sql.js +6 -10
- package/dist/plugins/ensure-index.d.ts +13 -1
- package/dist/plugins/ensure-index.js +154 -21
- package/dist/plugins/ensure-schema-lock-policy.d.ts +0 -15
- package/dist/plugins/ensure-schema-lock-policy.js +3 -2
- package/dist/plugins/execution-lane-rename-m40.d.ts +20 -0
- package/dist/plugins/execution-lane-rename-m40.js +10 -0
- package/dist/plugins/execution-placement-sql.d.ts +63 -88
- package/dist/plugins/execution-placement-sql.js +94 -54
- package/dist/plugins/file-run-store.d.ts +89 -35
- package/dist/plugins/file-run-store.js +197 -142
- package/dist/plugins/host-platform.d.ts +24 -3
- package/dist/plugins/host-platform.js +15 -1
- package/dist/plugins/image-bake-store-sql.js +2 -0
- package/dist/plugins/imported-layer-root-retirement.d.ts +19 -10
- package/dist/plugins/imported-layer-root-retirement.js +4 -8
- package/dist/plugins/inbox-payload-column.d.ts +14 -0
- package/dist/plugins/inbox-payload-column.js +13 -0
- package/dist/plugins/k8s-pod-reaper.d.ts +1 -3
- package/dist/plugins/k8s-pod-reaper.js +0 -1
- package/dist/plugins/leader-run-store-sql.d.ts +22 -0
- package/dist/plugins/leader-run-store-sql.js +34 -4
- package/dist/plugins/local-checkpoint-store.d.ts +63 -23
- package/dist/plugins/local-checkpoint-store.js +204 -81
- package/dist/plugins/local-data-dir-modes-m39.d.ts +48 -0
- package/dist/plugins/local-data-dir-modes-m39.js +183 -0
- package/dist/plugins/local-docker-capacity.d.ts +93 -0
- package/dist/plugins/local-docker-capacity.js +194 -0
- package/dist/plugins/local-docker-reaper.d.ts +92 -0
- package/dist/plugins/local-docker-reaper.js +102 -0
- package/dist/plugins/local-engine-high-water.d.ts +13 -0
- package/dist/plugins/local-engine-high-water.js +62 -0
- package/dist/plugins/local-session-store.d.ts +442 -143
- package/dist/plugins/local-session-store.js +941 -289
- package/dist/plugins/local-session-window.d.ts +3 -2
- package/dist/plugins/local-session-window.js +3 -2
- package/dist/plugins/local-sidecar-quarantine.js +3 -2
- package/dist/plugins/local-task-attachment-store.d.ts +20 -1
- package/dist/plugins/local-task-attachment-store.js +32 -12
- package/dist/plugins/memory-embedder-fingerprint.d.ts +33 -10
- package/dist/plugins/memory-embedder-fingerprint.js +52 -12
- package/dist/plugins/memory-embedder.d.ts +1 -1
- package/dist/plugins/memory-embedder.js +11 -9
- package/dist/plugins/memory-engine-pg.d.ts +7 -5
- package/dist/plugins/memory-engine-pg.js +18 -9
- package/dist/plugins/memory-engine-sql-apply.d.ts +21 -8
- package/dist/plugins/memory-engine-sql-apply.js +7 -9
- package/dist/plugins/memory-engine-tidb.d.ts +12 -7
- package/dist/plugins/memory-engine-tidb.js +18 -10
- package/dist/plugins/memory-optout-grant-store-sql.d.ts +1 -1
- package/dist/plugins/memory-optout-grant-store-sql.js +3 -3
- package/dist/plugins/memory-run-store.d.ts +39 -27
- package/dist/plugins/memory-run-store.js +72 -70
- package/dist/plugins/one-time-migration-marker.d.ts +10 -0
- package/dist/plugins/one-time-migration-marker.js +7 -0
- package/dist/plugins/one-time-migrations.d.ts +325 -74
- package/dist/plugins/one-time-migrations.js +705 -230
- package/dist/plugins/org-delivery-quota-store.js +2 -1
- package/dist/plugins/owner-only-file-mode.d.ts +29 -0
- package/dist/plugins/owner-only-file-mode.js +141 -0
- package/dist/plugins/permission-rule-store-file.d.ts +11 -11
- package/dist/plugins/permission-rule-store-file.js +14 -2
- package/dist/plugins/permission-rule-store-sql.d.ts +4 -63
- package/dist/plugins/permission-rule-store-sql.js +6 -86
- package/dist/plugins/pg-pool.d.ts +3 -32
- package/dist/plugins/pg-pool.js +27 -11
- package/dist/plugins/release-version.d.ts +20 -0
- package/dist/plugins/release-version.js +28 -0
- package/dist/plugins/remote-env-adb.d.ts +20 -4
- package/dist/plugins/remote-env-adb.js +39 -11
- package/dist/plugins/remote-env-e2b.d.ts +19 -28
- package/dist/plugins/remote-env-e2b.js +40 -29
- package/dist/plugins/remote-env-host.d.ts +11 -10
- package/dist/plugins/remote-env-host.js +40 -27
- package/dist/plugins/remote-env-k8s.d.ts +45 -47
- package/dist/plugins/remote-env-k8s.js +122 -62
- package/dist/plugins/remote-env-local-docker.d.ts +152 -15
- package/dist/plugins/remote-env-local-docker.js +370 -75
- package/dist/plugins/remote-env-ssh.d.ts +8 -2
- package/dist/plugins/remote-env-ssh.js +26 -24
- package/dist/plugins/remote-scratchpad.js +4 -0
- package/dist/plugins/remote-shell.d.ts +59 -30
- package/dist/plugins/remote-shell.js +175 -62
- package/dist/plugins/retention-declaration.d.ts +37 -0
- package/dist/plugins/retention-declaration.js +9 -0
- package/dist/plugins/retention-deployment.d.ts +158 -0
- package/dist/plugins/retention-deployment.js +119 -0
- package/dist/plugins/retention-lane-store-sql.d.ts +74 -4
- package/dist/plugins/retention-lane-store-sql.js +103 -1
- package/dist/plugins/retention-sql.d.ts +29 -0
- package/dist/plugins/retention-sql.js +8 -0
- package/dist/plugins/run-preview-m45.d.ts +11 -0
- package/dist/plugins/run-preview-m45.js +19 -0
- package/dist/plugins/run-store-sql.d.ts +56 -68
- package/dist/plugins/run-store-sql.js +127 -116
- package/dist/plugins/s3-answer.d.ts +2 -1
- package/dist/plugins/sandbox-reaper.d.ts +26 -0
- package/dist/plugins/sandbox-reaper.js +2 -0
- package/dist/plugins/scenario-prefix-switch-m42.d.ts +54 -0
- package/dist/plugins/scenario-prefix-switch-m42.js +55 -0
- package/dist/plugins/scheduler-support.d.ts +16 -1
- package/dist/plugins/scheduler-support.js +22 -2
- package/dist/plugins/schema-consistency.d.ts +42 -15
- package/dist/plugins/schema-consistency.js +213 -13
- package/dist/plugins/schema-drift-sentence.d.ts +4 -1
- package/dist/plugins/schema-drift-sentence.js +4 -4
- package/dist/plugins/schema-ensure-legs.d.ts +10 -1
- package/dist/plugins/schema-ensure-legs.js +12 -2
- package/dist/plugins/schema-indexes.js +3 -0
- package/dist/plugins/schema-live-columns.d.ts +14 -5
- package/dist/plugins/schema-live-columns.js +10 -10
- package/dist/plugins/send-user-file.js +2 -1
- package/dist/plugins/session-birth.d.ts +37 -0
- package/dist/plugins/session-birth.js +38 -0
- package/dist/plugins/session-epoch-anchor.d.ts +40 -12
- package/dist/plugins/session-epoch-anchor.js +33 -11
- package/dist/plugins/session-ext-table.d.ts +98 -0
- package/dist/plugins/session-ext-table.js +134 -0
- package/dist/plugins/session-fork.d.ts +16 -2
- package/dist/plugins/session-fork.js +3 -0
- package/dist/plugins/session-ownership.d.ts +1 -1
- package/dist/plugins/session-placement.d.ts +22 -16
- package/dist/plugins/session-placement.js +15 -12
- package/dist/plugins/session-row-sql.d.ts +20 -7
- package/dist/plugins/session-row-sql.js +16 -8
- package/dist/plugins/session-run-rollup.d.ts +29 -0
- package/dist/plugins/session-run-rollup.js +40 -0
- package/dist/plugins/session-store-sql.d.ts +157 -0
- package/dist/plugins/session-store-sql.js +398 -0
- package/dist/plugins/session-withdraw-sql.d.ts +36 -0
- package/dist/plugins/session-withdraw-sql.js +42 -0
- package/dist/plugins/session-workspace-cell.d.ts +2 -2
- package/dist/plugins/session-workspace-cell.js +2 -2
- package/dist/plugins/shared-memory-store-sql.d.ts +10 -69
- package/dist/plugins/shared-memory-store-sql.js +15 -14
- package/dist/plugins/shell-sentinel-owner-m48.d.ts +20 -0
- package/dist/plugins/shell-sentinel-owner-m48.js +3 -0
- package/dist/plugins/snapshot-bucket-presence.d.ts +2 -1
- package/dist/plugins/snapshot-bucket-presence.js +1 -1
- package/dist/plugins/sql-driver.d.ts +24 -8
- package/dist/plugins/sql-driver.js +43 -9
- package/dist/plugins/sql-errors.d.ts +35 -5
- package/dist/plugins/sql-errors.js +55 -3
- package/dist/plugins/sql-json-column.d.ts +8 -7
- package/dist/plugins/sql-json-column.js +10 -6
- package/dist/plugins/store-backend.d.ts +114 -18
- package/dist/plugins/store-backend.js +340 -87
- package/dist/plugins/store-contracts.d.ts +97 -30
- package/dist/plugins/store-contracts.js +23 -1
- package/dist/plugins/store-fault.d.ts +28 -2
- package/dist/plugins/store-fault.js +20 -2
- package/dist/plugins/task-attachment-store.d.ts +21 -11
- package/dist/plugins/task-attachment-store.js +37 -19
- package/dist/plugins/task-list-store-sql.d.ts +1 -1
- package/dist/plugins/text-column-capacity.d.ts +21 -0
- package/dist/plugins/text-column-capacity.js +5 -0
- package/dist/plugins/tidb-pool.d.ts +3 -2
- package/dist/plugins/tidb-pool.js +42 -39
- package/dist/plugins/user-input-ledger-sql.d.ts +1 -1
- package/dist/plugins/web-search.js +5 -3
- package/dist/plugins/workflow-run-store-sql.d.ts +6 -1
- package/dist/plugins/workflow-run-store-sql.js +11 -5
- package/dist/principal-jwt.d.ts +4 -4
- package/dist/principal-jwt.js +20 -5
- package/dist/principal-shape.d.ts +41 -0
- package/dist/principal-shape.js +19 -0
- package/dist/question.d.ts +13 -23
- package/dist/question.js +21 -39
- package/dist/read-face-posture.d.ts +6 -6
- package/dist/read-face-posture.js +2 -2
- package/dist/request-declaration-refusal.d.ts +35 -12
- package/dist/request-declaration-refusal.js +21 -9
- package/dist/request-form.d.ts +58 -0
- package/dist/request-form.js +72 -0
- package/dist/request-image-urls.d.ts +8 -2
- package/dist/request-image-urls.js +2 -1
- package/dist/request-images.d.ts +20 -0
- package/dist/request-images.js +59 -0
- package/dist/request-key-closure.d.ts +6 -7
- package/dist/request-key-closure.js +15 -2
- package/dist/request-value-closure.d.ts +5 -5
- package/dist/request-value-closure.js +1 -1
- package/dist/resource-suspend.d.ts +7 -16
- package/dist/resource-suspend.js +1 -1
- package/dist/retired-name-host-notice.d.ts +21 -0
- package/dist/retired-name-host-notice.js +12 -0
- package/dist/rule-entry-list.d.ts +2 -2
- package/dist/rule-entry-list.js +3 -4
- package/dist/rule-issue-reading.d.ts +58 -0
- package/dist/rule-issue-reading.js +14 -0
- package/dist/rules-consent.d.ts +46 -16
- package/dist/rules-consent.js +102 -53
- package/dist/run-acceptance.d.ts +3 -1
- package/dist/run-acceptance.js +3 -0
- package/dist/run-local.d.ts +14 -6
- package/dist/run-local.js +109 -93
- package/dist/run-stale-default.d.ts +7 -0
- package/dist/run-stale-default.js +2 -0
- package/dist/runs.d.ts +73 -44
- package/dist/runs.js +65 -43
- package/dist/runtime-caps-resolver.d.ts +36 -14
- package/dist/runtime-caps-resolver.js +31 -14
- package/dist/runtime-governance.d.ts +2 -2
- package/dist/runtime-governance.js +5 -3
- package/dist/sealed-key-layout.d.ts +12 -6
- package/dist/sealed-key-layout.js +5 -1
- package/dist/sealed-key.d.ts +12 -2
- package/dist/sealed-key.js +116 -26
- package/dist/security.d.ts +133 -161
- package/dist/security.js +163 -59
- package/dist/sema-config-dir.d.ts +20 -0
- package/dist/sema-config-dir.js +27 -2
- package/dist/server-secret-env.d.ts +23 -5
- package/dist/server-secret-env.js +14 -4
- package/dist/service-version.d.ts +2 -1
- package/dist/service-version.js +2 -2
- package/dist/session-children-retire.d.ts +7 -5
- package/dist/session-children-retire.js +7 -2
- package/dist/session-deletion.d.ts +88 -0
- package/dist/session-deletion.js +8 -0
- package/dist/session-erase.d.ts +145 -0
- package/dist/session-erase.js +115 -0
- package/dist/session-error-wire.d.ts +6 -6
- package/dist/session-error-wire.js +1 -1
- package/dist/session-incarnation.d.ts +60 -10
- package/dist/session-incarnation.js +19 -2
- package/dist/session-policy-wire.d.ts +6 -3
- package/dist/session-policy-wire.js +11 -1
- package/dist/session-resident-background.d.ts +29 -47
- package/dist/session-resident-background.js +77 -8
- package/dist/session-row.d.ts +3 -2
- package/dist/session-rules-seat.d.ts +12 -0
- package/dist/session-rules-seat.js +19 -0
- package/dist/session-sync-kernel.d.ts +1 -1
- package/dist/session-titler.d.ts +7 -15
- package/dist/session-titler.js +1 -1
- package/dist/session-workspace.d.ts +11 -2
- package/dist/session-workspace.js +5 -0
- package/dist/sighup-idle.d.ts +1 -1
- package/dist/spec-fields.d.ts +57 -3
- package/dist/spec-fields.js +72 -51
- package/dist/store-posture.d.ts +138 -21
- package/dist/store-posture.js +188 -3
- package/dist/stored-request-hooks-m20.d.ts +3 -2
- package/dist/stored-request-hooks-m20.js +21 -16
- package/dist/stores-sql/background-agent-store-sql.d.ts +11 -2
- package/dist/stores-sql/background-agent-store-sql.js +73 -20
- package/dist/stores-sql/blob-index-sql.d.ts +148 -0
- package/dist/stores-sql/blob-index-sql.js +154 -0
- package/dist/stores-sql/checkpoint-store-sql.d.ts +34 -29
- package/dist/stores-sql/checkpoint-store-sql.js +86 -71
- package/dist/{plugins → stores-sql}/file-history-store-sql.d.ts +23 -11
- package/dist/{plugins → stores-sql}/file-history-store-sql.js +23 -18
- package/dist/stores-sql/mailbox-store-sql.d.ts +7 -4
- package/dist/stores-sql/mailbox-store-sql.js +31 -32
- package/dist/{plugins → stores-sql}/pg-session-storage.d.ts +30 -81
- package/dist/{plugins → stores-sql}/pg-session-storage.js +123 -244
- package/dist/{plugins → stores-sql}/retention-store-sql.d.ts +197 -223
- package/dist/{plugins → stores-sql}/retention-store-sql.js +148 -207
- package/dist/{plugins → stores-sql}/session-event-payload.d.ts +1 -1
- package/dist/{plugins → stores-sql}/session-event-payload.js +1 -1
- package/dist/stores-sql/session-policy-store-sql.d.ts +33 -11
- package/dist/stores-sql/session-policy-store-sql.js +44 -36
- package/dist/stores-sql/session-write-hooks.d.ts +65 -0
- package/dist/stores-sql/session-write-hooks.js +2 -0
- package/dist/{plugins → stores-sql}/tidb-session-storage.d.ts +14 -15
- package/dist/{plugins → stores-sql}/tidb-session-storage.js +22 -28
- package/dist/{plugins → stores-sql}/tidb-session-store.d.ts +67 -138
- package/dist/{plugins → stores-sql}/tidb-session-store.js +130 -200
- package/dist/stores-sql/tool-result-store-sql.d.ts +1 -1
- package/dist/stores-sql/tool-result-store-sql.js +1 -1
- package/dist/stores-sql/windowed-session-storage.d.ts +61 -0
- package/dist/stores-sql/windowed-session-storage.js +70 -0
- package/dist/submission-exit.d.ts +50 -0
- package/dist/submission-exit.js +108 -0
- package/dist/task-a2a.d.ts +7 -1
- package/dist/task-a2a.js +18 -17
- package/dist/task-cwd.d.ts +31 -3
- package/dist/task-cwd.js +25 -1
- package/dist/task-mcp.d.ts +11 -3
- package/dist/task-mcp.js +16 -19
- package/dist/task-settings.d.ts +23 -14
- package/dist/task-settings.js +35 -13
- package/dist/terminal.d.ts +25 -43
- package/dist/terminal.js +31 -11
- package/dist/tool-approval.d.ts +152 -137
- package/dist/tool-approval.js +199 -199
- package/dist/trace/core-keyset-guard.d.ts +22 -9
- package/dist/trace/core-vocab-wire.d.ts +95 -0
- package/dist/trace/core-vocab-wire.js +15 -0
- package/dist/trace/engine-notice-wire.d.ts +1 -1
- package/dist/trace/engine-notice-wire.js +2 -0
- package/dist/trace/exit-seat.d.ts +52 -4
- package/dist/trace/exit-seat.js +43 -36
- package/dist/trace/extension-call-face.d.ts +3 -2
- package/dist/trace/extension-call-face.js +3 -1
- package/dist/trace/ledger-events.d.ts +4 -7
- package/dist/trace/ledger-sink.d.ts +1 -30
- package/dist/trace/ledger-sink.js +0 -11
- package/dist/trace/model-segment.d.ts +5 -5
- package/dist/trace/model-segment.js +5 -5
- package/dist/trace/project.d.ts +88 -58
- package/dist/trace/project.js +64 -28
- package/dist/trace/redact.d.ts +124 -28
- package/dist/trace/redact.js +936 -328
- package/dist/trace/self-minted-wire.d.ts +750 -29
- package/dist/trace/self-minted-wire.js +262 -25
- package/dist/trace/sema-provenance.d.ts +45 -41
- package/dist/trace/sema-provenance.js +81 -10
- package/dist/trace/task-notification-facets.d.ts +70 -2
- package/dist/trace/task-notification-facets.js +71 -1
- package/dist/trace/wire-projection-faces.d.ts +43 -8
- package/dist/trace/wire-projection-faces.js +28 -3
- package/dist/unread-request-members.d.ts +66 -0
- package/dist/unread-request-members.js +41 -0
- package/dist/upstream-body.d.ts +23 -0
- package/dist/upstream-body.js +16 -0
- package/dist/url-refusal.d.ts +3 -3
- package/dist/url-refusal.js +11 -4
- package/dist/user-authored-text.d.ts +1 -1
- package/dist/user-input-ledger.d.ts +7 -8
- package/dist/user-input-ledger.js +1 -1
- package/dist/web-admin-client/apply-effective.d.ts +6 -3
- package/dist/web-admin-client/apply-effective.js +33 -40
- package/dist/web-admin-client/apply-ledger.d.ts +16 -7
- package/dist/web-admin-client/apply-ledger.js +5 -2
- package/dist/web-admin-client/candidate-gate.d.ts +35 -3
- package/dist/web-admin-client/candidate-gate.js +53 -5
- package/dist/web-admin-client/center-request.d.ts +6 -3
- package/dist/web-admin-client/center-request.js +17 -16
- package/dist/web-admin-client/effective-keys.d.ts +1 -1
- package/dist/web-admin-client/effective-keys.js +1 -2
- package/dist/web-admin-client/entry-metadata.d.ts +8 -0
- package/dist/web-admin-client/entry-metadata.js +13 -0
- package/dist/web-admin-client/facade.d.ts +1 -1
- package/dist/web-admin-client/http-client.d.ts +2 -1
- package/dist/web-admin-client/http-client.js +40 -13
- package/dist/web-admin-client/mcp-revocation.d.ts +1 -1
- package/dist/web-admin-client/mcp-revocation.js +2 -1
- package/dist/web-admin-client/read-warnings.d.ts +1 -0
- package/dist/web-admin-client/read-warnings.js +1 -0
- package/dist/web-admin-client/restart-signal.js +13 -6
- package/dist/web-admin-client/skills-mcp.d.ts +22 -8
- package/dist/web-admin-client/skills-mcp.js +26 -21
- package/dist/web-admin-client/types.d.ts +35 -51
- package/dist/workspace-space.d.ts +3 -2
- package/docs/DEVICE-EXECUTOR-PROTOCOL.md +4 -4
- package/package.json +16 -12
- package/scripts/drain-check-local.mjs +118 -173
- package/scripts/drain-check.mysql.sql +20 -16
- package/scripts/drain-check.pg.sql +20 -16
- package/wire-changes/server@7.147.0.json +813 -0
- package/wire-changes/server@7.148.0.json +1517 -0
- package/dist/http/memory-control-plane-corrupt-reply.d.ts +0 -25
- package/dist/http/memory-control-plane-corrupt-reply.js +0 -19
- package/dist/http/memory-layer-reply.d.ts +0 -30
- package/dist/http/memory-layer-reply.js +0 -24
- package/dist/lsp/e2b-bridge.d.ts +0 -57
- package/dist/lsp/e2b-bridge.js +0 -139
- package/dist/lsp/e2b-manager.d.ts +0 -93
- package/dist/lsp/e2b-manager.js +0 -178
- package/dist/lsp/lsp-frames.d.ts +0 -14
- package/dist/lsp/lsp-frames.js +0 -25
- package/dist/lsp/manager.d.ts +0 -129
- package/dist/lsp/manager.js +0 -127
- package/dist/lsp/types.d.ts +0 -12
- package/dist/lsp/types.js +0 -2
- package/dist/lsp/ws-transport.d.ts +0 -40
- package/dist/lsp/ws-transport.js +0 -210
package/dist/boot/stores.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { sessionBoxMountVerdict } from "@sema-agent/core";
|
|
1
2
|
import type { ServiceConfig } from "../config.js";
|
|
2
3
|
import { type MemorySyncRunner } from "../memory-sync-client.js";
|
|
3
4
|
import type { Logger } from "../observability/logger.js";
|
|
@@ -6,11 +7,14 @@ import { type MemorySyncStore } from "../plugins/memory-sync-store-pg.js";
|
|
|
6
7
|
import { type TaskAttachmentStore } from "../plugins/task-attachment-store.js";
|
|
7
8
|
import { type StoreBackend } from "../plugins/store-backend.js";
|
|
8
9
|
import { type MemoryScopeStores } from "../memory-scope-stores.js";
|
|
10
|
+
import { type StoreEvidence } from "../store-posture.js";
|
|
9
11
|
export interface OpenStoresCtx {
|
|
10
12
|
config: ServiceConfig;
|
|
11
13
|
logger: Logger;
|
|
12
14
|
metrics: Metrics;
|
|
13
15
|
localRoot: string;
|
|
16
|
+
/** 店的持久性起服证据(起服第 2 段段首 `captureBootStoreEvidence` 取的那一份;直接调本函数的测试同一只取证)。 */
|
|
17
|
+
storeEvidence: StoreEvidence;
|
|
14
18
|
}
|
|
15
19
|
/**
|
|
16
20
|
* durable 回决腿的规则位给 `approval_ask` 加了 `rule_command`/`rule_scope_root` 两列,而 `ensureAsk` 的 INSERT 与每一条读**无条件**引用它们 ⇒ 存量表上整条流内审批协议
|
|
@@ -20,6 +24,14 @@ export interface OpenStoresCtx {
|
|
|
20
24
|
* 不在这里手抄一份,也不在别处再求一遍(手抄的判据会漂,漂的方向要么是拒启误伤、要么是该拒不拒;再求一遍的 park 设施位手上没有那只店)。本函数只做探:有 SQL 池就探,local 后端无池则无事。
|
|
21
25
|
*/
|
|
22
26
|
export declare function assertApprovalAskRuleMaterialOnBackend(backend: StoreBackend | undefined): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* 起服报告 `session_box_mount` 那一行(纯数据):引擎会话盒挂载判官的判决 → 级别与键集,唯一一处。挂得上 ⇒ info `{ peerLaneMountable: true }`;
|
|
29
|
+
* 挂不上 ⇒ warn `{ peerLaneMountable: false, peerLaneRefusal: <引擎的码>, reason: <引擎的句> }`。{@link openStores} 对本部署装的那一对店问一次、按它落行。
|
|
30
|
+
*/
|
|
31
|
+
export declare function buildSessionBoxMountLine(verdict: ReturnType<typeof sessionBoxMountVerdict>): {
|
|
32
|
+
readonly level: "info" | "warn";
|
|
33
|
+
readonly fields: Readonly<Record<string, unknown>>;
|
|
34
|
+
};
|
|
23
35
|
export declare function openStores(ctx: OpenStoresCtx): Promise<{
|
|
24
36
|
backend: StoreBackend | undefined;
|
|
25
37
|
storePosture: import("../store-posture.js").StorePosture;
|
package/dist/boot/stores.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
|
-
import { FileBackgroundAgentStore, FileMailboxStore, FileRosterStore, InMemoryUsageWindowStore,
|
|
2
|
+
import { FileBackgroundAgentStore, FileMailboxStore, FileRosterStore, InMemoryUsageWindowStore, sessionBoxMountVerdict } from "@sema-agent/core";
|
|
3
3
|
import { createCorruptReadFailOpenSeat } from "../observability/corrupt-read-seat.js";
|
|
4
4
|
import { startMemorySyncRunner } from "../memory-sync-client.js";
|
|
5
5
|
import { errorCodeOf, errorKindOf } from "../observability/err-text.js";
|
|
@@ -12,6 +12,7 @@ import { TiDBMemoryHistoryStore, TiDBMemorySyncStore, ensureTiDBMemoryHistorySch
|
|
|
12
12
|
import { MinioBlobBackend } from "../plugins/blob-backend.js";
|
|
13
13
|
import { ensureSnapshotBuckets } from "../plugins/snapshot-bucket-presence.js";
|
|
14
14
|
import { PgBackgroundAgentStore, TiDBBackgroundAgentStore, ensurePgBackgroundAgentSchema, ensureTiDBBackgroundAgentSchema } from "../stores-sql/background-agent-store-sql.js";
|
|
15
|
+
import { recordFailOpen } from "../observability/fail-open.js";
|
|
15
16
|
import { PgMailboxStore, TiDBMailboxStore, ensurePgMailboxSchema, ensureTiDBMailboxSchema } from "../stores-sql/mailbox-store-sql.js";
|
|
16
17
|
import { recipientLifecycleOf } from "../plugins/mailbox-recipient-lifecycle.js";
|
|
17
18
|
import { PgUsageWindowStore, TiDBUsageWindowStore, ensurePgUsageWindowSchema, ensureTiDBUsageWindowSchema } from "../stores-sql/usage-window-store-sql.js";
|
|
@@ -25,23 +26,24 @@ import { createTaskListLane } from "./task-list-lane.js";
|
|
|
25
26
|
import { ensurePgTaskListSchema, ensureTiDBTaskListSchema } from "../plugins/task-list-store-sql.js";
|
|
26
27
|
import { assertDeviceAuditRebindEventSchema, ensurePgDeviceSchema, ensureTiDBDeviceSchema } from "../plugins/device-store-sql.js";
|
|
27
28
|
import { mysqlDriver, pgDriver } from "../plugins/sql-driver.js";
|
|
28
|
-
import { assertCloudSnapshotBlobPosture, openStoreBackendWithFallback, workflowJournalOf } from "../plugins/store-backend.js";
|
|
29
|
+
import { assertCloudSnapshotBlobPosture, localClientWritesOf, openStoreBackendWithFallback, workflowJournalOf } from "../plugins/store-backend.js";
|
|
29
30
|
import { createMemoryEngineIncidentSink } from "../memory-incident-sink.js";
|
|
30
31
|
import { announceLockedLegacyMemoryLayers } from "../memory-layer-legacy-lock.js";
|
|
31
32
|
import { createEngineNoticeForwarder } from "./runner-deps.js";
|
|
32
|
-
import { buildMemoryRemoteLaneWarn, canonicalPathOf, judgeMemoryRootOutsideDataRoot, memoryEngineBackendFor, memoryEngineRemoteLanePosture, memoryEngineRootFor, memoryMountRootOf } from "../memory-scope.js";
|
|
33
|
+
import { announceMemoryLedgerForm, buildMemoryRemoteLaneWarn, canonicalPathOf, judgeMemoryRootOutsideDataRoot, memoryEngineBackendFor, memoryEngineRemoteLanePosture, memoryEngineRootFor, memoryMountRootOf } from "../memory-scope.js";
|
|
33
34
|
import { createMemoryScopeStores } from "../memory-scope-stores.js";
|
|
34
35
|
import { assertToolResultProvenanceSchema } from "../stores-sql/tool-result-store-sql.js";
|
|
35
36
|
import { assertPermissionRuleApprovalSchema, assertPermissionRuleTicketSchema } from "../plugins/permission-rule-store-sql.js";
|
|
36
37
|
import { assertApprovalAskRuleMaterialSchema } from "../plugins/approval-ask-store-sql.js";
|
|
37
38
|
import { assertSchemaMatchesCode } from "../plugins/schema-consistency.js";
|
|
39
|
+
import { assertSessionExtCascadeOn } from "../plugins/session-ext-table.js";
|
|
38
40
|
import { SqlCheckpointStore, assertCheckpointColumnSchema } from "../stores-sql/checkpoint-store-sql.js";
|
|
39
|
-
import { assertFileHistorySchema } from "../
|
|
41
|
+
import { assertFileHistorySchema } from "../stores-sql/file-history-store-sql.js";
|
|
40
42
|
import { buildMemoryBoundaryLaneFacts, buildMemoryWriteBoundaryAudit } from "./memory-boundary.js";
|
|
41
43
|
import { buildMemoryPosture } from "../memory-posture.js";
|
|
42
44
|
import { headReadOf } from "../session-incarnation.js";
|
|
43
45
|
import { establishSqlEnginePosture, sqlPoolsOf } from "../sql-engine-posture.js";
|
|
44
|
-
import { buildStorePosture } from "../store-posture.js";
|
|
46
|
+
import { buildStoreFreshStartLine, buildStorePosture } from "../store-posture.js";
|
|
45
47
|
import { seatText } from "../trace/exit-seat.js";
|
|
46
48
|
import { buildStoreSweepBounds, createJournalSweepLeg, createStoreSweep } from "../plugins/store-sweep.js";
|
|
47
49
|
const DARK_REASON_PROSE = {
|
|
@@ -57,8 +59,13 @@ export async function assertApprovalAskRuleMaterialOnBackend(backend) {
|
|
|
57
59
|
else if (mysqlPool)
|
|
58
60
|
await assertApprovalAskRuleMaterialSchema(async (sql) => ({ rows: (await mysqlPool.query(sql))[0] }), "mysql");
|
|
59
61
|
}
|
|
62
|
+
export function buildSessionBoxMountLine(verdict) {
|
|
63
|
+
return verdict.ok
|
|
64
|
+
? { level: "info", fields: { peerLaneMountable: true } }
|
|
65
|
+
: { level: "warn", fields: { peerLaneMountable: false, peerLaneRefusal: verdict.code, reason: verdict.reason } };
|
|
66
|
+
}
|
|
60
67
|
export async function openStores(ctx) {
|
|
61
|
-
const { config, logger, metrics, localRoot } = ctx;
|
|
68
|
+
const { config, logger, metrics, localRoot, storeEvidence } = ctx;
|
|
62
69
|
let backend;
|
|
63
70
|
let storeDegradedReason;
|
|
64
71
|
const dsnConfigured = !!(config.tidb || config.pg);
|
|
@@ -67,12 +74,10 @@ export async function openStores(ctx) {
|
|
|
67
74
|
config.dbBackend === "local" ||
|
|
68
75
|
(config.sessionBackend === "auto" && dsnConfigured);
|
|
69
76
|
if (wantDb) {
|
|
70
|
-
const opened = await openStoreBackendWithFallback(config, logger);
|
|
77
|
+
const opened = await openStoreBackendWithFallback(config, logger, { runStallVerdicts: (landed) => metrics.inc("runs_reaped_total", { kind: "stale" }, landed) });
|
|
71
78
|
backend = opened.backend;
|
|
72
79
|
storeDegradedReason = opened.degradedReason;
|
|
73
80
|
}
|
|
74
|
-
const storePosture = buildStorePosture({ declared: config.dbBackend, assembled: backend?.kind, degradedReason: storeDegradedReason });
|
|
75
|
-
metrics.setGauge("store_backend_degraded", storePosture.degradedReason !== undefined ? 1 : 0);
|
|
76
81
|
{
|
|
77
82
|
const mysqlPool = backend?.mysqlPool?.();
|
|
78
83
|
const pgPool = backend?.pgPool?.();
|
|
@@ -98,6 +103,10 @@ export async function openStores(ctx) {
|
|
|
98
103
|
await assertFileHistorySchema(async (sql) => ({ rows: (await pgPool.query(sql)).rows }), "pg");
|
|
99
104
|
else if (mysqlPool)
|
|
100
105
|
await assertFileHistorySchema(async (sql) => ({ rows: (await mysqlPool.query(sql))[0] }), "mysql");
|
|
106
|
+
if (pgPool)
|
|
107
|
+
await assertSessionExtCascadeOn(pgDriver(pgPool));
|
|
108
|
+
else if (mysqlPool)
|
|
109
|
+
await assertSessionExtCascadeOn(mysqlDriver(mysqlPool));
|
|
101
110
|
}
|
|
102
111
|
if (backend)
|
|
103
112
|
await runAndLogOneTimeMigrations(logger, backend);
|
|
@@ -159,7 +168,7 @@ export async function openStores(ctx) {
|
|
|
159
168
|
});
|
|
160
169
|
if (embedder !== undefined && config.memoryEmbedder !== undefined) {
|
|
161
170
|
await ensurePgMemoryEmbedderMetaSchema(q);
|
|
162
|
-
await reconcileEmbedderFingerprint(q, { model: config.memoryEmbedder.model, dimensions: config.memoryEmbedder.dimensions }, { log: logger });
|
|
171
|
+
await reconcileEmbedderFingerprint(q, { model: config.memoryEmbedder.model, dimensions: config.memoryEmbedder.dimensions }, { log: logger, reembedConfirmed: config.memoryEmbedder.reembedConfirmed === true });
|
|
163
172
|
}
|
|
164
173
|
else {
|
|
165
174
|
logger.info("memory_embedder_identity_absent", {
|
|
@@ -197,6 +206,7 @@ export async function openStores(ctx) {
|
|
|
197
206
|
});
|
|
198
207
|
}
|
|
199
208
|
else {
|
|
209
|
+
await announceMemoryLedgerForm(config, undefined, logger);
|
|
200
210
|
const fileEngine = memoryEngineBackendFor(config, undefined, memoryEngineIncident);
|
|
201
211
|
memoryEngine = fileEngine !== undefined ? scopeStoresOver(fileEngine.backend) : undefined;
|
|
202
212
|
if (memoryEngine)
|
|
@@ -212,6 +222,17 @@ export async function openStores(ctx) {
|
|
|
212
222
|
}
|
|
213
223
|
}
|
|
214
224
|
}
|
|
225
|
+
const storePosture = buildStorePosture({
|
|
226
|
+
declared: config.dbBackend,
|
|
227
|
+
assembled: backend?.kind,
|
|
228
|
+
degradedReason: storeDegradedReason,
|
|
229
|
+
evidence: storeEvidence,
|
|
230
|
+
memoryRootWired: config.memoryEngineBackend === "file" && memoryEngine !== undefined,
|
|
231
|
+
});
|
|
232
|
+
metrics.setGauge("store_backend_degraded", storePosture.degradedReason !== undefined ? 1 : 0);
|
|
233
|
+
const freshStart = buildStoreFreshStartLine(storePosture, storeEvidence);
|
|
234
|
+
if (freshStart !== undefined)
|
|
235
|
+
logger.info("store_fresh_start", freshStart);
|
|
215
236
|
{
|
|
216
237
|
const laneFacts = buildMemoryBoundaryLaneFacts(config, process.cwd());
|
|
217
238
|
const memoryMountRoot = memoryEngine ? memoryMountRootOf(memoryEngine.backend, memoryEngine.root) : undefined;
|
|
@@ -257,11 +278,11 @@ export async function openStores(ctx) {
|
|
|
257
278
|
if (pgPool) {
|
|
258
279
|
const q = async (text, params) => { const r = await pgPool.query(text, params); return { rows: r.rows }; };
|
|
259
280
|
await ensurePgBackgroundAgentSchema(q);
|
|
260
|
-
backgroundAgentStore = new PgBackgroundAgentStore(q);
|
|
281
|
+
backgroundAgentStore = new PgBackgroundAgentStore(q, recordFailOpen);
|
|
261
282
|
}
|
|
262
283
|
else if (mysqlPool) {
|
|
263
284
|
await ensureTiDBBackgroundAgentSchema(mysqlPool);
|
|
264
|
-
backgroundAgentStore = new TiDBBackgroundAgentStore(mysqlPool);
|
|
285
|
+
backgroundAgentStore = new TiDBBackgroundAgentStore(mysqlPool, recordFailOpen);
|
|
265
286
|
}
|
|
266
287
|
else if (backend?.kind === "local") {
|
|
267
288
|
backgroundAgentStore = new FileBackgroundAgentStore(config.localDataRoot ?? localRoot);
|
|
@@ -294,7 +315,7 @@ export async function openStores(ctx) {
|
|
|
294
315
|
}
|
|
295
316
|
}
|
|
296
317
|
else if (backend?.kind === "local") {
|
|
297
|
-
taskAttachmentStore = new LocalTaskAttachmentStore(config.localDataRoot ?? localRoot);
|
|
318
|
+
taskAttachmentStore = new LocalTaskAttachmentStore(config.localDataRoot ?? localRoot, { clientWrites: localClientWritesOf(backend) });
|
|
298
319
|
}
|
|
299
320
|
if (taskAttachmentStore)
|
|
300
321
|
logger.info("task_attachment_store_enabled", { backend: pgPool ? "pg+minio" : mysqlPool ? "mysql+minio" : "file", maxBytes: config.attachmentMaxBytes });
|
|
@@ -322,13 +343,10 @@ export async function openStores(ctx) {
|
|
|
322
343
|
if (mailboxStore)
|
|
323
344
|
mailboxRecipientLifecycle = recipientLifecycleOf(mailboxStore);
|
|
324
345
|
if (mailboxStore) {
|
|
325
|
-
const laneVerdict = mailboxCrossProcessMountVerdict(mailboxStore);
|
|
326
346
|
logger.info("mailbox_store_enabled", {
|
|
327
347
|
backend: pgPool ? "pg" : mysqlPool ? "mysql" : "file",
|
|
328
348
|
crossProcessSafe: mailboxStore.crossProcessSafe,
|
|
329
349
|
recipientTombstones: pgPool !== undefined || mysqlPool !== undefined,
|
|
330
|
-
peerLaneMountable: laneVerdict.ok,
|
|
331
|
-
...(laneVerdict.ok ? {} : { peerLaneRefusal: laneVerdict.code }),
|
|
332
350
|
});
|
|
333
351
|
}
|
|
334
352
|
}
|
|
@@ -397,7 +415,7 @@ export async function openStores(ctx) {
|
|
|
397
415
|
await ensurePgDeviceSchema(async (text, params) => pgPool.query(text, params));
|
|
398
416
|
if (mysqlPool)
|
|
399
417
|
await ensureTiDBDeviceSchema(mysqlPool);
|
|
400
|
-
if (config.remoteExec
|
|
418
|
+
if (config.remoteExec.provider === "device") {
|
|
401
419
|
if (pgPool)
|
|
402
420
|
await assertDeviceAuditRebindEventSchema(pgDriver(pgPool));
|
|
403
421
|
else if (mysqlPool)
|
|
@@ -429,6 +447,10 @@ export async function openStores(ctx) {
|
|
|
429
447
|
});
|
|
430
448
|
}
|
|
431
449
|
metrics.dynamicGauge("sessions_warm", "Sessions held in the warm cache", () => sessionStore.size);
|
|
450
|
+
if (mailboxStore !== undefined) {
|
|
451
|
+
const line = buildSessionBoxMountLine(sessionBoxMountVerdict(mailboxStore, sessionStore));
|
|
452
|
+
logger[line.level]("session_box_mount", line.fields);
|
|
453
|
+
}
|
|
432
454
|
const breakerState = backend?.breaker && config.resilience.circuitBreaker
|
|
433
455
|
? backend
|
|
434
456
|
.breaker((streak) => {
|
|
@@ -55,14 +55,14 @@ export interface TaskListLane {
|
|
|
55
55
|
* 所有权,故按 sessionId 单键删。
|
|
56
56
|
*
|
|
57
57
|
* 幂等(没写过任何任务的会话删 0 行);错误如实上抛 —— E21 的次序契约要求子腿失败就中止,让
|
|
58
|
-
* session_meta 留着、幂等重试收敛(session-
|
|
58
|
+
* session_meta 留着、幂等重试收敛(删净执行体 `session-erase.ts` 头注:行最后删)。
|
|
59
59
|
*
|
|
60
60
|
* 📌 **残余,如实登记**(codex R2-[high] 判真、**射程外**):删除进行中若有一次并发 `storeFor`,
|
|
61
61
|
* 它会拿到一只新铸的可写店,写入可能落在 purge 事务提交**之后** ⇒ 行被重建、留给下一个化身。
|
|
62
62
|
* 这不是本腿独有的窗口,而是**整条 E21 级联共有的**残余(anchors / exemption / policy / attachment /
|
|
63
|
-
* snapshot / task_list 全是按 session_id
|
|
64
|
-
*
|
|
65
|
-
*
|
|
63
|
+
* snapshot / task_list 全是按 session_id 单键删)。删净执行体(`session-erase.ts`)让 SQL 上的整条级联落进一个事务、
|
|
64
|
+
* local 上落进会话店的一节写锁,但并发 `storeFor` 铸的可写店不读那只锁 / 不看那一事务 —— 写仍可能落在删净之后。真正消灭它
|
|
65
|
+
* 要么让每次写在会话行锁下校验住客,要么引入**跨副本 durable 的会话化身号**并让每次写校验它 ——
|
|
66
66
|
* 两者都是设计级改动(属主裁决 + 三问),给 task-list 单独发明一套围栏只会在同一语义面上多一个
|
|
67
67
|
* 写者。⇒ 归入既有的那条后续件,不在本批自作主张。
|
|
68
68
|
*/
|
package/dist/boot/web-admin.d.ts
CHANGED
|
@@ -89,8 +89,10 @@ export interface WebAdminRuntime {
|
|
|
89
89
|
degradeRoute: DegradeRouteWatch;
|
|
90
90
|
checkpointStorePresent: boolean;
|
|
91
91
|
}): void;
|
|
92
|
-
/** [ref]-2:停刷新环(hardShutdown 收尾链;幂等,未起环时 no-op)。[ref]:中心凭证续签器的定时器同停(同一条收尾链)。
|
|
93
|
-
|
|
92
|
+
/** [ref]-2:停刷新环(hardShutdown 收尾链;幂等,未起环时 no-op)。[ref]:中心凭证续签器的定时器同停(同一条收尾链)。
|
|
93
|
+
* 返回的 promise = 续签器 `stop()` 的那一只:已经发出的那一次续签落定(新信封落盘或按失败落定)之后 settle,从不 reject —— 进程出口
|
|
94
|
+
* (停机的退出链、起服前探针)等它再退,中心已答应的轮换不被进程退出腰斩。 */
|
|
95
|
+
stopRefreshLoop(): Promise<void>;
|
|
94
96
|
/** [ref]:`/health.centerCredential` 的取值口 —— 凭证来源的健康态 + 续签器状态;都健康 / 没有中心 ⇒ `undefined`(键缺席)。 */
|
|
95
97
|
centerCredentialState(): CenterCredentialHealthView | undefined;
|
|
96
98
|
/** [ref]:`/health.centerIdentityNotice` 的取值口 —— 中心凭证换人后的**最近一条**通告(`center_identity_demoted` 已降到无中心配置档 / `center_identity_landed`
|
package/dist/boot/web-admin.js
CHANGED
|
@@ -7,12 +7,12 @@ import { stableStringify } from "@sema-agent/settings-schema/hash";
|
|
|
7
7
|
import { buildModelRefusalsSignal } from "../model-entry-refusal.js";
|
|
8
8
|
import { CenterPromptSource, FilePromptArtifactStore, FilePromptSourceStateStore, MemoryPromptArtifactStore, MemoryPromptSourceStateStore, } from "@sema-agent/core";
|
|
9
9
|
import { buildPricing } from "../budget.js";
|
|
10
|
-
import { applyCenterPlugins } from "../capabilities/center-plugins.js";
|
|
10
|
+
import { applyCenterPlugins, pluginCacheRootFor } from "../capabilities/center-plugins.js";
|
|
11
11
|
import { applyCenterArtifact, centerSourceOnError, withPromptArtifactBackfill } from "../capabilities/center-prompts.js";
|
|
12
12
|
import { centerScenarios, centerScenarioDetails } from "../capabilities/scenarios.js";
|
|
13
13
|
import { isRosterGateArmed } from "../config.js";
|
|
14
14
|
import { DEPLOYMENT_SHAPE_PREDICATES } from "../deployment-shape.js";
|
|
15
|
-
import { defaultLkgPath, defaultSkillCacheDir, saveLkg, loadLkg } from "../config-lkg.js";
|
|
15
|
+
import { defaultLkgPath, defaultSkillCacheDir, saveLkg, loadLkg, preIdentityLkgLeftover, PRE_IDENTITY_LKG_REASON } from "../config-lkg.js";
|
|
16
16
|
import { answerStillCurrent, centerStateBin, credentialIdentityNow, judgeCenterCredentialAtBoot } from "../center-credential.js";
|
|
17
17
|
import { createCenterConfigTier } from "../center-config-tier.js";
|
|
18
18
|
import { buildCenterCredentialHealthView, createCenterCredentialRenewer } from "../center-credential-renewer.js";
|
|
@@ -20,8 +20,10 @@ import { centerManagedConfigKeys } from "../web-admin-client/apply-effective.js"
|
|
|
20
20
|
import { configSourceKind, createConfigProvider, raceBootFetch, BOOT_FETCH_DEFERRED } from "../config-provider.js";
|
|
21
21
|
import { REMOTE_CATALOG_SOURCE } from "../env-model-table-gate.js";
|
|
22
22
|
import { ConfigDirUntrustedError } from "../config-dir-trust.js";
|
|
23
|
+
import { ConfigPullError, ConfigPullSupersededError, asConfigPullError, configPullFailureNote } from "../config-pull-failure.js";
|
|
23
24
|
import { createKeyResolver } from "../key-resolver.js";
|
|
24
25
|
import { buildSealedKeyPublicFace, ensureCheckpointCtxSealing, ensureSealedKeyStore, reportExecutionPublicKey } from "../sealed-key.js";
|
|
26
|
+
import { sealedKeyDirOf } from "../sealed-key-layout.js";
|
|
25
27
|
import { anthropicLaneCredentialOf } from "../model-route-gap.js";
|
|
26
28
|
import { applyEffective, applyCenterReadFace, buildReadFaceBaseline, buildReadFaceSwapCandidate, restoreReadFaceBaseline, mutateInPlace, logEffectiveDiff, applySkillsManifest, skillManifestEntriesNotInstalled, resolveMcpServers, resolveA2aPeers, restartReasons, modelPlaneChanged, withModelPlaneOf, fullyLandedForLkg, NO_CENTER_EFFECTIVE, isNoCenterEffective, fetchPromptArtifact } from "../web-admin-client/facade.js";
|
|
27
29
|
import { buildConfigHandoff, buildRestartSignal, configHandoffMissing } from "../fleet/engine-signal.js";
|
|
@@ -29,7 +31,7 @@ import { createMcpRevocationLedger, enabledMcpEntries } from "../web-admin-clien
|
|
|
29
31
|
import { buildUnreadConfigFileFields, buildUnreadConfigKeyFields } from "../web-admin-client/read-warnings.js";
|
|
30
32
|
import { CONFIG_DOMAIN_INVALID_NOTE, buildCandidateRejectedFields, candidateRejectionOf, judgeConfigCandidate } from "../web-admin-client/candidate-gate.js";
|
|
31
33
|
import { SHA256_HEX_RE } from "../digest-form.js";
|
|
32
|
-
import { BOOT_REJUDGE_OF_REFUSED_GROUP, createConfigApplyLedger,
|
|
34
|
+
import { BOOT_REJUDGE_OF_REFUSED_GROUP, createConfigApplyLedger, modelPlaneOutcome, refusedGroups } from "../web-admin-client/apply-ledger.js";
|
|
33
35
|
import { announceReadDenyRows, buildDeploymentPostureSeats } from "./runner-deps.js";
|
|
34
36
|
import { seatText } from "../trace/exit-seat.js";
|
|
35
37
|
const MODELS_REJECTION_PHRASE = {
|
|
@@ -133,6 +135,15 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
133
135
|
validatorIdentity.delete(oldest.value);
|
|
134
136
|
};
|
|
135
137
|
const pullEffective = async (provider, etag) => {
|
|
138
|
+
try {
|
|
139
|
+
return await pullEffectiveOnce(provider, etag);
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
throw asConfigPullError(err);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
const refreshFailureCause = (err) => (err instanceof ConfigPullError ? err.pullCause : "apply_refused");
|
|
146
|
+
const pullEffectiveOnce = async (provider, etag) => {
|
|
136
147
|
if (provider.kind === "local")
|
|
137
148
|
return provider.fetchEffective(etag);
|
|
138
149
|
const before = currentIdentity();
|
|
@@ -140,7 +151,7 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
140
151
|
const r = await provider.fetchEffective(conditional);
|
|
141
152
|
const used = r === null ? before : r.credentialIdentity;
|
|
142
153
|
if (cc === undefined || !answerStillCurrent(cc.credential, used)) {
|
|
143
|
-
throw new
|
|
154
|
+
throw new ConfigPullSupersededError("center credential identity changed while the effective pull was in flight — response discarded; the next pull runs under the current credential");
|
|
144
155
|
}
|
|
145
156
|
if (r !== null) {
|
|
146
157
|
candidateIdentity.set(r.effective, used);
|
|
@@ -148,7 +159,7 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
148
159
|
}
|
|
149
160
|
return r;
|
|
150
161
|
};
|
|
151
|
-
const sealedKeyDir =
|
|
162
|
+
const sealedKeyDir = sealedKeyDirOf(config, localRoot);
|
|
152
163
|
let sealedKeys;
|
|
153
164
|
try {
|
|
154
165
|
sealedKeys = await ensureSealedKeyStore(sealedKeyDir, logger);
|
|
@@ -213,7 +224,7 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
213
224
|
const domains = verdict.domains.join(",");
|
|
214
225
|
if (candidateRejection?.version === r.effective.version && candidateRejection.domains.join(",") === domains)
|
|
215
226
|
return;
|
|
216
|
-
admitArrival(ordinal, candidateRejectionOf(r, verdict, candidateSource().kind, Date.now()));
|
|
227
|
+
admitArrival(ordinal, candidateRejectionOf(r, verdict, candidateSource().kind, Date.now(), localDirField.dir));
|
|
217
228
|
logger.warn("config_candidate_rejected", buildCandidateRejectedFields(r, verdict, leg, { lkgVersion: latestEffective?.version ?? "(env)", ...localDirField }));
|
|
218
229
|
};
|
|
219
230
|
const noteSourceAtApplied = () => {
|
|
@@ -422,8 +433,7 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
422
433
|
handoff = { ...(applied !== undefined ? { applied } : {}), ...(durable !== undefined ? { durable } : {}) };
|
|
423
434
|
latchHandoff();
|
|
424
435
|
};
|
|
425
|
-
const markApplied = (
|
|
426
|
-
applyLedger.applied(gen, eff.version);
|
|
436
|
+
const markApplied = (eff) => {
|
|
427
437
|
if (isNoCenterEffective(eff))
|
|
428
438
|
noteHandoff({ noneApplied: true });
|
|
429
439
|
else
|
|
@@ -432,6 +442,7 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
432
442
|
if (landed !== undefined)
|
|
433
443
|
announceTier(landed);
|
|
434
444
|
};
|
|
445
|
+
const closeApplied = (gen, eff) => applyLedger.applied(gen, eff.version);
|
|
435
446
|
let lkgBooted = false;
|
|
436
447
|
let bootLkgCandidate;
|
|
437
448
|
let lastPrewarmBodiesVerified = false;
|
|
@@ -495,10 +506,13 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
495
506
|
return null;
|
|
496
507
|
}
|
|
497
508
|
const lkgPath = lkgPathFor(identity);
|
|
498
|
-
const read = await loadLkg(lkgPath, cc?.worker, identity);
|
|
509
|
+
const read = await loadLkg(lkgPath, cc?.worker, identity, { declaredOwnerUid: config.configLocalOwnerUid });
|
|
499
510
|
if (!read.lkg) {
|
|
500
511
|
if (read.reason !== "absent")
|
|
501
512
|
logger.warn("config_lkg_unusable", { path: lkgPath, reason: read.reason, note: "ignoring the on-disk LKG — env fallback serves; the cache rewrites on the next clean candidate" });
|
|
513
|
+
const leftover = read.reason === "absent" && config.configLkgPath === undefined ? preIdentityLkgLeftover(config, cc?.worker, lkgPath) : undefined;
|
|
514
|
+
if (leftover !== undefined)
|
|
515
|
+
logger.warn("config_lkg_unusable", { path: leftover, reason: PRE_IDENTITY_LKG_REASON, note: "a last-known-good written by 7.98.0 or earlier sits at the pre-identity default name and is never read — delete this file (a cache, not data); env fallback serves, and the next clean candidate writes this credential identity's own LKG" });
|
|
502
516
|
return null;
|
|
503
517
|
}
|
|
504
518
|
if (currentIdentity() !== identity) {
|
|
@@ -544,9 +558,10 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
544
558
|
const lkgIdentity = candidateIdentityOf(lkgR.effective);
|
|
545
559
|
if (lkgSurvivesRestart && lkgIdentity !== undefined)
|
|
546
560
|
noteHandoff({ durable: { version: lkgR.effective.version, identity: lkgIdentity } });
|
|
547
|
-
markApplied(
|
|
561
|
+
markApplied(lkgR.effective);
|
|
562
|
+
closeApplied(lkgGen, lkgR.effective);
|
|
548
563
|
await adoptCenterPrompts(lkgR.effective, lkgR.prompts, "boot-lkg");
|
|
549
|
-
const lkgPlane =
|
|
564
|
+
const lkgPlane = modelPlaneOutcome(lkgReport) === "landed";
|
|
550
565
|
if (lkgPlane)
|
|
551
566
|
markRosterLanded(lkgR.effective);
|
|
552
567
|
effective = lkgR.effective;
|
|
@@ -592,7 +607,6 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
592
607
|
: "config.d/models.json 空或 CONFIG_LOCAL_DIR 指错目录(选目录旋钮是 CONFIG_LOCAL_DIR,不是 LOCAL_DATA_ROOT)— 模型继续走 env 兜底",
|
|
593
608
|
});
|
|
594
609
|
};
|
|
595
|
-
let bootApplyPhase = false;
|
|
596
610
|
try {
|
|
597
611
|
const bootFetch = pullEffective(configProvider, undefined);
|
|
598
612
|
const raced = await raceBootFetch(bootFetch, config.configBootFetchBudgetMs);
|
|
@@ -611,7 +625,6 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
611
625
|
}
|
|
612
626
|
const r = raced === BOOT_FETCH_DEFERRED ? null : raced;
|
|
613
627
|
if (r) {
|
|
614
|
-
bootApplyPhase = true;
|
|
615
628
|
for (const de of r.domainErrors ?? [])
|
|
616
629
|
logger.warn("config_domain_invalid", { domain: de.domain, error: de.error, note: CONFIG_DOMAIN_INVALID_NOTE });
|
|
617
630
|
if (dryRun) {
|
|
@@ -651,18 +664,20 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
651
664
|
recordApply(rep, bootArrival);
|
|
652
665
|
},
|
|
653
666
|
});
|
|
654
|
-
markApplied(
|
|
667
|
+
markApplied(r.effective);
|
|
668
|
+
closeApplied(bootGen, r.effective);
|
|
655
669
|
const bootClean = fullyLandedForLkg(r, bootReport);
|
|
656
670
|
if (bootClean)
|
|
657
671
|
ccEtag = r.etag;
|
|
658
672
|
await adoptCenterPrompts(r.effective, bootVerdict.prompts, "boot");
|
|
659
|
-
|
|
660
|
-
|
|
673
|
+
const bootOutcome = modelPlaneOutcome(bootReport);
|
|
674
|
+
let bootPlaneEff = bootOutcome === "landed" ? r.effective : undefined;
|
|
675
|
+
if (bootOutcome === "refused" || bootOutcome === undefined) {
|
|
661
676
|
const lkgPlane = await bootFromLkg("boot candidate's model plane was refused", "model-plane");
|
|
662
677
|
if (lkgPlane) {
|
|
663
678
|
let planeReport;
|
|
664
679
|
applyEffective(config, withModelPlaneOf(r.effective, lkgPlane.effective), logger, { leg: "boot", catalogSource: lkgPlane.catalogSource, sealedKeys, generation: bootGen, report: (rep) => (planeReport = rep) });
|
|
665
|
-
if (
|
|
680
|
+
if (modelPlaneOutcome(planeReport) === "landed") {
|
|
666
681
|
bootPlaneEff = lkgPlane.effective;
|
|
667
682
|
logger.warn("config_model_plane_from_lkg", { version: r.effective.version, lkgVersion: lkgPlane.effective.version, note: "the live candidate's model plane was refused at boot — serving the LKG's model plane (the catalog and what rides with it) with the live candidate's other groups; the refresh cadence re-judges the candidate" });
|
|
668
683
|
}
|
|
@@ -690,11 +705,11 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
690
705
|
catch (err) {
|
|
691
706
|
if (err instanceof ConfigDirUntrustedError)
|
|
692
707
|
throw err;
|
|
693
|
-
if (
|
|
694
|
-
logger.warn("
|
|
708
|
+
if (err instanceof ConfigPullError)
|
|
709
|
+
logger.warn("config_source_unreachable_using_env", { source: configProvider.kind, cause: err.pullCause, err: seatText("operator-log-text", String(err)), note: configPullFailureNote(err.pullCause) });
|
|
695
710
|
else
|
|
696
|
-
logger.warn("
|
|
697
|
-
await bootFallBackWhole(`${
|
|
711
|
+
logger.warn("config_apply_refused", { source: configProvider.kind, err: seatText("operator-log-text", String(err)), note: "the pulled candidate failed to apply at boot — falling back to the LKG / env; this is not a reachability failure" });
|
|
712
|
+
await bootFallBackWhole(`${err instanceof ConfigPullError ? "boot fetch failed" : "boot apply refused"}: ${seatText("operator-log-text", String(err))}`);
|
|
698
713
|
}
|
|
699
714
|
if (!dryRun && cc !== undefined && currentIdentity() !== promptStateIdentity)
|
|
700
715
|
await rebasePromptState(currentIdentity(), "boot-end");
|
|
@@ -776,7 +791,7 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
776
791
|
skills = await applySkillsManifest(skills, effective.skills, candidateSource(), logger);
|
|
777
792
|
if (effective?.plugins !== undefined) {
|
|
778
793
|
const pluginOut = await applyCenterPlugins(skills, effective, {
|
|
779
|
-
cacheRoot:
|
|
794
|
+
cacheRoot: pluginCacheRootFor(config.localDataRoot ?? join(homedir(), ".ai-agent")),
|
|
780
795
|
allowHosts: config.pluginsAllowHosts,
|
|
781
796
|
toolsShareThisFilesystem: DEPLOYMENT_SHAPE_PREDICATES.toolsOnThisHost.holds(config),
|
|
782
797
|
logger,
|
|
@@ -839,6 +854,7 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
839
854
|
startRefreshLoop(a) {
|
|
840
855
|
const { pricing, limitSync, swapRunnerDeps, ceilingVerdict, consolidationSeat, degradeRoute, checkpointStorePresent } = a;
|
|
841
856
|
const signalRestart = (c) => {
|
|
857
|
+
closeApplied(c.gen, c.effective);
|
|
842
858
|
const reasons = restartReasons(c.baseline, c.effective, restartCtx(consolidationSeat?.read(), degradeRoute.read()));
|
|
843
859
|
const skillsChangeDetected = reasons.includes("skills");
|
|
844
860
|
if (bootSkillStale && !skillsChangeDetected)
|
|
@@ -934,8 +950,8 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
934
950
|
if (phase !== "boot-deferred")
|
|
935
951
|
mcpRevocations.applyEnabledEntries(enabledMcpEntries(eff.mcp));
|
|
936
952
|
applyLiveReadFace(eff, swapRunnerDeps, phase);
|
|
937
|
-
markApplied(
|
|
938
|
-
const planeCommitted =
|
|
953
|
+
markApplied(eff);
|
|
954
|
+
const planeCommitted = modelPlaneOutcome(report) === "landed";
|
|
939
955
|
if (planeCommitted)
|
|
940
956
|
appliedPlaneEff = noCenter ? undefined : eff;
|
|
941
957
|
planeDeferredNoHandoff = undefined;
|
|
@@ -954,6 +970,7 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
954
970
|
if (!hot.committed) {
|
|
955
971
|
throw new Error("the no-center tier was refused (the Runners did not accept the env model table) — the previous account's center configuration is still in force; retried next tick");
|
|
956
972
|
}
|
|
973
|
+
closeApplied(gen, NO_CENTER_EFFECTIVE);
|
|
957
974
|
if (hot.report !== undefined && !hot.report.fullyApplied) {
|
|
958
975
|
logger.warn("center_identity_demotion_partial", { groups: refusedGroups(hot.report).map((g) => g.group), note: "a group of the no-center tier was refused — that group keeps its previous values (loud; the env base for that group could not be applied)" });
|
|
959
976
|
}
|
|
@@ -1045,7 +1062,7 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
1045
1062
|
groups: refused.map((g) => g.group),
|
|
1046
1063
|
note: "a group of this candidate was refused — the live config keeps serving the prior values for it; the LKG and the ETag stay on the last FULLY applied generation (this tree is re-judged next tick)",
|
|
1047
1064
|
});
|
|
1048
|
-
const partialSignal = signalRestart({ applied: "partial", effective: r.effective, baseline: effective, refused: refused.map((g) => g.group) });
|
|
1065
|
+
const partialSignal = signalRestart({ applied: "partial", gen: tickGen, effective: r.effective, baseline: effective, refused: refused.map((g) => g.group) });
|
|
1049
1066
|
logger.info("web_admin_refreshed", {
|
|
1050
1067
|
version: r.effective.version,
|
|
1051
1068
|
note: "partially applied — the refused group(s) keep their prior values (see config_candidate_partially_applied); the other groups hot-applied; restart fields as on a complete tick",
|
|
@@ -1054,7 +1071,7 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
1054
1071
|
return "ok";
|
|
1055
1072
|
}
|
|
1056
1073
|
const lkgPersisted = await persistLkgDurable(r.effective, r.etag);
|
|
1057
|
-
const signal = signalRestart({ applied: "complete", effective: r.effective, ...(r.etag !== undefined ? { etag: r.etag } : {}), baseline: effective, lkgPersisted });
|
|
1074
|
+
const signal = signalRestart({ applied: "complete", gen: tickGen, effective: r.effective, ...(r.etag !== undefined ? { etag: r.etag } : {}), baseline: effective, lkgPersisted });
|
|
1058
1075
|
logger.info("web_admin_refreshed", {
|
|
1059
1076
|
version: r.effective.version,
|
|
1060
1077
|
note: "runtime governance (incl. approvalRequire) + limits + models/roles/roster hot-applied; skills/mcp/a2a/scenarios are restart-to-apply",
|
|
@@ -1066,7 +1083,7 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
1066
1083
|
}
|
|
1067
1084
|
}
|
|
1068
1085
|
catch (err) {
|
|
1069
|
-
logger.warn("web_admin_refresh_failed", { err: seatText("operator-log-text", String(err)), note: "etag NOT advanced — the same candidate is re-fetched and re-applied next poll" });
|
|
1086
|
+
logger.warn("web_admin_refresh_failed", { cause: refreshFailureCause(err), err: seatText("operator-log-text", String(err)), note: "etag NOT advanced — the same candidate is re-fetched and re-applied next poll" });
|
|
1070
1087
|
return "failed";
|
|
1071
1088
|
}
|
|
1072
1089
|
finally {
|
|
@@ -1075,16 +1092,17 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
1075
1092
|
return "ok";
|
|
1076
1093
|
};
|
|
1077
1094
|
let inFlight;
|
|
1078
|
-
const
|
|
1095
|
+
const enterLane = (body) => {
|
|
1079
1096
|
if (inFlight)
|
|
1080
1097
|
return inFlight;
|
|
1081
|
-
const p =
|
|
1098
|
+
const p = body().finally(() => {
|
|
1082
1099
|
inFlight = undefined;
|
|
1083
1100
|
afterLane();
|
|
1084
1101
|
});
|
|
1085
1102
|
inFlight = p;
|
|
1086
1103
|
return p;
|
|
1087
1104
|
};
|
|
1105
|
+
const runTick = (arrival) => enterLane(() => refreshTick(arrival));
|
|
1088
1106
|
const requestTick = () => {
|
|
1089
1107
|
if (ccTimer === undefined || ownRead)
|
|
1090
1108
|
return;
|
|
@@ -1115,21 +1133,22 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
1115
1133
|
requestTick();
|
|
1116
1134
|
const deferredBootApply = async (r, arrivalGen) => {
|
|
1117
1135
|
if (!r)
|
|
1118
|
-
return;
|
|
1136
|
+
return "ok";
|
|
1119
1137
|
if (refreshInFlight)
|
|
1120
|
-
return;
|
|
1138
|
+
return "ok";
|
|
1121
1139
|
refreshInFlight = true;
|
|
1122
1140
|
try {
|
|
1123
1141
|
await deferredBootApplyInner(r, useArrivalGeneration(r.effective.version, arrivalGen));
|
|
1124
1142
|
if (configProvider.kind === "remote")
|
|
1125
1143
|
lastPull = "ok";
|
|
1144
|
+
return "ok";
|
|
1126
1145
|
}
|
|
1127
1146
|
catch (err) {
|
|
1128
|
-
logger.warn("web_admin_refresh_failed", { err: seatText("operator-log-text", String(err)), leg: "boot-deferred", note: "etag NOT advanced — the refresh cadence re-fetches and re-applies the same candidate" });
|
|
1147
|
+
logger.warn("web_admin_refresh_failed", { cause: refreshFailureCause(err), err: seatText("operator-log-text", String(err)), leg: "boot-deferred", note: "etag NOT advanced — the refresh cadence re-fetches and re-applies the same candidate" });
|
|
1148
|
+
return "failed";
|
|
1129
1149
|
}
|
|
1130
1150
|
finally {
|
|
1131
1151
|
refreshInFlight = false;
|
|
1132
|
-
afterLane();
|
|
1133
1152
|
}
|
|
1134
1153
|
};
|
|
1135
1154
|
const deferredBootApplyInner = async (r, lateGen) => {
|
|
@@ -1159,7 +1178,7 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
1159
1178
|
groups: refusedLate.map((g) => g.group),
|
|
1160
1179
|
note: "late-boot candidate had a refused group — the LKG/ETag stay on the last FULLY applied generation; the refresh cadence re-judges the same tree",
|
|
1161
1180
|
});
|
|
1162
|
-
const partialSignalLate = signalRestart({ applied: "partial", effective: r.effective, baseline: undefined, refused: refusedLate.map((g) => g.group) });
|
|
1181
|
+
const partialSignalLate = signalRestart({ applied: "partial", gen: lateGen, effective: r.effective, baseline: undefined, refused: refusedLate.map((g) => g.group) });
|
|
1163
1182
|
logger.info("config_loaded_deferred", { source: configProvider.kind, version: r.effective.version, models: (r.effective.models?.models ?? []).filter((m) => m.enabled !== false).length, ...restartLogFields(partialSignalLate) });
|
|
1164
1183
|
return;
|
|
1165
1184
|
}
|
|
@@ -1167,16 +1186,16 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
1167
1186
|
latestEffective = r.effective;
|
|
1168
1187
|
ccEtag = r.etag;
|
|
1169
1188
|
const lkgPersistedLate = await persistLkgDurable(r.effective, r.etag);
|
|
1170
|
-
const signalLate = signalRestart({ applied: "complete", effective: r.effective, ...(r.etag !== undefined ? { etag: r.etag } : {}), baseline: undefined, lkgPersisted: lkgPersistedLate });
|
|
1189
|
+
const signalLate = signalRestart({ applied: "complete", gen: lateGen, effective: r.effective, ...(r.etag !== undefined ? { etag: r.etag } : {}), baseline: undefined, lkgPersisted: lkgPersistedLate });
|
|
1171
1190
|
logger.info("config_loaded_deferred", { source: configProvider.kind, version: r.effective.version, models: (r.effective.models?.models ?? []).filter((m) => m.enabled !== false).length, ...restartLogFields(signalLate) });
|
|
1172
1191
|
};
|
|
1173
1192
|
if (bootConfigPending) {
|
|
1174
1193
|
const arrivalGen = reserveArrivalGeneration();
|
|
1175
|
-
const continueArrival = (r) => void (lkgBooted ? runTick({ result: r, ordinal: arrivalGen }) : deferredBootApply(r, arrivalGen));
|
|
1194
|
+
const continueArrival = (r) => void (lkgBooted ? runTick({ result: r, ordinal: arrivalGen }) : enterLane(() => deferredBootApply(r, arrivalGen)));
|
|
1176
1195
|
void bootConfigPending.then((r) => {
|
|
1177
1196
|
if (r !== null && configProvider.kind === "remote" && candidateIdentityOf(r.effective) !== currentIdentity()) {
|
|
1178
1197
|
logger.warn("config_boot_arrival_identity_changed", { note: "the late boot pull landed under a center credential that is no longer current — not adopted; re-pulling once under the current credential" });
|
|
1179
|
-
void pullEffective(configProvider, undefined).then(continueArrival, (err) => logger.warn("config_boot_arrival_repull_failed", { err: seatText("operator-log-text", String(err)), note: "the refresh cadence retries under the current credential" }));
|
|
1198
|
+
void pullEffective(configProvider, undefined).then(continueArrival, (err) => logger.warn("config_boot_arrival_repull_failed", { cause: refreshFailureCause(err), err: seatText("operator-log-text", String(err)), note: "the refresh cadence retries under the current credential" }));
|
|
1180
1199
|
return;
|
|
1181
1200
|
}
|
|
1182
1201
|
continueArrival(r);
|
|
@@ -1189,9 +1208,10 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
1189
1208
|
clearInterval(ccTimer);
|
|
1190
1209
|
ccTimer = undefined;
|
|
1191
1210
|
}
|
|
1192
|
-
credentialRenewer?.stop();
|
|
1211
|
+
const credentialSettled = credentialRenewer?.stop() ?? Promise.resolve();
|
|
1193
1212
|
unwatchCredential?.();
|
|
1194
1213
|
unwatchCredential = undefined;
|
|
1214
|
+
return credentialSettled;
|
|
1195
1215
|
},
|
|
1196
1216
|
centerCredentialState() {
|
|
1197
1217
|
return cc === undefined ? undefined : buildCenterCredentialHealthView(cc.credential.health(), credentialRenewer);
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* 当年 core 的摘要器没有凭据座,只能在 brain 外面包一层注入 `options.apiKey`(`createPerModelKeyBrain`)。
|
|
25
25
|
* core 7.51.0 起 `WebFetchSummarizerOptions.getApiKeyAndHeaders` 是与 `TaskSpec` / `SideQuerySpec` 同一签名的座
|
|
26
26
|
* (每次摘要按摘要器的模型解一次,`{ apiKey, headers }` 两半都收)⇒ 那层包装退役:`RunnerDeps.brain` 原样交给
|
|
27
|
-
* 摘要器,座位由与 side-query
|
|
27
|
+
* 摘要器,座位由与 side-query **同一只**座位工厂(`createPerModelAuthSeat`)填充(两面都每次现取模型、不焊模型;记忆整理席焊住 Model,凭据随座冻结,见 `boot/memory-consolidation.ts`):
|
|
28
28
|
* · 有 per-model key ⇒ 请求带模型自己的凭据;
|
|
29
29
|
* · 无 ⇒ 座位回 `undefined` ⇒ 交回 core 按它自己的 key↔URL 配对法判(部署根上的模型带网关 key;
|
|
30
30
|
* entry URL 不在部署根上 ⇒ `route.credential_mismatch` 响亮拒 —— core 7.51.0 起没有「未声明部署根」的
|
package/dist/boot-reclaim.d.ts
CHANGED
|
@@ -15,7 +15,9 @@ export interface ReclaimableRunStore {
|
|
|
15
15
|
}
|
|
16
16
|
/** A checkpoint store just enough to answer "is this session a resume-in-progress?" (pending checkpoint). */
|
|
17
17
|
export interface ReclaimCheckpointProbe {
|
|
18
|
-
findPendingTokenBySession: (sessionId: string
|
|
18
|
+
findPendingTokenBySession: (sessionId: string, scope: undefined, binding: {
|
|
19
|
+
readonly axis: "run";
|
|
20
|
+
}) => Promise<unknown>;
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
21
23
|
* Reclaim runs orphaned by a previous host-lane engine process (flip orphaned `running` → failed + release their
|
package/dist/boot-reclaim.js
CHANGED
|
@@ -3,7 +3,7 @@ export async function reclaimOrphansAtBoot(runStore, checkpointStore, logger) {
|
|
|
3
3
|
if (typeof store?.reclaimOrphanedAtBoot !== "function")
|
|
4
4
|
return 0;
|
|
5
5
|
const isResumable = checkpointStore
|
|
6
|
-
? async (sid) => Boolean(await checkpointStore.findPendingTokenBySession(sid))
|
|
6
|
+
? async (sid) => Boolean(await checkpointStore.findPendingTokenBySession(sid, undefined, { axis: "run" }))
|
|
7
7
|
: undefined;
|
|
8
8
|
const reclaimedCount = await store.reclaimOrphanedAtBoot(isResumable);
|
|
9
9
|
if (reclaimedCount > 0)
|