@sema-agent/server 7.147.0 → 7.149.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/MIGRATION.md +1468 -24
- package/README.md +35 -7
- package/README.zh-CN.md +18 -8
- package/USAGE.md +444 -193
- 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/approval-card.d.ts +36 -38
- package/dist/approval-gate-currency.js +3 -2
- package/dist/approval-leg-origin.d.ts +33 -0
- package/dist/approval-leg-origin.js +4 -0
- 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 +9 -15
- package/dist/auth-bridge.js +4 -11
- package/dist/auth-keys.d.ts +10 -1
- package/dist/auth-keys.js +8 -0
- 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 +47 -42
- package/dist/boot/execution-lane.d.ts +6 -4
- package/dist/boot/execution-lane.js +3 -1
- 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-delivery.d.ts +3 -2
- 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 +60 -70
- 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 +14 -5
- 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.d.ts +1 -0
- package/dist/boot/stage-01-config.js +13 -4
- package/dist/boot/stage-02-web-admin-pull.d.ts +2 -0
- package/dist/boot/stage-02-web-admin-pull.js +16 -3
- package/dist/boot/stage-03-store-backend.d.ts +4 -0
- package/dist/boot/stage-03-store-backend.js +4 -3
- package/dist/boot/stage-04-stores.d.ts +3 -0
- package/dist/boot/stage-04-stores.js +2 -2
- package/dist/boot/stage-05-execution-env.d.ts +8 -3
- package/dist/boot/stage-05-execution-env.js +2 -2
- package/dist/boot/stage-06-runners.d.ts +12 -13
- package/dist/boot/stage-06-runners.js +23 -15
- package/dist/boot/stage-07-capability-layer.d.ts +13 -9
- package/dist/boot/stage-07-capability-layer.js +5 -3
- package/dist/boot/stage-08-reapers.d.ts +13 -9
- package/dist/boot/stage-08-reapers.js +3 -3
- package/dist/boot/stage-09-leader.d.ts +14 -16
- package/dist/boot/stage-09-leader.js +12 -4
- package/dist/boot/stage-10-http-server.d.ts +14 -16
- 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 +6 -0
- package/dist/boot/stores.js +41 -27
- 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 +39 -11
- package/dist/capability-facts.js +35 -7
- package/dist/card-settle-stored-scope.d.ts +56 -0
- package/dist/card-settle-stored-scope.js +27 -0
- package/dist/card-void.d.ts +8 -13
- package/dist/card-void.js +2 -7
- package/dist/center-credential-renewer.d.ts +6 -2
- package/dist/center-credential-renewer.js +7 -3
- package/dist/config-catalog.d.ts +28 -1
- package/dist/config-catalog.js +95 -85
- package/dist/config-dir-trust.d.ts +37 -4
- package/dist/config-dir-trust.js +88 -44
- package/dist/config-invariants.d.ts +43 -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 +62 -21
- package/dist/config.d.ts +14 -21
- package/dist/config.js +141 -64
- package/dist/context-window-notice.d.ts +31 -0
- package/dist/context-window-notice.js +28 -0
- 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 +46 -11
- package/dist/deployment-shape.js +8 -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-name-allowlist-knobs.d.ts +6 -5
- package/dist/env-name-allowlist-knobs.js +5 -0
- package/dist/env-witness.d.ts +7 -0
- package/dist/env-witness.js +16 -0
- package/dist/execution-lane-caps.d.ts +25 -23
- package/dist/execution-lane-caps.js +18 -26
- 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/command-spawn.d.ts +7 -2
- package/dist/hooks/command-spawn.js +13 -6
- package/dist/hooks/hook-llm.d.ts +5 -1
- package/dist/hooks/hook-llm.js +24 -15
- package/dist/hooks/hook-runner.d.ts +72 -57
- package/dist/hooks/hook-runner.js +271 -193
- 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 +76 -79
- package/dist/http/approval-sweeps.d.ts +3 -3
- package/dist/http/approval-sweeps.js +56 -31
- 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 +16 -8
- package/dist/http/claimed-run.js +8 -0
- package/dist/http/dispatch.d.ts +8 -1
- package/dist/http/dispatch.js +78 -30
- package/dist/http/durable-run-leg.d.ts +11 -4
- package/dist/http/durable-run-leg.js +45 -21
- package/dist/http/execution-context.d.ts +122 -47
- package/dist/http/execution-context.js +135 -43
- 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 +392 -67
- package/dist/http/owner-access.js +370 -35
- package/dist/http/principal-gate.d.ts +39 -89
- package/dist/http/principal-gate.js +26 -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 +46 -12
- package/dist/http/resume-ctx-read.js +31 -6
- package/dist/http/resume-legs.d.ts +54 -19
- package/dist/http/resume-legs.js +408 -196
- package/dist/http/retired-skill-manifest.d.ts +1 -1
- package/dist/http/route-ctx.d.ts +31 -32
- package/dist/http/routes/a2a-serve.d.ts +43 -5
- package/dist/http/routes/a2a-serve.js +60 -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 -67
- 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 +16 -19
- 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 +29 -3
- package/dist/http/routes/diagnostics.js +49 -18
- 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 +4 -2
- package/dist/http/routes/principal-inbox.js +5 -4
- 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 +155 -237
- 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 +28 -7
- package/dist/http/routes/session-sync.js +63 -50
- 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 +237 -187
- 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 +43 -45
- package/dist/http/server.js +61 -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 +17 -8
- package/dist/http/submit-ctx.js +8 -5
- 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 +4 -1
- package/dist/index.js +2 -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/leg-facts.d.ts +7 -2
- package/dist/leg-facts.js +1 -0
- package/dist/local-store-declaration.d.ts +54 -0
- package/dist/local-store-declaration.js +59 -0
- package/dist/lsp-evict.d.ts +6 -4
- package/dist/lsp-evict.js +2 -3
- package/dist/mcp-assertion-header.d.ts +1 -1
- package/dist/mcp-assertion-header.js +1 -1
- package/dist/memory-operator-faces.d.ts +5 -4
- package/dist/memory-operator-faces.js +1 -1
- package/dist/memory-project-layer.js +1 -1
- package/dist/memory-scope.d.ts +33 -6
- package/dist/memory-scope.js +68 -19
- package/dist/memory-store-refusal.d.ts +5 -2
- package/dist/memory-sync-client.d.ts +3 -2
- package/dist/memory-sync-client.js +8 -5
- package/dist/model-compat.d.ts +17 -8
- package/dist/model-compat.js +6 -2
- package/dist/model-context-window.d.ts +57 -0
- package/dist/model-context-window.js +21 -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 +40 -20
- package/dist/model-entry-refusal.js +57 -30
- 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-reach-scope.d.ts +2 -1
- 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 +72 -40
- package/dist/observability/fail-open.js +74 -40
- package/dist/observability/logger.d.ts +22 -1
- package/dist/observability/logger.js +89 -12
- package/dist/observability/metrics.js +4 -5
- 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 +6 -2
- package/dist/observability/secret-env-scrub.d.ts +1 -1
- package/dist/observability/secret-env-scrub.js +1 -1
- 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 +36 -10
- package/dist/org-delivery-gate.js +12 -8
- 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 +532 -0
- package/dist/owner-faces.js +126 -0
- package/dist/park-row-commit.d.ts +67 -0
- package/dist/park-row-commit.js +76 -0
- package/dist/parked-decide.d.ts +76 -12
- package/dist/parked-decide.js +152 -11
- package/dist/parked-revive-surface.d.ts +14 -4
- package/dist/parked-revive-surface.js +5 -4
- package/dist/peer-directory.d.ts +7 -9
- 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 +3 -25
- package/dist/plugins/adoption-log-sql.js +23 -21
- 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 +40 -21
- package/dist/plugins/approval-ask-store-sql.js +44 -15
- package/dist/plugins/approval-exemption-skill-cutoff.d.ts +64 -0
- package/dist/plugins/approval-exemption-skill-cutoff.js +122 -0
- package/dist/plugins/approval-exemption-skill-m46.d.ts +14 -0
- package/dist/plugins/approval-exemption-skill-m46.js +21 -0
- package/dist/plugins/approval-exemption-store.d.ts +32 -2
- package/dist/plugins/approval-exemption-store.js +42 -19
- 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 +36 -18
- package/dist/plugins/ensure-schema-lock-policy.js +76 -9
- package/dist/plugins/file-run-store.d.ts +85 -32
- package/dist/plugins/file-run-store.js +177 -94
- 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 +62 -23
- package/dist/plugins/local-checkpoint-store.js +197 -77
- package/dist/plugins/local-data-dir-modes-m39.js +2 -1
- package/dist/plugins/local-data-root-admission.d.ts +52 -0
- package/dist/plugins/local-data-root-admission.js +100 -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 +29 -6
- package/dist/plugins/local-engine-high-water.js +27 -19
- package/dist/plugins/local-session-store.d.ts +458 -140
- package/dist/plugins/local-session-store.js +906 -292
- 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 +53 -36
- package/dist/plugins/memory-run-store.js +116 -88
- package/dist/plugins/one-time-migration-marker.d.ts +26 -0
- package/dist/plugins/one-time-migration-marker.js +13 -0
- package/dist/plugins/one-time-migrations.d.ts +214 -47
- package/dist/plugins/one-time-migrations.js +481 -135
- package/dist/plugins/org-delivery-quota-store.d.ts +34 -11
- package/dist/plugins/org-delivery-quota-store.js +31 -15
- package/dist/plugins/permission-rule-store-file.d.ts +3 -3
- package/dist/plugins/permission-rule-store-sql.d.ts +5 -64
- package/dist/plugins/permission-rule-store-sql.js +11 -95
- package/dist/plugins/pg-pool.d.ts +2 -32
- package/dist/plugins/pg-pool.js +24 -17
- package/dist/plugins/remote-env-device.d.ts +3 -2
- package/dist/plugins/remote-env-e2b.d.ts +8 -32
- package/dist/plugins/remote-env-e2b.js +44 -32
- package/dist/plugins/remote-env-host.d.ts +51 -17
- package/dist/plugins/remote-env-host.js +111 -42
- package/dist/plugins/remote-env-k8s.d.ts +40 -45
- package/dist/plugins/remote-env-k8s.js +111 -60
- package/dist/plugins/remote-env-local-docker.d.ts +152 -15
- package/dist/plugins/remote-env-local-docker.js +352 -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 +82 -75
- package/dist/plugins/run-store-sql.js +164 -125
- 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 +56 -0
- package/dist/plugins/scenario-prefix-switch-m42.js +56 -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 +131 -14
- package/dist/plugins/schema-consistency.js +388 -18
- package/dist/plugins/schema-drift-sentence.d.ts +10 -6
- package/dist/plugins/schema-drift-sentence.js +15 -7
- 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 +27 -20
- 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 +42 -0
- package/dist/plugins/shell-sentinel-owner-m48.js +9 -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/stop-then-start-sentence.d.ts +16 -0
- package/dist/plugins/stop-then-start-sentence.js +7 -0
- package/dist/plugins/store-backend.d.ts +99 -16
- package/dist/plugins/store-backend.js +230 -65
- package/dist/plugins/store-contracts.d.ts +123 -33
- package/dist/plugins/store-contracts.js +38 -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.d.ts +11 -6
- package/dist/plugins/tidb-pool.js +39 -18
- 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/plugins/workspace-custody.d.ts +44 -0
- package/dist/plugins/workspace-custody.js +47 -0
- 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/project-identity.d.ts +8 -7
- package/dist/project-identity.js +40 -17
- package/dist/project-layer-key.d.ts +13 -2
- package/dist/project-layer-key.js +9 -1
- package/dist/question.d.ts +13 -23
- package/dist/question.js +21 -39
- package/dist/read-deny-floor-notice.d.ts +36 -0
- package/dist/read-deny-floor-notice.js +40 -0
- package/dist/{plain-string-record.d.ts → request-declaration-disposition.d.ts} +9 -23
- package/dist/request-declaration-disposition.js +39 -0
- 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-cancel-card.d.ts +28 -0
- package/dist/run-cancel-card.js +19 -0
- package/dist/run-cancel-context.d.ts +10 -0
- package/dist/run-cancel-context.js +1 -0
- package/dist/run-local.d.ts +14 -6
- package/dist/run-local.js +117 -90
- package/dist/run-stale-default.d.ts +7 -0
- package/dist/run-stale-default.js +2 -0
- package/dist/runs.d.ts +56 -21
- package/dist/runs.js +73 -43
- 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 +55 -25
- package/dist/server-secret-env.js +75 -22
- package/dist/session-agent.d.ts +3 -2
- package/dist/session-children-retire.d.ts +13 -8
- package/dist/session-children-retire.js +9 -7
- 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/session-workspace.d.ts +3 -3
- package/dist/spec-fields.d.ts +57 -3
- package/dist/spec-fields.js +72 -51
- package/dist/store-admission.d.ts +33 -0
- package/dist/store-admission.js +49 -0
- package/dist/store-posture.d.ts +141 -20
- package/dist/store-posture.js +205 -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 +34 -29
- package/dist/stores-sql/checkpoint-store-sql.js +78 -49
- package/dist/stores-sql/file-history-store-sql.d.ts +1 -1
- package/dist/stores-sql/file-history-store-sql.js +3 -5
- 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/tool-result-store-sql.d.ts +1 -1
- package/dist/stores-sql/tool-result-store-sql.js +4 -6
- 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 +3 -8
- package/dist/task-a2a.js +28 -30
- package/dist/task-cwd.d.ts +43 -7
- package/dist/task-cwd.js +11 -0
- package/dist/task-mcp.d.ts +3 -3
- package/dist/task-mcp.js +4 -4
- package/dist/task-settings.d.ts +14 -10
- package/dist/task-settings.js +19 -7
- package/dist/terminal.d.ts +27 -43
- package/dist/terminal.js +49 -14
- package/dist/tool-approval.d.ts +173 -163
- package/dist/tool-approval.js +247 -232
- 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/engine-notice-wire.d.ts +24 -21
- package/dist/trace/engine-notice-wire.js +7 -3
- 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 +4 -31
- 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 +59 -44
- package/dist/trace/project.js +60 -26
- package/dist/trace/redact.d.ts +135 -27
- package/dist/trace/redact.js +884 -260
- package/dist/trace/self-minted-wire.d.ts +567 -20
- package/dist/trace/self-minted-wire.js +205 -24
- 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 +33 -23
- 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/docs/error-text-lexicon.json +317 -0
- package/package.json +8 -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/scripts/embed-minimal.mjs +183 -0
- package/wire-changes/server@7.148.0.json +1517 -0
- package/wire-changes/server@7.149.0.json +372 -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/plain-string-record.js +0 -70
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { effectivePermissionMode, parseTaskSettings } from "./task-settings.js";
|
|
2
|
+
import { HOST_POSTURE_REFUSED_CODE, permissionModeWriteFaceRefusal, taskInheritEnvRefusal } from "./hosted-posture.js";
|
|
3
|
+
import { HttpError, createCodedHttpError, verifiedSubject } from "./security.js";
|
|
4
|
+
import { inheritEnvFacts } from "./request-value-closure.js";
|
|
5
|
+
import { inertToolListEntryOf } from "./rule-entry-list.js";
|
|
6
|
+
import { ruleTablesRefusalWithoutTaskRoot } from "./http/stored-body-replay.js";
|
|
7
|
+
import { assertRequestMcpEntries } from "./task-mcp.js";
|
|
8
|
+
import { assertRequestA2aEntries, snapshotRequestA2a } from "./task-a2a.js";
|
|
9
|
+
import { assertRequestImages } from "./request-images.js";
|
|
10
|
+
import { partsOf } from "./owner-brands.js";
|
|
11
|
+
export function scenarioRequestedBy(headerScenario, bodyScenario) {
|
|
12
|
+
if (headerScenario === undefined)
|
|
13
|
+
return bodyScenario;
|
|
14
|
+
if (bodyScenario !== undefined && bodyScenario !== headerScenario) {
|
|
15
|
+
throw createCodedHttpError(400, "scenario_conflict", `the request body names scenario ${JSON.stringify(String(bodyScenario))} but the x-agent-scenario header names ${JSON.stringify(headerScenario)} — send one scenario (the header alone selects both the partition and the scenario)`);
|
|
16
|
+
}
|
|
17
|
+
return headerScenario;
|
|
18
|
+
}
|
|
19
|
+
export function assertInheritEnvServed(body, config) {
|
|
20
|
+
if (body.inheritEnv !== "all")
|
|
21
|
+
return;
|
|
22
|
+
const lane = config.remoteExec.provider;
|
|
23
|
+
if (lane !== "host") {
|
|
24
|
+
throw new HttpError(400, `inheritEnv:"all" applies to the host lane only (this deployment runs ${lane}) — only the host lane builds the model-driven shell's environment from this machine's own, so the declaration has no effect here; omit it (or send "scrub", the default, which every lane accepts)`, { code: "request.field_invalid", extra: inheritEnvFacts("lane_not_host") });
|
|
25
|
+
}
|
|
26
|
+
const why = taskInheritEnvRefusal(config);
|
|
27
|
+
if (why !== undefined)
|
|
28
|
+
throw new HttpError(422, why, { code: HOST_POSTURE_REFUSED_CODE });
|
|
29
|
+
}
|
|
30
|
+
export function assertToolListsReadable(body, sides) {
|
|
31
|
+
const inert = inertToolListEntryOf(body, sides);
|
|
32
|
+
if (inert !== undefined)
|
|
33
|
+
throw new HttpError(400, inert.message, { code: inert.code, ...(inert.extra !== undefined ? { extra: { ...inert.extra } } : {}) });
|
|
34
|
+
}
|
|
35
|
+
export function assertAttachmentIdsShape(raw) {
|
|
36
|
+
if (raw === undefined)
|
|
37
|
+
return;
|
|
38
|
+
if (!Array.isArray(raw) || !raw.every((x) => typeof x === "string" && x.length > 0 && x.length <= 64)) {
|
|
39
|
+
throw new HttpError(400, "`attachmentIds` must be an array of attachment ids (strings)");
|
|
40
|
+
}
|
|
41
|
+
if (raw.length > 16)
|
|
42
|
+
throw new HttpError(400, "`attachmentIds` exceeds the per-task limit (16)");
|
|
43
|
+
}
|
|
44
|
+
export function assertWriteFaceAdmitted(mode, config) {
|
|
45
|
+
const why = permissionModeWriteFaceRefusal(mode, config);
|
|
46
|
+
if (why !== undefined)
|
|
47
|
+
throw new HttpError(422, why, { code: HOST_POSTURE_REFUSED_CODE });
|
|
48
|
+
}
|
|
49
|
+
export function assertImageProfileLane(profile, config) {
|
|
50
|
+
if (profile !== undefined && config.remoteExec.provider !== "k8s") {
|
|
51
|
+
throw createCodedHttpError(501, "capability.k8s_lane_required", "sandboxImageProfile is only supported on the k8s sandbox backend");
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export function bodyImageProfileOf(body) {
|
|
55
|
+
return typeof body.sandboxImageProfile === "string" && body.sandboxImageProfile.length > 0 ? body.sandboxImageProfile : undefined;
|
|
56
|
+
}
|
|
57
|
+
export function assertRequestFormBeforeMint(body, req, config) {
|
|
58
|
+
const subject = verifiedSubject(req, config);
|
|
59
|
+
assertRequestMcpEntries(body.mcpServers);
|
|
60
|
+
assertInheritEnvServed(body, config);
|
|
61
|
+
assertToolListsReadable(body);
|
|
62
|
+
assertRequestA2aEntries(snapshotRequestA2a(body.a2aPeers, { reread: false }));
|
|
63
|
+
assertRequestImages(body.images);
|
|
64
|
+
scenarioRequestedBy(subject === undefined ? undefined : partsOf(subject).scenario, body.scenario);
|
|
65
|
+
assertAttachmentIdsShape(body.attachmentIds);
|
|
66
|
+
assertWriteFaceAdmitted(effectivePermissionMode(body, parseTaskSettings(body.settings).settings), config);
|
|
67
|
+
const ruleTables = ruleTablesRefusalWithoutTaskRoot(body, config);
|
|
68
|
+
if (ruleTables !== undefined)
|
|
69
|
+
throw new HttpError(422, ruleTables.message, { code: ruleTables.code, ...(ruleTables.extra !== undefined ? { extra: { ...ruleTables.extra } } : {}) });
|
|
70
|
+
assertImageProfileLane(bodyImageProfileOf(body), config);
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=request-form.js.map
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
import { type UrlCredentialRefusal } from "./url-credential-refusal.js";
|
|
1
|
+
import { type UrlCredentialFacts, type UrlCredentialRefusal } from "./url-credential-refusal.js";
|
|
2
|
+
/** 本座的拒:URL 凭据座的整句 + 机读位,机读位另带 `index`(条目在 `images` 里的下标)—— 与 `request-declaration-refusal.ts` 骨架上条目级拒的 `index` 同一个键、同一个意思,一份 `images` 的所有条目级拒同形。 */
|
|
3
|
+
export interface ImageUrlRefusal extends UrlCredentialRefusal {
|
|
4
|
+
readonly facts: UrlCredentialFacts & {
|
|
5
|
+
readonly index: number;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
2
8
|
/** 请求体 `images` 的 URL 座:任一条目的串值 `url` 带凭据 ⇒ 拒(整句 + 机读位),列表序第一处即答;没有 ⇒ `undefined`。`images` 不是数组 / 缺席 ⇒ `undefined`(形归受理口别的门)。 */
|
|
3
|
-
export declare function requestImageUrlRefusal(images: unknown):
|
|
9
|
+
export declare function requestImageUrlRefusal(images: unknown): ImageUrlRefusal | undefined;
|
|
4
10
|
/** fresh 提交腿的 `images` URL 门:{@link requestImageUrlRefusal} 有答案 ⇒ 同步 400(码 / 句 / 机读位原样)。 */
|
|
5
11
|
export declare function assertRequestImageUrls(bodyImages: unknown): void;
|
|
6
12
|
//# sourceMappingURL=request-image-urls.d.ts.map
|
|
@@ -15,7 +15,8 @@ export function requestImageUrlRefusal(images) {
|
|
|
15
15
|
if (found === undefined)
|
|
16
16
|
continue;
|
|
17
17
|
const at = `images[${i}]`;
|
|
18
|
-
|
|
18
|
+
const refusal = buildRequestUrlCredentialRefusal(`${at}.url`, found, inlineImageExit(at));
|
|
19
|
+
return { message: refusal.message, facts: { ...refusal.facts, index: i } };
|
|
19
20
|
}
|
|
20
21
|
return undefined;
|
|
21
22
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type DeclarationRefusal } from "./request-declaration-refusal.js";
|
|
2
|
+
/** 一次提交最多带几张图(条数帽;受理口的 `413 request.payload_too_large` 与本座骨架的撞帽拒读这一个数)。 */
|
|
3
|
+
export declare const MAX_IMAGES_PER_REQUEST = 20;
|
|
4
|
+
/** 内联字节臂的受理键(书写序即判序)。两道编译格对引擎的 `ImageInput`:引擎长出 / 退役一个键而本表没跟 ⇒ 红。 */
|
|
5
|
+
export declare const IMAGE_INLINE_KEYS: readonly ["data", "mimeType"];
|
|
6
|
+
/** URL 臂的受理键。同上两道编译格。 */
|
|
7
|
+
export declare const IMAGE_URL_KEYS: readonly ["url"];
|
|
8
|
+
/** 请求体 `images`「这份声明能不能原样交给引擎」的回答者(骨架同形):`undefined` = 能(或缺席 / `null` = 没带图)。 */
|
|
9
|
+
export declare function requestImagesRefusal(images: unknown): DeclarationRefusal | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* fresh 提交腿的 `images` 门(`boot/resolve-spec.ts`):先形(骨架的拒,码 / 句 / `unknownKeys` / 机读位原样),后 URL 凭据座({@link assertRequestImageUrls})。
|
|
12
|
+
* 形坏的 `images` 走不到凭据座 —— 凭据座读的是形已判过的条目。
|
|
13
|
+
*/
|
|
14
|
+
export declare function assertRequestImages(bodyImages: unknown): void;
|
|
15
|
+
/**
|
|
16
|
+
* 一条图片的内联字节(`data` 是串才有;条目不是对象 / 没有 `data` / 不是串 ⇒ `undefined`)。受理口的内联字节帽读它,**不自己摸条目**:帽排在形判之前,条目可能是 `null`。
|
|
17
|
+
* 条目形坏不是帽的事 —— 形判在后头答。
|
|
18
|
+
*/
|
|
19
|
+
export declare function inlineImageData(image: unknown): string | undefined;
|
|
20
|
+
//# sourceMappingURL=request-images.d.ts.map
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { describeValueShape } from "@sema-agent/settings-schema";
|
|
2
|
+
import { assertRequestImageUrls } from "./request-image-urls.js";
|
|
3
|
+
import { MAX_KEY_ECHO, keyClosureClause, scanKeyNames } from "./request-key-closure.js";
|
|
4
|
+
import { judgeDeclarationKeys, requestDeclarationRefusal, throwDeclarationRefusal } from "./request-declaration-refusal.js";
|
|
5
|
+
export const MAX_IMAGES_PER_REQUEST = 20;
|
|
6
|
+
export const IMAGE_INLINE_KEYS = ["data", "mimeType"];
|
|
7
|
+
export const IMAGE_URL_KEYS = ["url"];
|
|
8
|
+
const IMAGES_SEAT = {
|
|
9
|
+
list: "images",
|
|
10
|
+
cap: MAX_IMAGES_PER_REQUEST,
|
|
11
|
+
identify: () => "",
|
|
12
|
+
entryTail: "The request is refused rather than handing the engine an image it cannot read: an image that silently did not apply would leave the model answering without what you attached. " +
|
|
13
|
+
"Fix the entry (an image is either { data, mimeType } or { url }).",
|
|
14
|
+
declaration: "an image entry",
|
|
15
|
+
declarations: "image entries",
|
|
16
|
+
};
|
|
17
|
+
function mustBeString(key, what) {
|
|
18
|
+
return (entry) => (typeof entry[key] === "string" ? undefined : { path: key, reason: `must be a string (${what}) — got ${describeValueShape(entry[key])}` });
|
|
19
|
+
}
|
|
20
|
+
const INLINE_KEY_JUDGES = {
|
|
21
|
+
data: mustBeString("data", "the base64-encoded image bytes"),
|
|
22
|
+
mimeType: mustBeString("mimeType", 'an image MIME type such as "image/png"'),
|
|
23
|
+
};
|
|
24
|
+
const URL_KEY_JUDGES = {
|
|
25
|
+
url: mustBeString("url", "the URL the engine fetches the image from"),
|
|
26
|
+
};
|
|
27
|
+
const INLINE_KEY_SET = new Set(IMAGE_INLINE_KEYS);
|
|
28
|
+
const URL_KEY_SET = new Set(IMAGE_URL_KEYS);
|
|
29
|
+
const NO_TOLERATED_KEYS = new Set();
|
|
30
|
+
function imageEntryRefusal(entry, at) {
|
|
31
|
+
const urlArm = "url" in entry;
|
|
32
|
+
const buckets = { unknown: [], unsupported: [] };
|
|
33
|
+
scanKeyNames(Object.keys(entry), `${at}.`, urlArm ? URL_KEY_SET : INLINE_KEY_SET, NO_TOLERATED_KEYS, buckets);
|
|
34
|
+
if (buckets.unknown.length > 0) {
|
|
35
|
+
const unknownKeys = buckets.unknown.sort();
|
|
36
|
+
return {
|
|
37
|
+
errorCode: "request.body_shape",
|
|
38
|
+
message: `body: unrecognized key(s) on an image entry — refused rather than dropped, because a dropped key reads as "in effect" to the caller. ` +
|
|
39
|
+
`${keyClosureClause(unknownKeys, `unknown (not a key of the ${urlArm ? "url" : "inline-bytes"} form — check the spelling; an image is either { data, mimeType } or { url }, never both)`)}. ` +
|
|
40
|
+
`Accepted: ${[...(urlArm ? IMAGE_URL_KEYS : IMAGE_INLINE_KEYS)].join(",")}`,
|
|
41
|
+
unknownKeys: unknownKeys.slice(0, MAX_KEY_ECHO),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return urlArm ? judgeDeclarationKeys(IMAGES_SEAT, entry, at, IMAGE_URL_KEYS, URL_KEY_JUDGES) : judgeDeclarationKeys(IMAGES_SEAT, entry, at, IMAGE_INLINE_KEYS, INLINE_KEY_JUDGES);
|
|
45
|
+
}
|
|
46
|
+
export function requestImagesRefusal(images) {
|
|
47
|
+
return requestDeclarationRefusal(IMAGES_SEAT, images, imageEntryRefusal);
|
|
48
|
+
}
|
|
49
|
+
export function assertRequestImages(bodyImages) {
|
|
50
|
+
throwDeclarationRefusal(requestImagesRefusal(bodyImages));
|
|
51
|
+
assertRequestImageUrls(bodyImages);
|
|
52
|
+
}
|
|
53
|
+
export function inlineImageData(image) {
|
|
54
|
+
if (image === null || typeof image !== "object")
|
|
55
|
+
return undefined;
|
|
56
|
+
const data = image.data;
|
|
57
|
+
return typeof data === "string" ? data : undefined;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=request-images.js.map
|
|
@@ -46,7 +46,6 @@ export type NamedKeysOf<T> = {
|
|
|
46
46
|
export declare function taskBodyKeyIssue(raw: unknown): KeyClosureIssue | null;
|
|
47
47
|
declare const RUN_STEER_BODY_KEYS: readonly ["mode", "priority", "text"];
|
|
48
48
|
declare const CONTENT_STEER_BODY_KEYS: readonly ["content"];
|
|
49
|
-
declare const INTERRUPT_STEER_BODY_KEYS: readonly ["text"];
|
|
50
49
|
/** `POST /v1/runs/:id/steer` 的体形(键 = 受理集,值形由路由逐键判)。 */
|
|
51
50
|
export type RunSteerBody = {
|
|
52
51
|
readonly [K in (typeof RUN_STEER_BODY_KEYS)[number]]?: unknown;
|
|
@@ -55,14 +54,14 @@ export type RunSteerBody = {
|
|
|
55
54
|
export type ContentSteerBody = {
|
|
56
55
|
readonly [K in (typeof CONTENT_STEER_BODY_KEYS)[number]]?: unknown;
|
|
57
56
|
};
|
|
58
|
-
/**
|
|
59
|
-
export type
|
|
60
|
-
readonly [K in (typeof INTERRUPT_STEER_BODY_KEYS)[number]]?: unknown;
|
|
61
|
-
};
|
|
62
|
-
/** 送话口的体形(闭集;词外是编译错)。`interrupt` = `POST /v1/runs/:id/interrupt` 整扇门(bare 与带 `text` 两形同一张受理集)。 */
|
|
63
|
-
export type SteerBodyForm = "run" | "content" | "interrupt";
|
|
57
|
+
/** 送话口的体形(闭集;词外是编译错)。 */
|
|
58
|
+
export type SteerBodyForm = "run" | "content";
|
|
64
59
|
/** 送话口的顶层键裁决(各形同一只;`form` 选受理集)。 */
|
|
65
60
|
export declare function steerBodyKeyIssue(raw: unknown, form: SteerBodyForm): KeyClosureIssue | null;
|
|
61
|
+
/** halt 门的拒句(定长;对每一种非空体同一句)。 */
|
|
62
|
+
export declare const HALT_BODY_REFUSAL: string;
|
|
63
|
+
/** halt 门的体判:空体(`undefined` / `null` / 零键对象)⇒ `null`;其余 ⇒ 拒体(键全进 `unknownKeys`,封顶同 {@link MAX_KEY_ECHO})。 */
|
|
64
|
+
export declare function haltBodyIssue(raw: unknown): KeyClosureIssue | null;
|
|
66
65
|
declare const PRINCIPAL_INBOX_BODY_KEYS: readonly ["to", "content", "urgent"];
|
|
67
66
|
/** 受理口的体形(键 = 受理集,值形由路由逐键判)。 */
|
|
68
67
|
export type PrincipalInboxBody = {
|
|
@@ -68,11 +68,9 @@ export function taskBodyKeyIssue(raw) {
|
|
|
68
68
|
}
|
|
69
69
|
const RUN_STEER_BODY_KEYS = ["mode", "priority", "text"];
|
|
70
70
|
const CONTENT_STEER_BODY_KEYS = ["content"];
|
|
71
|
-
const INTERRUPT_STEER_BODY_KEYS = ["text"];
|
|
72
71
|
const STEER_DOORS = {
|
|
73
72
|
run: { accepted: new Set(RUN_STEER_BODY_KEYS), door: "a steer-request" },
|
|
74
73
|
content: { accepted: new Set(CONTENT_STEER_BODY_KEYS), door: "a steer-request" },
|
|
75
|
-
interrupt: { accepted: new Set(INTERRUPT_STEER_BODY_KEYS), door: "an interrupt-request" },
|
|
76
74
|
};
|
|
77
75
|
const STEER_UNSUPPORTED = {
|
|
78
76
|
keys: new Set([...UNSUPPORTED_BODY_KEYS, ...OBJECTIVE_ONLY_BODY_KEYS]),
|
|
@@ -81,6 +79,21 @@ const STEER_UNSUPPORTED = {
|
|
|
81
79
|
export function steerBodyKeyIssue(raw, form) {
|
|
82
80
|
return closedBodyKeyIssue(raw, STEER_DOORS[form].accepted, STEER_UNSUPPORTED, STEER_DOORS[form].door);
|
|
83
81
|
}
|
|
82
|
+
export const HALT_BODY_REFUSAL = "body must be empty (no body, {} or null): this door is halt — it cuts the in-flight turn and stops the run at that boundary — and takes no fields; " +
|
|
83
|
+
'to send the run a message, POST /v1/runs/:id/steer with priority:"now" (it cuts the in-flight turn first, then the run continues with that message)';
|
|
84
|
+
const NO_FIELDS = new Set();
|
|
85
|
+
export function haltBodyIssue(raw) {
|
|
86
|
+
if (raw === null || raw === undefined)
|
|
87
|
+
return null;
|
|
88
|
+
if (typeof raw !== "object" || Array.isArray(raw))
|
|
89
|
+
return { message: HALT_BODY_REFUSAL, unknownKeys: [], unsupportedKeys: [] };
|
|
90
|
+
const buckets = { unknown: [], unsupported: [] };
|
|
91
|
+
scanKeyClosure(raw, "", NO_FIELDS, NO_FIELDS, buckets);
|
|
92
|
+
if (buckets.unknown.length === 0)
|
|
93
|
+
return null;
|
|
94
|
+
buckets.unknown.sort();
|
|
95
|
+
return { message: HALT_BODY_REFUSAL, unknownKeys: buckets.unknown.slice(0, MAX_KEY_ECHO), unsupportedKeys: [] };
|
|
96
|
+
}
|
|
84
97
|
const PRINCIPAL_INBOX_BODY_KEYS = ["to", "content", "urgent"];
|
|
85
98
|
const PRINCIPAL_INBOX_UNSUPPORTED = { keys: new Set(), label: "unsupported" };
|
|
86
99
|
export function principalInboxBodyKeyIssue(raw) {
|
|
@@ -5,28 +5,19 @@
|
|
|
5
5
|
* task opts in, a budget/turns/walltime limit OR a scheduler preempt durably SUSPENDS the task (resumable via
|
|
6
6
|
* `POST /v1/assistant/tasks/:id/resume`) instead of FAILING; absent ⇒ a limit still FAILS.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* (Cross review wtyc7ist3 HIGH finding: without this, enabling RESOURCE_SUSPEND leaks a suspended VM + checkpoint on every
|
|
16
|
-
* cascade task that hits a resource limit.) The arm is the judge's session cell seen from the opt-in side: the day the engine
|
|
17
|
-
* lets a rung's pause land on a session the host's resume chain reaches (core [ref]), the judge's answer flips and this arm goes.
|
|
18
|
-
* Every other task — a verify task included — opts in alike. A verify task's implementation leg and fix rounds run on the
|
|
19
|
-
* run's own session, so the judge lifts their pause into a park of the run row (resumable through
|
|
20
|
-
* `POST /v1/assistant/tasks/:id/resume`); the verifier's own leg is built by the engine without an opt-in, so a limit there
|
|
21
|
-
* still fails that leg.
|
|
8
|
+
* Every task opts in alike — plain, verify and cascade. A limit hit inside a composition comes back to the host as a nested
|
|
9
|
+
* pause (`failed.nestedPause`, core `mapNestedSuspend`), which the host-boundary judge (`atHostBoundary`, src/terminal.ts) lifts
|
|
10
|
+
* into a park of the run row: the card is filed under the run's session (`checkpoint.host_session_id` — a verify task's
|
|
11
|
+
* implementation leg and fix rounds run on that session; a cascade rung's card records its composition leg, whose host
|
|
12
|
+
* session is the run's), so `POST /v1/assistant/tasks/:id/resume` finds it from the run and continues it through the same
|
|
13
|
+
* composition entry the run was submitted with (`resumeWithVerification` / `resumeCascade`). The verifier's own leg is built by
|
|
14
|
+
* the engine without an opt-in, so a limit there still fails that leg.
|
|
22
15
|
*/
|
|
23
16
|
export declare function resourceSuspendOptIn(opts: {
|
|
24
17
|
/** `RESOURCE_SUSPEND=true` (the worker-level switch). */
|
|
25
18
|
enabled: boolean;
|
|
26
19
|
/** `RESOURCE_SUSPEND_TTL_SEC` — 0 ⇒ core default (30d) by omitting `ttlMs`. */
|
|
27
20
|
ttlSec: number;
|
|
28
|
-
/** This task requested the cascade ladder (`body.cascade === true`). */
|
|
29
|
-
isCascade: boolean;
|
|
30
21
|
/** Multi-tenant isolation key — the SAME key durableApproval uses (the principal; "_" when auth is off). */
|
|
31
22
|
scope: string;
|
|
32
23
|
/** [ref] S-3:`RESOURCE_SUSPEND_TOTAL_TOKENS`(跨片 token 总额)。0/缺省 ⇒ 不铸键。 */
|
package/dist/resource-suspend.js
CHANGED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* core 7.66.0 [ref]([ref] 加注 1 ③)—— 请求体 `settings.permissions.neverAuto`(只有本服务读的限制表:命中的工具恒问真人;引擎不读这张表,
|
|
3
|
+
* 它编成的策略不带名单投影,引擎的名字审计看不到)上**退役且无后继**的工具名:这一行不拒、原样留着,**读这张表的本服务说那一句** ——
|
|
4
|
+
* 用户面通告 `config.legacy_tool_name`,句子与 detail 是**引擎的账**(`retiredToolNameAccount`,`detail.layer` = `host_table`,每条 `source` = 这张表的体内坐标),
|
|
5
|
+
* 本服务只在 `detail` 上加归属键 `sessionId`(core 的话:the host mints its own notice … with `sessionId` added to `detail`)。本文件是这一形的**唯一**铸点。
|
|
6
|
+
*
|
|
7
|
+
* ## 判据与句子都不在本仓
|
|
8
|
+
* 哪几行算(退役且无后继、名册里没有它的另一种大小写)= 引擎的账({@link retiredLeftOutAccount},唯一读法);句子 = 账的 `message`,逐字;
|
|
9
|
+
* 有后继的改名、无前缀短名、铸不出的对端段不在账里,照旧 422(`task-settings.ts` 的 `neverAutoNamesRefusal`,同一只判官)。
|
|
10
|
+
*
|
|
11
|
+
* ## 投递 / 去重
|
|
12
|
+
* 调用点 = `boot/resolve-spec.ts` 里请求设置编成策略之后(那张表在这一刻被读);经装配期通告口(`opts.onNotice`)收进这一腿的待投通告,
|
|
13
|
+
* 与请求腿 MCP 丢弃一族同一条投递路(白名单 / 归属 / 消毒 / 隔离一个不绕;`detail.entries[].entry` 走规则文本脱敏表 `RULE_TEXT_DETAIL_FIELDS`)。
|
|
14
|
+
* 去重单位 = **每次装配一条**(引擎自己的表是 once per audited layer per prepared task,同一个单位)。会话 id 缺席 ⇒ 不铸(无处可投,宁缺不串)。
|
|
15
|
+
* 铸者:码在 core 码册里的铸者行是 `"engine"`(引擎自己的三张表铸它);本仓这一铸是 core [ref] 为宿主自有表开的同码同句同形(铸者宿主),
|
|
16
|
+
* 铸者表一行表达不了「引擎 + 宿主」两铸,见本版收车档未闭环。
|
|
17
|
+
*/
|
|
18
|
+
import type { EngineNotice } from "@sema-agent/core";
|
|
19
|
+
/** 一次装配读到的 `neverAuto` 表 → 至多一条通告(读法见文件头)。表的 `field` = `ask`(这张表要的是「问真人」,core 的推荐形)。 */
|
|
20
|
+
export declare function buildNeverAutoRetiredNotice(names: readonly string[] | undefined, sessionId: string | undefined): EngineNotice | undefined;
|
|
21
|
+
//# sourceMappingURL=retired-name-host-notice.d.ts.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { retiredLeftOutAccount } from "./namespaced-rule-name.js";
|
|
2
|
+
import { tightenOnlySeatField } from "./tighten-only-seats.js";
|
|
3
|
+
const LEGACY_TOOL_NAME = "config.legacy_tool_name";
|
|
4
|
+
export function buildNeverAutoRetiredNotice(names, sessionId) {
|
|
5
|
+
if (names === undefined || names.length === 0 || sessionId === undefined || sessionId.length === 0)
|
|
6
|
+
return undefined;
|
|
7
|
+
const account = retiredLeftOutAccount("ask", tightenOnlySeatField("neverAuto"), names);
|
|
8
|
+
if (account === undefined)
|
|
9
|
+
return undefined;
|
|
10
|
+
return { code: LEGACY_TOOL_NAME, message: account.message, detail: { ...account.detail, sessionId } };
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=retired-name-host-notice.js.map
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* **名册只有一张**({@link TOOL_NAME_ROSTER}:引擎目录 ∪ 本仓自铸的工具名),每一处读条目名的地方都传它 —— 请求体的规则表(`settings.permissions.*`)、技能清单、选择器清单、
|
|
18
18
|
* 运维 / 中心的审批名单读同一份,没有「这一处空名册、那一处带名册」的两种读法。
|
|
19
19
|
* **读成空的哪些原因词是拒面,按方向定**:**限制侧**(读成空 = 静默放行:技能 `disallowedTools`、`excludeTools` / 子代 `denyTools`、`settings.permissions.deny` / `ask`、运维 / 中心的审批名单)四类全拒 ——
|
|
20
|
-
* 近似名 · 退役名 · 文法读不出 ·
|
|
20
|
+
* 近似名 · 退役名 · 文法读不出 · 不带内容形的工具带内容(退役名里**无后继**的那一种除外:引擎保留并通告 `config.legacy_tool_name`,判据 = 引擎的账,core 7.65.0 [ref] / 7.66.0 [ref] / [ref]);**放行侧**(读成空 = 想放的什么也没放:`settings.permissions.allow`、根 / 子代 `allowTools`、技能 `allowedTools`)**只拒近似名**
|
|
21
21
|
* ({@link allowSideReadsAsNothing}):近似名现名唯一、确定是笔误;退役名 / 内容形 / 文法读不出 / 协议名对端段通配照 7.130.0 受理、交引擎既有通告(其中选择器清单 `allowTools` 里**有后继**的退役名〔`Task` ⇒ `Agent`、`bash` ⇒ `Bash`〕core 7.52.0 起由引擎开跑前拒,不在本仓拒面;规则表上的退役名引擎照旧告运维 ——
|
|
22
22
|
* 壳转投的 CC 用户 settings 里这些极常见,尤其内容形里的 `$VAR`(`Bash(echo $HOME)`)读成 `grammar`,拒了 = 每次提交 400)。运维的 `APPROVAL_GRANT` 是运维自己的配置:任何读成空都拒启(写错了当场改)。
|
|
23
23
|
* 技能拒侧那一拒与引擎 [ref](core 7.43.0:那只技能不激活)是同一件事的两处 —— 7.118.0 重估过、本版**不退**:本仓的续跑腿把引擎的
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
* 选择器读一条条目 = 引擎 `judgeToolNameList` 的读法({@link selectorEntryName}):先取工具名那一段再只判名字(限制侧 `Tool(content)` ⇒ 整只工具,内容里写什么都不读;放行侧内容形引擎告「什么也不授」,受理口不拒);
|
|
30
30
|
* `*` 在放行侧是「本层不设名单」、在限制侧是整名 glob(引擎文法 5,7.137.0 起;此前读成空、受理口拒);限制侧整个协议的名字 `mcp__*` / `mcp__*__*` / `a2a__*` 合法 —— 那是引擎条目读法的读数(core 7.55.0 [ref]:
|
|
31
31
|
* `compileAllowList(…, "deny", 名册)` 把它们读成这一协议的每一只工具),本仓不另写豁免。
|
|
32
|
-
* ⑤ **机读位**:拒体的码与句子是第一处命中的清单的(句子冻结),体另带这一遍判下来的**全部**读成空的条目(`entry-problems.ts` 的 `
|
|
32
|
+
* ⑤ **机读位**:拒体的码与句子是第一处命中的清单的(句子冻结),体另带这一遍判下来的**全部**读成空的条目(`entry-problems.ts` 的 `problems`,在拒体根上;{@link inertToolListEntryOf} 铸);
|
|
33
33
|
* 放行侧选择器清单里受理口没拒、却什么也不放的条目随受理应答的 `warnings` 交回({@link allowSelectorWarningsOf})—— 两处读同一次条目读法({@link selectorReadings}),不另判。
|
|
34
34
|
*/
|
|
35
35
|
import type { TightenOnlySeatField } from "./tighten-only-seats.js";
|
package/dist/rule-entry-list.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PROTOCOL_TABLE, compileAllowList, parsePermissionRule } from "@sema-agent/core";
|
|
2
2
|
import { displayListEntry } from "./list-entry-display.js";
|
|
3
3
|
import { limitRefusal } from "./limit-refusal.js";
|
|
4
|
-
import { TOOL_NAME_ROSTER } from "./namespaced-rule-name.js";
|
|
4
|
+
import { TOOL_NAME_ROSTER, isRetiredLeftOut } from "./namespaced-rule-name.js";
|
|
5
5
|
import { NOT_IN_ROSTER, entryProblem, entryProblemsFacts } from "./entry-problems.js";
|
|
6
6
|
import { layeredRuleOk } from "./permission-rule-list.js";
|
|
7
7
|
export const ruleEntryListShapeOk = (v) => Array.isArray(v) && v.every((x) => typeof x === "string");
|
|
@@ -107,9 +107,8 @@ function requestAllowRuleInertEntriesOf(list) {
|
|
|
107
107
|
}
|
|
108
108
|
function inertEntriesOfList(list, layer) {
|
|
109
109
|
const face = TOOL_LIST_FACES[layer];
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
return face.side === "deny" ? inertRuleEntriesOf(list, "deny") : requestAllowRuleInertEntriesOf(list);
|
|
110
|
+
const inert = face.kind === "selector" ? selectorInertEntriesOf(list, face.side) : face.side === "deny" ? inertRuleEntriesOf(list, "deny") : requestAllowRuleInertEntriesOf(list);
|
|
111
|
+
return face.side === "deny" ? inert.filter((i) => !isRetiredLeftOut(i.entry)) : inert;
|
|
113
112
|
}
|
|
114
113
|
function* toolListsOf(body) {
|
|
115
114
|
const skills = body["skills"];
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* **本仓怎样读 core 规则编译器的拒句** —— 一只判官({@link deploymentRuleRefusal})、一张受众表({@link RULE_ISSUE_AUDIENCE})。
|
|
3
|
+
*
|
|
4
|
+
* core 的每条规则拒句({@link PermissionRuleIssue})分两层说话:
|
|
5
|
+
* · `message`(与 `code` / `rule`)写给**写规则的人** —— 这一条错在哪、该怎么改;
|
|
6
|
+
* · `libraryOption` 写给**宿主程序** —— 这条拒句涉及的库坐标:编译调用的构造选项(`primaryFieldGeneric: "allow-lexical"`、`caps.*`、`pathBases.*`、`defaultAction`、`ruleFaces`)、
|
|
7
|
+
* 允许表的座位(`TaskSpec.allowedTools` / `RunnerDeps.allowedTools`)、MCP 服务器声明里的 `toolAxes`。
|
|
8
|
+
* core 的契约(`PermissionRuleIssue.libraryOption`)逐字:**句子从不点名那一位**;暴露这些坐标的宿主自己渲染它,别的宿主只给句子。
|
|
9
|
+
*
|
|
10
|
+
* 本仓是「别的宿主」,读法只有一条:**部署面的句子 = `code` + core 的句,`libraryOption` 不渲染**。理由分两种,都是读码得来的:
|
|
11
|
+
* · 坐标是本仓装配编译调用时自己选 / 自己推的(`caps` / `pathBases`,见 `buildRuleListJudgeOptions`;`primaryFieldGeneric` 本仓零设点)—— 写规则的人没有旋钮,渲染它 = 一条够不着的出路;
|
|
12
|
+
* · 坐标在部署上有够得着的面(请求的 / 运维的允许表、MCP 服务器声明里的 `toolAxes`)—— core 的句子已经用人的话说了那个面(「the request's allow list, or the deployment's」、「declared per tool in the MCP server's spec」),
|
|
13
|
+
* 再渲染库的拼写(`TaskSpec.allowedTools`)只是把库的字段名摆到给人看的句子里。
|
|
14
|
+
*
|
|
15
|
+
* ── 怎么保证只有一条读法 ─────────────────────────────────────────────────────────────────────
|
|
16
|
+
* · {@link RULE_ISSUE_AUDIENCE} 给拒句的**每一位**定受众,`satisfies Record<keyof PermissionRuleIssue, …>`:core 多一位 / 少一位 ⇒ 这里 tsc 红,先决定那一位面向谁,
|
|
17
|
+
* 不会悄悄落成「没人读它」或「谁都渲染它」。返回型 {@link PersonFacingRuleIssue} 由这张表**推出来**(每一位面向人的位都必填,可选位也一样),判官里逐位挑,多挑 / 漏挑一位 ⇒ tsc 红。
|
|
18
|
+
* · 判官**不在运行期扫句子**:那是对 core 句子的第二套判。core 把库坐标写回句子里,是 core 契约的回归 —— 由 `test/rule-issue-reading.test.ts` 的 pickup 钉在提货时红
|
|
19
|
+
* (真 core 规则编译器铸得出的每一种坐标各一格;坐标名单是类型联合上的穷尽表,core 多一种坐标 ⇒ 那张表 tsc 红)。
|
|
20
|
+
* · 读拒句的口只有 `config.ts` 的预判口 `uncompilableRuleGuidance` 一个(名表 / 规则表的各条受理腿 —— env 审批名单、中心下发的审批名单、请求体 `settings.permissions.deny` / `ask`、
|
|
21
|
+
* 存体重放 —— 都经它);源码钉保证 `validatePermissionRules` 与 `libraryOption` 不在别处出现。编译口 `createRuleListPolicy` 只转 core 抛出的整句(`[码] 规则: 句`,同样只有面向人的位)。
|
|
22
|
+
*
|
|
23
|
+
* 范围(如实):本模块只管**规则编译器的拒句**。core 的其它出路话(无头审批的 `headlessApprovalRemedy` 句子与 `remedies`、`delegation.ask_unresolvable` 通告)是别的契约、别的读法
|
|
24
|
+
* —— core 把那句子标为面向用户、`remedies` 标为宿主自选渲染的数据 —— 不在这条读法里。
|
|
25
|
+
*/
|
|
26
|
+
import type { PermissionRuleIssue } from "@sema-agent/core";
|
|
27
|
+
/** 拒句的一位写给谁:`person` = 写规则的人(部署者 / 请求方);`library` = 宿主程序(本仓不渲染)。 */
|
|
28
|
+
type Audience = "person" | "library";
|
|
29
|
+
/**
|
|
30
|
+
* core 拒句每一位的受众 —— **穷尽表**(`satisfies Record<keyof PermissionRuleIssue, …>`:缺一位 / 多一位 tsc 红)。
|
|
31
|
+
* `rule` 是写规则的人自己写下的文本(本仓点名条目时用自己手里的那一份,不读这一位),但它面向人,所以标 `person`。
|
|
32
|
+
*/
|
|
33
|
+
export declare const RULE_ISSUE_AUDIENCE: {
|
|
34
|
+
readonly rule: "person";
|
|
35
|
+
readonly code: "person";
|
|
36
|
+
readonly message: "person";
|
|
37
|
+
readonly libraryOption: "library";
|
|
38
|
+
};
|
|
39
|
+
type FieldsFor<A extends Audience> = {
|
|
40
|
+
[K in keyof typeof RULE_ISSUE_AUDIENCE]: (typeof RULE_ISSUE_AUDIENCE)[K] extends A ? K : never;
|
|
41
|
+
}[keyof typeof RULE_ISSUE_AUDIENCE];
|
|
42
|
+
/**
|
|
43
|
+
* 拒句里面向人的那几位(型由 {@link RULE_ISSUE_AUDIENCE} 推出)。刻意不用 `Pick`:`Pick` 保留可选性,core 加一个**可选**位并标 `person` 时,漏挑它不报错;
|
|
44
|
+
* 这里的映射型不跟随原型的可选标记,每一位面向人的位都必填(值型仍是 core 的,可选位的值可以是 `undefined`)。
|
|
45
|
+
*/
|
|
46
|
+
export type PersonFacingRuleIssue = {
|
|
47
|
+
readonly [K in FieldsFor<"person">]: PermissionRuleIssue[K];
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* core 的规则文法判「这一条编不出来」时,本仓交给部署面的一句话:`<码> — core's rule grammar cannot compile this entry: <core 的句>`。
|
|
51
|
+
* 码与句逐字是 core 的;`libraryOption` 不进句子、也不进出口(出口只有 `code` / `guidance`)。
|
|
52
|
+
*/
|
|
53
|
+
export declare function deploymentRuleRefusal(issue: PermissionRuleIssue): {
|
|
54
|
+
readonly code: string;
|
|
55
|
+
readonly guidance: string;
|
|
56
|
+
};
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=rule-issue-reading.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const RULE_ISSUE_AUDIENCE = {
|
|
2
|
+
rule: "person",
|
|
3
|
+
code: "person",
|
|
4
|
+
message: "person",
|
|
5
|
+
libraryOption: "library",
|
|
6
|
+
};
|
|
7
|
+
function personFacing(issue) {
|
|
8
|
+
return { rule: issue.rule, code: issue.code, message: issue.message };
|
|
9
|
+
}
|
|
10
|
+
export function deploymentRuleRefusal(issue) {
|
|
11
|
+
const { code, message } = personFacing(issue);
|
|
12
|
+
return { code, guidance: `${code} — core's rule grammar cannot compile this entry: ${message}` };
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=rule-issue-reading.js.map
|
package/dist/rules-consent.d.ts
CHANGED
|
@@ -551,8 +551,8 @@ export type DurableRuleScope = Exclude<RuleScope, {
|
|
|
551
551
|
* 🔴 **收不收只有一只判据:core 的 `isValidDurableScope`**(引擎 7.46.0 起 project root 必须是完整绝对路径:`/…`、`X:\…` /
|
|
552
552
|
* `X:/…`、`\\host\…`)。四个 wire 入口(`/v1/rules` 写 / 撤 / 列举过滤、local-import 的行)都经这里;cc-import 的层 root 调同一只
|
|
553
553
|
* 谓词(`http/routes/rules.ts`)。修前这里手抄了一份「root 非空」:`project:myproj` 本仓收、引擎写臂拒(写口答 503「再发一次」——
|
|
554
|
-
* 客户端会无限重试)、引擎读侧丢(撤销口删不动)
|
|
555
|
-
* (`
|
|
554
|
+
* 客户端会无限重试)、引擎读侧丢(撤销口删不动),一条规则在两侧是两种命运。存量的那种行(7.119.x 及更早收下的)不再被起服删除 ——
|
|
555
|
+
* 引擎读侧继续丢它并告知(`permission.rule_row_dropped`),出路是运维在库里删那一行。 */
|
|
556
556
|
export declare function parseRuleScope(text: string): DurableRuleScope | undefined;
|
|
557
557
|
/** 引擎不收的 scope 的**唯一一句**拒句:写 / 撤 / 列举过滤三个路由口、local-import 的成员拒因 `scope_unreadable` 都出站这一只
|
|
558
558
|
* (各口的码照旧各自的),不在读点各抄一份。cc-import 预览的层 root 判据是同一只(`isValidDurableScope`),但那份体里没有 scope 字段,
|
|
@@ -682,11 +682,13 @@ export type RuleWritten =
|
|
|
682
682
|
stillLive: Exclude<RemovalLiveness, "yes">;
|
|
683
683
|
row?: undefined;
|
|
684
684
|
}
|
|
685
|
-
/** 裁定性不收(内容判据 / 方向判据)。`detail`
|
|
685
|
+
/** 裁定性不收(内容判据 / 方向判据)。`detail` 是给人看的那一半(进拒句),`reason` 是给客户端分流的那一半;
|
|
686
|
+
* `canonical` 只在「写入原样不是店会存的拼写」那一臂:店会存的规范拼写原串,调用方原样重发即可(机读位,不必从句子里抠)。 */
|
|
686
687
|
| {
|
|
687
688
|
status: "rejected";
|
|
688
689
|
reason: LocalImportRefusalCode;
|
|
689
690
|
detail: string;
|
|
691
|
+
canonical?: string;
|
|
690
692
|
}
|
|
691
693
|
/** 终态写失败。`detail` 是给人看的那一半;`committed`({@link RuleWriteCommitted},core 的两词闭集)是
|
|
692
694
|
* 给机器分流的那一半 —— 它回答的是**调用方下一步该做什么**。
|
package/dist/rules-consent.js
CHANGED
|
@@ -872,6 +872,7 @@ export function createRuleConsentLane(stores, opts) {
|
|
|
872
872
|
reason: "rule_rejected",
|
|
873
873
|
detail: `this rule text is not the spelling the store would hold: send ${JSON.stringify(written.rule.rule)} instead ` +
|
|
874
874
|
`— a rule written under one spelling and held under another cannot be listed or revoked by the bytes you sent`,
|
|
875
|
+
canonical: written.rule.rule,
|
|
875
876
|
};
|
|
876
877
|
}
|
|
877
878
|
const row = {
|
package/dist/run-acceptance.d.ts
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
* ## 受理之后 / 之前
|
|
34
34
|
* · 受理 ⇒ 有交付的那一份时标题器起一次(会话没有标题时它才真去生成;判据在标题器里,本文件不重复)。
|
|
35
35
|
* · 没受理就收场(零工作的拒、受理前取消 / 拦截)⇒ 标题器不起:被拒的输入不花一次模型调用,也不被送去起名。
|
|
36
|
-
*
|
|
36
|
+
* 这只闩也是提交出口(`submission-exit.ts`)判「这次提交铸下的会话留不留」的第一读:闩上 ⇒ 留;没上 ⇒ 出口按它自己的律判({@link RunAcceptance.accepted})。
|
|
37
37
|
*
|
|
38
38
|
* ## 谁喂它
|
|
39
39
|
* 三条提交腿(同步 / 流式 / durable)各在两处喂同一只:持流的那一形把每一帧交给 {@link RunAcceptance.observe}(并等它交回的那一拍 —— 有补写时
|
|
@@ -92,6 +92,8 @@ export interface RunAcceptance {
|
|
|
92
92
|
onDelivered(face: DeliveryFace, fill: (objective: string) => Promise<void>): void;
|
|
93
93
|
/** 持活流的腿开流时挂上它的写口(一次提交至多一条活流;重挂以最后一次为准)。不挂 = 本次提交没有可写的流,标题写成的帧丢弃。 */
|
|
94
94
|
attachStream(sink: RunStreamSink): void;
|
|
95
|
+
/** 闩此刻上没上(引擎受理过这次提交)。提交出口的唯一读法;只读,不改闩。 */
|
|
96
|
+
readonly accepted: boolean;
|
|
95
97
|
}
|
|
96
98
|
export declare function createRunAcceptance(deps: RunAcceptanceDeps, input: RunAcceptanceInput): RunAcceptance;
|
|
97
99
|
//# sourceMappingURL=run-acceptance.d.ts.map
|
package/dist/run-acceptance.js
CHANGED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* **取消动词在一条 run 的会话上会结算的那一张卡 —— 找法的唯一属主**(怎么结算它是 `card-settle-stored-scope.ts` 全仓共用的那一只)。两个读者同读这里,没有第二份:
|
|
3
|
+
* · `POST /v1/runs/:id/cancel` 的停驻取消腿找卡(`routes/runs.ts` 的 `cancelSuspended`);
|
|
4
|
+
* · 判坏的停驻卡的出路投影(`resume-legs.ts` 的 `rowWayOutOf`:`cancel_run` 当且仅当取消动词会结算**这一张**)。
|
|
5
|
+
*
|
|
6
|
+
* ## 规则一条:取消只读店的列,不读行体
|
|
7
|
+
* 取消要的两样 —— 这条 run 在等哪一张卡、它是不是活 run 的门 —— 都是列上的事实:找卡读归属 / 门型列(`findPendingTokenBySession` 的 run 绑定)。
|
|
8
|
+
* 行体怎么坏(读不成检查点、属主格丢了或与列不一致、整格 `{}`)都不改变取消落不落得下。属主门是路由层的 run 行属主复核(`admitRunById`),不在这里。
|
|
9
|
+
*
|
|
10
|
+
* ## 为什么出路投影问同一问
|
|
11
|
+
* 投影若另按载入的行体判「取消落不落得下」,就是同一件事的第二个读者(行体坏得越厉害,它越说不出出路,而取消恰在那时最需要被指出来)。
|
|
12
|
+
* 所以投影问取消动词自己那一问:有 run 店、那条会话上的 run 停着、取消动词找到的恰是这一张卡({@link cancelSettlesCard})。
|
|
13
|
+
*/
|
|
14
|
+
import type { CheckpointToken } from "@sema-agent/core";
|
|
15
|
+
import type { CheckpointStoreFull, RunStore } from "./plugins/store-backend.js";
|
|
16
|
+
/** 取消动词在 `runSessionId` 这条 run 的会话上会结算的那一张卡;没有 ⇒ `null`。 */
|
|
17
|
+
export declare function runCancelCardOf(cs: Pick<CheckpointStoreFull, "findPendingTokenBySession">, runSessionId: string): Promise<CheckpointToken | null>;
|
|
18
|
+
/** 取消动词要问的 run 行的两口:这条会话上持着认领的 run、它的行。 */
|
|
19
|
+
export type CancelRunReader = Pick<RunStore, "getActiveTaskId" | "getRun">;
|
|
20
|
+
/**
|
|
21
|
+
* 取消动词会不会结算 `token` 这一张 —— 出路投影问的就是这一问,三个条件都是取消口自己的:
|
|
22
|
+
* · 有耐久 run 店(没有 ⇒ 取消口恒 `501 capability.run_store_required`,谈不上结算);
|
|
23
|
+
* · 这张卡归属的 run 会话上持着认领的那条 run **停着**(`suspended` / `needs_review`):取消口只对停着的 run 走结算卡那一腿 ——
|
|
24
|
+
* 终局的 run 是空操作(卡不动),在跑的 run 只挂取消旗(卡不动);归属说不出 —— M49 回填前的老行 —— 也找不到 run;
|
|
25
|
+
* · 取消动词在那条会话上找到的恰是这一张({@link runCancelCardOf};终局后的纯 park 排除在外)。
|
|
26
|
+
*/
|
|
27
|
+
export declare function cancelSettlesCard(cs: Pick<CheckpointStoreFull, "hostSessionOfCard" | "findPendingTokenBySession">, runs: CancelRunReader | undefined, token: CheckpointToken): Promise<boolean>;
|
|
28
|
+
//# sourceMappingURL=run-cancel-card.d.ts.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { LIVE_RUN_GATE_KINDS } from "./plugins/checkpoint-store-face.js";
|
|
2
|
+
import { isParkedRunStatus } from "./plugins/store-contracts.js";
|
|
3
|
+
const RUN_CANCEL_CARD = { gateKinds: LIVE_RUN_GATE_KINDS, axis: "run" };
|
|
4
|
+
export function runCancelCardOf(cs, runSessionId) {
|
|
5
|
+
return cs.findPendingTokenBySession(runSessionId, undefined, RUN_CANCEL_CARD);
|
|
6
|
+
}
|
|
7
|
+
export async function cancelSettlesCard(cs, runs, token) {
|
|
8
|
+
if (runs === undefined)
|
|
9
|
+
return false;
|
|
10
|
+
const host = await cs.hostSessionOfCard(token);
|
|
11
|
+
if (typeof host !== "string")
|
|
12
|
+
return false;
|
|
13
|
+
const holder = await runs.getActiveTaskId(host);
|
|
14
|
+
if (holder === undefined)
|
|
15
|
+
return false;
|
|
16
|
+
const run = await runs.getRun(holder);
|
|
17
|
+
return run !== undefined && isParkedRunStatus(run.status) && (await runCancelCardOf(cs, host)) === token;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=run-cancel-card.js.map
|
|
@@ -68,13 +68,23 @@ export declare const CANCELLED_CODE = "cancelled";
|
|
|
68
68
|
* `cause` 是**必填**:本函数是 server 铸取消终局的唯一出口,而每一次取消都有一个发起者 ⇒ 「本仓铸的取消终局上恒有
|
|
69
69
|
* `abortCause`」由签名保证,不靠调用方记得。它走与补码、补快照**同一条**空座闸 —— 引擎给的终局不是无码的 failed
|
|
70
70
|
* (与中止赛跑跑完了 / 引擎自带码)⇒ 整只原样返回,成因也不挂(那条终局不是这次中止的结果,挂上就是「完成了却带着取消便签」)。
|
|
71
|
+
*
|
|
72
|
+
* ## 停驻中的取消:这条 run 已经说过的那一格随终局走(`parkedResult`)
|
|
73
|
+
* park 中直接终局化的取消(`POST /v1/runs/:id/cancel` 的停驻臂)没有引擎终局可补标,合成形是这条 run 的终局 —— 但这条 run 不是没跑过:它停驻时那条结果
|
|
74
|
+
* (出口封口过、落在行上)已经带着 run 级的那一格 **读拒字节地板不守**(`readDenyFloor`,属主 `read-deny-floor-notice.ts`:准备期定下,停驻之前就已在 run 事件流上说过)。
|
|
75
|
+
* 合成形照抄行上那一格:同一句、同一个来源(行),不按取消这一拍的进程重判 —— 取消可以落在另一只副本上、或重启之后,进程内的记录不在那里;店的写口过出口封口时
|
|
76
|
+
* 那一格已在 ⇒ 原样(封口「已挂即原样」)。引擎给了终局的形不读它(那条终局自己带 `runId`,封口按它接)。
|
|
71
77
|
*/
|
|
72
78
|
export declare function mintCancelledResult<R extends PersistedTaskResult>(args: CancelMintArgs & {
|
|
73
79
|
engineResult: R;
|
|
80
|
+
parkedResult?: undefined;
|
|
74
81
|
}): R;
|
|
75
82
|
export declare function mintCancelledResult(args: CancelMintArgs & {
|
|
76
83
|
engineResult?: undefined;
|
|
84
|
+
parkedResult?: ParkedLegResult;
|
|
77
85
|
}): PersistedTaskResult;
|
|
86
|
+
/** 停驻臂交来的那条行上的结果(停驻时出口封口过的;行可以没有结果 ⇒ `null`)。合成形只读它 run 级的那一格。 */
|
|
87
|
+
export type ParkedLegResult = Pick<PersistedTaskResult, "readDenyFloor"> | null;
|
|
78
88
|
/**
|
|
79
89
|
* 被取消的续跑腿、且这张卡被本服务 expire 之后,终局上的那句话 —— **全仓单源**([ref])。
|
|
80
90
|
*
|
|
@@ -34,6 +34,7 @@ export function mintCancelledResult(args) {
|
|
|
34
34
|
stats: { turns: 0, tokens: 0, usageMissing: true },
|
|
35
35
|
...(ctx ? { cancelContext: ctx } : {}),
|
|
36
36
|
abortCause: args.cause,
|
|
37
|
+
...(args.parkedResult?.readDenyFloor !== undefined ? { readDenyFloor: args.parkedResult.readDenyFloor } : {}),
|
|
37
38
|
};
|
|
38
39
|
}
|
|
39
40
|
export const CARD_SETTLED_BY_CANCEL_MESSAGE = "Cancelled — the approved action never started, and the cancel settled this approval: it cannot be resumed (start a new run to continue)";
|