@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
|
@@ -94,7 +94,7 @@ async function planSqlPatch(patch, reads, baseline, claims, unstorableReason, su
|
|
|
94
94
|
kind: "add",
|
|
95
95
|
stored,
|
|
96
96
|
rev: computeEntryRev(stored),
|
|
97
|
-
prior: prior !== undefined ? { scope: prior.scope, slug: prior.slug } : undefined,
|
|
97
|
+
prior: prior !== undefined ? { scope: prior.scope, slug: prior.slug, rev: patch.guard === "absent" ? prior.rev : undefined } : undefined,
|
|
98
98
|
frontmatter: entry.frontmatter,
|
|
99
99
|
suffixAt: n,
|
|
100
100
|
landings,
|
|
@@ -138,6 +138,9 @@ async function planSqlPatch(patch, reads, baseline, claims, unstorableReason, su
|
|
|
138
138
|
return conflict({ op: "update", id: patch.id, reason: unstorableReason });
|
|
139
139
|
}
|
|
140
140
|
const moves = current.scope !== entry.scope || current.slug !== entry.slug;
|
|
141
|
+
if (moves && (suffixFrom > FIRST_SUFFIX_STEP || (await reads.idsAt(entry.scope, entry.slug)).some((holder) => holder !== patch.id))) {
|
|
142
|
+
return conflict({ op: "update", id: patch.id, reason: `update target ${JSON.stringify(`${entry.scope}/${entry.slug}`)} is held by another entry (unique (scope, slug)); not written` });
|
|
143
|
+
}
|
|
141
144
|
return {
|
|
142
145
|
kind: "update",
|
|
143
146
|
entry,
|
|
@@ -145,6 +148,7 @@ async function planSqlPatch(patch, reads, baseline, claims, unstorableReason, su
|
|
|
145
148
|
currentRev: current.rev,
|
|
146
149
|
current: at,
|
|
147
150
|
baseRev: patch.baseRev,
|
|
151
|
+
suffixAt: FIRST_SUFFIX_STEP,
|
|
148
152
|
landings: [...(moves ? [{ id: patch.id, ...at }] : []), { id: entry.id, scope: entry.scope, slug: entry.slug }],
|
|
149
153
|
};
|
|
150
154
|
}
|
|
@@ -187,13 +191,8 @@ async function predictLandings(patches, from, duplicateAt, reads, unstorableReas
|
|
|
187
191
|
if (duplicateAt.has(i))
|
|
188
192
|
continue;
|
|
189
193
|
let plan;
|
|
190
|
-
let targetHeld = false;
|
|
191
194
|
try {
|
|
192
195
|
plan = await planSqlPatch(patches[i], view, scratchBaseline, scratchClaims, unstorableReason, suffixFloor.get(i) ?? FIRST_SUFFIX_STEP);
|
|
193
|
-
if (plan.kind === "update") {
|
|
194
|
-
const { id, scope, slug } = plan.entry;
|
|
195
|
-
targetHeld = (await view.idsAt(scope, slug)).some((holder) => holder !== id);
|
|
196
|
-
}
|
|
197
196
|
}
|
|
198
197
|
catch {
|
|
199
198
|
continue;
|
|
@@ -206,8 +205,7 @@ async function predictLandings(patches, from, duplicateAt, reads, unstorableReas
|
|
|
206
205
|
scratchClaims.add(slugKey(plan.stored.scope, plan.stored.slug));
|
|
207
206
|
}
|
|
208
207
|
else if (plan.kind === "update") {
|
|
209
|
-
|
|
210
|
-
overlay.set(plan.entry.id, { scope: plan.entry.scope, slug: plan.entry.slug, rev: plan.rev, frontmatter: plan.entry.frontmatter });
|
|
208
|
+
overlay.set(plan.entry.id, { scope: plan.entry.scope, slug: plan.entry.slug, rev: plan.rev, frontmatter: plan.entry.frontmatter });
|
|
211
209
|
}
|
|
212
210
|
else {
|
|
213
211
|
overlay.set(plan.id, null);
|
|
@@ -302,7 +300,7 @@ export async function applySqlPatches(patches, opts, leg) {
|
|
|
302
300
|
report.conflicts.push(outcome.conflict);
|
|
303
301
|
return [];
|
|
304
302
|
case "slug-taken":
|
|
305
|
-
if (plan.kind
|
|
303
|
+
if (plan.kind !== "delete")
|
|
306
304
|
suffixFloor.set(k, plan.suffixAt + 1);
|
|
307
305
|
continue;
|
|
308
306
|
case "moved":
|
|
@@ -27,7 +27,7 @@ export interface TiDBMemoryEngineBackendOptions {
|
|
|
27
27
|
* entry plane itself is deliberately NON-transactional (single-statement CAS is the correctness
|
|
28
28
|
* mechanism), and the Pg twin's bare-PgQueryFn seam cannot cheaply transact — wrapping only the
|
|
29
29
|
* TiDB side would fork the twins' semantics. Chosen trade-off on BOTH dialects: entry write commits
|
|
30
|
-
* first, history append is BEST-EFFORT (failure = swallow +
|
|
30
|
+
* first, history append is BEST-EFFORT (failure = swallow + a log-seam warn line) — history is the AUDIT
|
|
31
31
|
* face, not the correctness face: a lost history row loses an audit line, never data. */
|
|
32
32
|
history?: {
|
|
33
33
|
appendHistory(rows: readonly MemoryHistoryAppendRow[]): Promise<void>;
|
|
@@ -67,11 +67,14 @@ export declare class TiDBMemoryEngineBackend implements MemoryBackend {
|
|
|
67
67
|
private freshRow;
|
|
68
68
|
/**
|
|
69
69
|
* add:拆成「计划时有行 ⇒ UPDATE by id / 没有 ⇒ INSERT」(见文件头:MySQL 的 ON DUPLICATE KEY UPDATE 会被 `(scope, slug)` 键抢占、改写他人行,
|
|
70
|
-
* 禁用)。UPDATE
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
70
|
+
* 禁用)。UPDATE 腿只覆盖仍在计划投影上的行,add-if-absent 再绑计划读到的 rev(与 PG 孪生同一条件);零 AFFECTED 行 ⇒ 现读:行没了 = 被并发
|
|
71
|
+
* 删掉 ⇒ 转 INSERT 腿、同一拼写(改前同);行在别处、或(绑了 rev 时)已被改写 ⇒ `moved`(驱动器按现状重判:add-if-absent 照判);行仍满足写条件且
|
|
72
|
+
* 已是这一份内容 = 匹配但值逐字相同(连接未开 FOUND_ROWS 时只数改动行)⇒ 已落;仍满足写条件却不是这一份内容 = 判与现读之间行被改走又改回
|
|
73
|
+
* ⇒ 响亮抛(记成这一条的 io error 冲突,与 PG 孪生同答)。ER_DUP_ENTRY 按**现读**分诊,不按报文里的键名:INSERT 腿撞键之后这个 id 的行在 ⇒
|
|
74
|
+
* 同 id 的行在判与写之间被别的副本插入 ⇒ `moved`(驱动器按现状重判,guard / 跨 scope 拒照判;与 PG 孪生 `ON CONFLICT (id)` 的仲裁同答);不在 ⇒
|
|
75
|
+
* 名在计划之后被占 ⇒ `slug-taken`;UPDATE 腿按 id 改、只撞得上 `(scope, slug)` ⇒ `slug-taken`。键名不可作判据:对手以同 id **同拼写**插入时
|
|
76
|
+
* 两只唯一键同时撞上,引擎报哪一只由它自己定(TiDB 报 `uq_…scope_slug`)—— 按键名会把「同 id 已在」读成「名被占」、退到 `-2` 拼写去覆盖。
|
|
77
|
+
* 每次重发写语句前都调 confirm(它是检查,幂等)。
|
|
75
78
|
*/
|
|
76
79
|
private writeAdd;
|
|
77
80
|
/** update:条件 = 判过的 rev **且**判过的投影(rev 是内容哈希、不含 scope / slug)。零 AFFECTED 行 ⇒ 这一条的 CAS 按 **rev** 判(core 契约:stale
|
|
@@ -81,7 +84,9 @@ export declare class TiDBMemoryEngineBackend implements MemoryBackend {
|
|
|
81
84
|
* 这是零行唯一能是 applied 的形 —— 目标 rev 与判过的 rev 不同的 update 一定改动行(rev 列本身变了),零行即未匹配;
|
|
82
85
|
* 行被对手改走又改回判过的 rev 时,按 rev 它没变过(与 File 腿的比对、与共享判里「A→B→A 让 stale baseRev 重新当前」同一读法),这一条本来就是什么都没改 ⇒ 照样已落;
|
|
83
86
|
* · 内容未变而投影变了 = `moved`;其余 = CAS 冲突,`currentRev` 报现值。
|
|
84
|
-
* 🔴 行存在性是承重的:判与写之间行被并发删掉时 affectedRows 也是 0,现读对没了的行答 undefined ⇒ 落冲突(逐字相同的 update 也一样),两方言同答。
|
|
87
|
+
* 🔴 行存在性是承重的:判与写之间行被并发删掉时 affectedRows 也是 0,现读对没了的行答 undefined ⇒ 落冲突(逐字相同的 update 也一样),两方言同答。
|
|
88
|
+
* 撞唯一键(ER_DUP_ENTRY):主键 `id` 不变,能撞的只有 `(scope, slug)` —— 目标名在判之后被别的 id 占了 ⇒ `slug-taken`(与 add 口、PG 孪生同一结局词;
|
|
89
|
+
* 驱动器重判,判当场判成冲突)。 */
|
|
85
90
|
private writeUpdate;
|
|
86
91
|
/** delete:条件同 update;DELETE 的 affectedRows 数的是删掉的行(FOUND_ROWS 只影响 UPDATE):0 = 行变了 / 挪了 / 没了。 */
|
|
87
92
|
private writeDelete;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { writeLogText } from "../observability/logger.js";
|
|
1
2
|
import { jaccardDistance, termSet } from "@sema-agent/core";
|
|
2
3
|
import { readFrontmatterColumn } from "./memory-engine-vector-util.js";
|
|
3
4
|
import { decodeJsonColumn, foldJsonColumn, jsonColumnText } from "./sql-json-column.js";
|
|
@@ -37,9 +38,6 @@ export async function ensureTiDBMemoryEngineSchema(pool) {
|
|
|
37
38
|
await ensureIndexes((text, params) => pool.query(text, params), "mysql", MEMORY_ENGINE_INDEXES);
|
|
38
39
|
}
|
|
39
40
|
const isDupEntry = isMysqlDupKeyError;
|
|
40
|
-
function isPrimaryKeyDup(err) {
|
|
41
|
-
return isDupEntry(err) && /for key '[^']*PRIMARY'/i.test(String(err.message ?? ""));
|
|
42
|
-
}
|
|
43
41
|
const AT_PLANNED_PROJECTION = "CAST(scope AS BINARY) = CAST(? AS BINARY) AND CAST(slug AS BINARY) = CAST(? AS BINARY)";
|
|
44
42
|
function inPlaceholders(count) {
|
|
45
43
|
return Array.from({ length: count }, () => "?").join(", ");
|
|
@@ -182,19 +180,19 @@ export class TiDBMemoryEngineBackend {
|
|
|
182
180
|
for (;;) {
|
|
183
181
|
try {
|
|
184
182
|
if (overwrite !== undefined) {
|
|
185
|
-
const params = [stored.scope, stored.slug, JSON.stringify(stored.frontmatter), stored.body, rev, this.clock(), sizeBytes, stored.id, overwrite.scope, overwrite.slug];
|
|
183
|
+
const params = [stored.scope, stored.slug, JSON.stringify(stored.frontmatter), stored.body, rev, this.clock(), sizeBytes, stored.id, ...(overwrite.rev !== undefined ? [overwrite.rev] : []), overwrite.scope, overwrite.slug];
|
|
186
184
|
confirm();
|
|
187
|
-
const res = await this.write(`UPDATE ${T} SET scope = ?, slug = ?, frontmatter = ?, body = ?, rev = ?, mtime_ms = ?, size_bytes = ?, embedding = NULL WHERE id = ? AND ${AT_PLANNED_PROJECTION}`, params);
|
|
185
|
+
const res = await this.write(`UPDATE ${T} SET scope = ?, slug = ?, frontmatter = ?, body = ?, rev = ?, mtime_ms = ?, size_bytes = ?, embedding = NULL WHERE id = ? AND ${overwrite.rev !== undefined ? "rev = ? AND " : ""}${AT_PLANNED_PROJECTION}`, params);
|
|
188
186
|
if (res.affectedRows === 0) {
|
|
189
187
|
const fresh = await this.freshRow(stored.id);
|
|
190
188
|
if (fresh === undefined) {
|
|
191
189
|
overwrite = undefined;
|
|
192
190
|
continue;
|
|
193
191
|
}
|
|
194
|
-
if (fresh.scope !== overwrite.scope || fresh.slug !== overwrite.slug)
|
|
192
|
+
if (fresh.scope !== overwrite.scope || fresh.slug !== overwrite.slug || (overwrite.rev !== undefined && fresh.rev !== overwrite.rev))
|
|
195
193
|
return { kind: "moved" };
|
|
196
194
|
if (fresh.rev !== rev) {
|
|
197
|
-
throw new Error(`memory-engine: the add of ${JSON.stringify(stored.id)} wrote no row, yet the row
|
|
195
|
+
throw new Error(`memory-engine: the add of ${JSON.stringify(stored.id)} wrote no row, yet the row still meets the write condition with other content — refusing to report it either way`);
|
|
198
196
|
}
|
|
199
197
|
}
|
|
200
198
|
}
|
|
@@ -207,7 +205,9 @@ export class TiDBMemoryEngineBackend {
|
|
|
207
205
|
catch (err) {
|
|
208
206
|
if (!isDupEntry(err))
|
|
209
207
|
throw err;
|
|
210
|
-
|
|
208
|
+
if (overwrite !== undefined)
|
|
209
|
+
return { kind: "slug-taken" };
|
|
210
|
+
return (await this.freshRow(stored.id)) !== undefined ? { kind: "moved" } : { kind: "slug-taken" };
|
|
211
211
|
}
|
|
212
212
|
return { kind: "committed" };
|
|
213
213
|
}
|
|
@@ -215,7 +215,15 @@ export class TiDBMemoryEngineBackend {
|
|
|
215
215
|
async writeUpdate({ entry, rev, currentRev, current, baseRev }, _prepared, confirm) {
|
|
216
216
|
const params = [entry.scope, entry.slug, JSON.stringify(entry.frontmatter), entry.body, rev, this.clock(), Buffer.byteLength(serializeEntryFile(entry), "utf8"), entry.id, currentRev, current.scope, current.slug];
|
|
217
217
|
confirm();
|
|
218
|
-
|
|
218
|
+
let res;
|
|
219
|
+
try {
|
|
220
|
+
res = await this.write(`UPDATE ${TIDB_MEMORY_ENGINE_TABLES.entry} SET scope = ?, slug = ?, frontmatter = ?, body = ?, rev = ?, mtime_ms = ?, size_bytes = ?, embedding = NULL WHERE id = ? AND rev = ? AND ${AT_PLANNED_PROJECTION}`, params);
|
|
221
|
+
}
|
|
222
|
+
catch (err) {
|
|
223
|
+
if (isDupEntry(err))
|
|
224
|
+
return { kind: "slug-taken" };
|
|
225
|
+
throw err;
|
|
226
|
+
}
|
|
219
227
|
if (res.affectedRows > 0)
|
|
220
228
|
return { kind: "committed" };
|
|
221
229
|
const fresh = await this.freshRow(entry.id);
|
|
@@ -245,7 +253,7 @@ export class TiDBMemoryEngineBackend {
|
|
|
245
253
|
}
|
|
246
254
|
catch (err) {
|
|
247
255
|
this.historyRowsLost += rows.length;
|
|
248
|
-
|
|
256
|
+
writeLogText("stderr", `TiDBMemoryEngineBackend: best-effort history append failed (${rows.length} row(s) lost, ${this.historyRowsLost} cumulative — audit face only, entries committed): ${err instanceof Error ? err.message : String(err)}`);
|
|
249
257
|
}
|
|
250
258
|
}
|
|
251
259
|
async getConsolidationCursor(scope) {
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* ── 数据形([ref] §1.1 的施工形;**稿偏离如实记**)────────────────────────────────────────────────
|
|
8
8
|
* [ref] 稿写的是 `PRIMARY KEY (org_id, principal)` + `principal=''` 为 org 级缺省哨兵行。亲读本仓
|
|
9
|
-
* (侦察 2026-08-30):server **没有 org 身份维** —— 租户维 = 单 `principal`(`
|
|
9
|
+
* (侦察 2026-08-30):server **没有 org 身份维** —— 租户维 = 单 `principal`(`gatedSubject` 供给),
|
|
10
10
|
* `org` 只是记忆 scope 目录里的一个词(`org-memory-admission.ts`:授权目录三态,不是 principal 的属性),
|
|
11
11
|
* 任何 SQL 表都没有 `org_id` 列。给表铸一根没人能填的 `org_id` 就是编数据(「不编」律)。所以:
|
|
12
12
|
* · **一台 worker = 一个租户面**,稿中「org 级缺省行」落成**部署级缺省行**(同一哨兵 `principal=''`);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { mysqlDriver, pgDriver } from "./sql-driver.js";
|
|
2
|
-
import { RESERVED_PRINCIPALS, RESERVED_PRINCIPAL_PREFIXES } from "../
|
|
2
|
+
import { PRINCIPAL_MAX_BYTES, RESERVED_PRINCIPALS, RESERVED_PRINCIPAL_PREFIXES } from "../principal-shape.js";
|
|
3
3
|
export const MEMORY_OPTOUT_GRANT_TABLE = "memory_optout_grant";
|
|
4
4
|
export const MEMORY_OPTOUT_DEFAULT_PRINCIPAL = "";
|
|
5
5
|
export function buildMemoryOptOutVerdict(rows, principal) {
|
|
@@ -16,8 +16,8 @@ export function buildMemoryOptOutVerdict(rows, principal) {
|
|
|
16
16
|
export function memoryOptOutPrincipalShapeProblem(principal) {
|
|
17
17
|
if (principal.length === 0)
|
|
18
18
|
return "principal is empty (the empty string is the deployment-default sentinel row, not an addressable principal)";
|
|
19
|
-
if (principal
|
|
20
|
-
return
|
|
19
|
+
if (Buffer.byteLength(principal, "utf8") > PRINCIPAL_MAX_BYTES)
|
|
20
|
+
return `principal exceeds ${PRINCIPAL_MAX_BYTES} UTF-8 bytes (the principal length every identity column holds)`;
|
|
21
21
|
if (/^\s|\s$/u.test(principal))
|
|
22
22
|
return "principal has leading/trailing whitespace (rejected at the boundary: MySQL-protocol PAD SPACE collation would fold it onto another principal's row)";
|
|
23
23
|
if (/[\u0000-\u001f\u007f]/u.test(principal))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type UsageRow } from "../usage-analytics.js";
|
|
2
2
|
import type { TaskStatus } from "@sema-agent/core";
|
|
3
|
-
import { type FenceLanded, type FencedRun, type InProcessClaimFence, type CreateRunOutcome, type NewRunMeta, type RunIdemBinding, type RunListQuery, type RunRecord, type
|
|
3
|
+
import { type RunStallWiring, type SessionRootRows, type FenceLanded, type FencedRun, type InProcessClaimFence, type CreateRunOutcome, type NewRunMeta, type RunIdemBinding, type RunListQuery, type RunRecord, type SessionRunRollup, type RunEvent, type PersistedTaskResult, type LatestRunRef, type SettledLegMemoryObservation } from "./store-contracts.js";
|
|
4
4
|
import type { LedgerEventType } from "../trace/ledger-events.js";
|
|
5
5
|
import { type SpaceCommitClaim, type SpaceCommitReading, type SpaceCommitState } from "../workspace-space-commit.js";
|
|
6
6
|
/**
|
|
@@ -35,6 +35,17 @@ export declare class MemoryRunStore implements InProcessClaimFence {
|
|
|
35
35
|
/** spaceKey → row — the twin of `workspace_space_commit` (the k8s workspace space's commit fence, `workspace-space-commit.ts`). */
|
|
36
36
|
private readonly spaceCommitRecords;
|
|
37
37
|
private readonly spaceCommits;
|
|
38
|
+
/**
|
|
39
|
+
* 规则 L 的根行面(可选;文件孪生同形同读法,见 `FileRunStore` 的同名字段):在场 ⇒ `createRun` 先在它的锁里判根行在不在(不在 ⇒ `sessionAbsent`),再认领 ——
|
|
40
|
+
* 测试装配「内存 run 店 + 同一只 local 会话店」的撤回与认领因此排在同一把根锁上。缺席(只测 run 店、或配引擎内存会话店的装配:那种店没有根行)⇒ 不判根行,行为与修前同。
|
|
41
|
+
*/
|
|
42
|
+
private readonly rootRows;
|
|
43
|
+
/** 落死亡判决的窗与计数(构造时拿到;SQL 孪生同注,见 {@link RunStallWiring})。 */
|
|
44
|
+
private readonly stall;
|
|
45
|
+
constructor(opts?: {
|
|
46
|
+
readonly rootRows?: () => SessionRootRows;
|
|
47
|
+
readonly stall?: RunStallWiring;
|
|
48
|
+
});
|
|
38
49
|
/** The k8s workspace space's commit fence rows (SQL twin: `workspace_space_commit`; the rule: `workspace-space-commit.ts`). */
|
|
39
50
|
readSpaceCommit(spaceKey: string): Promise<SpaceCommitReading | undefined>;
|
|
40
51
|
claimSpaceCommit(spaceKey: string, taskId: string, state: SpaceCommitState, claim: SpaceCommitClaim): Promise<boolean>;
|
|
@@ -46,6 +57,15 @@ export declare class MemoryRunStore implements InProcessClaimFence {
|
|
|
46
57
|
/** Create a run iff no submission key of this request names a row (idemKey first, then a caller-minted taskId —
|
|
47
58
|
* OBSERVED, see {@link CreateRunOutcome}) and the session has no active run (the task_active unique-key claim). */
|
|
48
59
|
createRun(taskId: string, sessionId: string, owner: string | null, instanceId: string, meta?: NewRunMeta): Promise<CreateRunOutcome>;
|
|
60
|
+
/** {@link createRun} 的认领一半(根行已判过在 —— 或本店不接根行面)。同步判、同步写(没有让出点:两只并发认领不交错)。 */
|
|
61
|
+
private createRunClaimed;
|
|
62
|
+
/**
|
|
63
|
+
* 提交出口条件撤回的 run 半(`local-session-store.ts` 的 `SessionRunWithdrawSource`;文件孪生同名方法同判序):本会话有 `ownTaskId` 之外的 run 行 ⇒ `{ keep: "runs" }`;
|
|
64
|
+
* 否则删本次 run(事件 / 幂等键 / 行)。调用方持根行锁 —— 不取锁、不让出事件循环。`ownTaskId` 那一行不属于这只会话 ⇒ 响亮抛。
|
|
65
|
+
*/
|
|
66
|
+
withdrawRunsOf(sessionId: string, ownTaskId: string | undefined): "proceed" | {
|
|
67
|
+
readonly keep: "runs";
|
|
68
|
+
};
|
|
49
69
|
/** Undo THIS submission's binding (key + body fingerprint → null) — called only where the submit surface refuses the submission
|
|
50
70
|
* before any work and terminalizes the row it just claimed (the sync leg's zero-work refusal, an execution-placement reject):
|
|
51
71
|
* the error answer invites a retry, and a retry with the same key must run, not replay the refusal. The row stays (it
|
|
@@ -63,7 +83,8 @@ export declare class MemoryRunStore implements InProcessClaimFence {
|
|
|
63
83
|
isCancelRequested(taskId: string, owner: string | null): Promise<boolean>;
|
|
64
84
|
requestPreempt(taskId: string, owner: string | null): Promise<boolean>;
|
|
65
85
|
isPreemptRequested(taskId: string, owner: string | null): Promise<boolean>;
|
|
66
|
-
|
|
86
|
+
/** 心跳:刷新并交回「行还在 running 吗」(持有者据它停腿;SQL 孪生同注)。 */
|
|
87
|
+
heartbeat(taskId: string, owner: string | null): Promise<boolean>;
|
|
67
88
|
appendEvent(taskId: string, seq: number, type: LedgerEventType, data: unknown): Promise<void>;
|
|
68
89
|
maxSeq(taskId: string): Promise<number>;
|
|
69
90
|
retainedFrom(taskId: string): Promise<number>;
|
|
@@ -91,7 +112,7 @@ export declare class MemoryRunStore implements InProcessClaimFence {
|
|
|
91
112
|
listRuns(opts: RunListQuery): Promise<RunRecord[]>;
|
|
92
113
|
/**
|
|
93
114
|
* [ref] —— 这个会话**最近一条腿**的窄指针({@link SqlRunStore.latestRunForSession} 的孪生:同一个排序口径
|
|
94
|
-
* `createdAt DESC, taskId DESC
|
|
115
|
+
* `createdAt DESC, taskId DESC`,与本店窄读面 {@link MemoryRunStore.sessionRunRollups} 挑最新一条的比较器同一口径 —— `session-run-rollup.ts` 的 `newer`)。
|
|
95
116
|
*/
|
|
96
117
|
latestRunForSession(sessionId: string): Promise<LatestRunRef | undefined>;
|
|
97
118
|
/**
|
|
@@ -99,32 +120,17 @@ export declare class MemoryRunStore implements InProcessClaimFence {
|
|
|
99
120
|
* {@link SqlRunStore.latestMemoryObservationForSession} 的孪生:同一只已结谓词(`isTerminalRunStatus`)、同一个排序口径 —— 与本店 {@link MemoryRunStore.latestRunForSession} 的比较器逐字同一份)。
|
|
100
121
|
*/
|
|
101
122
|
latestMemoryObservationForSession(sessionId: string): Promise<SettledLegMemoryObservation | undefined>;
|
|
102
|
-
/**
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
cursor?: {
|
|
107
|
-
lastActivityAt: string;
|
|
108
|
-
sessionId: string;
|
|
109
|
-
};
|
|
110
|
-
limit: number;
|
|
111
|
-
q?: string;
|
|
112
|
-
}): Promise<SessionSummary[]>;
|
|
123
|
+
/** 会话枚举面读 run 账的窄读面(`SessionRunRollupSource`;规则 = 共用纯函数 {@link buildSessionRunRollups},与文件孪生、SQL 会话店的列表子查询同读)。 */
|
|
124
|
+
sessionRunRollups(opts?: {
|
|
125
|
+
readonly q?: string;
|
|
126
|
+
}): Promise<ReadonlyMap<string, SessionRunRollup>>;
|
|
113
127
|
/**
|
|
114
128
|
* E21 (§0.5 delete) — purge the runs ledger for one session, scoped by `session_id` ALONE (per-row owner is the
|
|
115
|
-
* submitting principal and diverges from the session owner — full 判据 see the SQL twin's head-note, F-A)
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
* `expectedSessionOwner` 是 SQL 双生的**化身围栏**入参(事务内复核 `session_meta.owner`,防「A 验权后 A' 删完、
|
|
119
|
-
* 别人用同一 uuid 重新登记」那一形)。本孪生**执行不了**它:local 车道的会话表在另一只店里,这只账本没有
|
|
120
|
-
* session_meta 可读 —— 参数只作契约对齐(签名不齐会让 RunStore 联合类型的调用点直接不可调)。local 的替代
|
|
121
|
-
* 围栏是两条:①协调器在本调用**紧前**复读一次 canonical owner(不齐即整条中止);②数据根的独占 BootLock
|
|
122
|
-
* 保证一个数据根恒一个进程,交错只可能发生在同进程的 await 缝里。这条不对称是**明写**的,不是遗漏。
|
|
129
|
+
* submitting principal and diverges from the session owner — full 判据 see the SQL twin's head-note, F-A)。
|
|
130
|
+
* **不判认领**:与 File / SQL 孪生同一条(唯一调用点 = 删除协调器的账本腿,围栏之后才调;律在 `src/session-deletion.ts`)。
|
|
123
131
|
*/
|
|
124
|
-
deleteBySession(sessionId: string
|
|
132
|
+
deleteBySession(sessionId: string): Promise<{
|
|
125
133
|
removed: number;
|
|
126
|
-
} | {
|
|
127
|
-
active: string;
|
|
128
134
|
}>;
|
|
129
135
|
/** 用量扫窗——in-memory 腿:遍历窗内行,投影同 usage-analytics 纯函数(SQL 孪生 parity)。 */
|
|
130
136
|
usageScan(fromMs: number, toMs: number, opts?: {
|
|
@@ -139,8 +145,14 @@ export declare class MemoryRunStore implements InProcessClaimFence {
|
|
|
139
145
|
status: string;
|
|
140
146
|
count: number;
|
|
141
147
|
}>>;
|
|
142
|
-
/**
|
|
143
|
-
reapStale(
|
|
148
|
+
/** 收割器(全表形;SQL 孪生同注):心跳过期的 `running` 行判死 + 放掉终局行的认领。窗读构造时拿到的 getter。 */
|
|
149
|
+
reapStale(): Promise<number>;
|
|
150
|
+
/** 死亡判决的那一笔(收割器 / 观察口 / 认领冲突同一只;SQL 孪生的 `landStallVerdicts`):行 `due` ⇒ 翻 `failed`(`run.stalled`)、交回 `true`;否则不动。认领由调用方放。 */
|
|
151
|
+
private landStallVerdict;
|
|
152
|
+
/** 认领冲突的持有者落判决(SQL 孪生同判):`due` ⇒ 判死、放它的认领、交回 `true`(调用方照常认领)。 */
|
|
153
|
+
private settleDueHolder;
|
|
154
|
+
/** 观察口(落判决的三处之一;SQL 孪生同注):属主门之后的那条行 —— `due` ⇒ 判死、放认领、交回当前行;否则原样。 */
|
|
155
|
+
observeRun(row: RunRecord): Promise<RunRecord>;
|
|
144
156
|
/** [ref] shared tail of both suspended-run reapers: flip one parked row → failed('approval.expired'), the
|
|
145
157
|
* in-memory twin of the SQL UPDATE (`error`/`error_code` set directly — no result blob to derive from; [ref]: the park-time `result` is cleared, same as the SQL `result = NULL`). */
|
|
146
158
|
private failExpiredPark;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { redactErrorMessage, redactLedgerEventData, sealRunRowResult } from "../observability/run-terminal.js";
|
|
1
|
+
import { redactErrorMessage, redactLedgerEventData, runRowErrorCodeOf, sealRunRowResult } from "../observability/run-terminal.js";
|
|
2
2
|
import { outwardPlane } from "../terminal.js";
|
|
3
3
|
import { projectUsageStats, USAGE_SCAN_LIMIT } from "../usage-analytics.js";
|
|
4
|
-
import { RUN_HOLDER_DEATH_CODES, RUN_STALLED_ERROR, isTerminalRunStatus, settledLegObservationOf } from "./store-contracts.js";
|
|
4
|
+
import { RUN_HOLDER_DEATH_CODES, RUN_STALLED_ERROR, RUN_STALL_DEFAULT_WIRING, isTerminalRunStatus, runLivenessOf, settledLegObservationOf } from "./store-contracts.js";
|
|
5
|
+
import { buildSessionRunRollups } from "./session-run-rollup.js";
|
|
5
6
|
import { notifyRunTerminal } from "../observability/run-terminal.js";
|
|
6
7
|
import { createInProcessSpaceCommitTable, fenceSpaceCommitAtTerminal } from "../workspace-space-commit.js";
|
|
7
8
|
const ownerEq = (a, b) => (a ?? null) === (b ?? null);
|
|
@@ -17,6 +18,12 @@ export class MemoryRunStore {
|
|
|
17
18
|
save: (record) => void this.spaceCommitRecords.set(record.spaceKey, record),
|
|
18
19
|
remove: (spaceKey) => void this.spaceCommitRecords.delete(spaceKey),
|
|
19
20
|
});
|
|
21
|
+
rootRows;
|
|
22
|
+
stall;
|
|
23
|
+
constructor(opts) {
|
|
24
|
+
this.rootRows = opts?.rootRows;
|
|
25
|
+
this.stall = opts?.stall ?? RUN_STALL_DEFAULT_WIRING;
|
|
26
|
+
}
|
|
20
27
|
readSpaceCommit(spaceKey) {
|
|
21
28
|
return this.spaceCommits.readSpaceCommit(spaceKey);
|
|
22
29
|
}
|
|
@@ -52,13 +59,19 @@ export class MemoryRunStore {
|
|
|
52
59
|
};
|
|
53
60
|
}
|
|
54
61
|
async createRun(taskId, sessionId, owner, instanceId, meta = {}) {
|
|
62
|
+
const rootRows = this.rootRows;
|
|
63
|
+
if (rootRows === undefined)
|
|
64
|
+
return this.createRunClaimed(taskId, sessionId, owner, instanceId, meta);
|
|
65
|
+
return rootRows().withRootRow(sessionId, async (present) => (present ? this.createRunClaimed(taskId, sessionId, owner, instanceId, meta) : { ok: false, sessionAbsent: true }));
|
|
66
|
+
}
|
|
67
|
+
createRunClaimed(taskId, sessionId, owner, instanceId, meta) {
|
|
55
68
|
const idemKey = meta.idem?.key ?? null;
|
|
56
69
|
const byKey = idemKey !== null ? this.byIdem.get(idemKey) : undefined;
|
|
57
70
|
const existing = (byKey !== undefined ? this.runs.get(byKey) : undefined) ?? this.runs.get(taskId);
|
|
58
71
|
if (existing)
|
|
59
72
|
return { ok: false, existing: this.toRecord(existing) };
|
|
60
73
|
const claimed = this.active.get(sessionId);
|
|
61
|
-
if (claimed !== undefined)
|
|
74
|
+
if (claimed !== undefined && !this.settleDueHolder(claimed))
|
|
62
75
|
return { ok: false, activeTaskId: claimed };
|
|
63
76
|
const now = new Date();
|
|
64
77
|
this.active.set(sessionId, taskId);
|
|
@@ -86,6 +99,21 @@ export class MemoryRunStore {
|
|
|
86
99
|
this.byIdem.set(idemKey, taskId);
|
|
87
100
|
return { ok: true };
|
|
88
101
|
}
|
|
102
|
+
withdrawRunsOf(sessionId, ownTaskId) {
|
|
103
|
+
for (const r of this.runs.values())
|
|
104
|
+
if (r.sessionId === sessionId && r.taskId !== ownTaskId)
|
|
105
|
+
return { keep: "runs" };
|
|
106
|
+
const own = ownTaskId === undefined ? undefined : this.runs.get(ownTaskId);
|
|
107
|
+
if (own === undefined)
|
|
108
|
+
return "proceed";
|
|
109
|
+
if (own.sessionId !== sessionId)
|
|
110
|
+
throw new Error(`MemoryRunStore.withdrawRunsOf: run ${ownTaskId} belongs to session ${own.sessionId}, not ${sessionId} — refusing to delete it`);
|
|
111
|
+
this.events.delete(own.taskId);
|
|
112
|
+
if (own.idemKey !== null && this.byIdem.get(own.idemKey) === own.taskId)
|
|
113
|
+
this.byIdem.delete(own.idemKey);
|
|
114
|
+
this.runs.delete(own.taskId);
|
|
115
|
+
return "proceed";
|
|
116
|
+
}
|
|
89
117
|
async releaseIdemKey(taskId) {
|
|
90
118
|
const r = this.runs.get(taskId);
|
|
91
119
|
if (!r)
|
|
@@ -141,6 +169,7 @@ export class MemoryRunStore {
|
|
|
141
169
|
const r = this.runs.get(taskId);
|
|
142
170
|
if (r && ownerEq(r.owner, owner) && r.status === "running")
|
|
143
171
|
r.updatedAt = new Date();
|
|
172
|
+
return r !== undefined && r.status === "running";
|
|
144
173
|
}
|
|
145
174
|
async appendEvent(taskId, seq, type, data) {
|
|
146
175
|
data = redactLedgerEventData(type, data);
|
|
@@ -186,7 +215,7 @@ export class MemoryRunStore {
|
|
|
186
215
|
r.status = status;
|
|
187
216
|
r.result = result;
|
|
188
217
|
r.error = error;
|
|
189
|
-
r.errorCode =
|
|
218
|
+
r.errorCode = runRowErrorCodeOf(result);
|
|
190
219
|
r.updatedAt = new Date();
|
|
191
220
|
pending = {
|
|
192
221
|
runId: taskId,
|
|
@@ -212,6 +241,7 @@ export class MemoryRunStore {
|
|
|
212
241
|
if (r && (r.status === "running" || r.status === "suspended")) {
|
|
213
242
|
r.status = "suspended";
|
|
214
243
|
r.result = sealed;
|
|
244
|
+
r.errorCode = runRowErrorCodeOf(sealed);
|
|
215
245
|
r.updatedAt = new Date();
|
|
216
246
|
}
|
|
217
247
|
}
|
|
@@ -221,6 +251,7 @@ export class MemoryRunStore {
|
|
|
221
251
|
if (r && (r.status === "running" || r.status === "needs_review")) {
|
|
222
252
|
r.status = "needs_review";
|
|
223
253
|
r.result = sealed;
|
|
254
|
+
r.errorCode = runRowErrorCodeOf(sealed);
|
|
224
255
|
r.updatedAt = new Date();
|
|
225
256
|
}
|
|
226
257
|
}
|
|
@@ -230,6 +261,7 @@ export class MemoryRunStore {
|
|
|
230
261
|
return false;
|
|
231
262
|
r.status = "running";
|
|
232
263
|
r.result = null;
|
|
264
|
+
r.errorCode = null;
|
|
233
265
|
r.instanceId = instanceId;
|
|
234
266
|
r.cancelRequested = false;
|
|
235
267
|
r.preemptRequested = false;
|
|
@@ -289,62 +321,10 @@ export class MemoryRunStore {
|
|
|
289
321
|
}
|
|
290
322
|
return latest === undefined ? undefined : settledLegObservationOf(latest.taskId, latest.result);
|
|
291
323
|
}
|
|
292
|
-
async
|
|
293
|
-
|
|
294
|
-
for (const r of this.runs.values()) {
|
|
295
|
-
if (opts.owner !== undefined && r.owner !== opts.owner && !(opts.includeUnowned === true && r.owner === null))
|
|
296
|
-
continue;
|
|
297
|
-
const arr = bySession.get(r.sessionId) ?? [];
|
|
298
|
-
arr.push(r);
|
|
299
|
-
bySession.set(r.sessionId, arr);
|
|
300
|
-
}
|
|
301
|
-
const cursorAt = opts.cursor ? Date.parse(opts.cursor.lastActivityAt) : undefined;
|
|
302
|
-
const qlc = opts.q?.toLowerCase();
|
|
303
|
-
const summaries = [];
|
|
304
|
-
for (const [sessionId, arr] of bySession) {
|
|
305
|
-
if (qlc && !arr.some((r) => r.objectivePreview?.toLowerCase().includes(qlc)))
|
|
306
|
-
continue;
|
|
307
|
-
const sorted = [...arr].sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime() || (a.taskId < b.taskId ? 1 : a.taskId > b.taskId ? -1 : 0));
|
|
308
|
-
const latest = sorted[0];
|
|
309
|
-
const latestRunId = latest.result?.runId;
|
|
310
|
-
let last = -Infinity;
|
|
311
|
-
let first = Infinity;
|
|
312
|
-
for (const r of arr) {
|
|
313
|
-
const t = r.createdAt.getTime();
|
|
314
|
-
if (t > last)
|
|
315
|
-
last = t;
|
|
316
|
-
if (t < first)
|
|
317
|
-
first = t;
|
|
318
|
-
}
|
|
319
|
-
summaries.push({
|
|
320
|
-
sessionId,
|
|
321
|
-
owner: latest.owner,
|
|
322
|
-
lastActivityAt: new Date(last).toISOString(),
|
|
323
|
-
firstActivityAt: new Date(first).toISOString(),
|
|
324
|
-
runCount: arr.length,
|
|
325
|
-
objectivePreview: latest.objectivePreview,
|
|
326
|
-
lastStatus: latest.status,
|
|
327
|
-
lastRunId: latest.taskId,
|
|
328
|
-
...(typeof latestRunId === "string" && latestRunId !== "" ? { lastTaskRunId: latestRunId } : {}),
|
|
329
|
-
title: null,
|
|
330
|
-
pinned: false,
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
return summaries
|
|
334
|
-
.filter((s) => {
|
|
335
|
-
if (cursorAt === undefined)
|
|
336
|
-
return true;
|
|
337
|
-
const t = Date.parse(s.lastActivityAt);
|
|
338
|
-
return t < cursorAt || (t === cursorAt && s.sessionId < opts.cursor.sessionId);
|
|
339
|
-
})
|
|
340
|
-
.sort((a, b) => Date.parse(b.lastActivityAt) - Date.parse(a.lastActivityAt) || (a.sessionId < b.sessionId ? 1 : a.sessionId > b.sessionId ? -1 : 0))
|
|
341
|
-
.slice(0, opts.limit);
|
|
324
|
+
async sessionRunRollups(opts = {}) {
|
|
325
|
+
return buildSessionRunRollups(this.runs.values(), opts);
|
|
342
326
|
}
|
|
343
|
-
async deleteBySession(sessionId
|
|
344
|
-
void expectedSessionOwner;
|
|
345
|
-
const claimed = this.active.get(sessionId);
|
|
346
|
-
if (claimed !== undefined)
|
|
347
|
-
return { active: claimed };
|
|
327
|
+
async deleteBySession(sessionId) {
|
|
348
328
|
let removed = 0;
|
|
349
329
|
for (const [taskId, r] of [...this.runs]) {
|
|
350
330
|
if (r.sessionId !== sessionId)
|
|
@@ -384,22 +364,44 @@ export class MemoryRunStore {
|
|
|
384
364
|
}
|
|
385
365
|
return [...counts.values()];
|
|
386
366
|
}
|
|
387
|
-
async reapStale(
|
|
388
|
-
const
|
|
367
|
+
async reapStale() {
|
|
368
|
+
const nowMs = Date.now();
|
|
369
|
+
const windowMs = this.stall.windowMs();
|
|
389
370
|
let reaped = 0;
|
|
390
|
-
for (const r of this.runs.values())
|
|
391
|
-
if (
|
|
392
|
-
r.status = "failed";
|
|
393
|
-
r.result = null;
|
|
394
|
-
r.error = RUN_STALLED_ERROR;
|
|
395
|
-
r.errorCode = RUN_HOLDER_DEATH_CODES.stalled;
|
|
396
|
-
r.updatedAt = new Date();
|
|
371
|
+
for (const r of this.runs.values())
|
|
372
|
+
if (this.landStallVerdict(r, nowMs, windowMs))
|
|
397
373
|
reaped += 1;
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
374
|
this.releaseTerminalClaims();
|
|
375
|
+
if (reaped > 0)
|
|
376
|
+
this.stall.onVerdicts(reaped);
|
|
401
377
|
return reaped;
|
|
402
378
|
}
|
|
379
|
+
landStallVerdict(r, nowMs, windowMs) {
|
|
380
|
+
if (runLivenessOf(this.toRecord(r), nowMs, windowMs) !== "due")
|
|
381
|
+
return false;
|
|
382
|
+
r.status = "failed";
|
|
383
|
+
r.result = null;
|
|
384
|
+
r.error = RUN_STALLED_ERROR;
|
|
385
|
+
r.errorCode = RUN_HOLDER_DEATH_CODES.stalled;
|
|
386
|
+
r.updatedAt = new Date();
|
|
387
|
+
return true;
|
|
388
|
+
}
|
|
389
|
+
settleDueHolder(holderTaskId) {
|
|
390
|
+
const r = this.runs.get(holderTaskId);
|
|
391
|
+
if (r === undefined || !this.landStallVerdict(r, Date.now(), this.stall.windowMs()))
|
|
392
|
+
return false;
|
|
393
|
+
if (this.active.get(r.sessionId) === holderTaskId)
|
|
394
|
+
this.active.delete(r.sessionId);
|
|
395
|
+
this.stall.onVerdicts(1);
|
|
396
|
+
return true;
|
|
397
|
+
}
|
|
398
|
+
async observeRun(row) {
|
|
399
|
+
const r = this.runs.get(row.taskId);
|
|
400
|
+
if (r === undefined || runLivenessOf(row, Date.now(), this.stall.windowMs()) !== "due")
|
|
401
|
+
return row;
|
|
402
|
+
this.settleDueHolder(row.taskId);
|
|
403
|
+
return this.toRecord(r);
|
|
404
|
+
}
|
|
403
405
|
failExpiredPark(r) {
|
|
404
406
|
r.status = "failed";
|
|
405
407
|
r.result = null;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* **一次性迁移的标记表**(SQL 两方言)—— 需要「这一库上这一条已经判过 / 落过」这一事实的迁移各在这里记一行(键 = 登记表里的那一条名,`plugins/one-time-migrations.ts`)。
|
|
3
|
+
* 表由用到它的那一步自己建(不进中央建表语句:它随最后一条读它的迁移删码,库里留下的空表无人读,起服列册对账只核本树声明的表)。最后一条读它的迁移删码时,本文件一起删。
|
|
4
|
+
*/
|
|
5
|
+
import type { SqlDialect } from "./sql-driver.js";
|
|
6
|
+
/** 标记表名。 */
|
|
7
|
+
export declare const MIGRATION_MARKER_TABLE = "one_time_migration_marker";
|
|
8
|
+
/** 标记表的建表句(两方言;幂等)。 */
|
|
9
|
+
export declare function migrationMarkerDdl(dialect: SqlDialect): string;
|
|
10
|
+
//# sourceMappingURL=one-time-migration-marker.d.ts.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export const MIGRATION_MARKER_TABLE = "one_time_migration_marker";
|
|
2
|
+
export function migrationMarkerDdl(dialect) {
|
|
3
|
+
return dialect === "mysql"
|
|
4
|
+
? `CREATE TABLE IF NOT EXISTS ${MIGRATION_MARKER_TABLE} (migration_id VARCHAR(16) NOT NULL PRIMARY KEY, marked_at_ms BIGINT NOT NULL)`
|
|
5
|
+
: `CREATE TABLE IF NOT EXISTS ${MIGRATION_MARKER_TABLE} (migration_id VARCHAR(16) COLLATE "C" NOT NULL PRIMARY KEY, marked_at_ms BIGINT NOT NULL)`;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=one-time-migration-marker.js.map
|