@sema-agent/server 7.147.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 +1039 -24
- package/README.md +20 -7
- package/README.zh-CN.md +14 -8
- package/USAGE.md +380 -163
- package/deploy/sema-up/README.md +16 -5
- package/deploy/sema-up/chart/templates/NOTES.txt +1 -1
- package/deploy/sema-up/chart/templates/_helpers.tpl +20 -4
- package/deploy/sema-up/chart/values.yaml +3 -2
- package/deploy/sema-up/cluster-up.sh +74 -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/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/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 +14 -39
- 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 +13 -1
- package/deploy/sema-up/stack/sema-stack-cluster.yaml +21 -0
- 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 +28 -30
- 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 +13 -11
- package/dist/approval.js +3 -3
- package/dist/audit.d.ts +10 -3
- package/dist/audit.js +15 -7
- 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 +5 -2
- 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/deployment-mods.d.ts +1 -1
- package/dist/boot/execution-env.d.ts +17 -7
- package/dist/boot/execution-env.js +37 -31
- package/dist/boot/exit-boundary.d.ts +2 -2
- package/dist/boot/exit-boundary.js +6 -5
- package/dist/boot/fatal-exit.d.ts +3 -5
- package/dist/boot/fatal-exit.js +2 -2
- package/dist/boot/leader.d.ts +15 -0
- package/dist/boot/leader.js +17 -15
- package/dist/boot/memory-consolidation.d.ts +37 -29
- package/dist/boot/memory-consolidation.js +11 -5
- package/dist/boot/org-memory.js +1 -1
- package/dist/boot/parked-revive-gate.js +2 -2
- package/dist/boot/reapers.d.ts +4 -3
- package/dist/boot/reapers.js +19 -16
- package/dist/boot/resolve-spec.d.ts +5 -3
- package/dist/boot/resolve-spec.js +55 -67
- package/dist/boot/retention-lane.d.ts +4 -4
- 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 +16 -7
- package/dist/boot/session-faces.js +114 -94
- package/dist/boot/shutdown.d.ts +5 -4
- package/dist/boot/shutdown.js +6 -4
- package/dist/boot/stage-01-config.js +9 -1
- package/dist/boot/stage-02-web-admin-pull.d.ts +1 -0
- package/dist/boot/stage-02-web-admin-pull.js +6 -1
- package/dist/boot/stage-03-store-backend.d.ts +3 -0
- package/dist/boot/stage-03-store-backend.js +4 -3
- package/dist/boot/stage-04-stores.d.ts +2 -0
- package/dist/boot/stage-04-stores.js +2 -2
- package/dist/boot/stage-05-execution-env.d.ts +7 -3
- package/dist/boot/stage-05-execution-env.js +2 -2
- package/dist/boot/stage-06-runners.d.ts +10 -12
- package/dist/boot/stage-06-runners.js +23 -15
- package/dist/boot/stage-07-capability-layer.d.ts +11 -8
- package/dist/boot/stage-07-capability-layer.js +5 -3
- package/dist/boot/stage-08-reapers.d.ts +11 -8
- package/dist/boot/stage-08-reapers.js +3 -3
- package/dist/boot/stage-09-leader.d.ts +12 -15
- package/dist/boot/stage-09-leader.js +12 -4
- package/dist/boot/stage-10-http-server.d.ts +12 -15
- package/dist/boot/stage-10-http-server.js +7 -4
- package/dist/boot/store-evidence.d.ts +20 -0
- package/dist/boot/store-evidence.js +13 -0
- package/dist/boot/stores.d.ts +3 -0
- package/dist/boot/stores.js +21 -10
- 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 +55 -35
- 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 +7 -1
- package/dist/capabilities/center-plugins.js +32 -10
- package/dist/capabilities/center-wiring.js +1 -1
- package/dist/capabilities/composite-members.d.ts +2 -2
- package/dist/capabilities/composite-members.js +2 -2
- package/dist/capabilities/repo-tools.d.ts +2 -0
- package/dist/capabilities/repo-tools.js +14 -12
- package/dist/capabilities/scenarios.d.ts +6 -15
- package/dist/capabilities/scenarios.js +11 -16
- package/dist/capabilities/skills.d.ts +1 -1
- package/dist/capabilities/tool-defer.d.ts +1 -1
- package/dist/capability-facts.d.ts +38 -11
- package/dist/capability-facts.js +47 -8
- 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 +7 -3
- package/dist/config-catalog.d.ts +16 -1
- package/dist/config-catalog.js +62 -56
- package/dist/config-dir-trust.d.ts +37 -4
- package/dist/config-dir-trust.js +88 -44
- package/dist/config-invariants.d.ts +42 -3
- package/dist/config-invariants.js +69 -5
- package/dist/config-lkg.d.ts +23 -1
- package/dist/config-lkg.js +17 -3
- package/dist/config-provider.d.ts +9 -9
- package/dist/config-provider.js +25 -110
- package/dist/config-pull-failure.d.ts +50 -0
- package/dist/config-pull-failure.js +48 -0
- package/dist/config-types.d.ts +26 -17
- package/dist/config.d.ts +8 -16
- package/dist/config.js +113 -47
- package/dist/delegated-session-owner.d.ts +1 -1
- package/dist/deleted-session-ids.d.ts +3 -2
- package/dist/deployment-governance.d.ts +3 -3
- package/dist/deployment-shape.d.ts +30 -4
- package/dist/deployment-shape.js +7 -0
- 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.js +2 -1
- package/dist/env-witness.d.ts +7 -0
- package/dist/env-witness.js +16 -0
- package/dist/execution-lane-caps.d.ts +5 -18
- package/dist/execution-lane-caps.js +0 -22
- package/dist/execution-placement.d.ts +58 -18
- package/dist/execution-placement.js +41 -2
- 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.js +1 -0
- 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 +3 -3
- 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 +23 -3
- package/dist/history-anchor.js +24 -4
- 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/hook-llm.d.ts +5 -1
- package/dist/hooks/hook-llm.js +24 -15
- package/dist/hooks/hook-runner.d.ts +67 -57
- package/dist/hooks/hook-runner.js +260 -186
- 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 +3 -3
- package/dist/http/approval-sweeps.js +54 -30
- package/dist/http/caller-trust.d.ts +8 -10
- package/dist/http/caller-trust.js +1 -2
- package/dist/http/claim-heartbeat.d.ts +49 -0
- package/dist/http/claim-heartbeat.js +46 -0
- package/dist/http/claimed-run.d.ts +4 -3
- package/dist/http/dispatch.d.ts +8 -1
- package/dist/http/dispatch.js +76 -30
- package/dist/http/durable-run-leg.d.ts +3 -3
- package/dist/http/durable-run-leg.js +17 -12
- package/dist/http/execution-context.d.ts +17 -43
- package/dist/http/execution-context.js +7 -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 +4 -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 +1 -1
- package/dist/http/memory-store-refusal-reply.js +3 -0
- package/dist/http/owner-access.d.ts +391 -67
- package/dist/http/owner-access.js +371 -35
- package/dist/http/principal-gate.d.ts +24 -81
- package/dist/http/principal-gate.js +24 -68
- package/dist/http/refusal-body.d.ts +35 -2
- package/dist/http/refusal-body.js +34 -0
- package/dist/http/request-guards.d.ts +9 -13
- 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 +21 -18
- package/dist/http/resume-legs.js +189 -129
- package/dist/http/retired-skill-manifest.d.ts +1 -1
- package/dist/http/route-ctx.d.ts +25 -32
- 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 +70 -65
- 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 +15 -18
- package/dist/http/routes/config-catalog.js +2 -2
- package/dist/http/routes/devices.d.ts +3 -3
- package/dist/http/routes/devices.js +4 -4
- 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 +2 -0
- 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 +10 -19
- 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 +1 -1
- package/dist/http/routes/projects.js +3 -2
- package/dist/http/routes/retention-ops.js +6 -9
- package/dist/http/routes/rules.js +20 -5
- 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 +146 -231
- 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 +21 -20
- package/dist/http/routes/sessions-list.d.ts +3 -3
- package/dist/http/routes/sessions-list.js +9 -9
- package/dist/http/routes/sessions.js +87 -124
- package/dist/http/routes/shared-memory.js +6 -6
- package/dist/http/routes/side-query.js +2 -2
- package/dist/http/routes/tasks.js +136 -120
- 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 +39 -40
- package/dist/http/server.js +36 -11
- 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 +12 -0
- package/dist/http/stored-body-replay.js +2 -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 +4 -3
- package/dist/identity-source.d.ts +36 -5
- package/dist/identity-source.js +27 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- 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-operator-faces.d.ts +5 -4
- package/dist/memory-operator-faces.js +1 -1
- package/dist/memory-scope.d.ts +29 -2
- package/dist/memory-scope.js +64 -15
- package/dist/memory-store-refusal.d.ts +5 -2
- package/dist/memory-sync-client.d.ts +3 -2
- package/dist/memory-sync-client.js +6 -3
- package/dist/model-compat.d.ts +17 -8
- package/dist/model-compat.js +6 -2
- 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 +35 -16
- package/dist/model-entry-refusal.js +40 -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 +23 -14
- package/dist/namespaced-rule-name.js +8 -11
- 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 +58 -38
- package/dist/observability/fail-open.js +60 -38
- package/dist/observability/logger.d.ts +22 -1
- package/dist/observability/logger.js +89 -12
- package/dist/observability/metrics.js +3 -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/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-completion-inbox.d.ts +3 -3
- package/dist/orchestration/workflow-completion-inbox.js +3 -2
- package/dist/org-delivery-gate.d.ts +5 -4
- package/dist/org-delivery-gate.js +7 -6
- 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 +67 -5
- package/dist/parked-decide.js +127 -5
- 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 +18 -7
- package/dist/plugins/approval-ask-store-file.js +37 -14
- package/dist/plugins/approval-ask-store-memory.d.ts +12 -4
- package/dist/plugins/approval-ask-store-memory.js +24 -10
- package/dist/plugins/approval-ask-store-sql.d.ts +39 -20
- package/dist/plugins/approval-ask-store-sql.js +41 -10
- 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 +2 -0
- package/dist/plugins/blob-backend.js +9 -6
- package/dist/plugins/caching-session-store.d.ts +13 -1
- package/dist/plugins/caching-session-store.js +43 -4
- package/dist/plugins/checkpoint-index-columns.d.ts +32 -5
- package/dist/plugins/checkpoint-index-columns.js +36 -1
- package/dist/plugins/checkpoint-store-face.d.ts +83 -10
- package/dist/plugins/checkpoint-store-face.js +18 -1
- package/dist/plugins/device-store-sql.js +1 -0
- 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/file-run-store.d.ts +63 -23
- package/dist/plugins/file-run-store.js +138 -83
- 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 +2 -2
- 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 +58 -23
- package/dist/plugins/local-checkpoint-store.js +195 -76
- package/dist/plugins/local-data-dir-modes-m39.js +2 -1
- 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 +4 -2
- package/dist/plugins/local-engine-high-water.js +4 -1
- package/dist/plugins/local-session-store.d.ts +358 -125
- package/dist/plugins/local-session-store.js +824 -251
- 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 +18 -1
- package/dist/plugins/local-task-attachment-store.js +22 -1
- package/dist/plugins/memory-embedder.js +9 -7
- package/dist/plugins/memory-engine-pg.d.ts +3 -2
- package/dist/plugins/memory-engine-pg.js +14 -5
- package/dist/plugins/memory-engine-sql-apply.d.ts +8 -4
- package/dist/plugins/memory-engine-sql-apply.js +6 -8
- package/dist/plugins/memory-engine-tidb.d.ts +4 -2
- package/dist/plugins/memory-engine-tidb.js +11 -2
- 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 +186 -45
- package/dist/plugins/one-time-migrations.js +442 -119
- package/dist/plugins/org-delivery-quota-store.js +2 -1
- package/dist/plugins/permission-rule-store-file.d.ts +3 -3
- 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 +1 -31
- package/dist/plugins/pg-pool.js +16 -7
- package/dist/plugins/remote-env-e2b.d.ts +7 -25
- package/dist/plugins/remote-env-e2b.js +34 -25
- package/dist/plugins/remote-env-host.d.ts +2 -9
- package/dist/plugins/remote-env-host.js +34 -22
- package/dist/plugins/remote-env-k8s.d.ts +40 -45
- package/dist/plugins/remote-env-k8s.js +107 -58
- package/dist/plugins/remote-env-local-docker.d.ts +148 -14
- package/dist/plugins/remote-env-local-docker.js +367 -72
- package/dist/plugins/remote-scratchpad.js +4 -0
- package/dist/plugins/retention-deployment.d.ts +49 -17
- package/dist/plugins/retention-deployment.js +39 -8
- 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 -9
- package/dist/plugins/schema-consistency.js +212 -11
- 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 +9 -0
- package/dist/plugins/schema-ensure-legs.js +1 -1
- 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 +27 -3
- package/dist/plugins/session-ext-table.js +19 -6
- package/dist/plugins/session-fork.d.ts +15 -1
- 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 +12 -0
- package/dist/plugins/session-row-sql.js +3 -3
- 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 +38 -12
- package/dist/plugins/session-store-sql.js +130 -30
- package/dist/plugins/session-withdraw-sql.d.ts +36 -0
- package/dist/plugins/session-withdraw-sql.js +42 -0
- package/dist/plugins/shared-memory-store-sql.d.ts +0 -69
- package/dist/plugins/shared-memory-store-sql.js +2 -1
- 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/sql-driver.d.ts +1 -1
- package/dist/plugins/sql-driver.js +2 -1
- package/dist/plugins/sql-errors.d.ts +32 -5
- package/dist/plugins/sql-errors.js +55 -7
- 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 +84 -15
- package/dist/plugins/store-backend.js +186 -55
- package/dist/plugins/store-contracts.d.ts +90 -30
- package/dist/plugins/store-contracts.js +22 -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 +15 -3
- package/dist/plugins/task-attachment-store.js +22 -9
- package/dist/plugins/tidb-pool.js +23 -8
- 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/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/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 +5 -3
- package/dist/rules-consent.js +1 -0
- 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 +92 -80
- package/dist/run-stale-default.d.ts +7 -0
- package/dist/run-stale-default.js +2 -0
- package/dist/runs.d.ts +26 -15
- package/dist/runs.js +39 -27
- package/dist/runtime-caps-resolver.d.ts +21 -6
- package/dist/runtime-caps-resolver.js +17 -4
- package/dist/runtime-governance.d.ts +2 -2
- package/dist/runtime-governance.js +5 -3
- package/dist/sealed-key-layout.d.ts +12 -5
- package/dist/sealed-key-layout.js +5 -0
- package/dist/sealed-key.d.ts +12 -2
- package/dist/sealed-key.js +115 -27
- package/dist/security.d.ts +128 -158
- package/dist/security.js +163 -59
- package/dist/sema-config-dir.d.ts +20 -0
- package/dist/sema-config-dir.js +25 -0
- package/dist/server-secret-env.d.ts +21 -5
- package/dist/server-secret-env.js +14 -4
- 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 +5 -5
- package/dist/session-error-wire.js +1 -1
- package/dist/session-incarnation.d.ts +52 -5
- 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 +0 -71
- package/dist/session-resident-background.js +4 -3
- package/dist/session-row.d.ts +2 -1
- package/dist/session-rules-seat.d.ts +12 -0
- package/dist/session-rules-seat.js +19 -0
- package/dist/session-titler.d.ts +7 -15
- package/dist/session-titler.js +1 -1
- package/dist/spec-fields.d.ts +57 -3
- package/dist/spec-fields.js +72 -51
- package/dist/store-posture.d.ts +136 -20
- package/dist/store-posture.js +188 -3
- package/dist/stored-request-hooks-m20.js +2 -2
- 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/checkpoint-store-sql.d.ts +33 -28
- package/dist/stores-sql/checkpoint-store-sql.js +75 -44
- package/dist/stores-sql/mailbox-store-sql.d.ts +7 -4
- package/dist/stores-sql/mailbox-store-sql.js +31 -32
- package/dist/stores-sql/pg-session-storage.d.ts +7 -5
- package/dist/stores-sql/pg-session-storage.js +54 -46
- package/dist/stores-sql/retention-store-sql.d.ts +87 -19
- package/dist/stores-sql/retention-store-sql.js +92 -27
- package/dist/stores-sql/session-policy-store-sql.d.ts +32 -10
- package/dist/stores-sql/session-policy-store-sql.js +44 -36
- package/dist/stores-sql/session-write-hooks.d.ts +12 -6
- package/dist/stores-sql/tidb-session-storage.d.ts +4 -4
- package/dist/stores-sql/tidb-session-storage.js +13 -8
- package/dist/stores-sql/tidb-session-store.d.ts +36 -17
- package/dist/stores-sql/tidb-session-store.js +69 -39
- package/dist/stores-sql/windowed-session-storage.d.ts +5 -0
- package/dist/stores-sql/windowed-session-storage.js +9 -0
- package/dist/submission-exit.d.ts +50 -0
- package/dist/submission-exit.js +108 -0
- package/dist/task-a2a.d.ts +1 -1
- package/dist/task-a2a.js +3 -3
- package/dist/task-cwd.d.ts +20 -0
- package/dist/task-cwd.js +8 -0
- package/dist/task-mcp.d.ts +1 -1
- package/dist/task-mcp.js +3 -3
- package/dist/task-settings.d.ts +14 -10
- package/dist/task-settings.js +18 -7
- package/dist/terminal.d.ts +25 -43
- package/dist/terminal.js +31 -11
- package/dist/tool-approval.d.ts +131 -129
- package/dist/tool-approval.js +189 -193
- package/dist/trace/core-keyset-guard.d.ts +13 -6
- package/dist/trace/core-vocab-wire.d.ts +95 -0
- package/dist/trace/core-vocab-wire.js +15 -0
- package/dist/trace/exit-seat.d.ts +30 -4
- package/dist/trace/exit-seat.js +40 -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 +55 -42
- package/dist/trace/project.js +52 -19
- package/dist/trace/redact.d.ts +123 -27
- package/dist/trace/redact.js +880 -260
- package/dist/trace/self-minted-wire.d.ts +487 -19
- package/dist/trace/self-minted-wire.js +172 -23
- package/dist/trace/wire-projection-faces.d.ts +5 -6
- package/dist/trace/wire-projection-faces.js +2 -2
- 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 +13 -16
- 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/center-request.d.ts +2 -2
- package/dist/web-admin-client/center-request.js +15 -15
- package/dist/web-admin-client/effective-keys.d.ts +1 -1
- package/dist/web-admin-client/effective-keys.js +1 -1
- 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/http-client.d.ts +1 -1
- package/dist/web-admin-client/http-client.js +23 -4
- 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 +8 -4
- package/dist/web-admin-client/skills-mcp.d.ts +2 -2
- package/dist/web-admin-client/types.d.ts +1 -2
- package/dist/workspace-space.d.ts +3 -2
- package/docs/DEVICE-EXECUTOR-PROTOCOL.md +4 -4
- package/package.json +6 -3
- package/scripts/drain-check-local.mjs +118 -147
- package/scripts/drain-check.mysql.sql +22 -2
- package/scripts/drain-check.pg.sql +22 -2
- 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
|
@@ -1,23 +1,18 @@
|
|
|
1
|
-
import { persistedPlaneOf } from "../terminal.js";
|
|
2
1
|
import { memoRedactedRead, memoRedactTerminalResult, redactErrorMessage, sealStoredRunRowResult } from "../observability/run-terminal.js";
|
|
3
|
-
import {
|
|
2
|
+
import { isTerminalRunStatus } from "../plugins/store-contracts.js";
|
|
4
3
|
import { composeSupervisorCost, infraCost, infraUsageFromEvents, hasInfraPricing } from "../observability/cost-taxonomy.js";
|
|
5
4
|
import { recordFailOpen } from "../observability/fail-open.js";
|
|
6
5
|
import { readTurnActivityMs } from "../turn-activity.js";
|
|
7
6
|
import { buildCrossSliceUsage, readResourceWindow } from "../resource-window.js";
|
|
8
|
-
export function runRowStale(deps, run) {
|
|
9
|
-
return run.status === "running" && Date.now() - new Date(run.updatedAt).getTime() > deps.config.runStaleSec * 1000;
|
|
10
|
-
}
|
|
11
7
|
export function runRowExitResult(run) {
|
|
12
8
|
return isTerminalRunStatus(run.status) ? memoRedactTerminalResult("run.result", run.result ?? undefined) : (sealStoredRunRowResult(run.result ?? null, "run.result") ?? undefined);
|
|
13
9
|
}
|
|
14
10
|
export async function readRunFace(deps, runStore, run) {
|
|
15
11
|
const taskId = run.taskId;
|
|
16
|
-
const stale = runRowStale(deps, run);
|
|
17
12
|
const infraRates = deps.config.infraCostRates;
|
|
18
|
-
const needCost = Boolean(run.result?.stats &&
|
|
19
|
-
const needSuggestions =
|
|
20
|
-
const resourceWindow = run.status === "running"
|
|
13
|
+
const needCost = Boolean(run.result?.stats && infraRates && hasInfraPricing(infraRates));
|
|
14
|
+
const needSuggestions = run.status === "completed";
|
|
15
|
+
const resourceWindow = run.status === "running" ? readResourceWindow(run.taskId) : undefined;
|
|
21
16
|
let events;
|
|
22
17
|
let eventsUnavailable = false;
|
|
23
18
|
if (needCost || needSuggestions || resourceWindow !== undefined) {
|
|
@@ -45,7 +40,7 @@ export async function readRunFace(deps, runStore, run) {
|
|
|
45
40
|
if (Array.isArray(arr))
|
|
46
41
|
suggestions = arr.map((s) => String(s));
|
|
47
42
|
}
|
|
48
|
-
const lastActivityAt = run.status === "running"
|
|
43
|
+
const lastActivityAt = run.status === "running" ? readTurnActivityMs(run.taskId) : undefined;
|
|
49
44
|
let crossSliceUsage;
|
|
50
45
|
if (resourceWindow !== undefined) {
|
|
51
46
|
if (eventsUnavailable || events === undefined)
|
|
@@ -56,14 +51,14 @@ export async function readRunFace(deps, runStore, run) {
|
|
|
56
51
|
return {
|
|
57
52
|
taskId: run.taskId,
|
|
58
53
|
sessionId: run.sessionId,
|
|
59
|
-
status:
|
|
54
|
+
status: run.status,
|
|
60
55
|
...(lastActivityAt !== undefined ? { msSinceLastActivity: Math.max(0, Date.now() - lastActivityAt) } : {}),
|
|
61
56
|
...(crossSliceUsage !== undefined ? { crossSliceUsage } : {}),
|
|
62
57
|
result: runRowExitResult(run),
|
|
63
58
|
supervisorCost,
|
|
64
59
|
suggestions,
|
|
65
|
-
errorCode:
|
|
66
|
-
error:
|
|
60
|
+
errorCode: run.errorCode ?? undefined,
|
|
61
|
+
error: isTerminalRunStatus(run.status) ? memoRedactedRead("run.error", run.error ?? undefined, redactErrorMessage) : redactErrorMessage(run.error ?? undefined),
|
|
67
62
|
jobId: run.jobId ?? undefined,
|
|
68
63
|
source: run.source ?? undefined,
|
|
69
64
|
heldBy: isTerminalRunStatus(run.status) ? null : (run.instanceId ?? null),
|
package/dist/http/send.d.ts
CHANGED
|
@@ -64,10 +64,12 @@ export declare function endSseWithError(res: ServerResponse, frame: {
|
|
|
64
64
|
readonly message: string;
|
|
65
65
|
}): void;
|
|
66
66
|
export declare function sendJson(res: ServerResponse, status: number, body: unknown): void;
|
|
67
|
+
/** HTTP 入口给每条响应挂上本部署的日志器(缺席 = 本部署没有日志器,与全局兜底同读)。 */
|
|
68
|
+
export declare function attachResponseLogger(res: ServerResponse, logger: Logger | undefined): void;
|
|
67
69
|
/** A6([ref] lens1 §C3/lens3 §C3a): canonical error-response sender for sites that already carry a
|
|
68
70
|
* machine `errorCode` — `errorCode` is a required positional arg (not optional-bag) so a call site
|
|
69
71
|
* cannot regress to the "code but no errorCode" shape the error-code-key-gate forbids. Body shape is
|
|
70
|
-
* `{ error: message, errorCode, ...extra }
|
|
72
|
+
* `{ error: message, errorCode, ...extra }` (written by the one refusal writer {@link sendRefusal}); a site that used to ALSO emit a legacy `code` key keeps it
|
|
71
73
|
* by passing `{ code: ... }` inside `extra` — this is a pure call-site migration (zero wire-contract
|
|
72
74
|
* change), not a new response shape. Sites where the two machine-code channels genuinely disagree, or
|
|
73
75
|
* where `error`/`errorCode` aren't cleanly separable from the rest of the body, are left on raw
|
|
@@ -93,13 +95,13 @@ export declare function invalidJsonError(reason: InvalidJsonReason): HttpError;
|
|
|
93
95
|
export declare function httpErrorCode(status: number, code?: string): string;
|
|
94
96
|
/**
|
|
95
97
|
* 一只 `HttpError` 读成 {@link Refusal}:码经 {@link httpErrorCode}(带码的 throw 原样优先,否则按状态给粗码),句 = `message`,机读事实 = `extra`
|
|
96
|
-
* (如场景门的 `
|
|
98
|
+
* (如场景门的 `scenario` / `source`、条数帽的 `field` / `reason` / `count` / `cap`)。**拆 `HttpError` 的唯一一处** —— 别的站点自己拆
|
|
97
99
|
* `status` / `code` / `message` 拼体就丢了 `extra`(`test/refusal-one-composer.test.ts` 的静态门钉着)。
|
|
98
100
|
*/
|
|
99
101
|
export declare function httpErrorRefusal(e: HttpError): Refusal;
|
|
100
102
|
/** 一只 `HttpError` 的拒体成员 = {@link refusalBody}({@link httpErrorRefusal})。 */
|
|
101
103
|
export declare function httpErrorBody(e: HttpError): RefusalBody;
|
|
102
|
-
/** 整面拒:状态 = `e.status`,体 = {@link httpErrorBody}。手里拿着一只 `HttpError` 的路由站点一律调它。 */
|
|
104
|
+
/** 整面拒:状态 = `e.status`,体 = {@link httpErrorRefusal} 经出线点 {@link sendRefusal}(与 {@link httpErrorBody} 同一只组句)。手里拿着一只 `HttpError` 的路由站点一律调它。 */
|
|
103
105
|
export declare function sendHttpError(res: ServerResponse, e: HttpError): void;
|
|
104
106
|
/**
|
|
105
107
|
* 🔴 B1 / [ref] —— `SessionPolicyError` → 应答,经 {@link sessionPolicyErrorHttp} 那**一只**映射
|
|
@@ -135,4 +137,11 @@ export declare function msg(e: unknown): string;
|
|
|
135
137
|
* codex r10 [high] 纵深:错误句可带凭据回显 ⇒ 先过 `redactHead`(有上限、不抛)。
|
|
136
138
|
*/
|
|
137
139
|
export declare function logRequestError(logger: Logger | undefined, req: IncomingMessage, err: unknown): void;
|
|
140
|
+
/**
|
|
141
|
+
* 一只抛出物的**栈顶帧**,写成 `<仓内路径>:<行>`(`request_error` 行的出处位:排障时「哪一行读到了 `undefined`」不必再复现)。
|
|
142
|
+
* 取栈的第一条读得出位置的帧(内建 / 匿名帧跳过);路径只留 `src/` · `dist/` · `node_modules/` 起的尾段 —— 宿主机的绝对前缀(用户目录 / 容器卷名)不出门;
|
|
143
|
+
* 不带列、不带函数名、不带消息体(消息已在 `err` 位,过它自己的脱敏)。读不出(非 `Error` / 无栈 / 无位置帧)⇒ `undefined`,调用点不写该键。
|
|
144
|
+
* 纯解析、无 catch:只读 `stack` 这一个成员(与 {@link msg} 读 `message` 同一姿势 —— 同一只抛出物读两个成员,守不守访问器是同一个问题,不在这里单独设一道兜底)。
|
|
145
|
+
*/
|
|
146
|
+
export declare function topFrameOf(err: unknown): string | undefined;
|
|
138
147
|
//# sourceMappingURL=send.d.ts.map
|
package/dist/http/send.js
CHANGED
|
@@ -2,8 +2,9 @@ import { SessionError, SessionPolicyError } from "@sema-agent/core";
|
|
|
2
2
|
import { sessionPolicyErrorFacts, sessionPolicyErrorHttp, sessionPolicyErrorSentence } from "../session-policy-wire.js";
|
|
3
3
|
import { openFaceFaultWire, sessionErrorWireOf } from "../session-error-wire.js";
|
|
4
4
|
import { redactErrorMessage, redactHead } from "../observability/run-terminal.js";
|
|
5
|
+
import { seatText } from "../trace/exit-seat.js";
|
|
5
6
|
import { createCodedHttpError } from "../security.js";
|
|
6
|
-
import { refusalBody } from "./refusal-body.js";
|
|
7
|
+
import { refusalBody, refusalWireBytes } from "./refusal-body.js";
|
|
7
8
|
export const SSE_RESPONSE_MARK = Symbol("sema.http.sse-response");
|
|
8
9
|
export function isSseResponse(res) {
|
|
9
10
|
return res[SSE_RESPONSE_MARK] === true;
|
|
@@ -32,8 +33,27 @@ export function sendJson(res, status, body) {
|
|
|
32
33
|
res.writeHead(status, { "content-type": "application/json" });
|
|
33
34
|
res.end(JSON.stringify(body));
|
|
34
35
|
}
|
|
36
|
+
const RESPONSE_LOGGER = Symbol("sema.http.response-logger");
|
|
37
|
+
export function attachResponseLogger(res, logger) {
|
|
38
|
+
if (logger !== undefined)
|
|
39
|
+
res[RESPONSE_LOGGER] = logger;
|
|
40
|
+
}
|
|
41
|
+
function sendRefusal(res, status, refusal) {
|
|
42
|
+
let bytes;
|
|
43
|
+
try {
|
|
44
|
+
bytes = refusalWireBytes(refusal);
|
|
45
|
+
}
|
|
46
|
+
catch (fault) {
|
|
47
|
+
const reported = new TypeError(`refusal ${refusal.errorCode} was not written: its facts carry a reserved key, or reading / serializing them threw`, { cause: fault });
|
|
48
|
+
logRequestError(res[RESPONSE_LOGGER], res.req, reported);
|
|
49
|
+
sendOpenFaceFault(res, reported);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
res.writeHead(status, { "content-type": "application/json" });
|
|
53
|
+
res.end(bytes);
|
|
54
|
+
}
|
|
35
55
|
export function sendError(res, status, errorCode, message, extra) {
|
|
36
|
-
|
|
56
|
+
sendRefusal(res, status, extra === undefined ? { errorCode, message } : { errorCode, message, facts: extra });
|
|
37
57
|
}
|
|
38
58
|
export const INVALID_JSON_REASONS = ["not_json", "not_object"];
|
|
39
59
|
export const INVALID_JSON_MESSAGES = {
|
|
@@ -66,14 +86,14 @@ export function httpErrorBody(e) {
|
|
|
66
86
|
return refusalBody(httpErrorRefusal(e));
|
|
67
87
|
}
|
|
68
88
|
export function sendHttpError(res, e) {
|
|
69
|
-
|
|
89
|
+
sendRefusal(res, e.status, httpErrorRefusal(e));
|
|
70
90
|
}
|
|
71
91
|
export function sendSessionPolicyError(res, e, sentencePrefix = "") {
|
|
72
92
|
if (!(e instanceof SessionPolicyError))
|
|
73
93
|
return false;
|
|
74
94
|
const h = sessionPolicyErrorHttp(e.code);
|
|
75
95
|
const facts = sessionPolicyErrorFacts(e);
|
|
76
|
-
sendError(res, h.status, h.errorCode, redactErrorMessage(`${sentencePrefix}${sessionPolicyErrorSentence(e)}`) ?? "session policy error", facts
|
|
96
|
+
sendError(res, h.status, h.errorCode, redactErrorMessage(`${sentencePrefix}${sessionPolicyErrorSentence(e)}`) ?? "session policy error", facts);
|
|
77
97
|
return true;
|
|
78
98
|
}
|
|
79
99
|
export function sendSessionError(res, e, face) {
|
|
@@ -90,12 +110,28 @@ export function sendOpenFaceFault(res, e) {
|
|
|
90
110
|
}
|
|
91
111
|
function sendSessionWire(res, e, wire) {
|
|
92
112
|
const sentence = wire.sentence ?? (e instanceof SessionError ? redactErrorMessage(e.message) : undefined) ?? "session store error";
|
|
93
|
-
sendError(res, wire.status, wire.errorCode, sentence, wire.
|
|
113
|
+
sendError(res, wire.status, wire.errorCode, sentence, wire.facts);
|
|
94
114
|
}
|
|
95
115
|
export function msg(e) {
|
|
96
116
|
return e instanceof Error ? e.message : String(e);
|
|
97
117
|
}
|
|
98
118
|
export function logRequestError(logger, req, err) {
|
|
99
|
-
|
|
119
|
+
const at = topFrameOf(err);
|
|
120
|
+
logger?.error("request_error", { method: req.method, url: req.url, err: redactHead(msg(err), 2000), ...(at !== undefined ? { at } : {}) });
|
|
121
|
+
}
|
|
122
|
+
const STACK_FRAME_LOCATION = /^\s*at (?:.*? \()?(?:file:\/\/)?(\/.*?|[A-Za-z]:[\\/].*?):(\d+):\d+\)?$/;
|
|
123
|
+
export function topFrameOf(err) {
|
|
124
|
+
const stack = err instanceof Error ? err.stack : undefined;
|
|
125
|
+
if (typeof stack !== "string")
|
|
126
|
+
return undefined;
|
|
127
|
+
for (const line of stack.split("\n")) {
|
|
128
|
+
const m = STACK_FRAME_LOCATION.exec(line);
|
|
129
|
+
if (m === null)
|
|
130
|
+
continue;
|
|
131
|
+
const path = m[1].replace(/\\/g, "/");
|
|
132
|
+
const tail = /(?:^|\/)((?:src|dist|node_modules)\/.*)$/.exec(path)?.[1] ?? path.slice(path.lastIndexOf("/") + 1);
|
|
133
|
+
return seatText("operator-log-text", `${tail}:${m[2]}`);
|
|
134
|
+
}
|
|
135
|
+
return undefined;
|
|
100
136
|
}
|
|
101
137
|
//# sourceMappingURL=send.js.map
|
package/dist/http/server.d.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import http from "node:http";
|
|
2
2
|
import type { MemoryComplianceFaces, MemoryOriginFaces, SessionMemoryStatusFace } from "../memory-operator-faces.js";
|
|
3
3
|
import type { SideQueryAccounting } from "../budget.js";
|
|
4
|
+
import type { SessionPurgeOutcome } from "../session-deletion.js";
|
|
4
5
|
import type { IncomingMessage } from "node:http";
|
|
5
6
|
import { type Runner, type RunnerDeps, type TaskSpec, type TaskResult, type WorkflowRunStore, type MemoryEntry, type MemoryExportBundle, type MemoryImportReport, type SideQuerySpec, type SideQueryResult, type Brain, type EngineNotice } from "@sema-agent/core";
|
|
6
7
|
import type { TaskRequestBody } from "./wire-types.js";
|
|
7
8
|
import type { ServiceConfig } from "../config-types.js";
|
|
8
9
|
import { type SessionMirrorRuling } from "../web-admin-client/facade.js";
|
|
9
10
|
import type { RestartSignal } from "@sema-agent/settings-schema/fleet";
|
|
10
|
-
import { type OwnerAwareSessionStore } from "../security.js";
|
|
11
|
+
import { type AuthorizeInput, type OwnerAwareSessionStore } from "../security.js";
|
|
11
12
|
import type { PeerDesk, PeerLease } from "../peer-seat.js";
|
|
12
13
|
import type { ExecutionRoot, ResolvedTaskSpec } from "./execution-context.js";
|
|
13
14
|
import type { RunStore, ImageIndex, ImageBake, CheckpointStoreFull, ResumeAnchorStore, ApprovalExemptionStore, ApprovalNonceStore, ServiceSessionPolicyStore, ServiceFileHistoryStore, ToolResultStoreFull, StoreBackend } from "../plugins/store-backend.js";
|
|
@@ -42,13 +43,17 @@ export { coarseStatusForState, errorCodeForExit };
|
|
|
42
43
|
import type { SessionNotifyDoor } from "../session-notify-door.js";
|
|
43
44
|
import { MAX_SKILL_CONTENT_CHARS, MAX_SYSTEM_PROMPT_CHARS, MAX_OUTPUT_SCHEMA_CHARS, validateUserSkills } from "./admission.js";
|
|
44
45
|
import { routeLabel, isBillableSubmitPath, isCredentialGatedRewrite, isMethodDispatchedSubmitPath } from "./route-table.js";
|
|
45
|
-
export { routeLabel, isBillableSubmitPath, isCredentialGatedRewrite, isMethodDispatchedSubmitPath
|
|
46
|
+
export { routeLabel, isBillableSubmitPath, isCredentialGatedRewrite, isMethodDispatchedSubmitPath };
|
|
46
47
|
export { MAX_SKILL_CONTENT_CHARS, MAX_SYSTEM_PROMPT_CHARS, MAX_OUTPUT_SCHEMA_CHARS, validateUserSkills };
|
|
47
|
-
import { explicitOperatorOk
|
|
48
|
+
import { explicitOperatorOk } from "./principal-gate.js";
|
|
48
49
|
export { explicitOperatorOk };
|
|
49
50
|
/** Per-request authorization context resolved before building the spec (identity, owned session). */
|
|
50
51
|
export interface RequestAuth {
|
|
51
|
-
|
|
52
|
+
/**
|
|
53
|
+
* 这次请求 / 这条腿的**主体**(分区键;`owner-brands.ts`):没带场景头 ⇒ 与验过的人逐字节同;带了 ⇒ `_scn:<场景>:<人>`。行属主 / 检查点 scope / 附件 / 锚读它,
|
|
54
|
+
* 人面(场景裁定 / 运维 / 治理 / 引擎 `spec.principal`)由装配器经 `partsOf` 解码出人。自建 authorizer 交它自己验过的那一只身份串(没有场景时就是人)。
|
|
55
|
+
*/
|
|
56
|
+
subject?: string;
|
|
52
57
|
sessionId: string;
|
|
53
58
|
memoryScope?: string;
|
|
54
59
|
/** 142-S4:the SHAPE-VALIDATED **且已归一(小写)** 的 `body.projectId`(authorizer 的 core
|
|
@@ -94,10 +99,7 @@ export interface ServiceCoreDeps {
|
|
|
94
99
|
* 不带 ⇒ 现铸并登记)。省掉是编译错;绕过类型造的 deps 在 {@link createHttpServer} 入口拒启。单用户嵌入传
|
|
95
100
|
* `createAuthorizer(config, runner.sessions)`(包根导出)—— 店没有属主读时它退化为只派 principal 与会话 id。
|
|
96
101
|
*/
|
|
97
|
-
authorize: (ctx:
|
|
98
|
-
req: IncomingMessage;
|
|
99
|
-
body: TaskRequestBody;
|
|
100
|
-
}) => Promise<RequestAuth>;
|
|
102
|
+
authorize: (ctx: AuthorizeInput) => Promise<RequestAuth>;
|
|
101
103
|
/**
|
|
102
104
|
* Map an inbound request body + resolved auth to a TaskSpec. The SERVICE/deployment owns model
|
|
103
105
|
* + tools + mcp here (callers only supply content). `auth` carries the principal-derived memory scope —
|
|
@@ -240,7 +242,8 @@ export interface ServiceStoreDeps {
|
|
|
240
242
|
/** §0.5 session-ownership: the durable session abstraction (`SessionRepo`-style) the service OWNS — session
|
|
241
243
|
* IDENTITY/enumeration (E16 list) + lifecycle (E17 fork, E21 history delete) come from HERE, not the
|
|
242
244
|
* `task_run` runs ledger. When it carries `listSessions`, GET /v1/sessions sources sessions from the session
|
|
243
|
-
* store (task_run only joins for run
|
|
245
|
+
* store (task_run only joins for the run-derived half of the row); without it the list answers 501 — the run store is
|
|
246
|
+
* not a session lister. `fork` enables the fork route; the delete route rides `purgeSession` (the coordinator over the one session eraser). */
|
|
244
247
|
sessionStorage?: OwnerAwareSessionStore;
|
|
245
248
|
/**
|
|
246
249
|
* [ref] —— 跨会话车道的**发现席**(core `RunnerDeps.peerDirectory`),与 `RunnerDeps` 侧**同一个对象**
|
|
@@ -287,7 +290,7 @@ export interface ServiceStoreDeps {
|
|
|
287
290
|
* 已配 AND 有 store backend(main.ts 建;写点在两条 send lane 的 withLedgerRecording)。 */
|
|
288
291
|
sendFileLedger?: import("../plugins/send-file-ledger.js").SendFileLedger;
|
|
289
292
|
/** [ref] 用户输入受理账本(「200 applied」受理的影子;单写者 = `src/user-input-ledger.ts` 的活对象,boot 装配在 stage-07 并跑一次收敛)。
|
|
290
|
-
* 在场 ⇔ 有 store backend(生产恒与 `runStore` 同源于 backend)。消费点:steer 的 live 腿 /
|
|
293
|
+
* 在场 ⇔ 有 store backend(生产恒与 `runStore` 同源于 backend)。消费点:steer 的 live 腿 / 同步子代的 steer([ref])受理前写 `accepted`(写不进 ⇒ 503
|
|
291
294
|
* `steering.ledger_unavailable`)、三条 run 腿开通告口那一拍铸 `crashed` 通告并在收场时 settle、`GET /v1/sessions/:id` 的
|
|
292
295
|
* `userInputUndrained` 读面。缺席只出现在不接 backend 的 stub-harness 上(那时没有这一面,行为与修前逐字相同)。 */
|
|
293
296
|
userInputLedger?: import("../user-input-ledger.js").UserInputLedger;
|
|
@@ -377,8 +380,8 @@ export interface ServiceCoordinatorDeps {
|
|
|
377
380
|
sessionTitler?: import("../session-titler.js").SessionTitler;
|
|
378
381
|
}
|
|
379
382
|
/** **函数/构件缝**:main.ts 把跨多个子系统的动作编译成一个可调用面交给路由(路由不该自己
|
|
380
|
-
* 重组零件——见 backend 的同款论证)。parked-revive
|
|
381
|
-
*
|
|
383
|
+
* 重组零件——见 backend 的同款论证)。parked-revive 两件是同族的构件缝(按行解析的赎回面工厂 +
|
|
384
|
+
* 父约束重建器),与 backgroundAgentStore 齐备才构成赎回腿。 */
|
|
382
385
|
export interface ServiceSeamDeps {
|
|
383
386
|
/**
|
|
384
387
|
* device lane 的 WS 汇聚端(design/device-executor-lane-v2 §5,车A-3)—— 本仓**首个** WS 服务端。
|
|
@@ -389,7 +392,7 @@ export interface ServiceSeamDeps {
|
|
|
389
392
|
* ——两者刻意不在这里自动耦合,因为 §8-R7 的顺序(新提交 503 → 新 upgrade 拒 → 停发新指令 →
|
|
390
393
|
* 在途结果照收 → 才断连)是**部署编排**的语义,不是 HTTP 层能自作主张的。
|
|
391
394
|
*
|
|
392
|
-
* 🔴
|
|
395
|
+
* 🔴 **当前生产装配恒缺席,这是有意的**:车A-3 只交汇聚端与这条
|
|
393
396
|
* 挂载缝;`main.ts` 侧的真装配(建店 → 建 hub → 传这个键 → 与 `drainState` 联动 → 与
|
|
394
397
|
* `REMOTE_EXEC=device` 拒启门对齐)属**车A-4/端点车**。在那之前本键只有测试口消费,不是死枝。
|
|
395
398
|
*/
|
|
@@ -421,25 +424,21 @@ export interface ServiceSeamDeps {
|
|
|
421
424
|
* 缺席 = 本部署不是 host 车道(没有工厂读这一格)⇒ 提交点 no-op。装配 = `boot/stage-10-http-server.ts`(host 车道才给)。
|
|
422
425
|
*/
|
|
423
426
|
bindSessionInheritEnv?: import("./session-inherit-env.js").SessionInheritEnvCommitCtx["bindSessionInheritEnv"];
|
|
427
|
+
/**
|
|
428
|
+
* 会话登记簿四表(cwd / shellEnv / inheritEnv / 属主,`boot/execution-env.ts` `createSessionScopedRegistries` 的 `dropSessionOf`)按**住客**清掉一只 ——
|
|
429
|
+
* 记下的住客恰是交来的化身才清、答 `true`。读者只有提交出口(`submission-exit.ts`):被拒提交铸下的会话撤回之后清(同 id 的下一位已登记、写下的条目不动)。
|
|
430
|
+
* 缺席(夹具 / 嵌入方没接)⇒ 本部署没有那几张表。
|
|
431
|
+
*/
|
|
432
|
+
dropSessionScopedOf?: (sessionId: string, incarnation: string) => boolean;
|
|
424
433
|
/** Audit回溯: current context (+ summary) for a session, plus its owner. Enables GET /v1/sessions/:id. `opts.reader` (the
|
|
425
434
|
* verified identity reading the view) ⇒ user message rows carry the rewind handle `taskId` (`audit.ts` `buildRewindHandles`);
|
|
426
435
|
* an embedder's one-parameter implementation stays assignable (it simply never projects handles). */
|
|
427
436
|
sessionAudit?: (sessionId: string, opts?: import("../audit.js").SessionAuditReadOpts) => Promise<({
|
|
428
437
|
owner: string | null;
|
|
429
438
|
} & Record<string, unknown>) | undefined>;
|
|
430
|
-
/** E21
|
|
431
|
-
*
|
|
432
|
-
|
|
433
|
-
* pre-check), which the route maps to 409. Enables DELETE /v1/sessions/:id. Wired by main.ts (all the stores). */
|
|
434
|
-
/** E21 删除协调器。三种结局:删了 / 有活跑(`{active}`,409 `conflict.session_active_run`)/ [ref]:以本会话为根的后台子代没停干净
|
|
435
|
-
* (`{childrenAlive}` = 仍活着的子代句柄,409 `conflict.session_children_alive` 的 `remaining[]`;会话记录不动)。 */
|
|
436
|
-
purgeSession?: (sessionId: string, owner: string | null) => Promise<{
|
|
437
|
-
deleted: boolean;
|
|
438
|
-
} | {
|
|
439
|
-
active: string;
|
|
440
|
-
} | {
|
|
441
|
-
childrenAlive: readonly string[];
|
|
442
|
-
}>;
|
|
439
|
+
/** E21 删除协调器(会话三态 活 → 在删 → 没了,`session-deletion.ts`):删会话的对话史与服务自己的 run 账 / 检查点 / 卸载结果等全部挂靠行,一次调用。
|
|
440
|
+
* 结局 = {@link SessionPurgeOutcome}(删了 / 不在 · 围栏判到认领 · 子代预检拒 · 被接管)。点亮 DELETE /v1/sessions/:id。 */
|
|
441
|
+
purgeSession?: (sessionId: string, owner: string | null) => Promise<SessionPurgeOutcome>;
|
|
443
442
|
/** [ref]③(b): read a BACKGROUND agent-handle child's final report / current status out of the core
|
|
444
443
|
* TaskRegistry (the same face the TaskOutput tool reads — agent handles are NEVER in the run store).
|
|
445
444
|
* Wired in main.ts to `defaultTaskRegistry.pollTask` (non-blocking). Access is the REGISTRATION tuple:
|
|
@@ -573,8 +572,8 @@ export interface ServiceSeamDeps {
|
|
|
573
572
|
* (`controlPlaneRoot`)。②在**挂载期**判掉(工厂返 undefined)。这一族的理由比合规两口更硬:清标的
|
|
574
573
|
* 写前托管行(`OriginClearanceRow.entryText`)在墓碑已落、重录未成的崩溃窗内是那条记忆**唯一的一份**
|
|
575
574
|
* ——落在副本本地盘上 = pod 重建即永久丢失。全文见 src/memory-operator-faces.ts 头注。
|
|
576
|
-
* 🔴 `listClearances`
|
|
577
|
-
* `ControlPlaneCorruptError` —— 那是 fail-closed
|
|
575
|
+
* 🔴 `listClearances` 答 `Promise`(core 7.66.0 [ref] 起引擎经治理店读那份账),账本损坏时**拒**
|
|
576
|
+
* `ControlPlaneCorruptError` —— 那是 fail-closed 信号,不是空数组(路由在 try 内 await)。 */
|
|
578
577
|
memoryOriginFace?: MemoryOriginFaces;
|
|
579
578
|
/** [ref](core 5.58.0 `runMemoryConsolidationDriver`):记忆 **consolidation 阀门**的操作面。
|
|
580
579
|
* 启用 `POST /v1/admin/memory/consolidation/run` 与 `GET /v1/admin/memory/consolidation`(两口 operator-only)。
|
|
@@ -631,11 +630,6 @@ export interface ServiceSeamDeps {
|
|
|
631
630
|
* 🔴 **在场 ⇒ `sessionStorage` 必须带执行席 `executionPlacement`**:认领之后对根会话住客的唯一判官是执行席上的写口;缺 ⇒ `createHttpServer` 拒启
|
|
632
631
|
* (句子 = `PARKED_REVIVE_EXECUTION_SEAT_REQUIRED`)。 */
|
|
633
632
|
parkedReviveSurface?: import("../parked-revive-surface.js").ParkedReviveSurfaceFactory;
|
|
634
|
-
/** 可选第三件:revive args 的 `subagent_type` roster 成员集([ref] Q1 成员性规则)。当前生产装配
|
|
635
|
-
* **恒缺席**(boot 内建 default 无自定义 agents roster,per-request 的 spec.agents 不进 boot 工具)
|
|
636
|
-
* = 恒省略 subagent_type,typed 子代按 general-purpose 形复活(保真度 caveat 已报 core,[ref]
|
|
637
|
-
* 批复审 G-F1;center roster 接线是候件,字段先留给它与测试口)。 */
|
|
638
|
-
parkedKnownAgentTypes?: ReadonlySet<string>;
|
|
639
633
|
/** [ref]/[ref] 跨进程父约束重供:decide 腿按部署配置重建 host 任务的同语义父策略链(exempt 锚=
|
|
640
634
|
* row.rootSessionId),经 core 1.396 的 `parkedResume.inheritedGate` 席位透传——缺席时重启后带
|
|
641
635
|
* requiresParentConstraint 的 parked checkpoint 恒被 core pre-CAS 门诚实拒(不可赎回)。
|
|
@@ -698,14 +692,14 @@ export interface ServiceDeploymentDeps {
|
|
|
698
692
|
* (内建 details+center 条目同判定源盖同名)。absent = 404(与 capabilities 缺席同姿势)。 */
|
|
699
693
|
scenarioDetails?: Record<string, import("../capabilities/scenarios.js").ScenarioDetail>;
|
|
700
694
|
/** Honest /health `sessionBackend` label — the wiring coerces the config enum to "tidb"
|
|
701
|
-
* (meaning "
|
|
702
|
-
* main.ts passes the
|
|
703
|
-
* same derivation as the boot `listening` log). Absent → fall back to the raw config enum. */
|
|
695
|
+
* (meaning "the backend's store, generically"), which on a pg deployment reads as SQL-TiDB and misleads triage.
|
|
696
|
+
* main.ts passes the backend KIND the session store landed on (`pg` / `mysql` / `local` / "memory", `sessionStoreLabelOf`,
|
|
697
|
+
* same derivation as the boot `listening` log) — the kind only; durability is `/health.store.durability`. Absent → fall back to the raw config enum. */
|
|
704
698
|
sessionStoreLabel?: string;
|
|
705
|
-
/** S5 → [ref] ①:持久化姿态的**唯一**装配值(`store-posture.ts`,`boot/stores.ts` 铸):`/health` 的 `storeDegraded`
|
|
706
|
-
*
|
|
707
|
-
* 缺席 = 这个进程不是由 composition root 装起来的(测试夹具形)⇒ `/health` 不带降级位、caps `
|
|
708
|
-
* (`declared` = 配置词,`backend:"memory"` —— 本面不知道任何装出来的后端)。 */
|
|
699
|
+
/** S5 → [ref] ①:持久化姿态的**唯一**装配值(`store-posture.ts`,`boot/stores.ts` 铸):`/health` 的 `storeDegraded`(present-iff `degradedReason` 在场)
|
|
700
|
+
* 与 `store.durability`、caps `store`、诊断 `storeDurability` 同读它,gauge `store_backend_degraded` 与起服布线审计在装配点读同一只。
|
|
701
|
+
* 缺席 = 这个进程不是由 composition root 装起来的(测试夹具形)⇒ `/health` 不带降级位、caps / `/health` / 诊断取诚实下限
|
|
702
|
+
* `unwiredStorePosture`(`declared` = 配置词,`backend:"memory"` ⇒ `ephemeral` —— 本面不知道任何装出来的后端)。 */
|
|
709
703
|
storePosture?: import("../store-posture.js").StorePosture;
|
|
710
704
|
/** [ref] ②:caps `centerWiring` 的读面(`capabilities/center-wiring.ts` `createCenterWiringReader`;入参 = 请求的已验 principal)。
|
|
711
705
|
* 缺席 = 没接中心(或测试夹具)⇒ 键整个缺席。 */
|
|
@@ -715,6 +709,11 @@ export interface ServiceDeploymentDeps {
|
|
|
715
709
|
* Caps `credentialPlane.sandboxGit` calls it on every read and projects the answer as is. Absent = not built by the composition root (a fixture) ⇒
|
|
716
710
|
* the same judge on config alone, the seat counted as not asked. */
|
|
717
711
|
sandboxGitPlane?: () => import("../sandbox-git-plane.js").SandboxGitPlane;
|
|
712
|
+
/**
|
|
713
|
+
* local-docker 车道容器帽的闸的只读面(`plugins/local-docker-capacity.ts`;`DOCKER_MAX_CONTAINERS` 开着才在)。
|
|
714
|
+
* 两个读者:提交门(`run-concurrency-cap.ts`:闸里有起动在等空位 ⇒ 新提交 429 `sandbox_capacity`)与 `/health.sandboxCapacity`。缺席 ⇒ 两处都不读、形状不变。
|
|
715
|
+
*/
|
|
716
|
+
sandboxCapacity?: import("../plugins/local-docker-capacity.js").SandboxCapacityView | undefined;
|
|
718
717
|
/**
|
|
719
718
|
* 本进程起服装上的**运维声明** mod 包数(部署座装配口 `assembleDeploymentMods` 的 `loaded.length`;本服务自铸的注册不算)。一个事实两个出口,同读这一格:
|
|
720
719
|
* `/health` 的 `mods: { deploymentPackages }` 与 `/v1/capabilities` 的 `modsDeploymentPackages: true` —— 都只在 > 0 时在场;0 / 缺席(没声明,或不是由
|
package/dist/http/server.js
CHANGED
|
@@ -4,7 +4,7 @@ import { validatePendingSteer } from "@sema-agent/core";
|
|
|
4
4
|
import {} from "../web-admin-client/facade.js";
|
|
5
5
|
import { describeValueShape } from "@sema-agent/settings-schema";
|
|
6
6
|
import { HttpError } from "../security.js";
|
|
7
|
-
import { SessionForkInProgressError } from "../execution-placement.js";
|
|
7
|
+
import { SessionDeletingError, SessionForkInProgressError } from "../execution-placement.js";
|
|
8
8
|
import {} from "../memory-sync.js";
|
|
9
9
|
import {} from "../orchestration/workflow-agent-steer.js";
|
|
10
10
|
import {} from "../orchestration/workflow-completion-inbox.js";
|
|
@@ -19,14 +19,14 @@ import { cascadeConfig } from "./run-meta.js";
|
|
|
19
19
|
export { cascadeConfig };
|
|
20
20
|
import { coarseStatusForState, errorCodeForExit } from "./routes/images.js";
|
|
21
21
|
export { coarseStatusForState, errorCodeForExit };
|
|
22
|
-
import { sendError, sendHttpError, sendOpenFaceFault, logRequestError } from "./send.js";
|
|
22
|
+
import { attachResponseLogger, sendError, sendHttpError, sendOpenFaceFault, logRequestError } from "./send.js";
|
|
23
23
|
import { createRequestGuards } from "./request-guards.js";
|
|
24
24
|
import { createRunConcurrencyGate, liveRunIdsOf } from "./run-concurrency-cap.js";
|
|
25
25
|
import { sqlEngineSeatIssue } from "../sql-engine-posture.js";
|
|
26
26
|
import { parkDecisionStoreRefusal } from "../orchestration/workflow-park-decision.js";
|
|
27
27
|
import { CHECKPOINT_CTX_SEALING_REQUIRED } from "./checkpoint-ctx.js";
|
|
28
28
|
import { PARKED_REVIVE_EXECUTION_SEAT_REQUIRED } from "../parked-decide.js";
|
|
29
|
-
import { operatorDeclarationRefusal } from "../config-invariants.js";
|
|
29
|
+
import { a2aAudienceIdentityBoundaryRefusal, operatorDeclarationRefusal } from "../config-invariants.js";
|
|
30
30
|
import { retiredServiceDepsRefusal } from "./retired-service-deps.js";
|
|
31
31
|
import { createAdmission, MAX_SKILL_CONTENT_CHARS, MAX_SYSTEM_PROMPT_CHARS, MAX_OUTPUT_SCHEMA_CHARS, validateUserSkills } from "./admission.js";
|
|
32
32
|
import { createResumeLegs } from "./resume-legs.js";
|
|
@@ -34,9 +34,10 @@ import * as facts from "../capability-facts.js";
|
|
|
34
34
|
import { createDispatch } from "./dispatch.js";
|
|
35
35
|
import { routeLabel, isBillableSubmitPath, isCredentialGatedRewrite, isMethodDispatchedSubmitPath, isProbePath } from "./route-table.js";
|
|
36
36
|
import { createApprovalSweeps } from "./approval-sweeps.js";
|
|
37
|
-
export { routeLabel, isBillableSubmitPath, isCredentialGatedRewrite, isMethodDispatchedSubmitPath
|
|
37
|
+
export { routeLabel, isBillableSubmitPath, isCredentialGatedRewrite, isMethodDispatchedSubmitPath };
|
|
38
38
|
export { MAX_SKILL_CONTENT_CHARS, MAX_SYSTEM_PROMPT_CHARS, MAX_OUTPUT_SCHEMA_CHARS, validateUserSkills };
|
|
39
|
-
import { explicitOperatorOk
|
|
39
|
+
import { explicitOperatorOk } from "./principal-gate.js";
|
|
40
|
+
import { configuredIdentitySources } from "../identity-source.js";
|
|
40
41
|
export { explicitOperatorOk };
|
|
41
42
|
class DrainYieldingPreemptBook extends Map {
|
|
42
43
|
drainingNow;
|
|
@@ -83,6 +84,25 @@ export function createHttpServer(rawDeps) {
|
|
|
83
84
|
throw new Error(operatorDeclarationFailure);
|
|
84
85
|
}
|
|
85
86
|
}
|
|
87
|
+
{
|
|
88
|
+
const bridgeDeclared = configuredIdentitySources(deps.config).includes("sso");
|
|
89
|
+
const verifierWired = deps.webAdminJwtVerifier !== undefined;
|
|
90
|
+
if (verifierWired && !bridgeDeclared) {
|
|
91
|
+
throw new Error("createHttpServer: a webAdminJwtVerifier was injected but the config declares no auth bridge — set authBridgeIssuer (AUTH_BRIDGE_ISSUER) or configure the center (webAdmin), " +
|
|
92
|
+
"since which identity sources this deployment has is read from the config alone (the owner gates, /health.auth and the one-time migrations read it); " +
|
|
93
|
+
"refusing to start rather than verify SSO tokens on a deployment the owner gates read as having no identity boundary");
|
|
94
|
+
}
|
|
95
|
+
if (bridgeDeclared && !verifierWired) {
|
|
96
|
+
throw new Error("createHttpServer: the config declares an auth bridge (authBridgeIssuer, or the center base webAdmin.baseUrl when that is unset) but no webAdminJwtVerifier was injected — " +
|
|
97
|
+
"the service boot builds one from that same issuer; inject a verifier for it, or remove the bridge and the center from the config, " +
|
|
98
|
+
"since /health.auth, the owner gates and the one-time migrations read the bridge from the config alone; refusing to start rather than report SSO sign-in that verifies nobody");
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
{
|
|
102
|
+
const audienceBoundaryFailure = a2aAudienceIdentityBoundaryRefusal(deps.config.a2aServe, configuredIdentitySources(deps.config).length === 0);
|
|
103
|
+
if (audienceBoundaryFailure !== undefined)
|
|
104
|
+
throw new Error(audienceBoundaryFailure);
|
|
105
|
+
}
|
|
86
106
|
{
|
|
87
107
|
const issue = sqlEngineSeatIssue(deps.backend, deps.sqlEngine);
|
|
88
108
|
if (issue !== undefined) {
|
|
@@ -165,10 +185,10 @@ export function createHttpServer(rawDeps) {
|
|
|
165
185
|
const cs = deps.checkpointStore;
|
|
166
186
|
if (!cs)
|
|
167
187
|
return false;
|
|
168
|
-
const scope = await cs.peekPendingScope(sessionId);
|
|
188
|
+
const scope = await cs.peekPendingScope(sessionId, { axis: "run" });
|
|
169
189
|
if (scope === null || scope === undefined)
|
|
170
190
|
return false;
|
|
171
|
-
const token = await cs.findPendingTokenBySession(sessionId, scope);
|
|
191
|
+
const token = await cs.findPendingTokenBySession(sessionId, scope, { axis: "run" });
|
|
172
192
|
if (!token)
|
|
173
193
|
return false;
|
|
174
194
|
return await cs.setPendingSteer(token, scope, { text, trusted: false });
|
|
@@ -178,13 +198,14 @@ export function createHttpServer(rawDeps) {
|
|
|
178
198
|
}
|
|
179
199
|
};
|
|
180
200
|
}
|
|
181
|
-
const { quotaExceeded, ownerCostQuotaDenied, ownerFleetLeaseDenied, ownerLeaseDenied, ownerQuotaDenied, leaseDenied, usageWindowDenialFor, usageWindowDenied, rateLimited, safeDecode,
|
|
201
|
+
const { quotaExceeded, ownerCostQuotaDenied, ownerFleetLeaseDenied, ownerLeaseDenied, ownerQuotaDenied, leaseDenied, usageWindowDenialFor, usageWindowDenied, rateLimited, safeDecode, readJson, readRawBody } = createRequestGuards({ deps });
|
|
182
202
|
const { prepareSpec } = createAdmission({ deps, readJson, runnerFor });
|
|
183
203
|
const { admitRun } = createRunConcurrencyGate({ deps, inflightRuns, steerableRuns });
|
|
184
|
-
const { routeCtxBase, resumeCheckpoint, driveResumeIntoRunLog, driveResumeLeg,
|
|
185
|
-
const { denyExpiredApprovals, redeemParkedAsk } = createApprovalSweeps({ deps, resumeCheckpoint,
|
|
204
|
+
const { routeCtxBase, resumeCheckpoint, driveResumeIntoRunLog, driveResumeLeg, decisionRowAdmits, resumePreempted, startFreshHostTurn, resumeWake, sessionNotifyDoor } = createResumeLegs({ deps, runnerFor, idemCache, inflightRuns, preemptableRuns, steerableRuns, wakeParkMints, counters, readJson, readRawBody, rateLimited, quotaExceeded, ownerQuotaDenied, leaseDenied, ownerLeaseDenied, usageWindowDenied, admitRun, safeDecode, prepareSpec, finalizeTaskResult, ownerCostQuotaDenied, ownerFleetLeaseDenied, usageWindowDenialFor });
|
|
205
|
+
const { denyExpiredApprovals, redeemParkedAsk } = createApprovalSweeps({ deps, resumeCheckpoint, decisionRowAdmits });
|
|
186
206
|
const { handle } = createDispatch({ deps, noteActivity, routeCtxBase, counters });
|
|
187
207
|
const server = http.createServer((req, res) => {
|
|
208
|
+
attachResponseLogger(res, deps.logger);
|
|
188
209
|
void handle(req, res).catch((err) => {
|
|
189
210
|
if (err instanceof HttpError) {
|
|
190
211
|
if (!res.headersSent)
|
|
@@ -202,6 +223,10 @@ export function createHttpServer(rawDeps) {
|
|
|
202
223
|
sendError(res, 409, err.code, err.message);
|
|
203
224
|
return;
|
|
204
225
|
}
|
|
226
|
+
if (err instanceof SessionDeletingError) {
|
|
227
|
+
sendError(res, 409, err.code, err.message);
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
205
230
|
sendOpenFaceFault(res, err);
|
|
206
231
|
});
|
|
207
232
|
});
|
|
@@ -234,7 +259,7 @@ export function createHttpServer(rawDeps) {
|
|
|
234
259
|
recordTaskResult(result);
|
|
235
260
|
deps.planCacheProbe?.record(principal, objective, result.terminal.kind === "completed");
|
|
236
261
|
}
|
|
237
|
-
const isRunLiveOnThisReplica = (taskId) => inflightRuns
|
|
262
|
+
const isRunLiveOnThisReplica = (taskId) => liveRunIdsOf(inflightRuns, steerableRuns).has(taskId);
|
|
238
263
|
return Object.assign(server, { denyExpiredApprovals, isRunLiveOnThisReplica, redeemParkedAsk, sessionNotifyDoor });
|
|
239
264
|
}
|
|
240
265
|
//# sourceMappingURL=server.js.map
|
package/dist/http/sse-log.d.ts
CHANGED
|
@@ -8,13 +8,16 @@
|
|
|
8
8
|
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
9
9
|
export interface SseLogProvider<E extends {
|
|
10
10
|
seq: number;
|
|
11
|
+
}, R extends {
|
|
12
|
+
status: string;
|
|
13
|
+
} = {
|
|
14
|
+
status: string;
|
|
11
15
|
}> {
|
|
12
|
-
/** The coarse terminality status
|
|
13
|
-
* caller already 404'd existence before opening the stream, so this is the in-flight terminal poll).
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
} | null | undefined>;
|
|
16
|
+
/** The log's row as the provider answers it (the coarse terminality status rides on it). Undefined/null ⇒ unknown id (the
|
|
17
|
+
* caller already 404'd existence before opening the stream, so this is the in-flight terminal poll).
|
|
18
|
+
* 🔴 **本泵不看钟**:「这条日志的写者死了没」不是泵的问题 —— 行答 `running` 就接着 tail,行答别的就收尾。run 日志的 provider 交回的是
|
|
19
|
+
* 过了观察口的行(心跳过期 ⇒ 当场落死亡判决,行随之不再 `running`);bake 日志的 provider 在自己这一侧折叠(它的判据是 bake 的,另票收)。 */
|
|
20
|
+
statusOf(id: string): Promise<R | null | undefined>;
|
|
18
21
|
/** Events with seq strictly greater than `after`, ascending. */
|
|
19
22
|
getEvents(id: string, after: number): Promise<E[]>;
|
|
20
23
|
/** Map ONE event to its SSE frame (the `id:`/`event:`/`data:` lines differ per log). */
|
|
@@ -23,11 +26,13 @@ export interface SseLogProvider<E extends {
|
|
|
23
26
|
event: string;
|
|
24
27
|
data: unknown;
|
|
25
28
|
};
|
|
26
|
-
/**
|
|
27
|
-
|
|
29
|
+
/** 这一行账本是不是一帧**终帧**(本连接投过它 ⇒ 收尾时不再合成)。 */
|
|
30
|
+
isTerminalEvent(ev: E): boolean;
|
|
31
|
+
/** 行不再 `running`、剩余事件写完之后的**收尾帧**(从行合成;`deliveredTerminal` = 本连接已投过一帧账本终帧);交回 `undefined` ⇒ 不写。 */
|
|
32
|
+
closingFrameOf(row: R, deliveredTerminal: boolean): {
|
|
28
33
|
event: string;
|
|
29
34
|
data: unknown;
|
|
30
|
-
};
|
|
35
|
+
} | undefined;
|
|
31
36
|
/**
|
|
32
37
|
* [ref] 车3 §5:**开流 preamble** —— 在 `sseHeaders` **之后**、日志 tail **之前**写的
|
|
33
38
|
* 一批**非账本**帧(今天唯一的用户 = 审批未决卡的全量对账基准)。
|
|
@@ -84,6 +89,8 @@ export declare function collectSsePreamble<F>(preamble: (signal: AbortSignal) =>
|
|
|
84
89
|
* 是一句谎。续读语义因此只有一句:投 `seq > from` 的每一行(缺的行就是缺的,不补、不猜)。 */
|
|
85
90
|
export declare function streamSseLog<E extends {
|
|
86
91
|
seq: number;
|
|
87
|
-
}
|
|
92
|
+
}, R extends {
|
|
93
|
+
status: string;
|
|
94
|
+
}>(req: IncomingMessage, res: ServerResponse, provider: SseLogProvider<E, R>, id: string): Promise<void>;
|
|
88
95
|
export declare function sleep(ms: number): Promise<void>;
|
|
89
96
|
//# sourceMappingURL=sse-log.d.ts.map
|
package/dist/http/sse-log.js
CHANGED
|
@@ -31,7 +31,7 @@ export async function collectSsePreamble(preamble, onFailure, timeoutMs = SSE_PR
|
|
|
31
31
|
clearTimeout(timer);
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
-
export async function streamSseLog(req, res, provider, id
|
|
34
|
+
export async function streamSseLog(req, res, provider, id) {
|
|
35
35
|
const lastId = Number(req.headers["last-event-id"] ?? new URL(req.url ?? "", "http://x").searchParams.get("from") ?? 0);
|
|
36
36
|
let from = Number.isFinite(lastId) ? lastId : 0;
|
|
37
37
|
sseHeaders(res);
|
|
@@ -49,11 +49,14 @@ export async function streamSseLog(req, res, provider, id, staleMs) {
|
|
|
49
49
|
}
|
|
50
50
|
const start = Date.now();
|
|
51
51
|
let lastBeat = Date.now();
|
|
52
|
+
let deliveredTerminal = false;
|
|
52
53
|
const write = (events) => {
|
|
53
54
|
for (const ev of events) {
|
|
54
55
|
const f = provider.formatEvent(ev);
|
|
55
56
|
res.write(`id: ${f.id}\nevent: ${f.event}\ndata: ${JSON.stringify(f.data)}\n\n`);
|
|
56
57
|
from = ev.seq;
|
|
58
|
+
if (provider.isTerminalEvent(ev))
|
|
59
|
+
deliveredTerminal = true;
|
|
57
60
|
}
|
|
58
61
|
};
|
|
59
62
|
while (!closed) {
|
|
@@ -63,12 +66,9 @@ export async function streamSseLog(req, res, provider, id, staleMs) {
|
|
|
63
66
|
break;
|
|
64
67
|
if (row.status !== "running") {
|
|
65
68
|
write(await provider.getEvents(id, from));
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
if (stale && events.length === 0) {
|
|
70
|
-
const sf = provider.staleFrame();
|
|
71
|
-
res.write(`event: ${sf.event}\ndata: ${JSON.stringify(sf.data)}\n\n`);
|
|
69
|
+
const closing = provider.closingFrameOf(row, deliveredTerminal);
|
|
70
|
+
if (closing)
|
|
71
|
+
res.write(`event: ${closing.event}\ndata: ${JSON.stringify(closing.data)}\n\n`);
|
|
72
72
|
break;
|
|
73
73
|
}
|
|
74
74
|
if (Date.now() - start > SSE_MAX_STREAM_MS) {
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import type { PermissionMode } from "@sema-agent/core";
|
|
11
11
|
import { type Autonomy } from "../runtime-governance.js";
|
|
12
|
+
import { type InertToolListEntry } from "../rule-entry-list.js";
|
|
12
13
|
import { type ExecutionConfigRootDeployment } from "../execution-config-root.js";
|
|
13
14
|
import { type UnreadMembersDeployment } from "../unread-request-members.js";
|
|
14
15
|
import { type ModelApiKeyEnvTable } from "../server-secret-env.js";
|
|
@@ -23,6 +24,17 @@ export declare function permissionModeReadingUnstated(ctx: CheckpointCtx, floor:
|
|
|
23
24
|
stored: PermissionMode | undefined;
|
|
24
25
|
floor: PermissionMode;
|
|
25
26
|
} | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* 存体里 `settings.permissions.deny` / `ask`(规则编译器读的收紧表)有永远不生效的条目(名字层:退役名 / 短名 / 铸不出的段 / 近似名;core 的规则文法:括号 / 内容文法 / 主字段……;
|
|
29
|
+
* `~/` 形而这个部署解不出 home),或三桶里 user 层的 `/` 形规则而这个部署读不出执行环境的配置根 —— 拒点是 `applyTaskSettings`(422,在 `resolveSpec` 里),那一拍 plan_review 的一次性 nonce 已烧、终态 steer 的唤醒卡已铸、SLA 拒扫跳不过;所以预判也问一遍。
|
|
30
|
+
* **同一只函数**:拒点调的 `task-settings.ts` `rulePolicyBucketsRefusal`(同一张桶序表 `RULE_POLICY_BUCKETS`、同一张名册、同一句、同一条完整序:名字层 + 文法 → `~/` 要 home)。
|
|
31
|
+
* 两腿的输入差只有**任务根那一集声明给文法的路径基**(拒点有任务根 + home,预判一个也不声明;core 的规则文法对没声明的基不下判词 ⇒ 逐字同句);**home 同源**:`executionLaneHomeDir(config)` 是
|
|
32
|
+
* `resolve-spec.ts` 铸 `pathBases.home` 的那一个函数,预判拿同一份部署配置算(缺席就不铸键);**配置根同源**:`executionConfigRootOf(config)`,两腿都把它声明成配置根那一集的根(同判同句)。命中 ⇒ 码取 `SETTINGS_RULE_REFUSAL_CODE`(拒点 422 体的码,与续跑腿折出来的 `blockedBy` 同一个),句子 = 前缀 + 拒点那一句(逐字),体另带与提交口 422 同一只铸点的 `field` + `detail.problems`。
|
|
33
|
+
* 调用前桶门({@link storedPermissionBucketRefusal})已过:这里读到的桶都是合条目律的数组(纯串或带层条目)、不超帽。
|
|
34
|
+
* **两个调用方**:本文件的存量体重放预判(续跑腿折 409),与新提交的铸前块(`request-form.ts`,422)—— 判据只读请求与部署配置(任务根那一集不声明),
|
|
35
|
+
* 所以新提交在授权器铸会话之前就答得出;要任务根才判得出的那一类留在拒点(装配期,铸点之后)。
|
|
36
|
+
*/
|
|
37
|
+
export declare function ruleTablesRefusalWithoutTaskRoot(body: unknown, deployment: ExecutionConfigRootDeployment): InertToolListEntry | undefined;
|
|
26
38
|
/**
|
|
27
39
|
* 预判读的部署配置:`autonomy`(模式词问的模式词地板)、执行车道的 home 两位(`~/` 形规则那一问)、配置根的几位(user 设置层 `/` 规则那一问)与「请求成员读不出」那一问的
|
|
28
40
|
* 租户轴 / 两只注入闸的否决位。`ServiceConfig` 结构上满足,四个问点传 `deps.config` 整份。
|
|
@@ -40,7 +40,7 @@ function storedTightenOnlySeatRefusal(body) {
|
|
|
40
40
|
return undefined;
|
|
41
41
|
return replayInertEntry(tightenOnlySeatField(issue.seat), "deny", BUCKET_GATE_CODE, issue.message, { ...issue.fields });
|
|
42
42
|
}
|
|
43
|
-
function
|
|
43
|
+
export function ruleTablesRefusalWithoutTaskRoot(body, deployment) {
|
|
44
44
|
const permissions = storedPermissions(body);
|
|
45
45
|
if (permissions === undefined)
|
|
46
46
|
return undefined;
|
|
@@ -84,7 +84,7 @@ export function storedBodyReplayRefusal(ctx, deployment) {
|
|
|
84
84
|
const unread = unreadRequestMembers({ settings: ctx.body.settings, mcpServers: ctx.body.mcpServers, a2aPeers: ctx.body.a2aPeers }, deployment, { replay: true, today, storedToolAxes: storedToolAxesRereadM19(today) });
|
|
85
85
|
if (unread.length > 0)
|
|
86
86
|
return { kind: "unread_members", refusal: unreadRequestMembersRefusal(unread), members: unread.slice(0, MAX_NAMED_MEMBERS), memberCount: unread.length };
|
|
87
|
-
const entry =
|
|
87
|
+
const entry = ruleTablesRefusalWithoutTaskRoot(ctx.body, deployment);
|
|
88
88
|
if (entry !== undefined)
|
|
89
89
|
return { kind: "inert_tool_list", entry };
|
|
90
90
|
const mode = permissionModeReadingUnstated(ctx, autonomyModeFloor(deployment.autonomy));
|