@sema-agent/server 7.146.0 → 7.148.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/MIGRATION.md +1423 -24
- package/README.md +21 -8
- package/README.zh-CN.md +15 -9
- package/USAGE.md +537 -216
- package/deploy/facts/lanes.json +7 -0
- package/deploy/sema-up/README.md +18 -7
- package/deploy/sema-up/chart/templates/NOTES.txt +1 -1
- package/deploy/sema-up/chart/templates/_helpers.tpl +42 -4
- package/deploy/sema-up/chart/templates/server-v4pro.yaml +5 -4
- package/deploy/sema-up/chart/templates/server.yaml +5 -4
- package/deploy/sema-up/chart/values.yaml +4 -3
- package/deploy/sema-up/cluster-up.sh +75 -176
- package/deploy/sema-up/kube-up.sh +29 -49
- package/deploy/sema-up/lib/chart-run.sh +23 -0
- package/deploy/sema-up/lib/dataroot.sh +3 -3
- package/deploy/sema-up/lib/flagshape.sh +4 -0
- package/deploy/sema-up/lib/health.sh +62 -13
- package/deploy/sema-up/lib/helm-values-cluster.py +18 -0
- package/deploy/sema-up/lib/helm-values-kube.py +35 -0
- package/deploy/sema-up/lib/lanes.json +2 -5
- package/deploy/sema-up/lib/regcred.py +8 -0
- package/deploy/sema-up/lib/remote/helm-install.sh +3 -0
- package/deploy/sema-up/lib/remote/image-import.sh +6 -0
- package/deploy/sema-up/lib/remote/machine-precheck.sh +11 -0
- package/deploy/sema-up/lib/remote/region-probe.sh +3 -0
- package/deploy/sema-up/lib/remote/stack-ready.sh +26 -0
- package/deploy/sema-up/lib/remote/vxlan-guard.sh +8 -0
- package/deploy/sema-up/lib/render-stack.py +17 -0
- package/deploy/sema-up/lib/shell-text.sh +87 -0
- package/deploy/sema-up/lib/usage-flags.txt +10 -0
- package/deploy/sema-up/lib/usage-head.txt +1 -0
- package/deploy/sema-up/lib/usage-tail.txt +13 -0
- package/deploy/sema-up/preflight.sh +10 -8
- package/deploy/sema-up/sema-up.sh +26 -48
- package/deploy/sema-up/smoke.sh +7 -6
- package/deploy/sema-up/stack/compose.dataroot.yaml +3 -0
- package/deploy/sema-up/stack/compose.yaml +18 -5
- package/deploy/sema-up/stack/sema-stack-cluster.yaml +25 -3
- package/dist/adoption/plan.d.ts +24 -0
- package/dist/adoption/plan.js +53 -1
- package/dist/adoption/runner.d.ts +10 -1
- package/dist/adoption/runner.js +36 -16
- package/dist/adoption/wire.d.ts +3 -3
- package/dist/approval-card.d.ts +32 -34
- package/dist/approval-gate-currency.js +3 -2
- package/dist/approval-reconciler.d.ts +4 -13
- package/dist/approval-reconciler.js +2 -2
- package/dist/approval.d.ts +16 -14
- package/dist/approval.js +3 -3
- package/dist/audit.d.ts +10 -3
- package/dist/audit.js +17 -9
- package/dist/auth-bridge.d.ts +0 -14
- package/dist/auth-bridge.js +0 -7
- package/dist/auto-mode-face.d.ts +10 -7
- package/dist/auto-mode-face.js +7 -4
- package/dist/background-agent-name.d.ts +19 -1
- package/dist/background-agent-name.js +12 -2
- package/dist/background-session-reap.d.ts +1 -1
- package/dist/bake-runner/main.js +9 -6
- package/dist/bench/s1/arms.js +6 -5
- package/dist/bench/s1/live-deps.js +8 -3
- package/dist/bench/s1/run-firm.js +6 -5
- package/dist/bind-host.d.ts +25 -0
- package/dist/bind-host.js +25 -0
- package/dist/boot/adoption.d.ts +3 -0
- package/dist/boot/adoption.js +1 -0
- package/dist/boot/crash-last.js +2 -1
- package/dist/boot/deployment-mods.d.ts +1 -1
- package/dist/boot/device-lane.js +5 -5
- package/dist/boot/engine-lease.d.ts +12 -11
- package/dist/boot/execution-env.d.ts +19 -8
- package/dist/boot/execution-env.js +80 -62
- package/dist/boot/execution-lane.d.ts +37 -9
- package/dist/boot/execution-lane.js +74 -20
- package/dist/boot/exit-boundary.d.ts +3 -3
- package/dist/boot/exit-boundary.js +6 -5
- package/dist/boot/exit-last.js +2 -1
- package/dist/boot/fatal-exit.d.ts +3 -5
- package/dist/boot/fatal-exit.js +2 -2
- package/dist/boot/governance-seams.d.ts +2 -2
- package/dist/boot/leader.d.ts +15 -0
- package/dist/boot/leader.js +18 -16
- package/dist/boot/memory-boundary.d.ts +11 -11
- package/dist/boot/memory-boundary.js +3 -3
- package/dist/boot/memory-consolidation.d.ts +50 -53
- package/dist/boot/memory-consolidation.js +11 -18
- package/dist/boot/org-memory.js +4 -3
- package/dist/boot/parked-revive-gate.d.ts +1 -1
- package/dist/boot/parked-revive-gate.js +3 -3
- package/dist/boot/reapers.d.ts +4 -3
- package/dist/boot/reapers.js +20 -17
- package/dist/boot/resolve-spec.d.ts +5 -3
- package/dist/boot/resolve-spec.js +133 -165
- package/dist/boot/retention-lane.d.ts +7 -45
- package/dist/boot/retention-lane.js +2 -2
- package/dist/boot/runner-deps.d.ts +28 -7
- package/dist/boot/runner-deps.js +11 -4
- package/dist/boot/runtime-caps.d.ts +2 -2
- package/dist/boot/runtime-caps.js +16 -2
- package/dist/boot/session-faces.d.ts +17 -7
- package/dist/boot/session-faces.js +122 -96
- package/dist/boot/shutdown.d.ts +5 -4
- package/dist/boot/shutdown.js +6 -4
- package/dist/boot/stage-01-config.d.ts +1 -1
- package/dist/boot/stage-01-config.js +14 -2
- package/dist/boot/stage-02-web-admin-pull.d.ts +2 -1
- package/dist/boot/stage-02-web-admin-pull.js +15 -8
- package/dist/boot/stage-03-store-backend.d.ts +4 -1
- package/dist/boot/stage-03-store-backend.js +4 -3
- package/dist/boot/stage-04-stores.d.ts +3 -1
- package/dist/boot/stage-04-stores.js +2 -2
- package/dist/boot/stage-05-execution-env.d.ts +9 -5
- package/dist/boot/stage-05-execution-env.js +5 -5
- package/dist/boot/stage-06-runners.d.ts +13 -15
- package/dist/boot/stage-06-runners.js +24 -18
- package/dist/boot/stage-07-capability-layer.d.ts +14 -11
- package/dist/boot/stage-07-capability-layer.js +9 -12
- package/dist/boot/stage-08-reapers.d.ts +14 -11
- package/dist/boot/stage-08-reapers.js +3 -3
- package/dist/boot/stage-09-leader.d.ts +16 -18
- package/dist/boot/stage-09-leader.js +12 -4
- package/dist/boot/stage-10-http-server.d.ts +16 -18
- package/dist/boot/stage-10-http-server.js +9 -5
- package/dist/boot/store-evidence.d.ts +20 -0
- package/dist/boot/store-evidence.js +13 -0
- package/dist/boot/stores.d.ts +12 -0
- package/dist/boot/stores.js +39 -17
- package/dist/boot/task-list-lane.d.ts +4 -4
- package/dist/boot/web-admin.d.ts +4 -2
- package/dist/boot/web-admin.js +58 -38
- package/dist/boot/webfetch-summarize-lane.d.ts +1 -1
- package/dist/boot-reclaim.d.ts +3 -1
- package/dist/boot-reclaim.js +1 -1
- package/dist/brain.d.ts +7 -18
- package/dist/brain.js +5 -17
- package/dist/budget.js +6 -6
- package/dist/capabilities/center-plugins.d.ts +9 -1
- package/dist/capabilities/center-plugins.js +37 -11
- package/dist/capabilities/center-wiring.js +1 -1
- package/dist/capabilities/composite-members.d.ts +3 -2
- package/dist/capabilities/composite-members.js +3 -2
- package/dist/capabilities/execution-lane.d.ts +7 -7
- package/dist/capabilities/execution-lane.js +2 -2
- package/dist/capabilities/hands-lane.d.ts +1 -1
- package/dist/capabilities/repo-tools.d.ts +2 -0
- package/dist/capabilities/repo-tools.js +14 -12
- package/dist/capabilities/scenarios.d.ts +38 -33
- package/dist/capabilities/scenarios.js +24 -25
- package/dist/capabilities/settings-contract.d.ts +29 -0
- package/dist/capabilities/settings-contract.js +14 -0
- package/dist/capabilities/skills.d.ts +6 -6
- package/dist/capabilities/tool-defer.d.ts +1 -1
- package/dist/capability-facts.d.ts +69 -4
- package/dist/capability-facts.js +77 -5
- package/dist/card-void.d.ts +4 -4
- package/dist/card-void.js +1 -1
- package/dist/center-credential-renewer.d.ts +6 -2
- package/dist/center-credential-renewer.js +10 -5
- package/dist/config-catalog.d.ts +16 -1
- package/dist/config-catalog.js +68 -61
- package/dist/config-dir-trust.d.ts +37 -4
- package/dist/config-dir-trust.js +88 -44
- package/dist/config-invariants.d.ts +58 -4
- package/dist/config-invariants.js +104 -23
- package/dist/config-lkg.d.ts +24 -2
- package/dist/config-lkg.js +22 -9
- package/dist/config-provider.d.ts +9 -9
- package/dist/config-provider.js +25 -108
- package/dist/config-pull-failure.d.ts +50 -0
- package/dist/config-pull-failure.js +48 -0
- package/dist/config-types.d.ts +215 -202
- package/dist/config.d.ts +69 -14
- package/dist/config.js +188 -96
- package/dist/degenerate-instrument.js +1 -1
- package/dist/delegated-session-owner.d.ts +1 -1
- package/dist/deleted-session-ids.d.ts +3 -2
- package/dist/deploy-facts.js +3 -2
- package/dist/deployment-governance.d.ts +3 -3
- package/dist/deployment-shape.d.ts +51 -16
- package/dist/deployment-shape.js +31 -6
- package/dist/egress-redirect.d.ts +25 -7
- package/dist/egress-redirect.js +20 -2
- package/dist/elicitation.d.ts +6 -5
- package/dist/elicitation.js +23 -22
- package/dist/engine-identity.d.ts +28 -0
- package/dist/engine-identity.js +10 -0
- package/dist/entry-problems.d.ts +5 -7
- package/dist/entry-problems.js +1 -1
- package/dist/env-facts.d.ts +7 -5
- package/dist/env-facts.js +12 -7
- package/dist/env-witness.d.ts +7 -0
- package/dist/env-witness.js +16 -0
- package/dist/execution-config-root.d.ts +5 -5
- package/dist/execution-config-root.js +5 -5
- package/dist/execution-env-purpose.d.ts +14 -0
- package/dist/execution-env-purpose.js +29 -0
- package/dist/execution-lane-caps.d.ts +53 -103
- package/dist/execution-lane-caps.js +51 -83
- package/dist/execution-placement.d.ts +65 -9
- package/dist/execution-placement.js +58 -0
- package/dist/field-conflict.d.ts +7 -11
- package/dist/field-conflict.js +3 -3
- package/dist/file-history-capture.d.ts +3 -3
- package/dist/file-history-disclosure.d.ts +2 -2
- package/dist/file-history-disclosure.js +1 -0
- package/dist/fleet/drain-entry.d.ts +17 -10
- package/dist/fleet/drain-entry.js +1 -1
- package/dist/fleet/fleet-bus.d.ts +21 -3
- package/dist/fleet/fleet-bus.js +35 -25
- package/dist/fleet/fleet-reconciler.js +2 -2
- package/dist/fleet/serving-lease.js +6 -7
- package/dist/fleet-client.js +3 -3
- package/dist/fleet-lease.d.ts +0 -1
- package/dist/fleet-lease.js +4 -5
- package/dist/history-anchor.d.ts +42 -0
- package/dist/history-anchor.js +34 -0
- package/dist/hitl-delivery.d.ts +90 -0
- package/dist/hitl-delivery.js +98 -0
- package/dist/hooks/classic-stations.d.ts +8 -11
- package/dist/hooks/classic-stations.js +0 -7
- package/dist/hooks/command-spawn.d.ts +1 -4
- package/dist/hooks/command-spawn.js +0 -11
- package/dist/hooks/hook-llm.d.ts +5 -1
- package/dist/hooks/hook-llm.js +24 -15
- package/dist/hooks/hook-runner.d.ts +119 -65
- package/dist/hooks/hook-runner.js +415 -217
- package/dist/host-lsp-manager.d.ts +22 -8
- package/dist/host-lsp-manager.js +4 -1
- package/dist/http/active-run-conflict.d.ts +2 -43
- package/dist/http/active-run-conflict.js +3 -7
- package/dist/http/admission.d.ts +4 -18
- package/dist/http/admission.js +75 -78
- package/dist/http/approval-sweeps.d.ts +5 -8
- package/dist/http/approval-sweeps.js +55 -30
- package/dist/http/caller-trust.d.ts +8 -10
- package/dist/http/caller-trust.js +1 -2
- package/dist/http/checkpoint-ctx.d.ts +17 -0
- package/dist/http/checkpoint-ctx.js +6 -0
- package/dist/http/claim-heartbeat.d.ts +49 -0
- package/dist/http/claim-heartbeat.js +46 -0
- package/dist/http/claim-latency.d.ts +10 -0
- package/dist/http/claim-latency.js +12 -0
- package/dist/http/claimed-run.d.ts +4 -3
- package/dist/http/dispatch.d.ts +8 -1
- package/dist/http/dispatch.js +77 -31
- package/dist/http/durable-run-leg.d.ts +3 -3
- package/dist/http/durable-run-leg.js +18 -12
- package/dist/http/execution-context.d.ts +18 -42
- package/dist/http/execution-context.js +11 -5
- package/dist/http/health-reader.d.ts +36 -0
- package/dist/http/health-reader.js +21 -0
- package/dist/http/health-self-report.d.ts +9 -9
- package/dist/http/health-self-report.js +4 -4
- package/dist/http/idempotency.d.ts +9 -5
- package/dist/http/idempotency.js +4 -4
- package/dist/http/memory-compliance-failure-reply.d.ts +15 -16
- package/dist/http/memory-compliance-failure-reply.js +7 -2
- package/dist/http/memory-face-fault-reply.d.ts +67 -0
- package/dist/http/memory-face-fault-reply.js +71 -0
- package/dist/http/memory-store-refusal-reply.d.ts +3 -3
- package/dist/http/memory-store-refusal-reply.js +6 -0
- package/dist/http/owner-access.d.ts +391 -56
- package/dist/http/owner-access.js +372 -33
- package/dist/http/principal-gate.d.ts +26 -94
- package/dist/http/principal-gate.js +24 -81
- package/dist/http/refusal-body.d.ts +35 -2
- package/dist/http/refusal-body.js +34 -0
- package/dist/http/request-guards.d.ts +10 -14
- package/dist/http/request-guards.js +34 -68
- package/dist/http/resume-composition.d.ts +37 -0
- package/dist/http/resume-composition.js +18 -0
- package/dist/http/resume-ctx-read.d.ts +35 -12
- package/dist/http/resume-ctx-read.js +25 -6
- package/dist/http/resume-legs.d.ts +24 -24
- package/dist/http/resume-legs.js +260 -171
- package/dist/http/retired-skill-manifest.d.ts +1 -1
- package/dist/http/rewind-files-reply.d.ts +34 -0
- package/dist/http/rewind-files-reply.js +36 -0
- package/dist/http/route-ctx.d.ts +56 -47
- package/dist/http/route-table.js +2 -0
- package/dist/http/routes/a2a-serve.d.ts +43 -5
- package/dist/http/routes/a2a-serve.js +58 -37
- package/dist/http/routes/admin-config-refresh.js +2 -2
- package/dist/http/routes/admin-drain.js +2 -2
- package/dist/http/routes/admin-memory-optout.js +4 -3
- package/dist/http/routes/adoption.d.ts +3 -0
- package/dist/http/routes/adoption.js +17 -10
- package/dist/http/routes/agents-roster.js +13 -7
- package/dist/http/routes/approvals-assistant.js +73 -88
- package/dist/http/routes/attachments.js +2 -2
- package/dist/http/routes/background.d.ts +3 -3
- package/dist/http/routes/background.js +9 -17
- package/dist/http/routes/capabilities.js +23 -20
- package/dist/http/routes/config-catalog.js +2 -2
- package/dist/http/routes/devices.d.ts +3 -3
- package/dist/http/routes/devices.js +5 -5
- package/dist/http/routes/diagnostics.d.ts +27 -3
- package/dist/http/routes/diagnostics.js +27 -21
- package/dist/http/routes/engine.js +2 -2
- package/dist/http/routes/fleet.js +5 -3
- package/dist/http/routes/images.js +10 -6
- package/dist/http/routes/leader.d.ts +7 -2
- package/dist/http/routes/leader.js +12 -3
- package/dist/http/routes/mcp-reconnect.d.ts +1 -1
- package/dist/http/routes/mcp-reconnect.js +7 -15
- package/dist/http/routes/memory-bundle.js +4 -7
- package/dist/http/routes/memory-compliance.js +4 -4
- package/dist/http/routes/memory-consolidation.js +6 -9
- package/dist/http/routes/memory-origin.d.ts +3 -1
- package/dist/http/routes/memory-origin.js +7 -8
- package/dist/http/routes/memory-policy.js +17 -12
- package/dist/http/routes/notify-wake.js +12 -20
- package/dist/http/routes/observability.js +3 -3
- package/dist/http/routes/principal-inbox.d.ts +1 -1
- package/dist/http/routes/principal-inbox.js +2 -2
- package/dist/http/routes/projects.d.ts +70 -0
- package/dist/http/routes/projects.js +87 -0
- package/dist/http/routes/retention-ops.js +6 -9
- package/dist/http/routes/rules.js +50 -7
- package/dist/http/routes/run-memory-capture.d.ts +2 -2
- package/dist/http/routes/run-memory-capture.js +6 -12
- package/dist/http/routes/run-permission-mode.d.ts +2 -2
- package/dist/http/routes/run-permission-mode.js +10 -17
- package/dist/http/routes/runs.js +148 -233
- package/dist/http/routes/session-memory-sync.d.ts +2 -2
- package/dist/http/routes/session-memory-sync.js +7 -13
- package/dist/http/routes/session-sync.d.ts +4 -2
- package/dist/http/routes/session-sync.js +48 -30
- package/dist/http/routes/sessions-list.d.ts +3 -3
- package/dist/http/routes/sessions-list.js +9 -9
- package/dist/http/routes/sessions.d.ts +7 -1
- package/dist/http/routes/sessions.js +177 -112
- package/dist/http/routes/shared-memory.js +6 -6
- package/dist/http/routes/side-query.js +2 -2
- package/dist/http/routes/tasks.js +144 -122
- package/dist/http/routes/trace-usage.d.ts +0 -12
- package/dist/http/routes/trace-usage.js +40 -46
- package/dist/http/routes/workflows.d.ts +39 -4
- package/dist/http/routes/workflows.js +42 -14
- package/dist/http/run-concurrency-cap.d.ts +20 -12
- package/dist/http/run-concurrency-cap.js +39 -26
- package/dist/http/run-read-face.d.ts +3 -5
- package/dist/http/run-read-face.js +8 -13
- package/dist/http/send.d.ts +12 -3
- package/dist/http/send.js +42 -6
- package/dist/http/server.d.ts +63 -50
- package/dist/http/server.js +52 -16
- package/dist/http/sse-log.d.ts +17 -10
- package/dist/http/sse-log.js +7 -7
- package/dist/http/stored-body-replay.d.ts +17 -3
- package/dist/http/stored-body-replay.js +11 -2
- package/dist/http/submit-ctx.d.ts +16 -8
- package/dist/http/submit-ctx.js +6 -2
- package/dist/http/submit-replay.d.ts +19 -6
- package/dist/http/submit-replay.js +18 -6
- package/dist/http/sync-submit-body.d.ts +3 -4
- package/dist/http/sync-submit-body.js +4 -5
- package/dist/http/wire-types.d.ts +23 -13
- package/dist/identity-source.d.ts +36 -5
- package/dist/identity-source.js +27 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +2 -1
- package/dist/instruction-source-notice.d.ts +1 -1
- package/dist/key-resolver.d.ts +32 -0
- package/dist/key-resolver.js +23 -9
- package/dist/leader/diffup.js +2 -1
- package/dist/leader/endpoint.d.ts +26 -5
- package/dist/leader/endpoint.js +154 -14
- package/dist/leader/fanout.d.ts +3 -0
- package/dist/leader/fanout.js +78 -63
- package/dist/leader/leader.d.ts +16 -0
- package/dist/leader/leader.js +43 -3
- package/dist/leader/merge.d.ts +9 -1
- package/dist/leader/merge.js +16 -1
- package/dist/leader/repair-wire.js +1 -1
- package/dist/leader/wire.d.ts +36 -3
- package/dist/leader/wire.js +59 -18
- package/dist/lsp-evict.d.ts +6 -4
- package/dist/lsp-evict.js +2 -3
- package/dist/memory-embedder-reembed.d.ts +38 -0
- package/dist/memory-embedder-reembed.js +20 -0
- package/dist/memory-incident-sink.d.ts +0 -28
- package/dist/memory-incident-sink.js +5 -0
- package/dist/memory-operator-faces.d.ts +5 -4
- package/dist/memory-operator-faces.js +1 -1
- package/dist/memory-scope.d.ts +31 -4
- package/dist/memory-scope.js +65 -16
- package/dist/memory-store-refusal.d.ts +20 -4
- package/dist/memory-store-refusal.js +1 -1
- package/dist/memory-sync-client.d.ts +5 -2
- package/dist/memory-sync-client.js +19 -14
- package/dist/memory-sync.js +1 -1
- package/dist/model-compat.d.ts +51 -28
- package/dist/model-compat.js +55 -23
- package/dist/model-context-window.d.ts +18 -0
- package/dist/model-context-window.js +2 -0
- package/dist/model-entry-headers.d.ts +46 -4
- package/dist/model-entry-headers.js +2 -2
- package/dist/model-entry-refusal.d.ts +46 -17
- package/dist/model-entry-refusal.js +47 -27
- package/dist/model-plane-face.d.ts +19 -11
- package/dist/model-plane-face.js +9 -1
- package/dist/model-plane-probe.d.ts +2 -0
- package/dist/model-plane-probe.js +17 -0
- package/dist/model-provider.d.ts +3 -3
- package/dist/model-route-endpoint.d.ts +9 -5
- package/dist/model-route-endpoint.js +29 -7
- package/dist/model-select.d.ts +16 -0
- package/dist/model-select.js +4 -0
- package/dist/mountinfo.d.ts +37 -0
- package/dist/mountinfo.js +47 -0
- package/dist/namespaced-rule-name.d.ts +28 -2
- package/dist/namespaced-rule-name.js +10 -1
- package/dist/net-address.d.ts +1 -1
- package/dist/observability/corrupt-read-seat.d.ts +4 -4
- package/dist/observability/corrupt-read-seat.js +5 -3
- package/dist/observability/fail-open.d.ts +75 -47
- package/dist/observability/fail-open.js +77 -47
- package/dist/observability/logger.d.ts +22 -1
- package/dist/observability/logger.js +89 -12
- package/dist/observability/metrics.d.ts +2 -0
- package/dist/observability/metrics.js +5 -4
- package/dist/observability/otel-exporter.js +2 -1
- package/dist/observability/principal-context.d.ts +14 -7
- package/dist/observability/principal-context.js +8 -3
- package/dist/observability/run-terminal.d.ts +7 -1
- package/dist/observability/run-terminal.js +5 -2
- package/dist/observability/secret-env-scrub.d.ts +30 -4
- package/dist/observability/secret-env-scrub.js +15 -3
- package/dist/orchestration/hardened-vm-runner.d.ts +1 -0
- package/dist/orchestration/hardened-vm-runner.js +11 -5
- package/dist/orchestration/hardened-vm-worker-runner.d.ts +0 -14
- package/dist/orchestration/hardened-vm-worker-runner.js +5 -0
- package/dist/orchestration/hardened-vm-worker.js +2 -1
- package/dist/orchestration/workflow-agent-session-index.d.ts +7 -12
- package/dist/orchestration/workflow-agent-session-index.js +1 -6
- package/dist/orchestration/workflow-completion-inbox.d.ts +29 -9
- package/dist/orchestration/workflow-completion-inbox.js +65 -46
- package/dist/org-delivery-gate.d.ts +5 -4
- package/dist/org-delivery-gate.js +7 -6
- package/dist/org-memory-admission.d.ts +5 -2
- package/dist/org-memory-admission.js +25 -10
- package/dist/outbound-dispatcher.d.ts +1 -1
- package/dist/outbound-dispatcher.js +6 -12
- package/dist/owner-brands.d.ts +81 -0
- package/dist/owner-brands.js +42 -0
- package/dist/owner-faces.d.ts +531 -0
- package/dist/owner-faces.js +126 -0
- package/dist/parked-decide.d.ts +100 -31
- package/dist/parked-decide.js +162 -48
- package/dist/parked-revive-surface.d.ts +14 -4
- package/dist/parked-revive-surface.js +5 -4
- package/dist/peer-directory.d.ts +6 -8
- package/dist/peer-directory.js +3 -2
- package/dist/permission-rule-vocab.d.ts +53 -8
- package/dist/permission-rule-vocab.js +30 -2
- package/dist/plugins/adoption-log-sql.d.ts +0 -22
- package/dist/plugins/adoption-log-sql.js +5 -3
- package/dist/plugins/approval-ask-retired-delete-by-task-m50.d.ts +7 -0
- package/dist/plugins/approval-ask-retired-delete-by-task-m50.js +17 -0
- package/dist/plugins/approval-ask-store-file.d.ts +28 -9
- package/dist/plugins/approval-ask-store-file.js +74 -18
- package/dist/plugins/approval-ask-store-memory.d.ts +17 -7
- package/dist/plugins/approval-ask-store-memory.js +35 -12
- package/dist/plugins/approval-ask-store-sql.d.ts +42 -20
- package/dist/plugins/approval-ask-store-sql.js +44 -11
- package/dist/plugins/approval-exemption-skill-m46.d.ts +20 -0
- package/dist/plugins/approval-exemption-skill-m46.js +25 -0
- package/dist/plugins/approval-exemption-store.d.ts +6 -1
- package/dist/plugins/approval-exemption-store.js +14 -0
- package/dist/plugins/approval-nonce-store.d.ts +39 -12
- package/dist/plugins/approval-nonce-store.js +72 -23
- package/dist/plugins/blob-backend.d.ts +40 -195
- package/dist/plugins/blob-backend.js +41 -234
- package/dist/plugins/caching-session-store.d.ts +22 -5
- package/dist/plugins/caching-session-store.js +43 -4
- package/dist/plugins/checkpoint-index-columns.d.ts +33 -6
- package/dist/plugins/checkpoint-index-columns.js +39 -3
- package/dist/plugins/checkpoint-store-face.d.ts +84 -11
- package/dist/plugins/checkpoint-store-face.js +18 -1
- package/dist/plugins/device-store-sql.d.ts +2 -2
- package/dist/plugins/device-store-sql.js +6 -10
- package/dist/plugins/ensure-index.d.ts +13 -1
- package/dist/plugins/ensure-index.js +154 -21
- package/dist/plugins/ensure-schema-lock-policy.d.ts +0 -15
- package/dist/plugins/ensure-schema-lock-policy.js +3 -2
- package/dist/plugins/execution-lane-rename-m40.d.ts +20 -0
- package/dist/plugins/execution-lane-rename-m40.js +10 -0
- package/dist/plugins/execution-placement-sql.d.ts +63 -88
- package/dist/plugins/execution-placement-sql.js +94 -54
- package/dist/plugins/file-run-store.d.ts +89 -35
- package/dist/plugins/file-run-store.js +197 -142
- package/dist/plugins/host-platform.d.ts +24 -3
- package/dist/plugins/host-platform.js +15 -1
- package/dist/plugins/image-bake-store-sql.js +2 -0
- package/dist/plugins/imported-layer-root-retirement.d.ts +19 -10
- package/dist/plugins/imported-layer-root-retirement.js +4 -8
- package/dist/plugins/inbox-payload-column.d.ts +14 -0
- package/dist/plugins/inbox-payload-column.js +13 -0
- package/dist/plugins/k8s-pod-reaper.d.ts +1 -3
- package/dist/plugins/k8s-pod-reaper.js +0 -1
- package/dist/plugins/leader-run-store-sql.d.ts +22 -0
- package/dist/plugins/leader-run-store-sql.js +34 -4
- package/dist/plugins/local-checkpoint-store.d.ts +63 -23
- package/dist/plugins/local-checkpoint-store.js +204 -81
- package/dist/plugins/local-data-dir-modes-m39.d.ts +48 -0
- package/dist/plugins/local-data-dir-modes-m39.js +183 -0
- package/dist/plugins/local-docker-capacity.d.ts +93 -0
- package/dist/plugins/local-docker-capacity.js +194 -0
- package/dist/plugins/local-docker-reaper.d.ts +92 -0
- package/dist/plugins/local-docker-reaper.js +102 -0
- package/dist/plugins/local-engine-high-water.d.ts +13 -0
- package/dist/plugins/local-engine-high-water.js +62 -0
- package/dist/plugins/local-session-store.d.ts +442 -143
- package/dist/plugins/local-session-store.js +941 -289
- package/dist/plugins/local-session-window.d.ts +3 -2
- package/dist/plugins/local-session-window.js +3 -2
- package/dist/plugins/local-sidecar-quarantine.js +3 -2
- package/dist/plugins/local-task-attachment-store.d.ts +20 -1
- package/dist/plugins/local-task-attachment-store.js +32 -12
- package/dist/plugins/memory-embedder-fingerprint.d.ts +33 -10
- package/dist/plugins/memory-embedder-fingerprint.js +52 -12
- package/dist/plugins/memory-embedder.d.ts +1 -1
- package/dist/plugins/memory-embedder.js +11 -9
- package/dist/plugins/memory-engine-pg.d.ts +7 -5
- package/dist/plugins/memory-engine-pg.js +18 -9
- package/dist/plugins/memory-engine-sql-apply.d.ts +21 -8
- package/dist/plugins/memory-engine-sql-apply.js +7 -9
- package/dist/plugins/memory-engine-tidb.d.ts +12 -7
- package/dist/plugins/memory-engine-tidb.js +18 -10
- package/dist/plugins/memory-optout-grant-store-sql.d.ts +1 -1
- package/dist/plugins/memory-optout-grant-store-sql.js +3 -3
- package/dist/plugins/memory-run-store.d.ts +39 -27
- package/dist/plugins/memory-run-store.js +72 -70
- package/dist/plugins/one-time-migration-marker.d.ts +10 -0
- package/dist/plugins/one-time-migration-marker.js +7 -0
- package/dist/plugins/one-time-migrations.d.ts +325 -74
- package/dist/plugins/one-time-migrations.js +705 -230
- package/dist/plugins/org-delivery-quota-store.js +2 -1
- package/dist/plugins/owner-only-file-mode.d.ts +29 -0
- package/dist/plugins/owner-only-file-mode.js +141 -0
- package/dist/plugins/permission-rule-store-file.d.ts +11 -11
- package/dist/plugins/permission-rule-store-file.js +14 -2
- package/dist/plugins/permission-rule-store-sql.d.ts +4 -63
- package/dist/plugins/permission-rule-store-sql.js +6 -86
- package/dist/plugins/pg-pool.d.ts +3 -32
- package/dist/plugins/pg-pool.js +27 -11
- package/dist/plugins/release-version.d.ts +20 -0
- package/dist/plugins/release-version.js +28 -0
- package/dist/plugins/remote-env-adb.d.ts +20 -4
- package/dist/plugins/remote-env-adb.js +39 -11
- package/dist/plugins/remote-env-e2b.d.ts +19 -28
- package/dist/plugins/remote-env-e2b.js +40 -29
- package/dist/plugins/remote-env-host.d.ts +11 -10
- package/dist/plugins/remote-env-host.js +40 -27
- package/dist/plugins/remote-env-k8s.d.ts +45 -47
- package/dist/plugins/remote-env-k8s.js +122 -62
- package/dist/plugins/remote-env-local-docker.d.ts +152 -15
- package/dist/plugins/remote-env-local-docker.js +370 -75
- package/dist/plugins/remote-env-ssh.d.ts +8 -2
- package/dist/plugins/remote-env-ssh.js +26 -24
- package/dist/plugins/remote-scratchpad.js +4 -0
- package/dist/plugins/remote-shell.d.ts +59 -30
- package/dist/plugins/remote-shell.js +175 -62
- package/dist/plugins/retention-declaration.d.ts +37 -0
- package/dist/plugins/retention-declaration.js +9 -0
- package/dist/plugins/retention-deployment.d.ts +158 -0
- package/dist/plugins/retention-deployment.js +119 -0
- package/dist/plugins/retention-lane-store-sql.d.ts +74 -4
- package/dist/plugins/retention-lane-store-sql.js +103 -1
- package/dist/plugins/retention-sql.d.ts +29 -0
- package/dist/plugins/retention-sql.js +8 -0
- package/dist/plugins/run-preview-m45.d.ts +11 -0
- package/dist/plugins/run-preview-m45.js +19 -0
- package/dist/plugins/run-store-sql.d.ts +56 -68
- package/dist/plugins/run-store-sql.js +127 -116
- package/dist/plugins/s3-answer.d.ts +2 -1
- package/dist/plugins/sandbox-reaper.d.ts +26 -0
- package/dist/plugins/sandbox-reaper.js +2 -0
- package/dist/plugins/scenario-prefix-switch-m42.d.ts +54 -0
- package/dist/plugins/scenario-prefix-switch-m42.js +55 -0
- package/dist/plugins/scheduler-support.d.ts +16 -1
- package/dist/plugins/scheduler-support.js +22 -2
- package/dist/plugins/schema-consistency.d.ts +42 -15
- package/dist/plugins/schema-consistency.js +213 -13
- package/dist/plugins/schema-drift-sentence.d.ts +4 -1
- package/dist/plugins/schema-drift-sentence.js +4 -4
- package/dist/plugins/schema-ensure-legs.d.ts +10 -1
- package/dist/plugins/schema-ensure-legs.js +12 -2
- package/dist/plugins/schema-indexes.js +3 -0
- package/dist/plugins/schema-live-columns.d.ts +14 -5
- package/dist/plugins/schema-live-columns.js +10 -10
- package/dist/plugins/send-user-file.js +2 -1
- package/dist/plugins/session-birth.d.ts +37 -0
- package/dist/plugins/session-birth.js +38 -0
- package/dist/plugins/session-epoch-anchor.d.ts +40 -12
- package/dist/plugins/session-epoch-anchor.js +33 -11
- package/dist/plugins/session-ext-table.d.ts +98 -0
- package/dist/plugins/session-ext-table.js +134 -0
- package/dist/plugins/session-fork.d.ts +16 -2
- package/dist/plugins/session-fork.js +3 -0
- package/dist/plugins/session-ownership.d.ts +1 -1
- package/dist/plugins/session-placement.d.ts +22 -16
- package/dist/plugins/session-placement.js +15 -12
- package/dist/plugins/session-row-sql.d.ts +20 -7
- package/dist/plugins/session-row-sql.js +16 -8
- package/dist/plugins/session-run-rollup.d.ts +29 -0
- package/dist/plugins/session-run-rollup.js +40 -0
- package/dist/plugins/session-store-sql.d.ts +157 -0
- package/dist/plugins/session-store-sql.js +398 -0
- package/dist/plugins/session-withdraw-sql.d.ts +36 -0
- package/dist/plugins/session-withdraw-sql.js +42 -0
- package/dist/plugins/session-workspace-cell.d.ts +2 -2
- package/dist/plugins/session-workspace-cell.js +2 -2
- package/dist/plugins/shared-memory-store-sql.d.ts +10 -69
- package/dist/plugins/shared-memory-store-sql.js +15 -14
- package/dist/plugins/shell-sentinel-owner-m48.d.ts +20 -0
- package/dist/plugins/shell-sentinel-owner-m48.js +3 -0
- package/dist/plugins/snapshot-bucket-presence.d.ts +2 -1
- package/dist/plugins/snapshot-bucket-presence.js +1 -1
- package/dist/plugins/sql-driver.d.ts +24 -8
- package/dist/plugins/sql-driver.js +43 -9
- package/dist/plugins/sql-errors.d.ts +35 -5
- package/dist/plugins/sql-errors.js +55 -3
- package/dist/plugins/sql-json-column.d.ts +8 -7
- package/dist/plugins/sql-json-column.js +10 -6
- package/dist/plugins/store-backend.d.ts +114 -18
- package/dist/plugins/store-backend.js +340 -87
- package/dist/plugins/store-contracts.d.ts +97 -30
- package/dist/plugins/store-contracts.js +23 -1
- package/dist/plugins/store-fault.d.ts +28 -2
- package/dist/plugins/store-fault.js +20 -2
- package/dist/plugins/task-attachment-store.d.ts +21 -11
- package/dist/plugins/task-attachment-store.js +37 -19
- package/dist/plugins/task-list-store-sql.d.ts +1 -1
- package/dist/plugins/text-column-capacity.d.ts +21 -0
- package/dist/plugins/text-column-capacity.js +5 -0
- package/dist/plugins/tidb-pool.d.ts +3 -2
- package/dist/plugins/tidb-pool.js +42 -39
- package/dist/plugins/user-input-ledger-sql.d.ts +1 -1
- package/dist/plugins/web-search.js +5 -3
- package/dist/plugins/workflow-run-store-sql.d.ts +6 -1
- package/dist/plugins/workflow-run-store-sql.js +11 -5
- package/dist/principal-jwt.d.ts +4 -4
- package/dist/principal-jwt.js +20 -5
- package/dist/principal-shape.d.ts +41 -0
- package/dist/principal-shape.js +19 -0
- package/dist/question.d.ts +13 -23
- package/dist/question.js +21 -39
- package/dist/read-face-posture.d.ts +6 -6
- package/dist/read-face-posture.js +2 -2
- package/dist/request-declaration-refusal.d.ts +35 -12
- package/dist/request-declaration-refusal.js +21 -9
- package/dist/request-form.d.ts +58 -0
- package/dist/request-form.js +72 -0
- package/dist/request-image-urls.d.ts +8 -2
- package/dist/request-image-urls.js +2 -1
- package/dist/request-images.d.ts +20 -0
- package/dist/request-images.js +59 -0
- package/dist/request-key-closure.d.ts +6 -7
- package/dist/request-key-closure.js +15 -2
- package/dist/request-value-closure.d.ts +5 -5
- package/dist/request-value-closure.js +1 -1
- package/dist/resource-suspend.d.ts +7 -16
- package/dist/resource-suspend.js +1 -1
- package/dist/retired-name-host-notice.d.ts +21 -0
- package/dist/retired-name-host-notice.js +12 -0
- package/dist/rule-entry-list.d.ts +2 -2
- package/dist/rule-entry-list.js +3 -4
- package/dist/rule-issue-reading.d.ts +58 -0
- package/dist/rule-issue-reading.js +14 -0
- package/dist/rules-consent.d.ts +46 -16
- package/dist/rules-consent.js +102 -53
- package/dist/run-acceptance.d.ts +3 -1
- package/dist/run-acceptance.js +3 -0
- package/dist/run-local.d.ts +14 -6
- package/dist/run-local.js +109 -93
- package/dist/run-stale-default.d.ts +7 -0
- package/dist/run-stale-default.js +2 -0
- package/dist/runs.d.ts +73 -44
- package/dist/runs.js +65 -43
- package/dist/runtime-caps-resolver.d.ts +36 -14
- package/dist/runtime-caps-resolver.js +31 -14
- package/dist/runtime-governance.d.ts +2 -2
- package/dist/runtime-governance.js +5 -3
- package/dist/sealed-key-layout.d.ts +12 -6
- package/dist/sealed-key-layout.js +5 -1
- package/dist/sealed-key.d.ts +12 -2
- package/dist/sealed-key.js +116 -26
- package/dist/security.d.ts +133 -161
- package/dist/security.js +163 -59
- package/dist/sema-config-dir.d.ts +20 -0
- package/dist/sema-config-dir.js +27 -2
- package/dist/server-secret-env.d.ts +23 -5
- package/dist/server-secret-env.js +14 -4
- package/dist/service-version.d.ts +2 -1
- package/dist/service-version.js +2 -2
- package/dist/session-children-retire.d.ts +7 -5
- package/dist/session-children-retire.js +7 -2
- package/dist/session-deletion.d.ts +88 -0
- package/dist/session-deletion.js +8 -0
- package/dist/session-erase.d.ts +145 -0
- package/dist/session-erase.js +115 -0
- package/dist/session-error-wire.d.ts +6 -6
- package/dist/session-error-wire.js +1 -1
- package/dist/session-incarnation.d.ts +60 -10
- package/dist/session-incarnation.js +19 -2
- package/dist/session-policy-wire.d.ts +6 -3
- package/dist/session-policy-wire.js +11 -1
- package/dist/session-resident-background.d.ts +29 -47
- package/dist/session-resident-background.js +77 -8
- package/dist/session-row.d.ts +3 -2
- package/dist/session-rules-seat.d.ts +12 -0
- package/dist/session-rules-seat.js +19 -0
- package/dist/session-sync-kernel.d.ts +1 -1
- package/dist/session-titler.d.ts +7 -15
- package/dist/session-titler.js +1 -1
- package/dist/session-workspace.d.ts +11 -2
- package/dist/session-workspace.js +5 -0
- package/dist/sighup-idle.d.ts +1 -1
- package/dist/spec-fields.d.ts +57 -3
- package/dist/spec-fields.js +72 -51
- package/dist/store-posture.d.ts +138 -21
- package/dist/store-posture.js +188 -3
- package/dist/stored-request-hooks-m20.d.ts +3 -2
- package/dist/stored-request-hooks-m20.js +21 -16
- package/dist/stores-sql/background-agent-store-sql.d.ts +11 -2
- package/dist/stores-sql/background-agent-store-sql.js +73 -20
- package/dist/stores-sql/blob-index-sql.d.ts +148 -0
- package/dist/stores-sql/blob-index-sql.js +154 -0
- package/dist/stores-sql/checkpoint-store-sql.d.ts +34 -29
- package/dist/stores-sql/checkpoint-store-sql.js +86 -71
- package/dist/{plugins → stores-sql}/file-history-store-sql.d.ts +23 -11
- package/dist/{plugins → stores-sql}/file-history-store-sql.js +23 -18
- package/dist/stores-sql/mailbox-store-sql.d.ts +7 -4
- package/dist/stores-sql/mailbox-store-sql.js +31 -32
- package/dist/{plugins → stores-sql}/pg-session-storage.d.ts +30 -81
- package/dist/{plugins → stores-sql}/pg-session-storage.js +123 -244
- package/dist/{plugins → stores-sql}/retention-store-sql.d.ts +197 -223
- package/dist/{plugins → stores-sql}/retention-store-sql.js +148 -207
- package/dist/{plugins → stores-sql}/session-event-payload.d.ts +1 -1
- package/dist/{plugins → stores-sql}/session-event-payload.js +1 -1
- package/dist/stores-sql/session-policy-store-sql.d.ts +33 -11
- package/dist/stores-sql/session-policy-store-sql.js +44 -36
- package/dist/stores-sql/session-write-hooks.d.ts +65 -0
- package/dist/stores-sql/session-write-hooks.js +2 -0
- package/dist/{plugins → stores-sql}/tidb-session-storage.d.ts +14 -15
- package/dist/{plugins → stores-sql}/tidb-session-storage.js +22 -28
- package/dist/{plugins → stores-sql}/tidb-session-store.d.ts +67 -138
- package/dist/{plugins → stores-sql}/tidb-session-store.js +130 -200
- package/dist/stores-sql/tool-result-store-sql.d.ts +1 -1
- package/dist/stores-sql/tool-result-store-sql.js +1 -1
- package/dist/stores-sql/windowed-session-storage.d.ts +61 -0
- package/dist/stores-sql/windowed-session-storage.js +70 -0
- package/dist/submission-exit.d.ts +50 -0
- package/dist/submission-exit.js +108 -0
- package/dist/task-a2a.d.ts +7 -1
- package/dist/task-a2a.js +18 -17
- package/dist/task-cwd.d.ts +31 -3
- package/dist/task-cwd.js +25 -1
- package/dist/task-mcp.d.ts +11 -3
- package/dist/task-mcp.js +16 -19
- package/dist/task-settings.d.ts +23 -14
- package/dist/task-settings.js +35 -13
- package/dist/terminal.d.ts +25 -43
- package/dist/terminal.js +31 -11
- package/dist/tool-approval.d.ts +152 -137
- package/dist/tool-approval.js +199 -199
- package/dist/trace/core-keyset-guard.d.ts +22 -9
- package/dist/trace/core-vocab-wire.d.ts +95 -0
- package/dist/trace/core-vocab-wire.js +15 -0
- package/dist/trace/engine-notice-wire.d.ts +1 -1
- package/dist/trace/engine-notice-wire.js +2 -0
- package/dist/trace/exit-seat.d.ts +52 -4
- package/dist/trace/exit-seat.js +43 -36
- package/dist/trace/extension-call-face.d.ts +3 -2
- package/dist/trace/extension-call-face.js +3 -1
- package/dist/trace/ledger-events.d.ts +4 -7
- package/dist/trace/ledger-sink.d.ts +1 -30
- package/dist/trace/ledger-sink.js +0 -11
- package/dist/trace/model-segment.d.ts +5 -5
- package/dist/trace/model-segment.js +5 -5
- package/dist/trace/project.d.ts +88 -58
- package/dist/trace/project.js +64 -28
- package/dist/trace/redact.d.ts +124 -28
- package/dist/trace/redact.js +936 -328
- package/dist/trace/self-minted-wire.d.ts +750 -29
- package/dist/trace/self-minted-wire.js +262 -25
- package/dist/trace/sema-provenance.d.ts +45 -41
- package/dist/trace/sema-provenance.js +81 -10
- package/dist/trace/task-notification-facets.d.ts +70 -2
- package/dist/trace/task-notification-facets.js +71 -1
- package/dist/trace/wire-projection-faces.d.ts +43 -8
- package/dist/trace/wire-projection-faces.js +28 -3
- package/dist/unread-request-members.d.ts +66 -0
- package/dist/unread-request-members.js +41 -0
- package/dist/upstream-body.d.ts +23 -0
- package/dist/upstream-body.js +16 -0
- package/dist/url-refusal.d.ts +3 -3
- package/dist/url-refusal.js +11 -4
- package/dist/user-authored-text.d.ts +1 -1
- package/dist/user-input-ledger.d.ts +7 -8
- package/dist/user-input-ledger.js +1 -1
- package/dist/web-admin-client/apply-effective.d.ts +6 -3
- package/dist/web-admin-client/apply-effective.js +33 -40
- package/dist/web-admin-client/apply-ledger.d.ts +16 -7
- package/dist/web-admin-client/apply-ledger.js +5 -2
- package/dist/web-admin-client/candidate-gate.d.ts +35 -3
- package/dist/web-admin-client/candidate-gate.js +53 -5
- package/dist/web-admin-client/center-request.d.ts +6 -3
- package/dist/web-admin-client/center-request.js +17 -16
- package/dist/web-admin-client/effective-keys.d.ts +1 -1
- package/dist/web-admin-client/effective-keys.js +1 -2
- package/dist/web-admin-client/entry-metadata.d.ts +8 -0
- package/dist/web-admin-client/entry-metadata.js +13 -0
- package/dist/web-admin-client/facade.d.ts +1 -1
- package/dist/web-admin-client/http-client.d.ts +2 -1
- package/dist/web-admin-client/http-client.js +40 -13
- package/dist/web-admin-client/mcp-revocation.d.ts +1 -1
- package/dist/web-admin-client/mcp-revocation.js +2 -1
- package/dist/web-admin-client/read-warnings.d.ts +1 -0
- package/dist/web-admin-client/read-warnings.js +1 -0
- package/dist/web-admin-client/restart-signal.js +13 -6
- package/dist/web-admin-client/skills-mcp.d.ts +22 -8
- package/dist/web-admin-client/skills-mcp.js +26 -21
- package/dist/web-admin-client/types.d.ts +35 -51
- package/dist/workspace-space.d.ts +3 -2
- package/docs/DEVICE-EXECUTOR-PROTOCOL.md +4 -4
- package/package.json +16 -12
- package/scripts/drain-check-local.mjs +118 -173
- package/scripts/drain-check.mysql.sql +20 -16
- package/scripts/drain-check.pg.sql +20 -16
- package/wire-changes/server@7.147.0.json +813 -0
- package/wire-changes/server@7.148.0.json +1517 -0
- package/dist/http/memory-control-plane-corrupt-reply.d.ts +0 -25
- package/dist/http/memory-control-plane-corrupt-reply.js +0 -19
- package/dist/http/memory-layer-reply.d.ts +0 -30
- package/dist/http/memory-layer-reply.js +0 -24
- package/dist/lsp/e2b-bridge.d.ts +0 -57
- package/dist/lsp/e2b-bridge.js +0 -139
- package/dist/lsp/e2b-manager.d.ts +0 -93
- package/dist/lsp/e2b-manager.js +0 -178
- package/dist/lsp/lsp-frames.d.ts +0 -14
- package/dist/lsp/lsp-frames.js +0 -25
- package/dist/lsp/manager.d.ts +0 -129
- package/dist/lsp/manager.js +0 -127
- package/dist/lsp/types.d.ts +0 -12
- package/dist/lsp/types.js +0 -2
- package/dist/lsp/ws-transport.d.ts +0 -40
- package/dist/lsp/ws-transport.js +0 -210
|
@@ -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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type DirectWritableRuleBehavior, type RemovalLiveness } from "./permission-rule-vocab.js";
|
|
2
|
-
import { type RuleOwner, type ImportPreview, type ImportedSettingsLayer, type PersistedRule, type RuleBehavior, type RuleCandidate, type EffectivePermissionRule, type RemoveResult, type RuleRefusalCode, type RuleWriteCommitted, type EditedRuleTextPrecheck, type RuleScope, type RuleOffer } from "@sema-agent/core";
|
|
2
|
+
import { type ConfirmRefusalReason, type RuleOwner, type ImportPreview, type ImportedSettingsLayer, type PersistedRule, type RuleBehavior, type RuleCandidate, type EffectivePermissionRule, type RemoveResult, type RuleRefusalCode, type RuleWriteCommitted, type EditedRuleTextPrecheck, type RuleScope, type RuleOffer } from "@sema-agent/core";
|
|
3
3
|
import type { DurableRulePartitionProvider, PermissionRuleStoreProvider, RuleApprovalRecordStore } from "@sema-agent/core";
|
|
4
4
|
import { type RuleImportTicket, type RuleTicketPurpose, type RuleTicketReclaimResult, type RuleTicketRedeemResult, type RuleTicketSnapshot } from "./plugins/permission-rule-store-sql.js";
|
|
5
5
|
/**
|
|
@@ -192,9 +192,10 @@ export type LocalImportRefusalCode =
|
|
|
192
192
|
| "not_importable";
|
|
193
193
|
/** 兑付回执的**成员级终态**(闭集,机读;`detail` 是给人看的那一半)。两只 redeem 口(cc-import / local-import)同一张表。
|
|
194
194
|
*
|
|
195
|
-
* 🔴
|
|
196
|
-
* (
|
|
197
|
-
* `
|
|
195
|
+
* 🔴 **引擎拒的成员,结局只读引擎的两位**(core 7.65.0 [ref] / [ref]:`committed` 一种读法 + `retriable` 另席,拒臂皆必填):
|
|
196
|
+
* `committed: "no"` ∧ 不可重试 ⇒ `refused`(引擎定了这一条不立 —— 裁定,如旧导入记录里从 `/` 写起的全局规则的 `unsupported.layer_root`;
|
|
197
|
+
* 同批放行被扣下的 `withheld`;人撤掉了它的 `dot_removed`)。可重试(写前的店故障)或 `committed: "unknown"`(写已发出而结局未知)
|
|
198
|
+
* ⇒ 这一走**未定**,整走不落定(见 {@link settleImportWalk})。本仓不按串判,不按码猜,不另写第二份判据。
|
|
198
199
|
* 它进了**落盘回执的边界 schema**(`ImportOutcomeSchema`;`redeemed_outcome` 列回读同一张词表)。⚠️ 预览面**不用**这个词表:那一面的拒绝形是
|
|
199
200
|
* `admitted:false + LocalImportRefusalCode`({@link LocalImportPreviewMember}),两面词表**不同**。 */
|
|
200
201
|
export type ImportMemberOutcome =
|
|
@@ -202,11 +203,10 @@ export type ImportMemberOutcome =
|
|
|
202
203
|
"persisted"
|
|
203
204
|
/** 等价规则**已经在店**(引擎的 `deduped`)—— 同意早就生效,这次什么都不用做。 */
|
|
204
205
|
| "no-op"
|
|
205
|
-
/** 引擎拒了这一条,并答 `committed: "no"
|
|
206
|
+
/** 引擎拒了这一条,并答 `committed: "no"`、不可重试 —— 定了不立。重来同一条拒因(`reason`)会得同一个答,出路在 `detail`(引擎原话)。 */
|
|
206
207
|
| "refused"
|
|
207
|
-
/**
|
|
208
|
-
*
|
|
209
|
-
* 里有它,回放读那份存量。 */
|
|
208
|
+
/** 7.145.x 及更早落定的票行(`redeemed_outcome`)里的词:引擎答 `committed: "unknown"` 的成员。7.146.0 起这一词**不再铸**(落定律:任一成员
|
|
209
|
+
* 未定 ⇒ 不落定、503 同票重走,见 {@link settleImportWalk});词表留着它只为回放读那份存量。 */
|
|
210
210
|
| "indeterminate";
|
|
211
211
|
/** prepare 面的一行。判别式联合:被收下的行**没有**拒因字段可读,被拒的行**必然**带拒因 ——
|
|
212
212
|
* 「admitted 却带 reason」这种矛盾态在类型上不可表达。
|
|
@@ -227,7 +227,7 @@ export type LocalImportPreviewMember = {
|
|
|
227
227
|
};
|
|
228
228
|
/** 一条收紧在 prepare 当场落店的结局(与兑付回执的 `persisted` / `no-op` 同词同义;直写接缝 `addPersistedRule` 的 `added` / `no-op`)。 */
|
|
229
229
|
export type LocalImportTighteningOutcome = "persisted" | "no-op";
|
|
230
|
-
/** 兑付回执的一行(两只 redeem 口同形;唯一铸点 {@link
|
|
230
|
+
/** 兑付回执的一行(两只 redeem 口同形;唯一铸点 {@link settleImportWalk})。`reason` / `detail` 在场 ⇔ 引擎拒了这一条
|
|
231
231
|
* (`refused` / `indeterminate`):`reason` = 引擎的闭集拒因码(`RuleRefusalCode`,core 属主,逐字),`detail` = 引擎给人看的那句话。 */
|
|
232
232
|
export interface ImportOutcomeMember {
|
|
233
233
|
key: ImportRuleKey;
|
|
@@ -239,12 +239,12 @@ export interface ImportOutcomeMember {
|
|
|
239
239
|
* 一次兑付的回执整只 —— **两只 redeem 口同一张**(cc-import / local-import 的 200 体都是 `{ members, rev }`,路由同一个铸点),
|
|
240
240
|
* local-import 另把它**逐字**写进票行 `redeemed_outcome`(回放同源:回放答的就是它)。
|
|
241
241
|
*
|
|
242
|
-
* 🔴 **落定律(
|
|
243
|
-
* `committed: "no"`
|
|
242
|
+
* 🔴 **落定律(一条,两口同读,{@link settleImportWalk})**:兑付走完、拿到引擎的完整成员表、**且每个成员的结局都定了**(`persisted` / `no-op` / 引擎答
|
|
243
|
+
* `committed: "no"` 且不可重试的 `refused`)⇒ 这次兑付落定,回执逐成员交出,票不放回、不答 503:cc-import 一次性用掉、答 200 回执;local-import 把回执
|
|
244
244
|
* 落进票行(SETTLED)后答 200 —— 落定这一跳答不成(落定写抛 / 认领被租约接管而新持有者还没落定)⇒ 照旧答 409
|
|
245
245
|
* `conflict.rule_import_in_flight`,同票再来读到的是权威的那一份回执(那一跳不改成员结局,只决定哪一份是权威)。**没有**完整
|
|
246
|
-
* 成员表(引擎在走之前整批拒 / confirm
|
|
247
|
-
* `
|
|
246
|
+
* 成员表(引擎在走之前整批拒 / confirm 输给并发写者或撞记录店故障 / 店在走之前抛 / 循环里仍抛出来的异常),或任一成员**未定**(引擎答
|
|
247
|
+
* `retriable: true`:成员循环里审批记录店的记 dot CAS / dot 分配 / 读记录在规则写之前失败;或 `committed: "unknown"`:规则店的写抛 / 读回读不出)⇒ 不落定:放回认领、503
|
|
248
248
|
* `state.rule_import_retry`,同一张票重来就是重走一遍 —— 兑付按引擎的设计幂等(记录里的 dot 台账),重走交出完整表,
|
|
249
249
|
* 被打断的那一走已落的成员读 `no-op`。确知的成员拒**不**按票自动重试:一条永久被拒的成员(旧记录里的 `unsupported.layer_root`)
|
|
250
250
|
* 若走重试臂,客户端会 503 到票过期、临期放不回 ⇒ 404,已落成员不撤、被拒成员永不落 —— 7.144.0 及更早 cc-import 口就是这一形。
|
|
@@ -286,6 +286,14 @@ export type LocalImportPrepared = {
|
|
|
286
286
|
reason: "tightening-write-failed";
|
|
287
287
|
committed: RuleWriteCommitted;
|
|
288
288
|
detail: string;
|
|
289
|
+
}
|
|
290
|
+
/** 放行那一半的审批记录建不成(引擎 `prepareCcImport` 答可重试的店拒;同 {@link RuleImportPrepared} 同名臂):无票;同批更早的收紧
|
|
291
|
+
* 可能已生效,同一批原样重发即是出路(已生效的答 no-op)。 */
|
|
292
|
+
| {
|
|
293
|
+
ok: false;
|
|
294
|
+
reason: "record-store-refused";
|
|
295
|
+
committed: RuleWriteCommitted;
|
|
296
|
+
detail: string;
|
|
289
297
|
};
|
|
290
298
|
/** A7 redeem 的结果。 */
|
|
291
299
|
export type LocalImportRedeemed =
|
|
@@ -332,6 +340,14 @@ export type RuleImportPrepared = {
|
|
|
332
340
|
ok: false;
|
|
333
341
|
reason: "too-many-candidates";
|
|
334
342
|
candidates: number;
|
|
343
|
+
}
|
|
344
|
+
/** 引擎的审批记录店建记录失败(core 7.65.0 起 `prepareCcImport` 答拒臂而不是抛):`retriable` 为真 ⇒ 本臂(无票、无规则落店,
|
|
345
|
+
* 同一请求原样重发即是出路;`committed` 原样是引擎那一词)。引擎说不可重试的拒(契约上不出现)不进本臂,响亮抛。 */
|
|
346
|
+
| {
|
|
347
|
+
ok: false;
|
|
348
|
+
reason: "record-store-refused";
|
|
349
|
+
committed: RuleWriteCommitted;
|
|
350
|
+
detail: string;
|
|
335
351
|
};
|
|
336
352
|
/** 导入 redeem 的结果。wire 口径写死(端点=http/routes/rules.ts):成功 ⇒ 200 回执 `{ members, rev }`(与 local-import 口
|
|
337
353
|
* 同一张、同一个铸点;落定律见 {@link ImportOutcome});票拒五类(自造 / 别人的 / 错车道 / 过期 / 已用过)与裁定性拒绝
|
|
@@ -535,8 +551,8 @@ export type DurableRuleScope = Exclude<RuleScope, {
|
|
|
535
551
|
* 🔴 **收不收只有一只判据:core 的 `isValidDurableScope`**(引擎 7.46.0 起 project root 必须是完整绝对路径:`/…`、`X:\…` /
|
|
536
552
|
* `X:/…`、`\\host\…`)。四个 wire 入口(`/v1/rules` 写 / 撤 / 列举过滤、local-import 的行)都经这里;cc-import 的层 root 调同一只
|
|
537
553
|
* 谓词(`http/routes/rules.ts`)。修前这里手抄了一份「root 非空」:`project:myproj` 本仓收、引擎写臂拒(写口答 503「再发一次」——
|
|
538
|
-
* 客户端会无限重试)、引擎读侧丢(撤销口删不动)
|
|
539
|
-
* (`
|
|
554
|
+
* 客户端会无限重试)、引擎读侧丢(撤销口删不动),一条规则在两侧是两种命运。存量的那种行(7.119.x 及更早收下的)不再被起服删除 ——
|
|
555
|
+
* 引擎读侧继续丢它并告知(`permission.rule_row_dropped`),出路是运维在库里删那一行。 */
|
|
540
556
|
export declare function parseRuleScope(text: string): DurableRuleScope | undefined;
|
|
541
557
|
/** 引擎不收的 scope 的**唯一一句**拒句:写 / 撤 / 列举过滤三个路由口、local-import 的成员拒因 `scope_unreadable` 都出站这一只
|
|
542
558
|
* (各口的码照旧各自的),不在读点各抄一份。cc-import 预览的层 root 判据是同一只(`isValidDurableScope`),但那份体里没有 scope 字段,
|
|
@@ -666,11 +682,13 @@ export type RuleWritten =
|
|
|
666
682
|
stillLive: Exclude<RemovalLiveness, "yes">;
|
|
667
683
|
row?: undefined;
|
|
668
684
|
}
|
|
669
|
-
/** 裁定性不收(内容判据 / 方向判据)。`detail`
|
|
685
|
+
/** 裁定性不收(内容判据 / 方向判据)。`detail` 是给人看的那一半(进拒句),`reason` 是给客户端分流的那一半;
|
|
686
|
+
* `canonical` 只在「写入原样不是店会存的拼写」那一臂:店会存的规范拼写原串,调用方原样重发即可(机读位,不必从句子里抠)。 */
|
|
670
687
|
| {
|
|
671
688
|
status: "rejected";
|
|
672
689
|
reason: LocalImportRefusalCode;
|
|
673
690
|
detail: string;
|
|
691
|
+
canonical?: string;
|
|
674
692
|
}
|
|
675
693
|
/** 终态写失败。`detail` 是给人看的那一半;`committed`({@link RuleWriteCommitted},core 的两词闭集)是
|
|
676
694
|
* 给机器分流的那一半 —— 它回答的是**调用方下一步该做什么**。
|
|
@@ -768,6 +786,18 @@ export interface RuleConsentLane {
|
|
|
768
786
|
scope: DurableRuleScope;
|
|
769
787
|
}): Promise<RuleWritten>;
|
|
770
788
|
}
|
|
789
|
+
/**
|
|
790
|
+
* 兑付腿拒绝里的**店故障**两词(审批记录店的读 / CAS / dot 分配失败与规则店自己的读写失败同两词):`store_read` / `store_write`。
|
|
791
|
+
* 其余十五词是裁定性拒。卡道重不重试 = 引擎的 `retriable` **∧** 本谓词(见 {@link throwIfRetriable}):`retriable` 真而码不是店故障 = 版本不同步,不重试、响一行;
|
|
792
|
+
* 两只导入口不读本谓词(只读 `retriable` 与 `committed`,见 `openRefusalOf`)。
|
|
793
|
+
* 闭集穷举(词表属主 core 加词 ⇒ 这里编译红,由人裁新词归哪边)。
|
|
794
|
+
*/
|
|
795
|
+
export declare function isRuleStoreFault(code: RuleRefusalCode): code is "store_read" | "store_write";
|
|
796
|
+
/**
|
|
797
|
+
* 确认拒里**同一请求重来即可**的三词(闭集穷举):`conflict`(CAS 输给并发写者)、`store_read`(读记录抛,确认一个字没写)、`store_write`
|
|
798
|
+
* (记确认的 CAS 抛:记录可能已落 —— 同一确认重来,已落的记录答幂等的 yes;core 7.65.0 [ref])。其余是裁定。两只导入口读它定「放回认领 / 裁定拒」。
|
|
799
|
+
*/
|
|
800
|
+
export declare function confirmRefusalRetries(reason: ConfirmRefusalReason): boolean;
|
|
771
801
|
export declare function createRuleConsentLane(stores: RuleConsentStores, opts?: {
|
|
772
802
|
ticketTtlMs?: number;
|
|
773
803
|
newTicketId?: () => string;
|
package/dist/rules-consent.js
CHANGED
|
@@ -114,8 +114,12 @@ function isCommandRuleMatch(match) {
|
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
const unknownReasonLogger = createLogger();
|
|
117
|
-
function confirmRefusalWord(
|
|
117
|
+
function confirmRefusalWord(confirmed) {
|
|
118
|
+
const { reason } = confirmed;
|
|
118
119
|
switch (reason) {
|
|
120
|
+
case "store_read":
|
|
121
|
+
case "store_write":
|
|
122
|
+
throw new RuleStoreFaultError({ code: reason, reason: confirmed.detail?.message ?? reason });
|
|
119
123
|
case "edit_disabled":
|
|
120
124
|
case "edit_binding_mismatch":
|
|
121
125
|
return "edit-unsupported";
|
|
@@ -137,7 +141,7 @@ function confirmRefusalWord(reason) {
|
|
|
137
141
|
}
|
|
138
142
|
}
|
|
139
143
|
}
|
|
140
|
-
function isRuleStoreFault(code) {
|
|
144
|
+
export function isRuleStoreFault(code) {
|
|
141
145
|
switch (code) {
|
|
142
146
|
case "store_read":
|
|
143
147
|
case "store_write":
|
|
@@ -158,8 +162,11 @@ function isRuleStoreFault(code) {
|
|
|
158
162
|
case "occ":
|
|
159
163
|
case "dot_removed":
|
|
160
164
|
return false;
|
|
161
|
-
default:
|
|
162
|
-
|
|
165
|
+
default: {
|
|
166
|
+
const unknown = code;
|
|
167
|
+
unknownReasonLogger.warn("isRuleStoreFault: unknown RuleRefusalCode from core (dist/core version skew?) — read as not a store failure", { code: String(unknown) });
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
163
170
|
}
|
|
164
171
|
}
|
|
165
172
|
class RuleStoreFaultError extends Error {
|
|
@@ -170,17 +177,37 @@ class RuleStoreFaultError extends Error {
|
|
|
170
177
|
this.code = refusal.code;
|
|
171
178
|
}
|
|
172
179
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
if (!
|
|
180
|
+
const retriableSkewLogger = createLogger();
|
|
181
|
+
function throwIfRetriable(refusal) {
|
|
182
|
+
if (!refusal.retriable)
|
|
176
183
|
return;
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
+
const { code } = refusal;
|
|
185
|
+
if (isRuleStoreFault(code))
|
|
186
|
+
throw new RuleStoreFaultError({ code, reason: refusal.reason });
|
|
187
|
+
retriableSkewLogger.warn("an engine refusal says retriable but its code is not a store failure (core/dist skew?) — not retried", { code });
|
|
188
|
+
}
|
|
189
|
+
export function confirmRefusalRetries(reason) {
|
|
190
|
+
switch (reason) {
|
|
191
|
+
case "conflict":
|
|
192
|
+
case "store_read":
|
|
193
|
+
case "store_write":
|
|
194
|
+
return true;
|
|
195
|
+
case "record_not_found":
|
|
196
|
+
case "record_schema_stale":
|
|
197
|
+
case "record_malformed":
|
|
198
|
+
case "selection_missing":
|
|
199
|
+
case "selection_invalid":
|
|
200
|
+
case "selection_mismatch":
|
|
201
|
+
case "not_pending":
|
|
202
|
+
case "edit_disabled":
|
|
203
|
+
case "edit_binding_mismatch":
|
|
204
|
+
case "edit_rejected":
|
|
205
|
+
return false;
|
|
206
|
+
default: {
|
|
207
|
+
const unknown = reason;
|
|
208
|
+
unknownReasonLogger.warn("confirmRefusalRetries: unknown ConfirmRefusalReason from core (dist/core version skew?) — read as not retriable", { reason: String(unknown) });
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
184
211
|
}
|
|
185
212
|
}
|
|
186
213
|
function refusedMembersOf(members) {
|
|
@@ -287,39 +314,51 @@ function buildLocalImportLayers(candidates) {
|
|
|
287
314
|
return root === "" ? { layer: "userSettings", path: LOCAL_IMPORT_LAYER_PATH, readFile } : { layer: "projectSettings", path: `${LOCAL_IMPORT_LAYER_PATH}:${root}`, root, readFile };
|
|
288
315
|
});
|
|
289
316
|
}
|
|
290
|
-
function
|
|
291
|
-
|
|
317
|
+
function settleImportWalk(members) {
|
|
318
|
+
const settled = [];
|
|
319
|
+
for (const m of members) {
|
|
292
320
|
const key = { behavior: m.behavior, rule: m.rule, scope: serializeRuleScope(m.scope) };
|
|
293
321
|
switch (m.status) {
|
|
294
322
|
case "persisted":
|
|
295
|
-
|
|
323
|
+
settled.push({ key, outcome: "persisted" });
|
|
324
|
+
break;
|
|
296
325
|
case "deduped":
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
326
|
+
settled.push({ key, outcome: "no-op" });
|
|
327
|
+
break;
|
|
328
|
+
case "refused": {
|
|
329
|
+
const open = openRefusalOf(m);
|
|
330
|
+
if (open !== undefined)
|
|
331
|
+
return { open: `the outcome of ${m.rule} is not settled (${m.code}, ${open}): ${m.reason}` };
|
|
332
|
+
settled.push({ key, outcome: "refused", reason: m.code, detail: m.reason });
|
|
333
|
+
break;
|
|
334
|
+
}
|
|
300
335
|
default: {
|
|
301
336
|
const unknown = m;
|
|
302
337
|
throw new Error(`unknown redeemed-batch member status: ${JSON.stringify(unknown)}`);
|
|
303
338
|
}
|
|
304
339
|
}
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
function unsettledDetailOf(members) {
|
|
308
|
-
const open = members.find((m) => m.outcome === "indeterminate");
|
|
309
|
-
return open === undefined ? undefined : `the outcome of ${open.key.rule} is not known (${open.reason ?? "unknown"}): ${open.detail ?? ""}`;
|
|
340
|
+
}
|
|
341
|
+
return { settled };
|
|
310
342
|
}
|
|
311
|
-
function
|
|
312
|
-
|
|
343
|
+
function openRefusalOf(refusal) {
|
|
344
|
+
if (refusal.retriable)
|
|
345
|
+
return "retriable";
|
|
346
|
+
switch (refusal.committed) {
|
|
313
347
|
case "no":
|
|
314
|
-
return
|
|
348
|
+
return undefined;
|
|
315
349
|
case "unknown":
|
|
316
|
-
return "
|
|
350
|
+
return "committed unknown";
|
|
317
351
|
default: {
|
|
318
|
-
const unknown = committed;
|
|
352
|
+
const unknown = refusal.committed;
|
|
319
353
|
throw new Error(`unknown redeemed-batch member committed word: ${JSON.stringify(unknown)}`);
|
|
320
354
|
}
|
|
321
355
|
}
|
|
322
356
|
}
|
|
357
|
+
function importRecordRefusal(refusal) {
|
|
358
|
+
if (!refusal.retriable)
|
|
359
|
+
throw new Error(`the engine refused to prepare this import and says repeating will not help (${refusal.code}): ${refusal.reason}`);
|
|
360
|
+
return { ok: false, reason: "record-store-refused", committed: refusal.committed, detail: refusal.reason };
|
|
361
|
+
}
|
|
323
362
|
export function createRuleConsentLane(stores, opts) {
|
|
324
363
|
const deps = { provider: stores.provider, approvals: stores.approvals, cardEdits: true };
|
|
325
364
|
const ticketTtlMs = opts?.ticketTtlMs ?? RULE_IMPORT_TICKET_TTL_MS;
|
|
@@ -351,6 +390,10 @@ export function createRuleConsentLane(stores, opts) {
|
|
|
351
390
|
if (prepared === undefined) {
|
|
352
391
|
return { ok: false, reason: "no-candidates", detail: "the rule lane cannot speak for this command (compound / redirection / unsupported tool)" };
|
|
353
392
|
}
|
|
393
|
+
if ("status" in prepared) {
|
|
394
|
+
throwIfRetriable(prepared);
|
|
395
|
+
return { ok: false, reason: "redeem-refused", detail: prepared.reason };
|
|
396
|
+
}
|
|
354
397
|
const redemption = input.redemption;
|
|
355
398
|
if (redemption.kind === "batch") {
|
|
356
399
|
const wanted = new Set(redemption.offer.rules.map((r) => r.rule));
|
|
@@ -360,17 +403,17 @@ export function createRuleConsentLane(stores, opts) {
|
|
|
360
403
|
}
|
|
361
404
|
const confirmed = await confirmRuleApproval({ approvalId: prepared.approvalId, principal: input.principal, selectedOffer: offerIndex, deps });
|
|
362
405
|
if (!confirmed.ok)
|
|
363
|
-
return { ok: false, reason:
|
|
406
|
+
return { ok: false, reason: confirmRefusalWord(confirmed), detail: confirmed.detail?.message ?? confirmed.reason };
|
|
364
407
|
const result = await redeemRuleBatch({ approvalId: prepared.approvalId, principal: input.principal, deps });
|
|
365
408
|
if ("status" in result) {
|
|
366
|
-
|
|
409
|
+
throwIfRetriable(result);
|
|
367
410
|
return { ok: false, reason: "redeem-refused", detail: result.reason };
|
|
368
411
|
}
|
|
369
412
|
const refused = refusedMembersOf(result.members);
|
|
370
413
|
if (refused.length > 0) {
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
414
|
+
const first = refused[0];
|
|
415
|
+
if (first !== undefined && refused.length === result.members.length && refused.every((m) => m.retriable))
|
|
416
|
+
throwIfRetriable(first);
|
|
374
417
|
return { ok: false, reason: "redeem-refused", detail: `partial batch: ${refused.length} member(s) refused (${refused.map((x) => x.reason).join("; ")})` };
|
|
375
418
|
}
|
|
376
419
|
return { ok: true, ...anchorBatchMembers(result.members, redemption.offer), rev: result.rev };
|
|
@@ -385,7 +428,7 @@ export function createRuleConsentLane(stores, opts) {
|
|
|
385
428
|
}
|
|
386
429
|
const confirmed = await confirmRuleApproval({ approvalId: prepared.approvalId, principal: input.principal, selectedOffer: offerIndex, deps });
|
|
387
430
|
if (!confirmed.ok)
|
|
388
|
-
return { ok: false, reason:
|
|
431
|
+
return { ok: false, reason: confirmRefusalWord(confirmed), detail: confirmed.detail?.message ?? confirmed.reason };
|
|
389
432
|
ticket = offered;
|
|
390
433
|
}
|
|
391
434
|
else {
|
|
@@ -403,7 +446,7 @@ export function createRuleConsentLane(stores, opts) {
|
|
|
403
446
|
deps,
|
|
404
447
|
});
|
|
405
448
|
if (!confirmed.ok)
|
|
406
|
-
return { ok: false, reason: confirmRefusalWord(confirmed
|
|
449
|
+
return { ok: false, reason: confirmRefusalWord(confirmed), detail: confirmed.detail?.message ?? confirmed.reason };
|
|
407
450
|
const minted = confirmed.mintedCandidate;
|
|
408
451
|
if (minted === undefined) {
|
|
409
452
|
return { ok: false, reason: "confirm-refused", detail: "the edited confirmation landed without a minted candidate — nothing to redeem" };
|
|
@@ -419,7 +462,7 @@ export function createRuleConsentLane(stores, opts) {
|
|
|
419
462
|
}
|
|
420
463
|
const redeemed = await redeemRuleTicket({ ticket, principal: input.principal, deps });
|
|
421
464
|
if (redeemed.status !== "redeemed") {
|
|
422
|
-
|
|
465
|
+
throwIfRetriable(redeemed);
|
|
423
466
|
return { ok: false, reason: "redeem-refused", detail: redeemed.reason };
|
|
424
467
|
}
|
|
425
468
|
return { ok: true, kind: "single", rule: redeemed.rule, rev: redeemed.rev, alreadyRedeemed: redeemed.alreadyRedeemed };
|
|
@@ -429,7 +472,10 @@ export function createRuleConsentLane(stores, opts) {
|
|
|
429
472
|
const readFile = async () => l.content;
|
|
430
473
|
return l.layer === "userSettings" ? { layer: l.layer, path: l.path, readFile } : { layer: l.layer, path: l.path, root: l.root, readFile };
|
|
431
474
|
});
|
|
432
|
-
const
|
|
475
|
+
const prepared = await prepareCcImport({ layers: ccLayers, principal, deps });
|
|
476
|
+
if ("status" in prepared)
|
|
477
|
+
return importRecordRefusal(prepared);
|
|
478
|
+
const { preview, approvalId } = prepared;
|
|
433
479
|
if (approvalId === undefined) {
|
|
434
480
|
return { ok: true, preview };
|
|
435
481
|
}
|
|
@@ -509,8 +555,8 @@ export function createRuleConsentLane(stores, opts) {
|
|
|
509
555
|
if (record.state === "pending") {
|
|
510
556
|
const confirmed = await confirmRuleApproval({ approvalId: consumed.approvalId, principal, deps });
|
|
511
557
|
if (!confirmed.ok) {
|
|
512
|
-
if (confirmed.reason
|
|
513
|
-
return await indeterminate(confirmed.reason);
|
|
558
|
+
if (confirmRefusalRetries(confirmed.reason))
|
|
559
|
+
return await indeterminate(confirmed.detail?.message ?? confirmed.reason);
|
|
514
560
|
return { ok: false, reason: "record-unusable", detail: confirmed.reason };
|
|
515
561
|
}
|
|
516
562
|
}
|
|
@@ -518,11 +564,10 @@ export function createRuleConsentLane(stores, opts) {
|
|
|
518
564
|
if ("status" in result) {
|
|
519
565
|
return await indeterminate(result.reason);
|
|
520
566
|
}
|
|
521
|
-
const
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
return { ok: true, outcome: { members, rev: result.rev } };
|
|
567
|
+
const walk = settleImportWalk(result.members);
|
|
568
|
+
if ("open" in walk)
|
|
569
|
+
return await indeterminate(walk.open);
|
|
570
|
+
return { ok: true, outcome: { members: walk.settled, rev: result.rev } };
|
|
526
571
|
}
|
|
527
572
|
catch (err) {
|
|
528
573
|
return await indeterminate(err instanceof Error ? err.message : String(err));
|
|
@@ -580,7 +625,10 @@ export function createRuleConsentLane(stores, opts) {
|
|
|
580
625
|
}
|
|
581
626
|
if (allows.length === 0)
|
|
582
627
|
return { ok: true, preview: { members } };
|
|
583
|
-
const
|
|
628
|
+
const prepared = await prepareCcImport({ layers: buildLocalImportLayers(allows), principal, deps });
|
|
629
|
+
if ("status" in prepared)
|
|
630
|
+
return importRecordRefusal(prepared);
|
|
631
|
+
const { preview, approvalId } = prepared;
|
|
584
632
|
const engineKeys = new Set(preview.candidates.map((c) => `${c.behavior}${LOCAL_IMPORT_KEY_SEP}${serializeRuleScope(c.scope)}${LOCAL_IMPORT_KEY_SEP}${c.rule}`));
|
|
585
633
|
for (let i = 0; i < members.length; i++) {
|
|
586
634
|
const m = members[i];
|
|
@@ -669,8 +717,8 @@ export function createRuleConsentLane(stores, opts) {
|
|
|
669
717
|
if (record.state === "pending") {
|
|
670
718
|
const confirmed = await confirmRuleApproval({ approvalId, principal, deps });
|
|
671
719
|
if (!confirmed.ok) {
|
|
672
|
-
if (confirmed.reason
|
|
673
|
-
return await transient(confirmed.reason);
|
|
720
|
+
if (confirmRefusalRetries(confirmed.reason))
|
|
721
|
+
return await transient(confirmed.detail?.message ?? confirmed.reason);
|
|
674
722
|
return await verdict("record-unusable", confirmed.reason);
|
|
675
723
|
}
|
|
676
724
|
}
|
|
@@ -678,11 +726,11 @@ export function createRuleConsentLane(stores, opts) {
|
|
|
678
726
|
if ("status" in result) {
|
|
679
727
|
return await transient(result.reason);
|
|
680
728
|
}
|
|
681
|
-
|
|
729
|
+
const walk = settleImportWalk(result.members);
|
|
730
|
+
if ("open" in walk)
|
|
731
|
+
return await transient(walk.open);
|
|
732
|
+
members = walk.settled;
|
|
682
733
|
rev = result.rev;
|
|
683
|
-
const open = unsettledDetailOf(members);
|
|
684
|
-
if (open !== undefined)
|
|
685
|
-
return await transient(open);
|
|
686
734
|
}
|
|
687
735
|
catch (err) {
|
|
688
736
|
return await transient(err instanceof Error ? err.message : String(err));
|
|
@@ -824,6 +872,7 @@ export function createRuleConsentLane(stores, opts) {
|
|
|
824
872
|
reason: "rule_rejected",
|
|
825
873
|
detail: `this rule text is not the spelling the store would hold: send ${JSON.stringify(written.rule.rule)} instead ` +
|
|
826
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,
|
|
827
876
|
};
|
|
828
877
|
}
|
|
829
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
|