@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,134 @@
|
|
|
1
|
+
import { SESSION_TITLE_MAX_CHARS } from "../session-row.js";
|
|
2
|
+
import { SESSION_WORKSPACE_COLUMN } from "./session-workspace-cell.js";
|
|
3
|
+
import { SCHEMA_MISMATCH_ERROR_CODE, StoreBootRefusalError } from "./store-contracts.js";
|
|
4
|
+
import { databaseAnswerCodesOf, isDeploymentFaultError } from "./sql-errors.js";
|
|
5
|
+
export const SESSION_EXT_TABLE = "session_ext";
|
|
6
|
+
export const EXECUTION_PLACEMENT_COLUMNS = [
|
|
7
|
+
{ name: "execution_role", mysql: "execution_role VARCHAR(16) NULL", pg: `execution_role VARCHAR(16) COLLATE "C"` },
|
|
8
|
+
{ name: "execution_lane", mysql: "execution_lane VARCHAR(32) NULL", pg: `execution_lane VARCHAR(32) COLLATE "C"` },
|
|
9
|
+
{ name: "execution_device_id", mysql: "execution_device_id VARCHAR(64) NULL", pg: `execution_device_id VARCHAR(64) COLLATE "C"` },
|
|
10
|
+
{ name: "execution_device_owner_tenant", mysql: "execution_device_owner_tenant VARCHAR(190) NULL", pg: `execution_device_owner_tenant VARCHAR(190) COLLATE "C"` },
|
|
11
|
+
{ name: "execution_device_owner_subject", mysql: "execution_device_owner_subject VARCHAR(190) NULL", pg: `execution_device_owner_subject VARCHAR(190) COLLATE "C"` },
|
|
12
|
+
{ name: "execution_placed_at", mysql: "execution_placed_at DATETIME(3) NULL", pg: "execution_placed_at TIMESTAMPTZ(3)" },
|
|
13
|
+
{ name: "execution_rev", mysql: "execution_rev BIGINT NULL", pg: "execution_rev BIGINT" },
|
|
14
|
+
{ name: "fork_key", mysql: "fork_key VARCHAR(255) NULL", pg: `fork_key VARCHAR(255) COLLATE "C"` },
|
|
15
|
+
];
|
|
16
|
+
const PRODUCT_COLUMNS = [
|
|
17
|
+
{ name: "title", mysql: `title VARCHAR(${SESSION_TITLE_MAX_CHARS}) NULL`, pg: `title VARCHAR(${SESSION_TITLE_MAX_CHARS}) COLLATE "C"` },
|
|
18
|
+
{ name: "pinned", mysql: "pinned BOOLEAN NOT NULL DEFAULT FALSE", pg: "pinned BOOLEAN NOT NULL DEFAULT FALSE" },
|
|
19
|
+
{ name: "instruction_source", mysql: "instruction_source VARCHAR(64) NULL", pg: `instruction_source VARCHAR(64) COLLATE "C"` },
|
|
20
|
+
SESSION_WORKSPACE_COLUMN,
|
|
21
|
+
];
|
|
22
|
+
export const CLIENT_WRITES_COLUMN = { name: "client_writes", mysql: "client_writes BIGINT NOT NULL DEFAULT 0", pg: "client_writes BIGINT NOT NULL DEFAULT 0" };
|
|
23
|
+
export const BUMP_CLIENT_WRITES = "client_writes = client_writes + 1";
|
|
24
|
+
export const DELETING_TOKEN_COLUMN = { name: "deleting_token", mysql: "deleting_token VARCHAR(36) NULL", pg: `deleting_token VARCHAR(36) COLLATE "C"` };
|
|
25
|
+
export const SESSION_EXT_COLUMNS = [...PRODUCT_COLUMNS, ...EXECUTION_PLACEMENT_COLUMNS, CLIENT_WRITES_COLUMN, DELETING_TOKEN_COLUMN];
|
|
26
|
+
export const SESSION_EXT_MOVED_COLUMNS = [...PRODUCT_COLUMNS, ...EXECUTION_PLACEMENT_COLUMNS];
|
|
27
|
+
export const SESSION_EXT_FOREIGN_KEY = "fk_session_ext_session";
|
|
28
|
+
export const SESSION_META_KEY_COLLATION_PROBE = "SELECT CHARACTER_SET_NAME AS cs, COLLATION_NAME AS coll FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'session_meta' AND COLUMN_NAME = 'session_id'";
|
|
29
|
+
const COLLATION_NAME_RE = /^[A-Za-z0-9_]{1,64}$/;
|
|
30
|
+
export function readReferencedKeyCollation(rows) {
|
|
31
|
+
if (rows.length !== 1)
|
|
32
|
+
return undefined;
|
|
33
|
+
const row = rows[0];
|
|
34
|
+
const cs = row?.cs;
|
|
35
|
+
const coll = row?.coll;
|
|
36
|
+
return typeof cs === "string" && typeof coll === "string" && COLLATION_NAME_RE.test(cs) && COLLATION_NAME_RE.test(coll) ? { characterSet: cs, collation: coll } : undefined;
|
|
37
|
+
}
|
|
38
|
+
export function sessionExtDdl(dialect, referenced) {
|
|
39
|
+
if (dialect === "mysql" && referenced === undefined)
|
|
40
|
+
throw new Error("sessionExtDdl(mysql): the referenced column's character set and collation are required (the foreign key column copies them)");
|
|
41
|
+
const key = dialect === "pg" ? `session_id VARCHAR(64) COLLATE "C" NOT NULL` : `session_id VARCHAR(64) CHARACTER SET ${referenced.characterSet} COLLATE ${referenced.collation} NOT NULL`;
|
|
42
|
+
return (`CREATE TABLE IF NOT EXISTS ${SESSION_EXT_TABLE} (\n` +
|
|
43
|
+
` ${key},\n` +
|
|
44
|
+
SESSION_EXT_COLUMNS.map((c) => ` ${c[dialect]},\n`).join("") +
|
|
45
|
+
" PRIMARY KEY (session_id),\n" +
|
|
46
|
+
` CONSTRAINT ${SESSION_EXT_FOREIGN_KEY} FOREIGN KEY (session_id) REFERENCES session_meta (session_id) ON DELETE CASCADE\n` +
|
|
47
|
+
(dialect === "pg" ? " )" : " ) COLLATE utf8mb4_bin"));
|
|
48
|
+
}
|
|
49
|
+
export class SessionExtTableRefusedError extends StoreBootRefusalError {
|
|
50
|
+
code = SCHEMA_MISMATCH_ERROR_CODE;
|
|
51
|
+
constructor(detail) {
|
|
52
|
+
super(`${SCHEMA_MISMATCH_ERROR_CODE}: this MySQL-protocol database cannot create table ${SESSION_EXT_TABLE} — refusing to start. ${detail} ` +
|
|
53
|
+
`The table's foreign key ${SESSION_EXT_FOREIGN_KEY} references session_meta (session_id) with ON DELETE CASCADE; its key column copies the character set and collation of session_meta.session_id. ` +
|
|
54
|
+
"Next: fix session_meta so that foreign key can be formed — on MySQL it must be an InnoDB table (foreign keys need InnoDB on both sides), and session_id must be a character column " +
|
|
55
|
+
"and its PRIMARY KEY or a UNIQUE key (MySQL 9.x refuses a foreign key to a non-unique column with errno 6125); on TiDB foreign keys need v6.6.0 or later; the account needs the CREATE grant. " +
|
|
56
|
+
"This is the database's definite answer, so waiting or changing the MYSQL_* coordinates will not change it. This check changed nothing in the database.");
|
|
57
|
+
this.name = "SessionExtTableRefusedError";
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export async function ensureSessionExtTableMysql(query) {
|
|
61
|
+
const rows = await query(SESSION_META_KEY_COLLATION_PROBE);
|
|
62
|
+
const referenced = readReferencedKeyCollation(rows);
|
|
63
|
+
if (referenced === undefined) {
|
|
64
|
+
throw new SessionExtTableRefusedError(`Reading the character set and collation of session_meta.session_id from information_schema.COLUMNS gave ${rows.length} row(s) without two readable names, so the foreign key column cannot be declared to match it.`);
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
await query(sessionExtDdl("mysql", referenced));
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
if (!isDeploymentFaultError(err))
|
|
71
|
+
throw err;
|
|
72
|
+
const { sqlMessage: said } = err;
|
|
73
|
+
const sentence = typeof said === "string" ? said : err instanceof Error ? err.message : String(err);
|
|
74
|
+
const codes = databaseAnswerCodesOf("mysql", err);
|
|
75
|
+
throw new SessionExtTableRefusedError(`The foreign key column was declared CHARACTER SET ${referenced.characterSet} COLLATE ${referenced.collation} (read from session_meta.session_id); the database answered: ${sentence.split(/\r?\n/, 1)[0] ?? ""}${codes !== undefined ? ` (${codes})` : ""}.`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
export function ensureSessionExtRowStatement(dialect, sessionId) {
|
|
79
|
+
return { text: `INSERT INTO ${SESSION_EXT_TABLE} (session_id) VALUES (${dialect === "pg" ? "$1" : "?"}) ${ensureConflictClause(dialect)}`, values: [sessionId] };
|
|
80
|
+
}
|
|
81
|
+
export function ensureSessionExtRowsStatement(dialect, selectSessionIds) {
|
|
82
|
+
return { text: `INSERT INTO ${SESSION_EXT_TABLE} (session_id) SELECT picked.session_id FROM (${selectSessionIds}) picked ${ensureConflictClause(dialect)}`, values: [] };
|
|
83
|
+
}
|
|
84
|
+
function ensureConflictClause(dialect) {
|
|
85
|
+
return dialect === "pg" ? "ON CONFLICT (session_id) DO NOTHING" : "ON DUPLICATE KEY UPDATE pinned = pinned";
|
|
86
|
+
}
|
|
87
|
+
export const SESSION_EXT_CASCADE_REFUSED_CODE = "config.session_ext_cascade_absent";
|
|
88
|
+
export class SessionExtCascadeAbsentError extends StoreBootRefusalError {
|
|
89
|
+
dialect;
|
|
90
|
+
code = SESSION_EXT_CASCADE_REFUSED_CODE;
|
|
91
|
+
constructor(dialect) {
|
|
92
|
+
super(`${SESSION_EXT_CASCADE_REFUSED_CODE}: on this ${dialect === "pg" ? "PostgreSQL" : "MySQL-protocol"} database, deleting a session row did not delete its ${SESSION_EXT_TABLE} row ` +
|
|
93
|
+
`(the foreign key ${SESSION_EXT_FOREIGN_KEY} … ON DELETE CASCADE is not enforced) — refusing to start: a session id registered again would inherit the previous occupant's ` +
|
|
94
|
+
"title, pin, instruction baseline and execution placement. " +
|
|
95
|
+
(dialect === "pg"
|
|
96
|
+
? "Check that the constraint exists on the table (it is created with the table) and that no session_replication_role / trigger setting disables it."
|
|
97
|
+
: "On TiDB, foreign keys are enforced from v6.6.0 with the session variable foreign_key_checks=ON (the default; a DSN or global setting may turn it OFF); " +
|
|
98
|
+
`on MySQL, the table must be InnoDB. If the table was created while foreign keys were not enforced, drop the (empty) ${SESSION_EXT_TABLE} table and start again.`));
|
|
99
|
+
this.dialect = dialect;
|
|
100
|
+
this.name = "SessionExtCascadeAbsentError";
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const CASCADE_PROBE_ID = "~session-ext-cascade-probe";
|
|
104
|
+
export async function assertSessionExtCascadeOn(db) {
|
|
105
|
+
const conn = await db.connect();
|
|
106
|
+
try {
|
|
107
|
+
await conn.begin();
|
|
108
|
+
const p = db.dialect === "pg" ? (n) => `$${n}` : () => "?";
|
|
109
|
+
const now = new Date();
|
|
110
|
+
await conn.query(`INSERT INTO session_meta (session_id, created_at, updated_at) VALUES (${p(1)}, ${p(2)}, ${p(3)})`, [CASCADE_PROBE_ID, now, now]);
|
|
111
|
+
const ensure = ensureSessionExtRowStatement(db.dialect, CASCADE_PROBE_ID);
|
|
112
|
+
await conn.query(ensure.text, [...ensure.values]);
|
|
113
|
+
await conn.query(`DELETE FROM session_meta WHERE session_id = ${p(1)}`, [CASCADE_PROBE_ID]);
|
|
114
|
+
const left = await conn.query(`SELECT session_id FROM ${SESSION_EXT_TABLE} WHERE session_id = ${p(1)}`, [CASCADE_PROBE_ID]);
|
|
115
|
+
await conn.rollback();
|
|
116
|
+
if (left.rows.length !== 0)
|
|
117
|
+
throw new SessionExtCascadeAbsentError(db.dialect);
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
await conn.rollback().catch(() => undefined);
|
|
121
|
+
throw err;
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
conn.release();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
export async function readDeletingTokenOn(conn, dialect, sessionId) {
|
|
128
|
+
const ensure = ensureSessionExtRowStatement(dialect, sessionId);
|
|
129
|
+
await conn(ensure.text, ensure.values);
|
|
130
|
+
const row = (await conn(`SELECT ${DELETING_TOKEN_COLUMN.name} FROM ${SESSION_EXT_TABLE} WHERE session_id = ${dialect === "pg" ? "$1" : "?"} FOR UPDATE`, [sessionId]))[0];
|
|
131
|
+
const token = row?.[DELETING_TOKEN_COLUMN.name];
|
|
132
|
+
return token === null || token === undefined ? null : String(token);
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=session-ext-table.js.map
|
|
@@ -14,14 +14,28 @@
|
|
|
14
14
|
*
|
|
15
15
|
* ## fork 续写的店契约(本文件下半)
|
|
16
16
|
* 三店同一只私有体 `forkTo(sourceId, owner, target)`:目标行原子新建(唯一创建点)· 撞已在按属主与 fork 键分类({@link classifyForkTarget})·
|
|
17
|
-
* local 崩溃中间态 `forking` 只许同键重试补齐 · fork 键此后每个写携带(
|
|
17
|
+
* local 崩溃中间态 `forking` 只许同键重试补齐 · fork 键此后每个写携带(整段换装:local 经 `carriedRowCells`,SQL 就地改写、旁表行不动)。core 契约 `fork(sourceId, owner?, opts?)` = {@link forkByFreshId}。
|
|
18
18
|
*
|
|
19
19
|
* ## fork 进委派分区(core `SessionStore.fork` 的 `opts.placement`)
|
|
20
20
|
* fork 的创建那一笔就是一次建行:带元组的 fork 与带 placement 的 acquire 落**同一组**元组(六列 / 存档行头,first-write 不可变,`placedAt` 由店铸),
|
|
21
21
|
* 此后这一行欠 placed 行的每一条义务(不上宿主列表 · claim 形 acquire 拒 · 进分区枚举 · release = 真删除)。元组不带属主:行的属主仍是 fork 的属主参数
|
|
22
22
|
* 按 `forkOwnerOf` 的那一读(core 句:元组没有属主)。没声明分区的店照常 fork、不落元组(core 句:忽略合法,拒 fork 不合法)。
|
|
23
|
+
*
|
|
24
|
+
* ## fork 谱系(三店同一读法)
|
|
25
|
+
* fork 行的谱系两格 = core `forkRowCells` 从**源行**(fork 那一刻,建行之前那一读)铸出的 `forkedFrom`(源 id)与 `forkedFromIncarnation`(源行那一刻的住客令牌;
|
|
26
|
+
* 源行没有令牌 ⇒ 缺)—— 三店的建行都读 `forkRowCells`,本仓不写第二份谱系读法。两格落在**行上**(SQL:`session_meta` 的两列,列定义属主 `session-incarnation.ts` 的 `SESSION_META_LINEAGE_COLUMNS`;
|
|
27
|
+
* local:会话元数据边档那一格的两位),同一笔写;交出的会话元数据与列表行(`forkedFrom`)从行上读回(`session-incarnation.ts` 的 `forkLineageOfRow`)。
|
|
28
|
+
* 缺 = 不是 fork 建的行,或谱系落地之前建的 fork(源已不可知,不回填)。属主不读 `forkRowCells` 那一格:本仓的 fork 属主律是 `forkOwnerOf`(差异见 `test/session-incarnation.test.ts` 的对拍格)。
|
|
29
|
+
* **一只 fork 拷一代源**:谱系的住客那一半说的就是拷贝所读的那一代。源在这一次 fork 的几次读之间换了代(删掉后同 id 重建 —— 令牌永不复现)⇒ 这一次 fork 读到的不是一代源,
|
|
30
|
+
* 与「源不在」同答(`null`,零写):SQL 两孪生在叶 / 属主那一读、唤醒、整日志读之后各问一次住客({@link sameSourceGeneration});local 店的首次拷贝在源的写锁里读(一代),
|
|
31
|
+
* 崩在格与拷贝之间的同键补拷照这一律比格上记下的来源住客与此刻的源。
|
|
23
32
|
*/
|
|
24
33
|
import { type ForkPoint, type ForkRowShape, type SessionStorage, type SessionStore } from "@sema-agent/core";
|
|
34
|
+
/**
|
|
35
|
+
* SQL 两孪生 fork 的「一代源」判(见头注「一只 fork 拷一代源」):唤醒交出的源住客(`woke`)与整日志读之前、之后两次读到的那一格(`before` / `after`,行上原值;行不在 ⇒ `undefined`)
|
|
36
|
+
* 三者相同才是一代 —— 令牌永不复现,首尾两读与唤醒同 ⇒ 夹在中间的整日志读读的也是这一代。不是一代 ⇒ 调用方按「源不在」答。
|
|
37
|
+
*/
|
|
38
|
+
export declare function sameSourceGeneration(woke: string | undefined, before: unknown, after: unknown): boolean;
|
|
25
39
|
/** 问引擎:这只(已唤醒的)源会话从哪里拷。SQL 孪生用它;local 店手里就是引擎的 `Session`,直接调 `settledForkOptions`。 */
|
|
26
40
|
export declare function forkPointOf(storage: SessionStorage): Promise<ForkPoint>;
|
|
27
41
|
/** 两只 SQL 孪生整份日志里的一行(两孪生选同一组列):父链两键交引擎挑行,其余三列原样搬进新会话、不读内容。 */
|
|
@@ -40,7 +54,7 @@ export declare const FORK_LOG_ROW_SHAPE: ForkRowShape<ForkLogRow>;
|
|
|
40
54
|
/**
|
|
41
55
|
* fork 进委派分区时落的元组 —— core `SessionStore.fork` 第三参 `opts.placement` 的那一形,**直接取 core 的型、不复述**(core 当前写作 `SessionPlacement` 去掉属主:行的属主是
|
|
42
56
|
* fork 的属主参数的那一读)。本仓里这个元组型只有这一处定义:三店(local · pg · tidb)、路由店、`forkByFreshId`、引擎面声明的 fork 形参,以及建行绑定值
|
|
43
|
-
* `
|
|
57
|
+
* `placementInsertCells`(`session-placement.ts`)都读它 —— core 再改 `fork` 的第三参,型面在这里一处跟着动(`SessionStore.fork` 是可选成员,所以取参数前先 `NonNullable`)。
|
|
44
58
|
*/
|
|
45
59
|
export type ForkPlacement = NonNullable<NonNullable<Parameters<NonNullable<SessionStore["fork"]>>[2]>["placement"]>;
|
|
46
60
|
/**
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { SessionError, StoredSession, settledForkOptions, uuidv7 } from "@sema-agent/core";
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
|
+
export function sameSourceGeneration(woke, before, after) {
|
|
4
|
+
return woke !== undefined && before === woke && after === woke;
|
|
5
|
+
}
|
|
3
6
|
export async function forkPointOf(storage) {
|
|
4
7
|
return settledForkOptions(new StoredSession(storage));
|
|
5
8
|
}
|
|
@@ -7,7 +7,7 @@ export declare const NOT_A_PRINCIPAL_NAME = "a string that names nobody (empty,
|
|
|
7
7
|
* 「这个值能不能作一只会话行的属主格」—— core 7.56.0 [ref] 起只有一只判官 `principalNameOf`:主体名(有可见内容、不含控制 / 分隔 / 非连接符格式字符,
|
|
8
8
|
* 原样保存不规整)或 `null`(匿名)。空串、空白串、带不可见字符的串与一切非串都不是属主(它们谁也不指 —— 读成匿名会放行每一位主体)。
|
|
9
9
|
*
|
|
10
|
-
* 边界同判官:HTTP 请求带来的主体在鉴权边界已经过同一只 `principalNameOf`(`
|
|
10
|
+
* 边界同判官:HTTP 请求带来的主体在鉴权边界已经过同一只 `principalNameOf`(`principal-shape.ts` `principalShapeProblem` 的 `not_a_name`,7.137.0)⇒
|
|
11
11
|
* 经过边界的请求到不了这里的拒臂;这里是纵深(嵌入方直调店、别的写者),规则只有引擎那一只,不在本仓另写。
|
|
12
12
|
*/
|
|
13
13
|
export declare function isSessionOwnerValue(owner: unknown): owner is string | null;
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
*
|
|
23
23
|
* 本仓成文教训(`memory-origin-law.ts` 顶注同族、`key-resolver.ts` 顶注「链只有一条」):两支方言各
|
|
24
24
|
* 抄一份准入判据,迟早在某一支上少一个分支——而少掉的那一支**没有任何报错面**,表现只是「这台机器上
|
|
25
|
-
* 一个陌生人可以把自己接到别人子代的转录上」。所以准入判据(两个方向)
|
|
25
|
+
* 一个陌生人可以把自己接到别人子代的转录上」。所以准入判据(两个方向)、列名(读侧投影与写侧建行同一张表)、行→元组的映射都在
|
|
26
26
|
* 这一处;两支后端只负责在自己的 I/O 点上调用它。
|
|
27
27
|
*
|
|
28
28
|
* ## 判据的两个方向(缺一不可,core `TtlSessionStore.assertPlacementAdmission` 的镜像)
|
|
@@ -64,20 +64,19 @@ export declare const SESSION_PLACEMENTS: {
|
|
|
64
64
|
};
|
|
65
65
|
};
|
|
66
66
|
/**
|
|
67
|
-
* `session_meta` 上承载 placement 元组的六列,**两方言同名**
|
|
68
|
-
*
|
|
67
|
+
* `session_meta` 上承载 placement 元组的六列,**两方言同名** —— 列名只住这一张表:读侧投影 {@link PLACEMENT_SELECT_COLUMNS}、行形
|
|
68
|
+
* {@link PlacementColumns}、写侧建行的列段与绑定值 {@link placementInsertCells} 都从它派生,源码里没有第二份手写列表
|
|
69
|
+
* (列名手抄一份必漂,而漂掉的那一支只会表现为「这台机器上 placed 行读不出来」—— 静默,不报错)。
|
|
69
70
|
* `placed_at` 是 GC 的年龄锚(core `PlacedSessionRow.placedAt`);其余五列是元组本身。
|
|
70
71
|
*/
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
placed_at?: unknown;
|
|
80
|
-
}
|
|
72
|
+
declare const PLACEMENT_COLUMN_NAMES: readonly ["placement_kind", "placement_scope", "placement_parent_session_id", "placement_root_session_id", "placement_handle", "placed_at"];
|
|
73
|
+
type PlacementColumnName = (typeof PLACEMENT_COLUMN_NAMES)[number];
|
|
74
|
+
/** 读侧投影:六列按表序逗号拼接(`SELECT …, ${PLACEMENT_SELECT_COLUMNS} FROM session_meta …`)。 */
|
|
75
|
+
export declare const PLACEMENT_SELECT_COLUMNS: string;
|
|
76
|
+
/** 一行 `session_meta` 的 placement 列(两方言的驱动都把列名原样带回,故一份形;键集 = 那张表)。 */
|
|
77
|
+
export type PlacementColumns = {
|
|
78
|
+
[K in PlacementColumnName]?: unknown;
|
|
79
|
+
};
|
|
81
80
|
/**
|
|
82
81
|
* 行 → 持久化的 placement 元组(`undefined` = 这是一只普通会话)。
|
|
83
82
|
*
|
|
@@ -94,9 +93,15 @@ export declare function placementFromRow(row: PlacementColumns | undefined): Ses
|
|
|
94
93
|
* 消费方对它 fail-closed(永不按年龄收割)。一个「无行」与「另一个租户有行」分不清的 join 不许删东西。
|
|
95
94
|
*/
|
|
96
95
|
export declare function placedRowFromRow(sessionId: string, row: PlacementColumns, lastActivityMs?: number): PlacedSessionRow;
|
|
97
|
-
/**
|
|
98
|
-
|
|
99
|
-
|
|
96
|
+
/** 建行 INSERT 的放置六列:列段与绑定值出自同一张表、同序(调用方把 `columns` 接在自己的列之后、`values` 接在自己的绑定值之后,占位符按方言自写)。 */
|
|
97
|
+
export interface PlacementInsertCells {
|
|
98
|
+
/** 列段(= {@link PLACEMENT_SELECT_COLUMNS}:读写同一张表)。 */
|
|
99
|
+
readonly columns: string;
|
|
100
|
+
/** 与 `columns` 同序的六个绑定值;无 placement ⇒ 六个 NULL。 */
|
|
101
|
+
readonly values: readonly (string | Date | null)[];
|
|
102
|
+
}
|
|
103
|
+
/** 写侧唯一导出:创建时一次落行的放置列与绑定值。两店(PG / MySQL 协议)的两个建行点 —— 带 placement 的 acquire、带元组的 fork —— 同调这一只。 */
|
|
104
|
+
export declare function placementInsertCells(placement: ForkPlacement | undefined, placedAt: Date): PlacementInsertCells;
|
|
100
105
|
/** `acquire` 的 opts 面(core `SessionStore.acquire` 的第二参,窄成本模块要判的两键)。 */
|
|
101
106
|
export interface PlacementAcquireOpts {
|
|
102
107
|
requireExisting?: boolean;
|
|
@@ -123,4 +128,5 @@ export declare function placementCapabilityOf(store: {
|
|
|
123
128
|
* 接着收」,而不是「有些行永远看不见」。判据消费方(core 的分区收割腿)本就是每 tick 重新枚举的。
|
|
124
129
|
*/
|
|
125
130
|
export declare const LIST_PLACED_BATCH = 1000;
|
|
131
|
+
export {};
|
|
126
132
|
//# sourceMappingURL=session-placement.d.ts.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { SessionError } from "@sema-agent/core";
|
|
2
2
|
export const SESSION_DURABILITY = "durable";
|
|
3
3
|
export const SESSION_PLACEMENTS = { subagent: { durability: SESSION_DURABILITY } };
|
|
4
|
-
|
|
4
|
+
const PLACEMENT_COLUMN_NAMES = ["placement_kind", "placement_scope", "placement_parent_session_id", "placement_root_session_id", "placement_handle", "placed_at"];
|
|
5
|
+
export const PLACEMENT_SELECT_COLUMNS = PLACEMENT_COLUMN_NAMES.join(", ");
|
|
5
6
|
function toEpochMs(v) {
|
|
6
7
|
if (v == null)
|
|
7
8
|
return undefined;
|
|
@@ -34,17 +35,19 @@ export function placedRowFromRow(sessionId, row, lastActivityMs) {
|
|
|
34
35
|
? { sessionId, placedAt, scope, handle }
|
|
35
36
|
: { sessionId, placedAt, tupleIncomplete: true };
|
|
36
37
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
38
|
+
const PLACEMENT_CELL_OF = {
|
|
39
|
+
placement_kind: (p) => p.kind,
|
|
40
|
+
placement_scope: (p) => p.scope ?? null,
|
|
41
|
+
placement_parent_session_id: (p) => p.parentSessionId ?? null,
|
|
42
|
+
placement_root_session_id: (p) => p.rootSessionId ?? null,
|
|
43
|
+
placement_handle: (p) => p.handle ?? null,
|
|
44
|
+
placed_at: (_p, placedAt) => placedAt,
|
|
45
|
+
};
|
|
46
|
+
export function placementInsertCells(placement, placedAt) {
|
|
47
|
+
return {
|
|
48
|
+
columns: PLACEMENT_SELECT_COLUMNS,
|
|
49
|
+
values: PLACEMENT_COLUMN_NAMES.map((column) => (placement === undefined ? null : PLACEMENT_CELL_OF[column](placement, placedAt))),
|
|
50
|
+
};
|
|
48
51
|
}
|
|
49
52
|
export function placementCapabilityOf(store) {
|
|
50
53
|
return { subagentPlacement: store.placements?.subagent !== undefined };
|
|
@@ -1,22 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* **会话行格写原语的 SQL 半** ——
|
|
3
|
-
*
|
|
2
|
+
* **会话行格写原语的 SQL 半** —— 两方言同一只实现,方言只在语句文本里。规则在 `src/session-row.ts` 头注「写原语」;判序只在那里的判官
|
|
3
|
+
* `judgeSessionRowWrite`,本模块只说事务与语句。格住部署的旁表 `session_ext`(属主 `session-ext-table.ts`);住客住引擎座表 `session_meta`(只读)。
|
|
4
4
|
*
|
|
5
5
|
* ## 一只事务(经 `SqlDriver.connect()`)
|
|
6
|
-
* ① `SELECT … FROM session_meta WHERE session_id = ? FOR UPDATE` ——
|
|
7
|
-
* `sql-driver.ts` 的 `@contract txn.read-semantics`)
|
|
8
|
-
* `leaf_id` 同句 +1,导入 / 换装 / fork 写成条目数)
|
|
6
|
+
* ① `SELECT … FROM session_meta WHERE session_id = ? FOR UPDATE` —— 锁根行读住客(当前读;连接初始化钉住读语义:TiDB 悲观、设不上拒启,
|
|
7
|
+
* `sql-driver.ts` 的 `@contract txn.read-semantics`);行在 ⇒ 同锁下锁读它的旁表行(格:执行角色、标题、置顶;行不在 = 全缺省)。
|
|
8
|
+
* 行期望带 `log` 时,同锁下读日志的 mark:长度 = 锁住的行上的 `leaf_seq`(每次追加与 `leaf_id` 同句 +1,导入 / 换装 / fork 写成条目数),
|
|
9
|
+
* 末条 = `session_event` 按 `seq` 倒序第一行(锁读)。追加者先锁这一行再插事件,所以持锁期间 mark 不动。
|
|
9
10
|
* ② 判官(行期望 → 写者身份 → 标签);不是 `write` ⇒ 回滚、一个字节不写。
|
|
10
|
-
* ③ `write` ⇒
|
|
11
|
+
* ③ `write` ⇒ 补旁表行(行在不动)、按 `session_id` 写格(根行已被本事务锁住)→ 提交。`updated_at` 不动(改名不是活动 —— 列表的新近序不变)。
|
|
11
12
|
* 应答行在**提交 / 回滚之后**由调用方的列表行读另读(新语句、新快照 —— 不在事务内用普通 `SELECT` 读:TiDB 悲观事务的普通读钉 `start_ts`,
|
|
12
13
|
* 等锁之后会读回判定之前的旧值),再交 `settleSessionRowWrite` 复核住客。
|
|
13
|
-
*
|
|
14
|
+
*
|
|
15
|
+
* ## 结局 `absent` 的三种去向(一个词不说「写没写」)
|
|
16
|
+
* 调用方把 `absent` 答成「无此会话」(PATCH = 404),但**写落没落**按住客是在哪一刻对不上的分三种(契约「会话行可写位」一节 `PATCH` 一行同表):
|
|
17
|
+
* ① 判官在锁下答 `absent`(行期望不中 / 没有行 / 委派分区行):回滚,一个字节没写;
|
|
18
|
+
* ② 判官答 `changed`(行标签不中,回滚,一个字节没写),回滚之后另读应答行时那一行已换了住客、或读不到:仍是 `absent` 而不是 `changed`
|
|
19
|
+
* (应答行属于另一位住客,不交给这位调用方),写同样一个字节没落;
|
|
20
|
+
* ③ 判官答 `write`、事务**已提交**,提交之后另读应答行时那一行才换了住客:
|
|
21
|
+
* · 会话被删(之后同一 id 被重新登记与否)⇒ 这一笔写随旧行的 `ON DELETE CASCADE` 一并删掉(级联是旁表的承重前提:`session-ext-table.ts` 头注、起服级联探针),重新登记的新住客的标题 / 置顶是缺省;
|
|
22
|
+
* · 只换了属主、化身没变(同一化身被认领 / 同步重戳)⇒ 这一笔写**留在那一行上**:写落下那一刻判官判过的那位住客仍是行主(两笔都先锁根行、串行),
|
|
23
|
+
* 之后这一行连同标题换了主 —— 是行的历史,不是越权写。
|
|
24
|
+
* 应答不在事务内读(理由见上),所以③这一窗在;不取「事务内应答」。
|
|
25
|
+
* 全局锁序:根 `session_meta` 一行 → 它的旁表行(→ 读日志 mark 时它的末条事件),不碰 `task_*`(与旁表的每个写者同序:根行先)。
|
|
14
26
|
*/
|
|
15
27
|
import type { SqlDriver } from "./sql-driver.js";
|
|
16
28
|
import { type SessionRowAnswer, type SessionRowPatch, type SessionRowWrite, type SessionRowWriteOutcome } from "../session-row.js";
|
|
17
29
|
/**
|
|
18
30
|
* 写原语(头注):一只事务里锁根行 → 判官 → 写 / 不写;提交 / 回滚之后经 `readAnswer`(调用方店的列表行读 + 行上的住客)另读应答行。
|
|
19
31
|
* `db` = 店自己的池包成的 SqlDriver(连接经它的初始化);`readAnswer` 只在判官答 `write` / `changed` 时被调。
|
|
32
|
+
* 结局 `absent` 并不都是「一个字节没写」:判官在锁下答 `absent` / 答 `changed` 之后应答复核对不上,都是零写;答 `write` 且已提交之后应答复核对不上,写已落(去向见头注)。
|
|
20
33
|
*/
|
|
21
34
|
export declare function writeSessionRowCellsSql<Row>(db: Pick<SqlDriver, "dialect" | "connect">, sessionId: string, cells: SessionRowPatch, how: SessionRowWrite, readAnswer: (sessionId: string) => Promise<SessionRowAnswer<Row> | undefined>): Promise<SessionRowWriteOutcome<Row>>;
|
|
22
35
|
//# sourceMappingURL=session-row-sql.d.ts.map
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { BUMP_CLIENT_WRITES, SESSION_EXT_TABLE, ensureSessionExtRowStatement } from "./session-ext-table.js";
|
|
1
2
|
import { incarnationFromCell } from "../session-incarnation.js";
|
|
2
3
|
import { judgeSessionRowWrite, settleSessionRowWrite, } from "../session-row.js";
|
|
3
4
|
function binder(dialect) {
|
|
@@ -10,15 +11,15 @@ function binder(dialect) {
|
|
|
10
11
|
},
|
|
11
12
|
};
|
|
12
13
|
}
|
|
13
|
-
function lockedRowFrom(dialect, sessionId, row) {
|
|
14
|
+
function lockedRowFrom(dialect, sessionId, row, ext) {
|
|
14
15
|
return {
|
|
15
16
|
owner: row.owner === null || row.owner === undefined ? null : String(row.owner),
|
|
16
17
|
incarnation: incarnationFromCell(sessionId, row.incarnation, "absent"),
|
|
17
18
|
placed: row.placement_kind !== null && row.placement_kind !== undefined,
|
|
18
|
-
mirror:
|
|
19
|
+
mirror: ext?.execution_role === "mirror",
|
|
19
20
|
cells: {
|
|
20
|
-
title:
|
|
21
|
-
pinned: dialect === "pg" ?
|
|
21
|
+
title: ext?.title === null || ext?.title === undefined ? null : String(ext.title),
|
|
22
|
+
pinned: ext === undefined ? false : dialect === "pg" ? ext.pinned === true : Number(ext.pinned) === 1,
|
|
22
23
|
},
|
|
23
24
|
};
|
|
24
25
|
}
|
|
@@ -35,9 +36,16 @@ export async function writeSessionRowCellsSql(db, sessionId, cells, how, readAns
|
|
|
35
36
|
try {
|
|
36
37
|
await conn.begin();
|
|
37
38
|
const read = binder(dialect);
|
|
38
|
-
const locked = (await conn.query(`SELECT owner, incarnation, placement_kind,
|
|
39
|
+
const locked = (await conn.query(`SELECT owner, incarnation, placement_kind, leaf_seq FROM session_meta WHERE session_id = ${read.p(sessionId)} FOR UPDATE`, read.values)).rows[0];
|
|
40
|
+
const extRead = binder(dialect);
|
|
41
|
+
let ext;
|
|
42
|
+
if (locked !== undefined) {
|
|
43
|
+
const ensure = ensureSessionExtRowStatement(dialect, sessionId);
|
|
44
|
+
await conn.query(ensure.text, [...ensure.values]);
|
|
45
|
+
ext = (await conn.query(`SELECT execution_role, title, pinned FROM ${SESSION_EXT_TABLE} WHERE session_id = ${extRead.p(sessionId)} FOR UPDATE`, extRead.values)).rows[0];
|
|
46
|
+
}
|
|
39
47
|
const mark = how.row.log === undefined || locked === undefined ? undefined : await lockedLogMark(conn, dialect, sessionId, locked.leaf_seq);
|
|
40
|
-
verdict = judgeSessionRowWrite(sessionId, how, locked === undefined ? undefined : lockedRowFrom(dialect, sessionId, locked), () => {
|
|
48
|
+
verdict = judgeSessionRowWrite(sessionId, how, locked === undefined ? undefined : lockedRowFrom(dialect, sessionId, locked, ext), () => {
|
|
41
49
|
if (mark === undefined)
|
|
42
50
|
throw new Error(`writeSessionRowCellsSql: the judge asked session ${sessionId}'s log mark, but the expectation carries none`);
|
|
43
51
|
return mark;
|
|
@@ -52,8 +60,8 @@ export async function writeSessionRowCellsSql(db, sessionId, cells, how, readAns
|
|
|
52
60
|
sets.push(`title = ${w.p(cells.title)}`);
|
|
53
61
|
if (cells.pinned !== undefined)
|
|
54
62
|
sets.push(`pinned = ${w.p(cells.pinned)}`);
|
|
55
|
-
|
|
56
|
-
|
|
63
|
+
sets.push(BUMP_CLIENT_WRITES);
|
|
64
|
+
await conn.query(`UPDATE ${SESSION_EXT_TABLE} SET ${sets.join(", ")} WHERE session_id = ${w.p(sessionId)}`, w.values);
|
|
57
65
|
await conn.commit();
|
|
58
66
|
}
|
|
59
67
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* run 账里「每会话的 run 投影」的**唯一 JS 规则**({@link SessionRunRollup} 的五位)—— 文件 / 内存两只 run 店的窄读面
|
|
3
|
+
* (`SessionRunRollupSource.sessionRunRollups`)都调这一只;SQL 侧是会话店列表投影里的子查询文本(`plugins/session-store-sql.ts` 的 `selectListRows`),
|
|
4
|
+
* 两侧由同一张用例表钉同读数(`test/helpers/session-preview-cases.ts`)。
|
|
5
|
+
*
|
|
6
|
+
* 律:
|
|
7
|
+
* · 排序口径 `created_at DESC, task_id DESC`(与 SQL 的 rn=1 窗函数 / `DISTINCT ON` 逐字同一句);
|
|
8
|
+
* · `runCount` = 全部行数;`lastStatus` / `lastRunId` / `lastTaskRunId` = 最新一条(rn=1)的状态 / task_id / `result.runId`(非空串才铸键);
|
|
9
|
+
* · `objectivePreview` = 同一排序下第一条「预览列是串且 `length > 0`」的那一列,没有 ⇒ `null` —— 按字符长度判,不按与 `""` 比较
|
|
10
|
+
* (只空格的老值 `" "` 算有;SQL 侧 `CHAR_LENGTH(…) > 0` 同读,`<> ''` 在 PAD SPACE 排序规则下会把它当空);
|
|
11
|
+
* · `q`(非空)⇒ 只交「有一条行的预览列含 q」的会话(两边转小写后按字面包含;SQL 侧 `LOWER(…) LIKE LOWER(…)` + `ESCAPE`)。
|
|
12
|
+
*
|
|
13
|
+
* 单遍、不排序、不把一只会话的行展开成函数实参(一只会话的行数没有上界:展开约 12.5 万条就是 `RangeError`,而 local 列表读的是全账)。
|
|
14
|
+
*/
|
|
15
|
+
import type { SessionRunRollup } from "./store-contracts.js";
|
|
16
|
+
/** 一条 run 行在本规则眼里的六格(两只店的行形结构上都满足它)。`objectivePreview` 可缺席(公开快照之前写下、没有这一键的 run.json)= 不是串 ⇒ 跳过。 */
|
|
17
|
+
export interface SessionRunRollupRow {
|
|
18
|
+
readonly sessionId: string;
|
|
19
|
+
readonly taskId: string;
|
|
20
|
+
readonly createdAt: Date;
|
|
21
|
+
readonly status: string;
|
|
22
|
+
readonly objectivePreview?: string | null;
|
|
23
|
+
readonly result: unknown;
|
|
24
|
+
}
|
|
25
|
+
/** 一次读的结果:有 run 行的每只会话 → 五位;`q` 非空 ⇒ 只留命中的会话。 */
|
|
26
|
+
export declare function buildSessionRunRollups(rows: Iterable<SessionRunRollupRow>, opts?: {
|
|
27
|
+
readonly q?: string;
|
|
28
|
+
}): ReadonlyMap<string, SessionRunRollup>;
|
|
29
|
+
//# sourceMappingURL=session-run-rollup.d.ts.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const newer = (a, b) => {
|
|
2
|
+
const ta = a.createdAt.getTime();
|
|
3
|
+
const tb = b.createdAt.getTime();
|
|
4
|
+
return ta > tb || (ta === tb && a.taskId > b.taskId);
|
|
5
|
+
};
|
|
6
|
+
const hasPreview = (r) => typeof r.objectivePreview === "string" && r.objectivePreview.length > 0;
|
|
7
|
+
export function buildSessionRunRollups(rows, opts = {}) {
|
|
8
|
+
const needle = opts.q ? opts.q.toLowerCase() : undefined;
|
|
9
|
+
const acc = new Map();
|
|
10
|
+
for (const r of rows) {
|
|
11
|
+
const hit = needle !== undefined && typeof r.objectivePreview === "string" && r.objectivePreview.toLowerCase().includes(needle);
|
|
12
|
+
const cur = acc.get(r.sessionId);
|
|
13
|
+
if (cur === undefined) {
|
|
14
|
+
acc.set(r.sessionId, { count: 1, latest: r, withPreview: hasPreview(r) ? r : undefined, hit });
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
cur.count += 1;
|
|
18
|
+
if (newer(r, cur.latest))
|
|
19
|
+
cur.latest = r;
|
|
20
|
+
if (hasPreview(r) && (cur.withPreview === undefined || newer(r, cur.withPreview)))
|
|
21
|
+
cur.withPreview = r;
|
|
22
|
+
if (hit)
|
|
23
|
+
cur.hit = true;
|
|
24
|
+
}
|
|
25
|
+
const out = new Map();
|
|
26
|
+
for (const [sessionId, a] of acc) {
|
|
27
|
+
if (needle !== undefined && !a.hit)
|
|
28
|
+
continue;
|
|
29
|
+
const runId = a.latest.result?.runId;
|
|
30
|
+
out.set(sessionId, {
|
|
31
|
+
runCount: a.count,
|
|
32
|
+
lastStatus: a.latest.status,
|
|
33
|
+
lastRunId: a.latest.taskId,
|
|
34
|
+
...(typeof runId === "string" && runId !== "" ? { lastTaskRunId: runId } : {}),
|
|
35
|
+
objectivePreview: a.withPreview?.objectivePreview ?? null,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=session-run-rollup.js.map
|