@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
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# MODEL_GATEWAY_BASEURL MODEL_ID MODEL_API_KEY
|
|
13
13
|
# ALLOW_SMALL_CLUSTER=true 放行 <3 机(dev/CI 单节点验流程;生产必须 >=3 奇数)
|
|
14
14
|
set -euo pipefail
|
|
15
|
-
#
|
|
15
|
+
# [[[ 自身目录(五个入口逐字同一段)
|
|
16
16
|
# HERE = 本脚本**真实文件**所在目录。经 npm bin 软链(node_modules/.bin/sema-up)调用时 $0 是软链路径,
|
|
17
17
|
# 按它的目录找 lib/ 会落进 .bin/ ⇒ 逐跳解软链。只用不带参数的 readlink(macOS 自带 bash 3.2 / BSD readlink 没有 -f)。
|
|
18
18
|
# 库要在知道 HERE 之后才找得到,所以这段不能收进库里:五个入口各持同一段,逐字一致由测试判。
|
|
@@ -24,7 +24,7 @@ while [ -L "$_self" ]; do
|
|
|
24
24
|
done
|
|
25
25
|
HERE="$(cd "$(dirname "$_self")" && pwd)"
|
|
26
26
|
unset _self _hops _dir
|
|
27
|
-
#
|
|
27
|
+
# ]]] 自身目录
|
|
28
28
|
# `.env` 的文法与全部读写原语只在 lib/envf.sh 定义:本脚本不再有自己的 setk / `. "$ENVF"`。
|
|
29
29
|
. "$HERE/lib/envf.sh"
|
|
30
30
|
# 「壳怎么接这台引擎」的渲染(sema-up.sh / kube-up.sh 同一只)。
|
|
@@ -35,6 +35,8 @@ unset _self _hops _dir
|
|
|
35
35
|
. "$HERE/lib/health.sh"
|
|
36
36
|
# 对象存储桶的唯一表(sema-up.sh / kube-up.sh / smoke.sh 同读这一张)。
|
|
37
37
|
. "$HERE/lib/buckets.sh"
|
|
38
|
+
# 跑图表的共用读法:只打 helm 输出里的 NOTES 段(kube-up.sh 同一只)。
|
|
39
|
+
. "$HERE/lib/chart-run.sh"
|
|
38
40
|
log() { printf '[cluster-up] %s\n' "$*" >&2; }
|
|
39
41
|
die() { log "⛔ $*"; exit 1; }
|
|
40
42
|
|
|
@@ -87,24 +89,25 @@ mscp() { # mscp <i> <local> <remote>
|
|
|
87
89
|
rsudo() { local i="$1"; shift; if [ "$(mvar "$i" USER)" = "root" ]; then mssh "$i" bash -s -- "$@"; else mssh "$i" sudo bash -s -- "$@"; fi; }
|
|
88
90
|
# 远端单命令(stdin 归命令用,如 kubectl apply -f -)
|
|
89
91
|
rrun() { local i="$1"; shift; if [ "$(mvar "$i" USER)" = "root" ]; then mssh "$i" "$@"; else mssh "$i" sudo "$@"; fi; }
|
|
92
|
+
# 远端要跑的脚本有两种来路,都不用 here-document / here-string(正文超过管道缓冲时,先写后 fork 的写法会在管道配额吃紧的机器上永远写不完):
|
|
93
|
+
# · 全静态的正文 ⇒ 仓内文件 lib/remote/*.sh,`rsudo N < "$HERE/lib/remote/….sh"`(stdin 直接是文件,没有管道);要传给远端 $1… 的值放在 N 后面;
|
|
94
|
+
# · 要展开本地变量的正文 ⇒ `rsudo_text N "<双引号串>"`:文本(第 2 个参数)与改前展开后的字节相同,经 stdin 喂 `bash -s`。
|
|
95
|
+
# 文本是 shell 函数的参数、printf 是内建,所以口令(如 k3s token)既不落盘也不进任何进程的命令行;用进程替换而不是管道,rc 只取 rsudo 的。
|
|
96
|
+
rsudo_text() { local i="$1" t="$2"; shift 2; rsudo "$i" "$@" < <(printf '%s' "$t"); }
|
|
90
97
|
|
|
91
98
|
# ── 0. 互达 + sudo + 硬件预检(在目标机上,§3d-2:错误带原因+建议)+ hostname 告警 ──
|
|
92
99
|
log "0/8 机器预检($MACHINE_COUNT 台)"
|
|
93
100
|
declare -a SYS_HOSTNAMES=()
|
|
94
101
|
for ((i=0; i<MACHINE_COUNT; i++)); do
|
|
95
|
-
out=$(rsudo "$i"
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
[
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
hostname
|
|
105
|
-
EOF
|
|
106
|
-
) || die "机器 $i($(mvar "$i" HOST))预检失败:${out:-ssh/sudo 不通——需要 key 互信 + passwordless sudo}"
|
|
107
|
-
case "$out" in *WARN*) log " ⚠ $(mvar "$i" HOST):${out%%$'\n'*}" ;; esac
|
|
102
|
+
out=$(rsudo "$i" < "$HERE/lib/remote/machine-precheck.sh") || die "机器 $i($(mvar "$i" HOST))预检失败:${out:-ssh/sudo 不通——需要 key 互信 + passwordless sudo}"
|
|
103
|
+
# 每条 WARN 行都打(预检可能告不止一件:无 /dev/kvm、无 NFS 客户端……);末行是 hostname
|
|
104
|
+
_rest="$out"
|
|
105
|
+
while [ -n "$_rest" ]; do
|
|
106
|
+
_line="${_rest%%$'\n'*}"
|
|
107
|
+
case "$_line" in WARN*) log " ⚠ $(mvar "$i" HOST):$_line" ;; esac
|
|
108
|
+
[ "$_rest" = "$_line" ] && break
|
|
109
|
+
_rest="${_rest#*$'\n'}"
|
|
110
|
+
done
|
|
108
111
|
SYS_HOSTNAMES+=("$(printf '%s\n' "$out" | tail -1)")
|
|
109
112
|
done
|
|
110
113
|
if [ "$(printf '%s\n' "${SYS_HOSTNAMES[@]}" | sort -u | wc -l)" -lt "$MACHINE_COUNT" ]; then
|
|
@@ -113,12 +116,7 @@ fi
|
|
|
113
116
|
|
|
114
117
|
# region=auto:从目标机(不是操作员机)探测网络亲和
|
|
115
118
|
if [ "$REGION" = "auto" ]; then
|
|
116
|
-
REGION=$(rsudo 0
|
|
117
|
-
a=$(curl -m3 -so /dev/null -w '%{time_total}' https://mirrors.aliyun.com 2>/dev/null || echo 99)
|
|
118
|
-
b=$(curl -m3 -so /dev/null -w '%{time_total}' https://registry.npmjs.org 2>/dev/null || echo 99)
|
|
119
|
-
awk -v a="$a" -v b="$b" 'BEGIN{print (a<b)?"cn":"global"}'
|
|
120
|
-
EOF
|
|
121
|
-
)
|
|
119
|
+
REGION=$(rsudo 0 < "$HERE/lib/remote/region-probe.sh")
|
|
122
120
|
log "region=auto → $REGION(目标机探测)"
|
|
123
121
|
fi
|
|
124
122
|
|
|
@@ -139,81 +137,58 @@ node_flags() { # node_flags <i> → 该机的 k3s server 通用 flag(字段已
|
|
|
139
137
|
}
|
|
140
138
|
K3S0_IP="$(mvar 0 PRIVATE_IP)"; [ -z "$K3S0_IP" ] && K3S0_IP="$(mvar 0 HOST)"
|
|
141
139
|
|
|
142
|
-
if
|
|
140
|
+
if rsudo_text 0 'test -f /usr/local/bin/k3s && systemctl is-active --quiet k3s'$'\n' 2>/dev/null; then
|
|
143
141
|
log "1/8 k3s 首节点已在跑,跳过安装"
|
|
144
142
|
else
|
|
145
143
|
log "1/8 k3s 首节点($(mvar 0 NAME) @ $(mvar 0 HOST))"
|
|
146
|
-
|
|
147
|
-
set -e
|
|
144
|
+
rsudo_text 0 "set -e
|
|
148
145
|
curl -sfL https://get.k3s.io | $(k3s_install_env)INSTALL_K3S_CHANNEL=$K3S_CHANNEL \
|
|
149
|
-
INSTALL_K3S_EXEC
|
|
150
|
-
|
|
146
|
+
INSTALL_K3S_EXEC=\"server --cluster-init $(node_flags 0)\" sh -
|
|
147
|
+
"
|
|
151
148
|
fi
|
|
152
|
-
TOKEN="$(
|
|
149
|
+
TOKEN="$(rsudo_text 0 'cat /var/lib/rancher/k3s/server/node-token'$'\n')" || die "读不到 k3s node-token"
|
|
153
150
|
for ((i=1; i<MACHINE_COUNT; i++)); do
|
|
154
|
-
if
|
|
151
|
+
if rsudo_text "$i" 'test -f /usr/local/bin/k3s && systemctl is-active --quiet k3s'$'\n' 2>/dev/null; then
|
|
155
152
|
# 活着 ≠ 属于本集群:被复用的机器可能挂在别的集群上,静默跳过=幽灵成员
|
|
156
|
-
if
|
|
153
|
+
if rsudo_text 0 "k3s kubectl get node $(mvar "$i" NAME) --no-headers >/dev/null 2>&1"$'\n'; then
|
|
157
154
|
log "1/8 节点 $(mvar "$i" NAME) 已是本集群成员,跳过"
|
|
158
155
|
continue
|
|
159
156
|
fi
|
|
160
157
|
die "机器 $(mvar "$i" HOST) 上 k3s 在跑但不是本集群成员($(mvar "$i" NAME) 不在)——先在该机跑 k3s-uninstall.sh 再重来"
|
|
161
158
|
fi
|
|
162
159
|
log "1/8 加入节点 $(mvar "$i" NAME) @ $(mvar "$i" HOST)"
|
|
163
|
-
|
|
164
|
-
set -e
|
|
160
|
+
rsudo_text "$i" "set -e
|
|
165
161
|
curl -sfL https://get.k3s.io | $(k3s_install_env)INSTALL_K3S_CHANNEL=$K3S_CHANNEL \
|
|
166
|
-
K3S_TOKEN='$TOKEN' INSTALL_K3S_EXEC
|
|
167
|
-
|
|
162
|
+
K3S_TOKEN='$TOKEN' INSTALL_K3S_EXEC=\"server --server https://$K3S0_IP:6443 $(node_flags "$i")\" sh -
|
|
163
|
+
"
|
|
168
164
|
done
|
|
169
165
|
# Ready 等待(embedded etcd 首次选主可能要 ~1min)
|
|
170
|
-
|
|
171
|
-
set -e
|
|
166
|
+
rsudo_text 0 "set -e
|
|
172
167
|
for t in \$(seq 1 60); do
|
|
173
168
|
n=\$(k3s kubectl get nodes --no-headers 2>/dev/null | grep -cw Ready || true)
|
|
174
|
-
[ "\$n" -ge "$MACHINE_COUNT" ] && { k3s kubectl get nodes -o wide; exit 0; }
|
|
169
|
+
[ \"\$n\" -ge \"$MACHINE_COUNT\" ] && { k3s kubectl get nodes -o wide; exit 0; }
|
|
175
170
|
sleep 5
|
|
176
171
|
done
|
|
177
172
|
k3s kubectl get nodes -o wide; exit 1
|
|
178
|
-
|
|
173
|
+
" || die "k3s 节点未全 Ready"
|
|
179
174
|
|
|
180
175
|
# ── 2. VXLAN 守卫(有公网口的机器:flannel 8472 只许私网,公网口 DROP;systemd 常驻,
|
|
181
176
|
# k3s 重装会重置 iptables——unit 常驻保证 reboot/重装后规则还在)────────────────
|
|
182
177
|
log "2/8 VXLAN 公网口守卫"
|
|
183
178
|
for ((i=0; i<MACHINE_COUNT; i++)); do
|
|
184
179
|
iface="$(mvar "$i" PUBLIC_IFACE)"; [ -z "$iface" ] && continue
|
|
185
|
-
rsudo "$i"
|
|
186
|
-
set -e
|
|
187
|
-
cat > /etc/systemd/system/sema-vxlan-guard.service <<'UNIT'
|
|
188
|
-
[Unit]
|
|
189
|
-
Description=Drop flannel VXLAN on public iface (sema isolation invariant)
|
|
190
|
-
After=network-online.target k3s.service
|
|
191
|
-
[Service]
|
|
192
|
-
Type=oneshot
|
|
193
|
-
RemainAfterExit=yes
|
|
194
|
-
ExecStart=/bin/sh -c 'iptables -C INPUT -i $iface -p udp --dport 8472 -j DROP 2>/dev/null || iptables -I INPUT -i $iface -p udp --dport 8472 -j DROP'
|
|
195
|
-
[Install]
|
|
196
|
-
WantedBy=multi-user.target
|
|
197
|
-
UNIT
|
|
198
|
-
systemctl daemon-reload && systemctl enable --now sema-vxlan-guard.service
|
|
199
|
-
iptables -C INPUT -i $iface -p udp --dport 8472 -j DROP
|
|
200
|
-
EOF
|
|
180
|
+
rsudo "$i" "$iface" < "$HERE/lib/remote/vxlan-guard.sh"
|
|
201
181
|
log " $(mvar "$i" NAME):8472/udp DROP on $iface ✓"
|
|
202
182
|
done
|
|
203
183
|
|
|
204
184
|
# ── 3. helm(装配工具,仅首节点)────────────────────────────────────────────────
|
|
205
185
|
log "3/8 helm + 基础组件"
|
|
206
|
-
rsudo 0
|
|
207
|
-
set -e
|
|
208
|
-
command -v helm >/dev/null && exit 0
|
|
209
|
-
curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash >/dev/null
|
|
210
|
-
EOF
|
|
186
|
+
rsudo 0 < "$HERE/lib/remote/helm-install.sh"
|
|
211
187
|
KC="--kubeconfig /etc/rancher/k3s/k3s.yaml"
|
|
212
188
|
|
|
213
189
|
# Longhorn(分布式存储;replica 数=min(机器数,2)——RAID1 之上跨机冗余)
|
|
214
190
|
LH_REPLICAS=$(( MACHINE_COUNT < 2 ? 1 : 2 ))
|
|
215
|
-
|
|
216
|
-
set -e
|
|
191
|
+
rsudo_text 0 "set -e
|
|
217
192
|
if ! k3s kubectl get storageclass longhorn >/dev/null 2>&1; then
|
|
218
193
|
helm $KC repo add longhorn https://charts.longhorn.io >/dev/null
|
|
219
194
|
helm $KC repo update >/dev/null
|
|
@@ -224,40 +199,38 @@ if ! k3s kubectl get storageclass longhorn >/dev/null 2>&1; then
|
|
|
224
199
|
--set persistence.defaultClassReplicaCount=$LH_REPLICAS --wait --timeout 10m >/dev/null
|
|
225
200
|
fi
|
|
226
201
|
# longhorn=默认 SC,local-path 摘掉 default 标(两个 default 会让 PVC 行为不定)
|
|
227
|
-
k3s kubectl patch storageclass local-path -p '{"metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class"
|
|
228
|
-
k3s kubectl patch storageclass longhorn -p '{"metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class"
|
|
202
|
+
k3s kubectl patch storageclass local-path -p '{\"metadata\":{\"annotations\":{\"storageclass.kubernetes.io/is-default-class\":\"false\"}}}' >/dev/null 2>&1 || true
|
|
203
|
+
k3s kubectl patch storageclass longhorn -p '{\"metadata\":{\"annotations\":{\"storageclass.kubernetes.io/is-default-class\":\"true\"}}}' >/dev/null
|
|
229
204
|
echo LONGHORN_OK
|
|
230
|
-
|
|
205
|
+
"
|
|
231
206
|
|
|
232
207
|
# kata-deploy(官方 helm chart;kustomize remote base 老路径已失效——真踩)
|
|
233
208
|
log "4/8 kata-deploy(VM 沙箱运行时)"
|
|
234
|
-
|
|
235
|
-
set -e
|
|
209
|
+
rsudo_text 0 "set -e
|
|
236
210
|
k3s kubectl get runtimeclass kata-qemu >/dev/null 2>&1 && { echo KATA_ALREADY; exit 0; }
|
|
237
211
|
helm $KC upgrade --install kata-deploy oci://ghcr.io/kata-containers/kata-deploy-charts/kata-deploy \
|
|
238
212
|
--version $KATA_VERSION --namespace kube-system --set k8sDistribution=k3s --wait --timeout 10m >/dev/null
|
|
239
213
|
for t in \$(seq 1 36); do k3s kubectl get runtimeclass kata-qemu >/dev/null 2>&1 && break; sleep 5; done
|
|
240
214
|
k3s kubectl get runtimeclass kata-qemu >/dev/null
|
|
241
215
|
echo KATA_OK
|
|
242
|
-
|
|
216
|
+
"
|
|
243
217
|
|
|
244
218
|
# CNPG operator(钉 $CNPG_VERSION)
|
|
245
219
|
log "5/8 CNPG operator $CNPG_VERSION"
|
|
246
|
-
|
|
247
|
-
set -e
|
|
220
|
+
rsudo_text 0 "set -e
|
|
248
221
|
if ! k3s kubectl get deployment -n cnpg-system cnpg-controller-manager >/dev/null 2>&1; then
|
|
249
|
-
# 组件刚装完 apiserver 聚合 openapi 可能未就绪(瞬时 "unable to handle the request")——重试非降级
|
|
222
|
+
# 组件刚装完 apiserver 聚合 openapi 可能未就绪(瞬时 \"unable to handle the request\")——重试非降级
|
|
250
223
|
ok=0
|
|
251
224
|
for t in 1 2 3 4 5; do
|
|
252
225
|
k3s kubectl apply --server-side -f \
|
|
253
|
-
"https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-${CNPG_VERSION%.*}/releases/cnpg-$CNPG_VERSION.yaml" >/dev/null && { ok=1; break; }
|
|
226
|
+
\"https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-${CNPG_VERSION%.*}/releases/cnpg-$CNPG_VERSION.yaml\" >/dev/null && { ok=1; break; }
|
|
254
227
|
sleep 15
|
|
255
228
|
done
|
|
256
|
-
[ "\$ok" = 1 ] || { echo "CNPG manifest apply
|
|
229
|
+
[ \"\$ok\" = 1 ] || { echo \"CNPG manifest apply 重试耗尽\" >&2; exit 1; }
|
|
257
230
|
fi
|
|
258
231
|
k3s kubectl rollout status deployment/cnpg-controller-manager -n cnpg-system --timeout=300s >/dev/null
|
|
259
232
|
echo CNPG_OK
|
|
260
|
-
|
|
233
|
+
"
|
|
261
234
|
|
|
262
235
|
# ── 6. server 镜像:registry 引用 or tar 预灌 ─────────────────────────────────────
|
|
263
236
|
log "6/8 server 镜像"
|
|
@@ -272,14 +245,7 @@ elif [ -n "${SEMA_SERVER_IMAGE_TAR:-}" ]; then
|
|
|
272
245
|
# ⚠ 每台都灌,包括"看起来已有"的——k3s-uninstall 重装过的节点镜像会被清(复审真抓)
|
|
273
246
|
log " 预灌 $(mvar "$i" NAME) …"
|
|
274
247
|
mscp "$i" "$SEMA_SERVER_IMAGE_TAR" /tmp/sema-server-image.tar.upload
|
|
275
|
-
rsudo "$i"
|
|
276
|
-
set -e
|
|
277
|
-
trap 'rm -f /tmp/sema-server-image.tar.upload /tmp/sema-server-image.tar' EXIT
|
|
278
|
-
f=/tmp/sema-server-image.tar.upload
|
|
279
|
-
case "$(head -c2 "$f" | od -An -tx1 | tr -d ' ')" in 1f8b) gunzip -c "$f" > /tmp/sema-server-image.tar && f=/tmp/sema-server-image.tar ;; esac
|
|
280
|
-
k3s ctr images import "$f" >/dev/null
|
|
281
|
-
k3s ctr images ls | grep -q sema-server
|
|
282
|
-
EOF
|
|
248
|
+
rsudo "$i" < "$HERE/lib/remote/image-import.sh"
|
|
283
249
|
done
|
|
284
250
|
else
|
|
285
251
|
die "需要 SEMA_SERVER_IMAGE(registry 引用)或 SEMA_SERVER_IMAGE_TAR(docker save 包)之一"
|
|
@@ -305,22 +271,12 @@ if [ -n "${IMAGE_PULL_USER:-}" ] && [ -n "${IMAGE_PULL_TOKEN:-}" ]; then
|
|
|
305
271
|
rrun 0 k3s kubectl annotate ns "$ns" meta.helm.sh/release-name=sema-stack meta.helm.sh/release-namespace=sema --overwrite >/dev/null
|
|
306
272
|
fi
|
|
307
273
|
IPS_NS="$ns" IPS_REG="${IMAGE_PULL_REGISTRY:-https://index.docker.io/v1/}" \
|
|
308
|
-
IPS_USER="$IMAGE_PULL_USER" IPS_TOKEN="$IMAGE_PULL_TOKEN" python3 -
|
|
309
|
-
import base64, json, os
|
|
310
|
-
u, p = os.environ["IPS_USER"], os.environ["IPS_TOKEN"]
|
|
311
|
-
cfg = {"auths": {os.environ["IPS_REG"]: {"username": u, "password": p,
|
|
312
|
-
"auth": base64.b64encode(f"{u}:{p}".encode()).decode()}}}
|
|
313
|
-
b64 = base64.b64encode(json.dumps(cfg).encode()).decode()
|
|
314
|
-
print(json.dumps({"apiVersion": "v1", "kind": "Secret", "type": "kubernetes.io/dockerconfigjson",
|
|
315
|
-
"metadata": {"name": "sema-regcred", "namespace": os.environ["IPS_NS"]},
|
|
316
|
-
"data": {".dockerconfigjson": b64}}))
|
|
317
|
-
PY
|
|
274
|
+
IPS_USER="$IMAGE_PULL_USER" IPS_TOKEN="$IMAGE_PULL_TOKEN" python3 - < "$HERE/lib/regcred.py" | rrun 0 k3s kubectl apply -f - >/dev/null
|
|
318
275
|
# default SA 由 ns 控制器异步建——等它出现再 patch(幂等)
|
|
319
|
-
|
|
320
|
-
set -e
|
|
276
|
+
rsudo_text 0 "set -e
|
|
321
277
|
for t in \$(seq 1 12); do k3s kubectl get sa default -n $ns >/dev/null 2>&1 && break; sleep 5; done
|
|
322
|
-
k3s kubectl patch sa default -n $ns -p '{"imagePullSecrets":[{"name"
|
|
323
|
-
|
|
278
|
+
k3s kubectl patch sa default -n $ns -p '{\"imagePullSecrets\":[{\"name\":\"sema-regcred\"}]}' >/dev/null
|
|
279
|
+
"
|
|
324
280
|
done
|
|
325
281
|
elif [ -n "${IMAGE_PULL_USER:-}${IMAGE_PULL_TOKEN:-}" ]; then
|
|
326
282
|
die "IMAGE_PULL_USER/IMAGE_PULL_TOKEN 只给了一个——两个都要(或都不给=公共镜像)"
|
|
@@ -360,33 +316,16 @@ if [ "$STACK_ENGINE" = "helm" ]; then
|
|
|
360
316
|
V_PKG_SOURCE="$([ "$REGION" = "global" ] && echo global || echo '')" \
|
|
361
317
|
V_PG_INSTANCES="$PG_INSTANCES" V_PG_AA="$PG_AA" V_REPLICAS="$SERVER_REPLICAS" \
|
|
362
318
|
V_REQ_PRINCIPAL="$(principal_of_users "$USERS")" \
|
|
363
|
-
python3 - > "$VALSF"
|
|
364
|
-
import json, os
|
|
365
|
-
e = os.environ
|
|
366
|
-
# json 是合法 yaml;json.dumps 对任意凭据字符安全(引号/反斜杠/换行都正确转义)
|
|
367
|
-
print(json.dumps({
|
|
368
|
-
"pg": {"instances": int(e["V_PG_INSTANCES"]), "antiAffinity": e["V_PG_AA"]},
|
|
369
|
-
"minio": {"rootPassword": e["V_MINIO_PW"]},
|
|
370
|
-
"server": {
|
|
371
|
-
"image": e["V_SERVER_IMAGE"], "pullPolicy": e["V_PULL_POLICY"],
|
|
372
|
-
"replicas": int(e["V_REPLICAS"]), "serviceAuthToken": e["V_SVC_TOKEN"],
|
|
373
|
-
"modelGatewayBaseurl": e["V_MODEL_GATEWAY"], "modelId": e["V_MODEL_ID"],
|
|
374
|
-
"modelApiKey": e["V_MODEL_KEY"], "sandboxPkgSource": e["V_PKG_SOURCE"],
|
|
375
|
-
"requirePrincipal": e["V_REQ_PRINCIPAL"],
|
|
376
|
-
},
|
|
377
|
-
# chart 0.3.0 起 registry.enabled 默认 true(单机档语义)——machines 多机路径的 registry/git
|
|
378
|
-
# 面还没接线,必须显式关,不然 helm 撞 registry.image required(2026-07-12 自查)
|
|
379
|
-
"registry": {"enabled": False},
|
|
380
|
-
"gitea": {"enabled": False},
|
|
381
|
-
}))
|
|
382
|
-
PY
|
|
319
|
+
python3 - > "$VALSF" < "$HERE/lib/helm-values-cluster.py"
|
|
383
320
|
)
|
|
384
321
|
[ -s "$VALSF" ] || die "helm values 生成失败"
|
|
385
|
-
# 失败也删 values 文件(die 在 rm 之前退出会把含 MODEL_API_KEY 的 0600 文件留在 WORK)
|
|
386
|
-
|
|
387
|
-
|
|
322
|
+
# 失败也删 values 文件(die 在 rm 之前退出会把含 MODEL_API_KEY 的 0600 文件留在 WORK)。
|
|
323
|
+
# helm 的 stdout 收进变量,只把图表 NOTES 段打进日志(lib/chart-run.sh helm_notes:开着调试时 stdout 还有 values / 渲出的 Secret,那些不打)。
|
|
324
|
+
_helm_out=$(rrun 0 helm --kubeconfig /etc/rancher/k3s/k3s.yaml upgrade --install sema-stack \
|
|
325
|
+
/tmp/sema-stack-chart/chart -n sema --create-namespace -f - < "$VALSF") \
|
|
388
326
|
|| { rm -f "$VALSF"; die "helm upgrade --install sema-stack 失败"; }
|
|
389
327
|
rm -f "$VALSF"
|
|
328
|
+
helm_notes "$_helm_out" >&2
|
|
390
329
|
rrun 0 rm -rf /tmp/sema-stack-chart
|
|
391
330
|
else
|
|
392
331
|
RENDERED="$WORK/sema-stack-cluster.rendered.yaml"
|
|
@@ -399,77 +338,37 @@ RENDERED="$WORK/sema-stack-cluster.rendered.yaml"
|
|
|
399
338
|
R_PKG_SOURCE="$([ "$REGION" = "global" ] && echo global || echo '')" \
|
|
400
339
|
R_PG_INSTANCES="$PG_INSTANCES" R_PG_AA="$PG_AA" R_REPLICAS="$SERVER_REPLICAS" \
|
|
401
340
|
R_REQ_PRINCIPAL="$(principal_of_users "$USERS")" \
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
MAP = {"__MINIO_PW__":"R_MINIO_PW", "__SVC_TOKEN__":"R_SVC_TOKEN", "__MODEL_KEY__":"R_MODEL_KEY",
|
|
405
|
-
"__MODEL_GATEWAY__":"R_MODEL_GATEWAY", "__MODEL_ID__":"R_MODEL_ID",
|
|
406
|
-
"__SERVER_IMAGE__":"R_SERVER_IMAGE", "__SERVER_PULL_POLICY__":"R_PULL_POLICY",
|
|
407
|
-
"__PKG_SOURCE__":"R_PKG_SOURCE", "__PG_INSTANCES__":"R_PG_INSTANCES",
|
|
408
|
-
"__PG_ANTI_AFFINITY__":"R_PG_AA", "__SERVER_REPLICAS__":"R_REPLICAS",
|
|
409
|
-
"__REQUIRE_PRINCIPAL__":"R_REQ_PRINCIPAL"}
|
|
410
|
-
t = open(sys.argv[1], encoding="utf-8").read()
|
|
411
|
-
for ph, env in MAP.items():
|
|
412
|
-
v = os.environ.get(env)
|
|
413
|
-
if v is None: raise SystemExit(f"渲染缺 {env}({ph})")
|
|
414
|
-
if any(c in v for c in "\n\"\\"): raise SystemExit(f"{env} 含 YAML 危险字符(换行/引号/反斜杠)")
|
|
415
|
-
t = t.replace(ph, v)
|
|
416
|
-
import re
|
|
417
|
-
left = sorted(set(re.findall(r"__[A-Z_]+__", t)))
|
|
418
|
-
if left: raise SystemExit(f"未渲染占位符残留: {left}")
|
|
419
|
-
sys.stdout.write(t)
|
|
420
|
-
PY
|
|
341
|
+
R_OPERATOR_SINGLE_USER="$(operator_single_user_of_users "$USERS")" \
|
|
342
|
+
python3 - "$HERE/stack/sema-stack-cluster.yaml" > "$RENDERED" < "$HERE/lib/render-stack.py"
|
|
421
343
|
)
|
|
422
344
|
[ -s "$RENDERED" ] || die "sema-stack 渲染失败"
|
|
423
345
|
# 凭据清单经 stdin 直接 apply,不落远端盘(落 /tmp 失败时会残留)
|
|
424
346
|
rrun 0 k3s kubectl apply -f - < "$RENDERED" >/dev/null
|
|
347
|
+
# 与 helm 路径的图表 NOTES 同一组事实(本清单不经 helm,NOTES 由这里说):钥匙卷是 ReadWriteMany(本清单副本数恒 > 1),Longhorn 的 RWX 要节点上的 NFS 客户端。
|
|
348
|
+
log " 停驻封签钥匙:引擎的钥匙保管目录在持久卷 sema-server-sealed-key(ReadWriteMany,longhorn;每个节点要装 NFS 客户端,server Pod 挂不上卷就是缺它),重启与换副本都不丢钥匙"
|
|
425
349
|
fi
|
|
426
|
-
rsudo 0 $(buckets_prefixed local/ $(buckets_k8s))
|
|
427
|
-
set -e
|
|
428
|
-
BUCKETS=("$@") # 要建的桶(local/<桶>):清单只在 lib/buckets.sh 一处,经位置参数递给远端
|
|
429
|
-
# runner token 跨 ns 复制要赶在 server 起 pod 前(晚了=CreateContainerConfigError 干等——真踩);
|
|
430
|
-
# SA token secret 由控制器异步填充,先等它有值
|
|
431
|
-
TOK=""
|
|
432
|
-
for t in $(seq 1 24); do
|
|
433
|
-
TOK=$(k3s kubectl get secret sema-runner-token -n sema-sandbox -o jsonpath='{.data.token}' 2>/dev/null || true)
|
|
434
|
-
[ -n "$TOK" ] && break; sleep 5
|
|
435
|
-
done
|
|
436
|
-
[ -n "$TOK" ] || { echo "sema-runner-token 未被控制器填充" >&2; exit 1; }
|
|
437
|
-
k3s kubectl create secret generic sema-runner-token-copy -n sema --from-literal=token="$(printf '%s' "$TOK" | base64 -d)" \
|
|
438
|
-
--dry-run=client -o yaml | k3s kubectl apply -f - >/dev/null
|
|
439
|
-
# MinIO 建桶(备份桶+引擎桶)—— 排在等 PG healthy 与等 server rollout **之前**:引擎起服会核快照桶在不在,桶缺时 server 不就绪、rollout 永远等不到,而建桶又排在它后面 ⇒ 互等;
|
|
440
|
-
# MinIO 不依赖 PG,建桶也就不必陪着等 PG(冷启拉镜像 + init 可要几分钟,会把引擎的等桶窗耗掉)
|
|
441
|
-
k3s kubectl rollout status deployment/sema-minio -n sema --timeout=300s >/dev/null
|
|
442
|
-
PW=$(k3s kubectl get secret sema-minio -n sema -o jsonpath='{.data.rootPassword}' | base64 -d)
|
|
443
|
-
k3s kubectl exec deploy/sema-minio -n sema -- sh -c \
|
|
444
|
-
"mc alias set local http://localhost:9000 sema '$PW' >/dev/null && mc mb --ignore-existing ${BUCKETS[*]}" >/dev/null
|
|
445
|
-
# PG healthy(冷启拉镜像+init 可要几分钟)
|
|
446
|
-
for t in $(seq 1 120); do
|
|
447
|
-
s=$(k3s kubectl get cluster sema-pg -n sema -o jsonpath='{.status.phase}' 2>/dev/null || true)
|
|
448
|
-
[ "$s" = "Cluster in healthy state" ] && break; sleep 5
|
|
449
|
-
done
|
|
450
|
-
[ "$s" = "Cluster in healthy state" ] || { k3s kubectl get cluster -n sema; echo "PG 未达 healthy" >&2; exit 1; }
|
|
451
|
-
k3s kubectl rollout status deployment/sema-server -n sema --timeout=300s >/dev/null
|
|
452
|
-
echo STACK_OK
|
|
453
|
-
EOF
|
|
350
|
+
rsudo 0 $(buckets_prefixed local/ $(buckets_k8s)) < "$HERE/lib/remote/stack-ready.sh"
|
|
454
351
|
|
|
455
352
|
# ── 8. smoke(节点内经 NodePort;外网入口=LB 在云商侧配,打印指引)────────────────
|
|
456
353
|
log "8/8 smoke"
|
|
457
354
|
# NodePort 被 nodeport-addresses 钉在节点网段——loopback 不在其内,必须打 node-ip(真踩 curl exit 7)
|
|
458
355
|
# 第一行 = 两个 HTTP 码,其后 = /health 体(后端位在里面:200 + 401 测不出「服务在内存里跑」,验收必须读那一位)
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
printf '%s' "\$
|
|
465
|
-
|
|
466
|
-
)
|
|
356
|
+
# /health 带服务凭据读(配了服务凭据的引擎只对出示凭据的读者给后端位 / 持久性):凭据经 stdin 喂 curl 的 `-K -` 配置,不进远端任何进程的 argv。
|
|
357
|
+
# 值是数据不是代码:curl 配置行由 lib/health.sh 的 health_curl_config 按配置文法转义,再整行过 `printf '%q'` 才进远端 shell 文本。
|
|
358
|
+
_health_cfg="$(health_curl_config "$SERVICE_AUTH_TOKEN")" || die "SERVICE_AUTH_TOKEN 含控制字符 —— 那不是能放进 Authorization 头的凭据;检查 $ENVF"
|
|
359
|
+
_health_cfg_q="$(printf '%q' "$_health_cfg")"
|
|
360
|
+
SMOKE_OUT=$(rsudo_text 0 "CFG=$_health_cfg_q
|
|
361
|
+
HB=\$(printf '%s\n' \"\$CFG\" | curl -K - -m5 -s -w '\n%{http_code}' \"http://$K3S0_IP:$NODEPORT/health\" || printf '\n000')
|
|
362
|
+
H=\"\${HB##*\$'\n'}\"
|
|
363
|
+
A=\$(curl -m5 -s -o /dev/null -w '%{http_code}' \"http://$K3S0_IP:$NODEPORT/v1/runs\" || echo 000)
|
|
364
|
+
echo \"health=\$H auth=\$A\"
|
|
365
|
+
printf '%s' \"\${HB%\$'\n'*}\"
|
|
366
|
+
")
|
|
467
367
|
SMOKE="${SMOKE_OUT%%$'\n'*}"
|
|
468
368
|
case "$SMOKE" in *"health=200 auth=401"*) : ;; *) die "smoke 失败:$SMOKE(期望 health=200 auth=401)" ;; esac
|
|
469
369
|
BK_WHY=$(health_backend_check "${SMOKE_OUT#*$'\n'}") || die "smoke 失败:$BK_WHY。下一步:kubectl -n sema logs deploy/sema-server(引擎在库没连上时不会再退内存起服 —— 它会拒启;读到 memory 多半是旧镜像)"
|
|
470
|
-
log "smoke ✓ $SMOKE backend=$SEMA_UP_EXPECT_SESSION_BACKEND"
|
|
471
|
-
|
|
472
|
-
|
|
370
|
+
log "smoke ✓ $SMOKE backend=$SEMA_UP_EXPECT_SESSION_BACKEND durability=$(health_store_durability "${SMOKE_OUT#*$'\n'}")${BK_WHY:+ — $BK_WHY}"
|
|
371
|
+
printf '%s' "
|
|
473
372
|
══════════ cluster-up 完成($MACHINE_COUNT 节点)══════════
|
|
474
373
|
入口 NodePort $NODEPORT(限私网段)。公网入口在云商 LB 上配:
|
|
475
374
|
listener TCP:8090 → pool(每节点 private_ip:$NODEPORT,member 必带 subnet_id——Gcore 真踩)
|
|
@@ -478,7 +377,7 @@ cat >&2 <<EOF
|
|
|
478
377
|
沙箱 kata-qemu runtimeclass(ns sema-sandbox,SA sema-runner)
|
|
479
378
|
凭据 $ENVF(0600;SERVICE_AUTH_TOKEN=API 门)
|
|
480
379
|
管理 ssh 隧道 6443(kubeconfig 在首节点 /etc/rancher/k3s/k3s.yaml,server 改 127.0.0.1)
|
|
481
|
-
|
|
380
|
+
" >&2
|
|
482
381
|
# 壳对 NodePort / LB 的明文 http 按设计拒连(非回环要 https)⇒ 经 ssh 隧道把首节点的 NodePort 带到本机回环再 connect
|
|
483
382
|
# (NodePort 钉在节点网段、不在节点自己的回环上 —— **转发目标**写节点私网 IP,见上面 smoke 的同一条注;**ssh 目标**是本次部署
|
|
484
383
|
# 连得上的那一台 = machines.yaml 的 HOST / USER / SSH_KEY,与 mssh 同一组,私网 IP 与 HOST 可以不同 —— 车内 codex r1-F4)。
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# MODEL_GATEWAY_BASEURL MODEL_ID MODEL_API_KEY
|
|
14
14
|
# [NAMESPACE=sema][STORAGE_CLASS=集群默认][CNPG_VERSION]
|
|
15
15
|
set -euo pipefail
|
|
16
|
-
#
|
|
16
|
+
# [[[ 自身目录(五个入口逐字同一段)
|
|
17
17
|
# HERE = 本脚本**真实文件**所在目录。经 npm bin 软链(node_modules/.bin/sema-up)调用时 $0 是软链路径,
|
|
18
18
|
# 按它的目录找 lib/ 会落进 .bin/ ⇒ 逐跳解软链。只用不带参数的 readlink(macOS 自带 bash 3.2 / BSD readlink 没有 -f)。
|
|
19
19
|
# 库要在知道 HERE 之后才找得到,所以这段不能收进库里:五个入口各持同一段,逐字一致由测试判。
|
|
@@ -25,7 +25,7 @@ while [ -L "$_self" ]; do
|
|
|
25
25
|
done
|
|
26
26
|
HERE="$(cd "$(dirname "$_self")" && pwd)"
|
|
27
27
|
unset _self _hops _dir
|
|
28
|
-
#
|
|
28
|
+
# ]]] 自身目录
|
|
29
29
|
# `.env` 的文法与全部读写原语(envf_get / envf_has / envf_load / envf_put / setk / setk_new / resetk)只在这一处
|
|
30
30
|
# 定义,sema-up.sh / cluster-up.sh / smoke.sh 同源:本脚本不再有自己的 setk / has_env / `. "$ENVF"`。
|
|
31
31
|
. "$HERE/lib/envf.sh"
|
|
@@ -39,6 +39,10 @@ unset _self _hops _dir
|
|
|
39
39
|
. "$HERE/lib/buckets.sh"
|
|
40
40
|
# 集群节点地址的唯一读法(NodePort 入口 + 沙箱出网策略要拒的全部节点地址;同读一份节点表)。
|
|
41
41
|
. "$HERE/lib/node-addrs.sh"
|
|
42
|
+
# 把一段文本按行 / 按词读进变量的三只函数(不用 here-document / here-string)。
|
|
43
|
+
. "$HERE/lib/shell-text.sh"
|
|
44
|
+
# 跑图表的共用读法:只打 helm 输出里的 NOTES 段、钥匙卷的存储类(cluster-up.sh 同一只)。
|
|
45
|
+
. "$HERE/lib/chart-run.sh"
|
|
42
46
|
log() { printf '[kube-up] %s\n' "$*" >&2; }
|
|
43
47
|
die() { log "⛔ $*"; exit 1; }
|
|
44
48
|
|
|
@@ -106,7 +110,9 @@ NODES=$($KUBECTL get nodes --no-headers | grep -cw Ready || true)
|
|
|
106
110
|
# ── 节点容量测量+建议(建议不强求;某台确实过小才拦)────────────────────────────────
|
|
107
111
|
# allocatable 口径(比 capacity 更接近可用);盘容量 kubectl 不可见,PVC Pending 时按报错查 SC
|
|
108
112
|
NODE_CAPS=$($KUBECTL get nodes -o jsonpath='{range .items[*]}{.metadata.name}{" "}{.status.allocatable.cpu}{" "}{.status.allocatable.memory}{"\n"}{end}' 2>/dev/null)
|
|
109
|
-
|
|
113
|
+
caps_rest="$NODE_CAPS"$'\n'
|
|
114
|
+
while text_pop_line caps_rest caps_line; do
|
|
115
|
+
text_words "$caps_line" n_name n_cpu n_mem
|
|
110
116
|
[ -z "$n_name" ] && continue
|
|
111
117
|
# cpu:"4"或"3900m"→ 毫核;memory:"8049856Ki"/"7Gi" → MB
|
|
112
118
|
case "$n_cpu" in *m) n_mcpu="${n_cpu%m}" ;; *) n_mcpu=$(( ${n_cpu:-0} * 1000 )) ;; esac
|
|
@@ -121,9 +127,7 @@ while read -r n_name n_cpu n_mem; do
|
|
|
121
127
|
elif [ "$n_mcpu" -lt 2000 ] || [ "$n_mb" -lt 4096 ]; then
|
|
122
128
|
log "⚠ 节点 $n_name 偏小(${n_mcpu}m CPU / ${n_mb}MB,推荐 ≥2c/4G)——能跑,数据面/沙箱余量紧;建议升配或外接 S3/DB 减负"
|
|
123
129
|
fi
|
|
124
|
-
done
|
|
125
|
-
$NODE_CAPS
|
|
126
|
-
EOF_NODES
|
|
130
|
+
done
|
|
127
131
|
[ "$NODES" -lt 3 ] && log "建议:准生产配置=3 节点(PG 反亲和 HA+副本打散);当前 $NODES 节点能跑,按单机形态缩放(不强求)"
|
|
128
132
|
DEFAULT_SC=$($KUBECTL get storageclass -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.metadata.annotations.storageclass\.kubernetes\.io/is-default-class}{"\n"}{end}' 2>/dev/null | awk -F'\t' '$2=="true"{print $1; exit}')
|
|
129
133
|
STORAGE_CLASS="${STORAGE_CLASS:-}" # 空=用集群默认 SC;显式给了就用给的
|
|
@@ -217,7 +221,7 @@ helm_values() { # helm_values <giteaBaseUrl> <oauthId> <oauthSecret>
|
|
|
217
221
|
V_MINIO_PW="$MINIO_PASSWORD" V_SVC_TOKEN="$SERVICE_AUTH_TOKEN" V_MODEL_KEY="$MODEL_API_KEY" \
|
|
218
222
|
V_MODEL_GATEWAY="$MODEL_GATEWAY_BASEURL" V_MODEL_ID="$MODEL_ID" \
|
|
219
223
|
V_SERVER_IMAGE="$SEMA_SERVER_IMAGE" V_REPLICAS="$SERVER_REPLICAS" \
|
|
220
|
-
V_PG_INSTANCES="$PG_INSTANCES" V_PG_AA="$PG_AA" V_SC="$STORAGE_CLASS" \
|
|
224
|
+
V_PG_INSTANCES="$PG_INSTANCES" V_PG_AA="$PG_AA" V_SC="$STORAGE_CLASS" V_SK_SC="$SEALED_KEY_SC" \
|
|
221
225
|
V_RT_CLASS="$RUNTIME_CLASS" V_REQ_PRINCIPAL="$(principal_of_users "$USERS")" \
|
|
222
226
|
V_PKG_SOURCE="$([ "$REGION" = "global" ] && echo global || echo '')" \
|
|
223
227
|
V_REG_ENABLED="$REGISTRY_ENABLED" V_REG_IMAGE="${SEMA_REGISTRY_IMAGE:-}" \
|
|
@@ -225,47 +229,23 @@ helm_values() { # helm_values <giteaBaseUrl> <oauthId> <oauthSecret>
|
|
|
225
229
|
V_GITEA_ENABLED="$([ "$GIT_MODE" = provision ] && echo true || echo false)" \
|
|
226
230
|
V_GITEA_IMAGE="${GITEA_IMAGE:-gitea/gitea:1.24}" V_NODE_IP="$NODE_IP" V_NODE_CIDRS="$NODE_CIDRS" \
|
|
227
231
|
V_MINIO_IMAGE="${MINIO_IMAGE:-}" \
|
|
228
|
-
python3 -
|
|
229
|
-
import json, os
|
|
230
|
-
e = os.environ
|
|
231
|
-
# json 是合法 yaml;json.dumps 对任意凭据字符安全(引号/反斜杠/换行都正确转义)
|
|
232
|
-
v = {
|
|
233
|
-
# helm 的 values 合并是深合并——只给部分 parameters 时 values.yaml 里 3 机 as-built 的
|
|
234
|
-
# shared_buffers=8GB/effective_cache_size=86GB 会留下来,小集群 PG 直接起不来(内存不够)。
|
|
235
|
-
# 必须整组显式覆盖成保守值;真按机器规格调优的入口是 STORAGE/PG 显式 values(后续档)。
|
|
236
|
-
"pg": {"instances": int(e["V_PG_INSTANCES"]), "antiAffinity": e["V_PG_AA"],
|
|
237
|
-
"storageClass": e["V_SC"], "storageSize": "20Gi",
|
|
238
|
-
"parameters": {"shared_buffers": "256MB", "effective_cache_size": "1GB",
|
|
239
|
-
"maintenance_work_mem": "128MB", "random_page_cost": "1.1",
|
|
240
|
-
"effective_io_concurrency": "200", "checkpoint_completion_target": "0.9",
|
|
241
|
-
"max_parallel_workers": "2"}},
|
|
242
|
-
"minio": {"rootPassword": e["V_MINIO_PW"], "storageClass": e["V_SC"], "storageSize": "20Gi"},
|
|
243
|
-
"server": {
|
|
244
|
-
"image": e["V_SERVER_IMAGE"], "replicas": int(e["V_REPLICAS"]),
|
|
245
|
-
"serviceAuthToken": e["V_SVC_TOKEN"], "modelGatewayBaseurl": e["V_MODEL_GATEWAY"],
|
|
246
|
-
"modelId": e["V_MODEL_ID"], "modelApiKey": e["V_MODEL_KEY"],
|
|
247
|
-
"sandboxPkgSource": e["V_PKG_SOURCE"], "requirePrincipal": e["V_REQ_PRINCIPAL"],
|
|
248
|
-
},
|
|
249
|
-
"sandbox": {"runtimeClass": e["V_RT_CLASS"],
|
|
250
|
-
"networkPolicy": {"nodeCidrs": json.loads(e["V_NODE_CIDRS"])}},
|
|
251
|
-
"registry": {"enabled": e["V_REG_ENABLED"] == "true", "image": e["V_REG_IMAGE"],
|
|
252
|
-
"storageClass": e["V_SC"], "adminPassword": e["V_REG_PW"],
|
|
253
|
-
"sessionSecret": e["V_REG_SS"], "pullToken": e["V_REG_PT"],
|
|
254
|
-
"giteaBaseUrl": e["V_GITEA_URL"], "giteaOauthClientId": e["V_OA_ID"],
|
|
255
|
-
"giteaOauthClientSecret": e["V_OA_SECRET"]},
|
|
256
|
-
"gitea": {"enabled": e["V_GITEA_ENABLED"] == "true", "image": e["V_GITEA_IMAGE"],
|
|
257
|
-
"storageClass": e["V_SC"], "domain": e["V_NODE_IP"]},
|
|
258
|
-
}
|
|
259
|
-
# MinIO 镜像:给了才递(默认只在 chart values.yaml 写一处,不在脚本里再抄一份);国内源 = 整条引用
|
|
260
|
-
if e["V_MINIO_IMAGE"]: v["minio"]["image"] = e["V_MINIO_IMAGE"]
|
|
261
|
-
print(json.dumps(v))
|
|
262
|
-
PY
|
|
232
|
+
python3 - < "$HERE/lib/helm-values-kube.py"
|
|
263
233
|
}
|
|
264
234
|
helm_apply() { # helm_apply <giteaBaseUrl> <oauthId> <oauthSecret>
|
|
265
|
-
|
|
266
|
-
|
|
235
|
+
# helm 的 stdout 收进变量,只把图表 NOTES 段打进日志(lib/chart-run.sh helm_notes:开着调试时 stdout 还有 values / 渲出的 Secret,那些不打)。
|
|
236
|
+
local out
|
|
237
|
+
out=$(helm_values "$1" "$2" "$3" | helm upgrade --install sema-stack "$HERE/chart" \
|
|
238
|
+
-n "$NAMESPACE" --create-namespace -f -) \
|
|
267
239
|
|| die "helm upgrade --install sema-stack 失败。下一步:helm -n $NAMESPACE status sema-stack;kubectl -n $NAMESPACE get events --sort-by=.lastTimestamp | tail"
|
|
240
|
+
helm_notes "$out" >&2
|
|
268
241
|
}
|
|
242
|
+
# 钥匙卷的存储类(lib/chart-run.sh sealed_key_class):卷已在 ⇒ 它建好时的类(不可改);新建 ⇒ STORAGE_CLASS。读不到(API 错)⇒ 停,不猜。
|
|
243
|
+
_sk_reading=$($KUBECTL get pvc sema-server-sealed-key -n "$NAMESPACE" --ignore-not-found -o jsonpath='{.metadata.name}/{.spec.storageClassName}') \
|
|
244
|
+
|| die "读不到钥匙卷 PVC sema-server-sealed-key 的现状(-n $NAMESPACE)。下一步:kubectl -n $NAMESPACE get pvc 手查权限 / 连通"
|
|
245
|
+
SEALED_KEY_SC="$(sealed_key_class "$_sk_reading" "$STORAGE_CLASS")" || exit 1
|
|
246
|
+
if [ -n "$_sk_reading" ] && [ -n "$STORAGE_CLASS" ] && [ "$SEALED_KEY_SC" != "$STORAGE_CLASS" ]; then
|
|
247
|
+
log "钥匙卷 sema-server-sealed-key 已在存储类「${SEALED_KEY_SC:-<无>}」(建好后不可改)—— STORAGE_CLASS=$STORAGE_CLASS 不用于它"
|
|
248
|
+
fi
|
|
269
249
|
log "2/6 helm 装配 sema-stack(-n $NAMESPACE,pg×$PG_INSTANCES server×$SERVER_REPLICAS registry=$REGISTRY_ENABLED gitea=$([ "$GIT_MODE" = provision ] && echo true || echo false))"
|
|
270
250
|
# git 目标的解析 + OAuth 接线的锚校验,都排在读 OA_* 之前。
|
|
271
251
|
# ① connect 的目标:**显式输入优先**;这次没给就沿用上次登记的连接(经严格读口;本脚本支持单独重跑,v7.97.0 靠
|
|
@@ -394,21 +374,21 @@ fi
|
|
|
394
374
|
|
|
395
375
|
# ── smoke(port-forward 直验——kind/远程 kubeconfig 下 NodePort 对本机不可达,别靠它)──
|
|
396
376
|
log "5/6 smoke"
|
|
397
|
-
smoke_pf() { # smoke_pf <svc> <port> <path> → 第一行 http code,其后是响应体(调用方按需取)
|
|
377
|
+
smoke_pf() { # smoke_pf <svc> <port> <path> [<服务凭据>] → 第一行 http code,其后是响应体(调用方按需取);第 4 参缺省 = 不带凭据
|
|
398
378
|
local pf_pid out code body
|
|
399
379
|
$KUBECTL port-forward "svc/$1" -n "$NAMESPACE" "1$2:$2" >/dev/null 2>&1 &
|
|
400
380
|
pf_pid=$!
|
|
401
381
|
sleep 2
|
|
402
|
-
out=$(
|
|
382
|
+
out=$(health_curl "${4:-}" -m5 -s -w '\n%{http_code}' "http://127.0.0.1:1$2$3" || printf '\n000')
|
|
403
383
|
kill $pf_pid 2>/dev/null; wait $pf_pid 2>/dev/null || true
|
|
404
384
|
code="${out##*$'\n'}"; body="${out%$'\n'*}"
|
|
405
385
|
[ "$out" = "$code" ] && body="" # 没有换行 = 只有码(假 curl / 空体)
|
|
406
386
|
printf '%s\n%s' "$code" "$body"
|
|
407
387
|
}
|
|
408
|
-
HR=$(smoke_pf sema-server 8090 /health)
|
|
388
|
+
HR=$(smoke_pf sema-server 8090 /health "$SERVICE_AUTH_TOKEN") # 配了服务凭据的引擎只对出示凭据的读者给后端位 / 持久性
|
|
409
389
|
H="${HR%%$'\n'*}"
|
|
410
390
|
[ "$H" = "200" ] || die "smoke 失败:server /health=$H(期望 200)。下一步:kubectl -n $NAMESPACE logs deploy/sema-server"
|
|
411
|
-
# /health 200 ≠
|
|
391
|
+
# /health 200 ≠ 数据落了库:后端位必须是期望的后端(pg)且读得到 store.durability;读到 memory = 服务在内存里跑、重启即丢,不许判绿
|
|
412
392
|
BK_WHY=$(health_backend_check "${HR#*$'\n'}") || die "smoke 失败:$BK_WHY。下一步:kubectl -n $NAMESPACE logs deploy/sema-server(引擎在库没连上时不会再退内存起服 —— 它会拒启;读到 memory 多半是旧镜像)"
|
|
413
393
|
A=$(smoke_pf sema-server 8090 /v1/runs); A="${A%%$'\n'*}"
|
|
414
394
|
[ "$A" = "401" ] || die "smoke 失败:无 token /v1/runs=$A(期望 401=auth 门在)。SERVICE_AUTH_TOKEN 未生效=裸奔,立刻查"
|
|
@@ -422,7 +402,7 @@ if [ "$GIT_MODE" = "provision" ]; then
|
|
|
422
402
|
G=$(smoke_pf sema-gitea 3000 /api/healthz); G="${G%%$'\n'*}"
|
|
423
403
|
[ "$G" = "200" ] || die "smoke 失败:gitea healthz=$G"
|
|
424
404
|
fi
|
|
425
|
-
log "smoke ✓ health=$H backend=$(health_session_backend "${HR#*$'\n'}") auth=$A registry=$R gitea=$G"
|
|
405
|
+
log "smoke ✓ health=$H backend=$(health_session_backend "${HR#*$'\n'}") durability=$(health_store_durability "${HR#*$'\n'}") auth=$A registry=$R gitea=$G${BK_WHY:+ — $BK_WHY}"
|
|
426
406
|
|
|
427
407
|
# ── summary(一屏;凭据一次性显示)────────────────────────────────────────────────
|
|
428
408
|
log "6/6 完成"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# lib/chart-run.sh —— 跑随包 helm 图表的两只共用读法(kube-up.sh / cluster-up.sh 被 source,不单独执行)。全程参数展开:不开管道、不用 here-string。
|
|
2
|
+
#
|
|
3
|
+
# helm_notes <helm upgrade 的 stdout> —— 只把图表 NOTES 那一段(最后一个 `NOTES:` 行之后的全部)打到 stdout,其余一字不打。
|
|
4
|
+
# helm 开着调试(HELM_DEBUG / --debug)时 stdout 里还有 USER-SUPPLIED / COMPUTED VALUES 与渲出的 MANIFEST —— 含凭据与 Secret 明文,那些不进日志;
|
|
5
|
+
# NOTES 恒是 helm 输出的最后一段(钥匙卷的挂载位 / 访问模式 / 关持久的后果在这里)。没有 NOTES 段 ⇒ 什么都不打。
|
|
6
|
+
helm_notes() {
|
|
7
|
+
local out="$1" nl=$'\n'
|
|
8
|
+
case "$out" in
|
|
9
|
+
*"${nl}NOTES:${nl}"*) printf '%s\n' "${out##*"${nl}NOTES:${nl}"}" ;;
|
|
10
|
+
esac
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
# sealed_key_class <现有钥匙卷的读数> <STORAGE_CLASS> —— 钥匙卷 PVC 该用的存储类。
|
|
14
|
+
# 读数 = `kubectl get pvc sema-server-sealed-key --ignore-not-found -o jsonpath='{.metadata.name}/{.spec.storageClassName}'` 的输出:
|
|
15
|
+
# 空 = 卷还没建 ⇒ STORAGE_CLASS(空 = 集群缺省);`<名>/<类>` = 卷已在 ⇒ 它建好时的类(PVC 的 storageClassName 建好后不可改,
|
|
16
|
+
# 换类会让 helm upgrade 撞「spec is immutable」;7.134.0–7.147.x 建的钥匙卷走的是集群缺省类,不随 STORAGE_CLASS)。
|
|
17
|
+
sealed_key_class() {
|
|
18
|
+
case "$1" in
|
|
19
|
+
"") printf '%s' "$2" ;;
|
|
20
|
+
*/*) printf '%s' "${1#*/}" ;;
|
|
21
|
+
*) echo "sealed_key_class: 读不懂钥匙卷读数「$1」(期望空或 <名>/<类>)" >&2; return 2 ;;
|
|
22
|
+
esac
|
|
23
|
+
}
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
# 调用方先定义:log(打到 stderr)、PROJECT、WORK、ENVF。拒 = 响亮一段 + exit 1(不静默另选一条根:替运维挑目录是替他做决定)。
|
|
12
12
|
|
|
13
13
|
DATAROOT_MARKER=".sema-up-project"
|
|
14
|
-
# sema-up
|
|
15
|
-
DATAROOT_LAYOUT="pgdata miniodata registrydata gitdata"
|
|
14
|
+
# sema-up 在数据根下建的卷目录(compose.dataroot.yaml 的 bind 源)= 存量数据根的指纹。
|
|
15
|
+
DATAROOT_LAYOUT="pgdata miniodata registrydata gitdata sealedkey"
|
|
16
16
|
|
|
17
17
|
# dataroot_for_disk <挂载点> <项目> —— 自动选盘的根。preflight 的建议句也用它(同一条规则,不另拼路径)。
|
|
18
18
|
dataroot_for_disk() { printf '%s/sema-data/%s' "${1%/}" "$2"; }
|
|
@@ -109,7 +109,7 @@ dataroot_plan_line() {
|
|
|
109
109
|
esac
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
# dataroot_settle <根> —— 落定(只在真跑、判定之后调)
|
|
112
|
+
# dataroot_settle <根> —— 落定(只在真跑、判定之后调):建根与各只卷目录,new / backfill 时写标记。
|
|
113
113
|
# 写标记用 noclobber(O_EXCL):两次 sema-up 同时认领同一条新根时,后到的那次读到对方的标记 ⇒ 拒,不互相覆盖。
|
|
114
114
|
dataroot_settle() {
|
|
115
115
|
local root="${DATAROOT_PHYS:-$1}" v
|