@sema-agent/server 7.125.1 → 7.126.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 +195 -2
- package/README.md +2 -2
- package/README.zh-CN.md +2 -2
- package/USAGE.md +263 -140
- package/deploy/sema-up/README.md +1 -1
- package/deploy/sema-up/chart/templates/networkpolicy-sandbox.yaml +47 -0
- package/deploy/sema-up/chart/templates/sandbox-rbac.yaml +5 -1
- package/deploy/sema-up/chart/templates/server-v4pro.yaml +2 -2
- package/deploy/sema-up/chart/templates/server.yaml +1 -1
- package/deploy/sema-up/chart/values.yaml +12 -0
- package/deploy/sema-up/cluster-up.sh +10 -10
- package/deploy/sema-up/kube-up.sh +11 -10
- package/deploy/sema-up/lib/dataroot.sh +1 -1
- package/deploy/sema-up/lib/envf.sh +5 -5
- package/deploy/sema-up/lib/flagshape.sh +5 -5
- package/deploy/sema-up/lib/lanes.py +1 -1
- package/deploy/sema-up/lib/parse-machines.py +2 -2
- package/deploy/sema-up/lib/shell-access.sh +1 -1
- package/deploy/sema-up/preflight.sh +4 -4
- package/deploy/sema-up/sema-up.sh +33 -33
- package/deploy/sema-up/smoke.sh +3 -3
- package/deploy/sema-up/stack/compose.yaml +1 -1
- package/deploy/sema-up/stack/sema-stack-cluster.yaml +6 -2
- package/dist/approval-card.d.ts +20 -4
- package/dist/approval-content-kind.d.ts +38 -22
- package/dist/approval-content-kind.js +20 -4
- package/dist/audit.js +2 -0
- package/dist/bench/s1/arms.d.ts +9 -37
- package/dist/bench/s1/arms.js +4 -61
- package/dist/bench/s1/live-deps.d.ts +4 -10
- package/dist/bench/s1/live-deps.js +1 -222
- package/dist/bench/s1/oracle.d.ts +1 -1
- package/dist/bench/s1/reviewer.d.ts +1 -1
- package/dist/bench/s1/row.d.ts +5 -7
- package/dist/bench/s1/row.js +0 -2
- package/dist/bench/s1/run-firm.d.ts +2 -2
- package/dist/bench/s1/run-firm.js +1 -4
- package/dist/bench/s1/runner-ctx.d.ts +17 -29
- package/dist/bench/s1/runner-ctx.js +3 -7
- package/dist/bench/s1/tasks.d.ts +9 -46
- package/dist/bench/s1/tasks.js +4 -63
- package/dist/boot/execution-env.d.ts +38 -26
- package/dist/boot/execution-env.js +71 -38
- package/dist/boot/memory-boundary.d.ts +1 -1
- package/dist/boot/parked-revive-gate.d.ts +0 -3
- package/dist/boot/parked-revive-gate.js +2 -2
- package/dist/boot/resolve-spec.d.ts +0 -2
- package/dist/boot/resolve-spec.js +12 -17
- package/dist/boot/retention-lane.d.ts +12 -1
- package/dist/boot/retention-lane.js +2 -0
- package/dist/boot/runner-deps.d.ts +5 -5
- package/dist/boot/runner-deps.js +5 -16
- package/dist/boot/session-faces.d.ts +5 -1
- package/dist/boot/session-faces.js +37 -1
- package/dist/boot/stage-03-store-backend.d.ts +1 -0
- package/dist/boot/stage-03-store-backend.js +2 -2
- package/dist/boot/stage-04-stores.d.ts +1 -0
- package/dist/boot/stage-05-execution-env.d.ts +2 -2
- package/dist/boot/stage-05-execution-env.js +7 -4
- package/dist/boot/stage-06-runners.d.ts +2 -3
- package/dist/boot/stage-06-runners.js +8 -7
- package/dist/boot/stage-07-capability-layer.d.ts +2 -3
- package/dist/boot/stage-07-capability-layer.js +3 -4
- package/dist/boot/stage-08-reapers.d.ts +2 -3
- package/dist/boot/stage-08-reapers.js +2 -2
- package/dist/boot/stage-09-leader.d.ts +2 -3
- package/dist/boot/stage-09-leader.js +2 -1
- package/dist/boot/stage-10-http-server.d.ts +2 -3
- package/dist/boot/stage-10-http-server.js +2 -2
- package/dist/boot/stores.d.ts +1 -0
- package/dist/boot/stores.js +4 -3
- package/dist/boot/web-admin.d.ts +5 -0
- package/dist/boot/web-admin.js +28 -14
- package/dist/brain.d.ts +2 -2
- package/dist/brain.js +1 -1
- package/dist/capabilities/builtin-tools.d.ts +2 -1
- package/dist/capabilities/composite-members.d.ts +1 -1
- package/dist/capabilities/composite-members.js +1 -1
- package/dist/capabilities/hands-lane.d.ts +9 -6
- package/dist/capabilities/hands-lane.js +2 -2
- package/dist/capabilities/memory-notice.d.ts +27 -22
- package/dist/capabilities/memory-notice.js +15 -17
- package/dist/capabilities/scenarios.d.ts +9 -14
- package/dist/capabilities/scenarios.js +5 -50
- package/dist/capability-facts.d.ts +22 -11
- package/dist/capability-facts.js +13 -6
- package/dist/config-catalog.js +11 -4
- package/dist/config-provider.d.ts +5 -1
- package/dist/config-provider.js +23 -4
- package/dist/config-types.d.ts +14 -1
- package/dist/config.js +39 -6
- package/dist/deployment-governance.d.ts +19 -21
- package/dist/deployment-governance.js +7 -8
- package/dist/env-name-allowlist-knobs.d.ts +5 -5
- package/dist/env-name-allowlist-knobs.js +1 -0
- package/dist/execution-lane-caps.js +2 -2
- package/dist/hooks/hook-runner.d.ts +84 -30
- package/dist/hooks/hook-runner.js +74 -41
- package/dist/http/admission.js +12 -9
- package/dist/http/durable-run-leg.d.ts +5 -4
- package/dist/http/durable-run-leg.js +1 -1
- package/dist/http/idempotency.d.ts +28 -6
- package/dist/http/idempotency.js +10 -2
- package/dist/http/principal-gate.d.ts +14 -0
- package/dist/http/principal-gate.js +7 -0
- package/dist/http/request-guards.d.ts +2 -1
- package/dist/http/request-guards.js +14 -14
- package/dist/http/resume-legs.d.ts +2 -2
- package/dist/http/resume-legs.js +5 -4
- package/dist/http/route-ctx.d.ts +8 -6
- package/dist/http/routes/a2a-serve.js +11 -7
- package/dist/http/routes/approvals-assistant.js +18 -3
- package/dist/http/routes/background.d.ts +1 -1
- package/dist/http/routes/background.js +1 -1
- package/dist/http/routes/capabilities.js +10 -2
- package/dist/http/routes/mcp-reconnect.js +1 -1
- package/dist/http/routes/runs.d.ts +4 -3
- package/dist/http/routes/runs.js +12 -13
- package/dist/http/routes/session-sync.js +14 -11
- package/dist/http/routes/sessions.js +9 -9
- package/dist/http/routes/side-query.js +6 -19
- package/dist/http/routes/tasks.js +12 -11
- package/dist/http/server.d.ts +4 -0
- package/dist/http/server.js +2 -2
- package/dist/http/submit-replay.d.ts +15 -8
- package/dist/http/submit-replay.js +6 -0
- package/dist/http/wire-types.d.ts +7 -9
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/internal-run-env.d.ts +30 -0
- package/dist/internal-run-env.js +11 -0
- package/dist/leader/wire.js +3 -2
- package/dist/memory-scope.d.ts +19 -7
- package/dist/memory-scope.js +25 -8
- package/dist/observability/fail-open.d.ts +15 -3
- package/dist/observability/fail-open.js +15 -3
- package/dist/observability/metrics.d.ts +0 -1
- package/dist/observability/metrics.js +0 -3
- package/dist/observability/run-terminal.js +69 -4
- package/dist/permission-rule-vocab.d.ts +3 -2
- package/dist/permission-rule-vocab.js +1 -1
- package/dist/plan-cache-probe.d.ts +3 -2
- package/dist/plugins/approval-ask-store-sql.d.ts +1 -1
- package/dist/plugins/caching-session-store.d.ts +3 -0
- package/dist/plugins/caching-session-store.js +3 -0
- package/dist/plugins/checkpoint-store-sql.d.ts +42 -28
- package/dist/plugins/checkpoint-store-sql.js +57 -11
- package/dist/plugins/file-run-store.d.ts +25 -21
- package/dist/plugins/file-run-store.js +70 -34
- package/dist/plugins/local-checkpoint-store.d.ts +8 -5
- package/dist/plugins/local-checkpoint-store.js +5 -15
- package/dist/plugins/local-session-store.d.ts +66 -7
- package/dist/plugins/local-session-store.js +168 -101
- package/dist/plugins/mailbox-recipient-lifecycle.d.ts +1 -1
- package/dist/plugins/memory-run-store.d.ts +19 -3
- package/dist/plugins/memory-run-store.js +38 -3
- package/dist/plugins/one-time-migrations.d.ts +141 -39
- package/dist/plugins/one-time-migrations.js +32 -143
- package/dist/plugins/pg-pool.js +11 -1
- package/dist/plugins/pg-session-storage.d.ts +2 -0
- package/dist/plugins/pg-session-storage.js +9 -5
- package/dist/plugins/remote-env-adb.d.ts +3 -0
- package/dist/plugins/remote-env-adb.js +1 -0
- package/dist/plugins/remote-env-device.d.ts +3 -0
- package/dist/plugins/remote-env-device.js +1 -0
- package/dist/plugins/remote-env-e2b.d.ts +4 -0
- package/dist/plugins/remote-env-e2b.js +2 -1
- package/dist/plugins/remote-env-host.d.ts +12 -0
- package/dist/plugins/remote-env-host.js +11 -1
- package/dist/plugins/remote-env-k8s.d.ts +227 -39
- package/dist/plugins/remote-env-k8s.js +450 -75
- package/dist/plugins/remote-env-local-docker.d.ts +4 -0
- package/dist/plugins/remote-env-local-docker.js +2 -1
- package/dist/plugins/remote-env-ssh.d.ts +3 -0
- package/dist/plugins/remote-env-ssh.js +1 -0
- package/dist/plugins/retention-store-sql.d.ts +4 -1
- package/dist/plugins/retention-store-sql.js +11 -9
- package/dist/plugins/run-store-sql.d.ts +44 -6
- package/dist/plugins/run-store-sql.js +92 -27
- package/dist/plugins/session-capture-record-store-sql.d.ts +2 -3
- package/dist/plugins/sql-driver.d.ts +2 -1
- package/dist/plugins/store-backend.js +1 -1
- package/dist/plugins/store-contracts.d.ts +17 -3
- package/dist/plugins/tidb-pool.js +15 -3
- package/dist/plugins/tidb-session-storage.js +3 -2
- package/dist/plugins/tidb-session-store.d.ts +2 -0
- package/dist/plugins/tidb-session-store.js +6 -2
- package/dist/request-key-closure.d.ts +12 -0
- package/dist/request-key-closure.js +3 -3
- package/dist/router/route-orchestration.d.ts +3 -11
- package/dist/router/route-orchestration.js +0 -4
- package/dist/rule-entry-list.js +0 -4
- package/dist/rules-consent.js +3 -0
- package/dist/run-local.d.ts +5 -4
- package/dist/run-local.js +23 -17
- package/dist/runs.js +1 -0
- package/dist/security.d.ts +7 -0
- package/dist/security.js +5 -0
- package/dist/server-secret-env.d.ts +10 -4
- package/dist/server-secret-env.js +4 -1
- package/dist/session-incarnation.d.ts +46 -2
- package/dist/session-incarnation.js +14 -3
- package/dist/session-sync-kernel.d.ts +10 -3
- package/dist/spec-fields.d.ts +24 -8
- package/dist/spec-fields.js +21 -2
- package/dist/task-workflow.d.ts +6 -4
- package/dist/task-workflow.js +3 -2
- package/dist/tool-approval.d.ts +78 -6
- package/dist/tool-approval.js +7 -3
- package/dist/trace/core-keyset-guard.d.ts +4 -4
- package/dist/trace/engine-notice-wire.d.ts +26 -1
- package/dist/trace/engine-notice-wire.js +7 -2
- package/dist/trace/project.d.ts +8 -3
- package/dist/trace/project.js +15 -1
- package/dist/trace/self-minted-wire.d.ts +104 -2
- package/dist/trace/self-minted-wire.js +35 -0
- package/dist/web-admin-client/apply-effective.d.ts +13 -7
- package/dist/web-admin-client/apply-effective.js +11 -26
- package/dist/web-admin-client/apply-ledger.d.ts +2 -2
- package/dist/web-admin-client/candidate-gate.d.ts +39 -4
- package/dist/web-admin-client/candidate-gate.js +9 -2
- package/dist/web-admin-client/facade.d.ts +2 -2
- package/dist/web-admin-client/http-client.d.ts +3 -1
- package/dist/web-admin-client/http-client.js +4 -3
- package/dist/web-admin-client/read-warnings.d.ts +33 -5
- package/dist/web-admin-client/read-warnings.js +41 -6
- package/dist/web-admin-client/types.d.ts +11 -5
- package/dist/workspace-cache.d.ts +45 -0
- package/dist/workspace-cache.js +30 -0
- package/dist/workspace-space-commit.d.ts +116 -0
- package/dist/workspace-space-commit.js +117 -0
- package/dist/workspace-space.d.ts +75 -9
- package/dist/workspace-space.js +52 -1
- package/package.json +4 -4
- package/dist/boot/session-incarnation-seat.d.ts +0 -41
- package/dist/boot/session-incarnation-seat.js +0 -69
- package/dist/capabilities/code-review-council.d.ts +0 -49
- package/dist/capabilities/code-review-council.js +0 -111
- package/dist/capabilities/collab-wire.d.ts +0 -36
- package/dist/capabilities/collab-wire.js +0 -2
- package/dist/capabilities/collab-workflows.d.ts +0 -47
- package/dist/capabilities/collab-workflows.js +0 -90
- package/dist/capabilities/prompts/code-review.d.ts +0 -25
- package/dist/capabilities/prompts/code-review.js +0 -39
- package/dist/capabilities/prompts/team.d.ts +0 -10
- package/dist/capabilities/prompts/team.js +0 -6
- package/dist/capabilities/team.d.ts +0 -113
- package/dist/capabilities/team.js +0 -70
package/deploy/sema-up/README.md
CHANGED
|
@@ -78,7 +78,7 @@ summary 会打印手动接法。
|
|
|
78
78
|
| `--teardown` / `--teardown-volumes` | — | 卸载(留数据 / 连卷删) |
|
|
79
79
|
| `--skip-preflight` | — | 跳过预检(不建议) |
|
|
80
80
|
|
|
81
|
-
### 取值旗的形(7.104.0
|
|
81
|
+
### 取值旗的形(7.104.0)
|
|
82
82
|
|
|
83
83
|
一条规则:**每只取值旗都过形判**,不合 ⇒ 在建任何目录、写任何文件之前非零退出,拒句点名旗、收到的值、合法形。
|
|
84
84
|
判据与闭集词表只在 `lib/flagshape.sh` 定义一次(sema-up / kube-up / cluster-up / preflight / smoke 同读;`--help` 的词表从它渲)。
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{{- /*
|
|
2
|
+
沙箱出网白名单(values: sandbox.networkPolicy)。沙箱 pod 由 server 的 k8s 车道按需创建、无固定标签,
|
|
3
|
+
所以 podSelector 选整个 ns。只写 egress:沙箱不需要任何入站(server 经 k8s API exec 进去,不走网络)。
|
|
4
|
+
放行三类:kube-dns 53;对象存储(chart 自带 MinIO 9000 + objectStore 点名的脸);集群外一切地址
|
|
5
|
+
(包源 / 代码托管)。其余 —— pod 段、service 段、节点地址(集群 API 6443 与 NodePort 都在节点 IP 上)—— 不放行。
|
|
6
|
+
*/ -}}
|
|
7
|
+
{{- if .Values.sandbox.networkPolicy.enabled }}
|
|
8
|
+
{{- $np := .Values.sandbox.networkPolicy }}
|
|
9
|
+
{{- if not $np.nodeCidrs }}{{ fail "sandbox.networkPolicy.nodeCidrs 必填(节点地址 /32;kube-up 填节点 IP)" }}{{ end }}
|
|
10
|
+
apiVersion: networking.k8s.io/v1
|
|
11
|
+
kind: NetworkPolicy
|
|
12
|
+
metadata:
|
|
13
|
+
name: sema-sandbox-egress
|
|
14
|
+
namespace: {{ .Values.sandbox.namespace }}
|
|
15
|
+
spec:
|
|
16
|
+
podSelector: {}
|
|
17
|
+
policyTypes: ["Egress"]
|
|
18
|
+
egress:
|
|
19
|
+
- to:
|
|
20
|
+
- namespaceSelector:
|
|
21
|
+
matchLabels: { kubernetes.io/metadata.name: kube-system }
|
|
22
|
+
podSelector:
|
|
23
|
+
matchLabels: { k8s-app: kube-dns }
|
|
24
|
+
ports:
|
|
25
|
+
- { protocol: UDP, port: 53 }
|
|
26
|
+
- { protocol: TCP, port: 53 }
|
|
27
|
+
- to:
|
|
28
|
+
- namespaceSelector:
|
|
29
|
+
matchLabels: { kubernetes.io/metadata.name: {{ .Release.Namespace }} }
|
|
30
|
+
podSelector:
|
|
31
|
+
matchLabels: { app: sema-minio }
|
|
32
|
+
ports:
|
|
33
|
+
- { protocol: TCP, port: 9000 }
|
|
34
|
+
{{- range $np.objectStore }}
|
|
35
|
+
- to:
|
|
36
|
+
- namespaceSelector:
|
|
37
|
+
matchLabels: { kubernetes.io/metadata.name: {{ .namespace }} }
|
|
38
|
+
podSelector:
|
|
39
|
+
matchLabels: {{ toJson .podLabels }}
|
|
40
|
+
ports:
|
|
41
|
+
- { protocol: TCP, port: {{ .port }} }
|
|
42
|
+
{{- end }}
|
|
43
|
+
- to:
|
|
44
|
+
- ipBlock:
|
|
45
|
+
cidr: 0.0.0.0/0
|
|
46
|
+
except: {{ concat $np.clusterCidrs $np.nodeCidrs (list "127.0.0.0/8" "169.254.0.0/16") | toJson }}
|
|
47
|
+
{{- end }}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ── 沙箱 lane RBAC(k8s+kata
|
|
1
|
+
# ── 沙箱 lane RBAC(k8s+kata;pod 五动词 + 缓存卷四动词)────────────────────────────────
|
|
2
2
|
apiVersion: v1
|
|
3
3
|
kind: ServiceAccount
|
|
4
4
|
metadata:
|
|
@@ -29,6 +29,10 @@ rules:
|
|
|
29
29
|
- apiGroups: [""]
|
|
30
30
|
resources: [pods/log]
|
|
31
31
|
verbs: [get]
|
|
32
|
+
# 按工作区空间的构建缓存卷(WORKSPACE_CACHE=volume):连沙箱时按名读、没有就建;空间结束(会话删除 / 留存 sweep)按标签回收
|
|
33
|
+
- apiGroups: [""]
|
|
34
|
+
resources: [persistentvolumeclaims]
|
|
35
|
+
verbs: [get, create, delete, deletecollection]
|
|
32
36
|
---
|
|
33
37
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
34
38
|
kind: RoleBinding
|
|
@@ -56,11 +56,11 @@ spec:
|
|
|
56
56
|
- { name: MODEL_ID, value: {{ required "serverV4pro.modelId is required" .Values.serverV4pro.modelId | quote }} }
|
|
57
57
|
- { name: MODEL_API_KEY, valueFrom: { secretKeyRef: { name: sema-server-env, key: MODEL_API_KEY } } }
|
|
58
58
|
- { name: MODEL_VISION, value: {{ .Values.server.modelVision | quote }} }
|
|
59
|
-
{{/*
|
|
59
|
+
{{/* 租户姿态与主 worker 同值(文件头「同 env 面」的承诺;修前缺席 ⇒ 主 worker 多租时本只仍单用户)。 */}}
|
|
60
60
|
- { name: REQUIRE_PRINCIPAL, value: {{ .Values.server.requirePrincipal | default "false" | quote }} }
|
|
61
61
|
- { name: SANDBOX_PKG_SOURCE, value: {{ .Values.server.sandboxPkgSource | quote }} }
|
|
62
62
|
- { name: REMOTE_EXEC, value: k8s }
|
|
63
|
-
{{/*
|
|
63
|
+
{{/* 车道点名了就显式表态「这台有手」——REQUIRE_EXECUTION_LANE 让「车道被谁改没了」
|
|
64
64
|
变成拒启而不是安静的无手 worker。server 侧默认仍 off,sema-up 产物一律写 true。 */}}
|
|
65
65
|
- { name: REQUIRE_EXECUTION_LANE, value: "true" }
|
|
66
66
|
- { name: K8S_API_URL, value: "https://kubernetes.default.svc" }
|
|
@@ -71,7 +71,7 @@ spec:
|
|
|
71
71
|
- { name: REQUIRE_PRINCIPAL, value: {{ .Values.server.requirePrincipal | default "false" | quote }} }
|
|
72
72
|
- { name: SANDBOX_PKG_SOURCE, value: {{ .Values.server.sandboxPkgSource | quote }} }
|
|
73
73
|
- { name: REMOTE_EXEC, value: k8s }
|
|
74
|
-
{{/*
|
|
74
|
+
{{/* 车道点名了就显式表态「这台有手」——REQUIRE_EXECUTION_LANE 让「车道被谁改没了」
|
|
75
75
|
变成拒启而不是安静的无手 worker。server 侧默认仍 off,sema-up 产物一律写 true。 */}}
|
|
76
76
|
- { name: REQUIRE_EXECUTION_LANE, value: "true" }
|
|
77
77
|
- { name: K8S_API_URL, value: "https://kubernetes.default.svc" }
|
|
@@ -110,6 +110,18 @@ sandbox:
|
|
|
110
110
|
# 小巧默认,重任务用 sandboxImageProfile 按需选 code-python/code-full 等,Hub 池 public 匿名可拉)。
|
|
111
111
|
# 裸 OS 镜像(如 ubuntu)没有 pkg-source hook——sandboxPkgSource=global 时官方源不会材料化,别退回。
|
|
112
112
|
image: docker.io/claybobby/code-node:20260707-749ab84f5fdd-786f5ef10ffd
|
|
113
|
+
# 沙箱出网策略(NetworkPolicy,egress 白名单;要集群 CNI 带 NetworkPolicy 控制器 —— k3s 缺省自带):
|
|
114
|
+
# 放行 = DNS(kube-dns)+ 对象存储(chart 自带的 MinIO 9000,加 objectStore 点名的脸)+ 集群外一切地址;
|
|
115
|
+
# 拒 = pod / service 段与节点地址上的其余一切(PG、集群 API、引擎、NodePort 上的测试库)。
|
|
116
|
+
# nodeCidrs 由 kube-up 填节点 IP(/32),enabled 时必填;clusterCidrs 是 k3s 缺省段,别的发行版按实填。
|
|
117
|
+
# objectStore = 集群内还要放行的对象存储脸(ns + pod 标签 + 端口):s3PublicEndpoint 指向 NodePort 时,
|
|
118
|
+
# 沙箱打到节点 IP 的流量被 kube-proxy DNAT 到背后的反代 pod,策略看到的是那个 pod —— 所以要按 pod 点名。
|
|
119
|
+
networkPolicy:
|
|
120
|
+
enabled: true
|
|
121
|
+
clusterCidrs: ["10.42.0.0/16", "10.43.0.0/16"]
|
|
122
|
+
nodeCidrs: []
|
|
123
|
+
objectStore:
|
|
124
|
+
- { namespace: sema, podLabels: { app: sema-ip-proxy }, port: 8445 }
|
|
113
125
|
|
|
114
126
|
# 私有 registry 拉取(6b:secret 由 cluster-up 建 + patch default SA;这里的显式引用是纵深,
|
|
115
127
|
# 留空=只靠 SA 注入)
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
#
|
|
8
8
|
# 输入(sema-up.sh 解析 machines.yaml 后注入):
|
|
9
9
|
# MACHINE_COUNT + MACHINE_<i>_{HOST,USER,SSH_KEY,NAME,ROLE,PRIVATE_IP,PUBLIC_IFACE}
|
|
10
|
-
# WORK(状态目录,.env 在此)REGION PROJECT USERS(single|multi,缺省 single
|
|
10
|
+
# WORK(状态目录,.env 在此)REGION PROJECT USERS(single|multi,缺省 single;翻成主 worker 的 REQUIRE_PRINCIPAL)
|
|
11
11
|
# SEMA_SERVER_IMAGE(registry 引用)或 SEMA_SERVER_IMAGE_TAR(本地 docker save tar[.gz])二选一
|
|
12
12
|
# MODEL_GATEWAY_BASEURL MODEL_ID MODEL_API_KEY
|
|
13
13
|
# ALLOW_SMALL_CLUSTER=true 放行 <3 机(dev/CI 单节点验流程;生产必须 >=3 奇数)
|
|
@@ -25,11 +25,11 @@ done
|
|
|
25
25
|
HERE="$(cd "$(dirname "$_self")" && pwd)"
|
|
26
26
|
unset _self _hops _dir
|
|
27
27
|
# <<< 自身目录
|
|
28
|
-
# `.env` 的文法与全部读写原语只在 lib/envf.sh
|
|
28
|
+
# `.env` 的文法与全部读写原语只在 lib/envf.sh 定义:本脚本不再有自己的 setk / `. "$ENVF"`。
|
|
29
29
|
. "$HERE/lib/envf.sh"
|
|
30
|
-
# 「壳怎么接这台引擎」的渲染(
|
|
30
|
+
# 「壳怎么接这台引擎」的渲染(sema-up.sh / kube-up.sh 同一只)。
|
|
31
31
|
. "$HERE/lib/shell-access.sh"
|
|
32
|
-
#
|
|
32
|
+
# 取值旗的形:判据与词表同 sema-up.sh 一处定义。
|
|
33
33
|
. "$HERE/lib/flagshape.sh"
|
|
34
34
|
# 引擎 /health 体里「落在哪个后端」的读法与期望值(smoke.sh / kube-up.sh 同一只)。
|
|
35
35
|
. "$HERE/lib/health.sh"
|
|
@@ -46,15 +46,15 @@ CNPG_VERSION="${CNPG_VERSION:-1.30.0}" # ⚠ in-tree barman 1.31 移除;升版
|
|
|
46
46
|
LONGHORN_VERSION="${LONGHORN_VERSION:-1.10.0}"
|
|
47
47
|
KATA_VERSION="${KATA_VERSION:-3.21.0}"
|
|
48
48
|
STACK_ENGINE="${STACK_ENGINE:-render}" # sema-stack 装配引擎:render(as-built 渲染 apply,缺省)| helm
|
|
49
|
-
USERS_GIVEN="${USERS:+1}" #
|
|
50
|
-
USERS="${USERS:-single}" #
|
|
49
|
+
USERS_GIVEN="${USERS:+1}" # 显式给没给(缺省之前记下;决策见下方 users_decide)
|
|
50
|
+
USERS="${USERS:-single}" # 租户形:经 principal_of_users 翻成 REQUIRE_PRINCIPAL,两条装配路径同一次翻译
|
|
51
51
|
NODEPORT=30890
|
|
52
52
|
|
|
53
|
-
#
|
|
53
|
+
# 取值旗的形——在对任何一台机器发起 ssh 之前。修前:REGION=eu 当成「非 cn 非 global」、STACK_ENGINE=x 当成 render。
|
|
54
54
|
flag_enum "--region(REGION)" "$REGION" $FLAG_WORDS_REGION
|
|
55
55
|
flag_enum "STACK_ENGINE" "$STACK_ENGINE" $FLAG_WORDS_STACK_ENGINE
|
|
56
56
|
flag_enum "--users(USERS)" "$USERS" $FLAG_WORDS_USERS
|
|
57
|
-
#
|
|
57
|
+
# 租户形 = 显式 USERS ∨ 上一次落下的部署事实 ∨ single(lib/flagshape.sh 的 users_decide)——在任何 ssh 之前判,
|
|
58
58
|
# 不带旗的重跑不会把多租部署降成单用户。
|
|
59
59
|
ENVF="$WORK/.env"
|
|
60
60
|
users_decide "$USERS_GIVEN"
|
|
@@ -339,10 +339,10 @@ for k in MINIO_PASSWORD SERVICE_AUTH_TOKEN; do
|
|
|
339
339
|
_v="$(envf_get "$k")" || exit 1
|
|
340
340
|
[ "${#_v}" -ge 32 ] || die "$k 生成失败(openssl rand?)——检查 $ENVF"
|
|
341
341
|
done
|
|
342
|
-
#
|
|
342
|
+
# `.env` 不 source —— 只回读本脚本自己落盘的两只凭据;输入键(MODEL_API_KEY / 网关 / 镜像……)
|
|
343
343
|
# 以本次传入的环境为准,不再被 .env 旧值覆盖。
|
|
344
344
|
envf_load MINIO_PASSWORD SERVICE_AUTH_TOKEN
|
|
345
|
-
resetk REQUIRE_PRINCIPAL "$(principal_of_users "$USERS")" #
|
|
345
|
+
resetk REQUIRE_PRINCIPAL "$(principal_of_users "$USERS")" # 部署事实(下次不带旗重跑据此沿用租户形)
|
|
346
346
|
[ -n "${MODEL_API_KEY:-}" ] || die "需要 MODEL_API_KEY(-f 配置或 --model-key)"
|
|
347
347
|
# PG 实例数/反亲和/副本数按机器数缩放(<3 机=dev:preferred,required 会永久 Pending)
|
|
348
348
|
PG_INSTANCES=$(( MACHINE_COUNT >= 3 ? 3 : MACHINE_COUNT ))
|
|
@@ -27,11 +27,11 @@ 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
|
-
# 定义,sema-up.sh / cluster-up.sh / smoke.sh
|
|
30
|
+
# 定义,sema-up.sh / cluster-up.sh / smoke.sh 同源:本脚本不再有自己的 setk / has_env / `. "$ENVF"`。
|
|
31
31
|
. "$HERE/lib/envf.sh"
|
|
32
|
-
# 「壳怎么接这台引擎」的渲染(
|
|
32
|
+
# 「壳怎么接这台引擎」的渲染(sema-up.sh / cluster-up.sh 同一只)。
|
|
33
33
|
. "$HERE/lib/shell-access.sh"
|
|
34
|
-
#
|
|
34
|
+
# 取值旗的形:判据与词表同 sema-up.sh 一处定义。
|
|
35
35
|
. "$HERE/lib/flagshape.sh"
|
|
36
36
|
# 引擎 /health 体里「落在哪个后端」的读法与期望值(smoke.sh / cluster-up.sh 同一只)。
|
|
37
37
|
. "$HERE/lib/health.sh"
|
|
@@ -45,7 +45,7 @@ PROJECT="${PROJECT:-sema}"
|
|
|
45
45
|
REGION="${REGION:-global}"
|
|
46
46
|
KUBE_MODE="${KUBE_MODE:?KUBE_MODE 未设置(existing|k3s)}"
|
|
47
47
|
DRY_RUN="${DRY_RUN:-false}"
|
|
48
|
-
USERS_GIVEN="${USERS:+1}" #
|
|
48
|
+
USERS_GIVEN="${USERS:+1}" # 显式给没给(缺省 single 之前记下;决策见下方 users_decide)
|
|
49
49
|
USERS="${USERS:-single}"
|
|
50
50
|
REGISTRY_ENABLED="${REGISTRY_ENABLED:-true}"
|
|
51
51
|
GIT_MODE="${GIT_MODE:-none}"
|
|
@@ -53,7 +53,7 @@ NAMESPACE="${NAMESPACE:-sema}"
|
|
|
53
53
|
CNPG_VERSION="${CNPG_VERSION:-1.30.0}" # ⚠ in-tree barman 1.31 移除;升版前先迁 barman-cloud plugin
|
|
54
54
|
K3S_CHANNEL="${K3S_CHANNEL:-stable}"
|
|
55
55
|
|
|
56
|
-
# ──
|
|
56
|
+
# ── 取值旗的形——在装 k3s / 动集群 / 建 WORK 之前 ─────────────────────────────────────────
|
|
57
57
|
# 单独跑时这些环境变量就是本脚本的旗;经 sema-up 进来的值那边已判过,这里同一只再判一次(本脚本自己也是入口)。
|
|
58
58
|
# 修前:DRY_RUN=1 ≠ true ⇒ 当成真装;REGISTRY_ENABLED=yes 当关;USERS=team 当 single;KUBE_MODE=foo 走 existing 那一臂。
|
|
59
59
|
flag_enum "--kube(KUBE_MODE)" "$KUBE_MODE" $FLAG_WORDS_KUBE_SINGLE # machines 走 cluster-up.sh,不进本脚本
|
|
@@ -62,7 +62,7 @@ flag_enum "--users(USERS)" "$USERS" $FLAG_WORDS_USERS
|
|
|
62
62
|
flag_bool "--registry(REGISTRY_ENABLED)" "$REGISTRY_ENABLED"
|
|
63
63
|
flag_enum "--git(GIT_MODE)" "$GIT_MODE" $FLAG_WORDS_GIT
|
|
64
64
|
flag_enum "--region(REGION)" "$REGION" $FLAG_WORDS_REGION
|
|
65
|
-
#
|
|
65
|
+
# 租户形 = 显式 USERS ∨ 上一次落下的部署事实 ∨ single(规则与拒句在 lib/flagshape.sh 的 users_decide)——
|
|
66
66
|
# 在动集群之前判,不带旗的重跑不会把多租部署降成单用户。
|
|
67
67
|
ENVF="$WORK/.env"
|
|
68
68
|
users_decide "$USERS_GIVEN"
|
|
@@ -178,7 +178,7 @@ mkdir -p "$WORK"; chmod 700 "$WORK" 2>/dev/null || true
|
|
|
178
178
|
touch "$ENVF"; chmod 600 "$ENVF"
|
|
179
179
|
setk MINIO_PASSWORD "$(openssl rand -hex 24)"
|
|
180
180
|
setk SERVICE_AUTH_TOKEN "$(openssl rand -hex 24)"
|
|
181
|
-
resetk REQUIRE_PRINCIPAL "$(principal_of_users "$USERS")" #
|
|
181
|
+
resetk REQUIRE_PRINCIPAL "$(principal_of_users "$USERS")" # 部署事实(下次不带旗重跑据此沿用租户形)
|
|
182
182
|
NEW_REG_PW=false NEW_GIT_PW=false
|
|
183
183
|
if [ "$REGISTRY_ENABLED" = "true" ]; then
|
|
184
184
|
setk_new REGISTRY_ADMIN_PASSWORD "$(openssl rand -hex 24)" && NEW_REG_PW=true
|
|
@@ -194,7 +194,7 @@ for k in MINIO_PASSWORD SERVICE_AUTH_TOKEN; do
|
|
|
194
194
|
_v="$(envf_get "$k")" || exit 1
|
|
195
195
|
[ "${#_v}" -ge 32 ] || die "$k 生成失败(openssl rand?)——检查 $ENVF"
|
|
196
196
|
done
|
|
197
|
-
#
|
|
197
|
+
# `.env` 不 source —— 只回读**本脚本自己落盘**的键(凭据 / 已登记的 OAuth 接线)到同名 shell 变量。
|
|
198
198
|
# 输入键(镜像 / 网关 / 模型 id / MODEL_API_KEY / GIT_URL / GIT_TOKEN)以本次传入的环境为准,不再被 .env 旧值覆盖
|
|
199
199
|
# (旧 source 会拿上一次的 GIT_TOKEN 盖掉这次传进来的新 token —— sema-up.sh connect 段早就踩过、改成了 resetk)。
|
|
200
200
|
envf_load MINIO_PASSWORD SERVICE_AUTH_TOKEN REGISTRY_ADMIN_PASSWORD REGISTRY_SESSION_SECRET REGISTRY_PULL_TOKEN \
|
|
@@ -240,7 +240,8 @@ v = {
|
|
|
240
240
|
"modelId": e["V_MODEL_ID"], "modelApiKey": e["V_MODEL_KEY"],
|
|
241
241
|
"sandboxPkgSource": e["V_PKG_SOURCE"], "requirePrincipal": e["V_REQ_PRINCIPAL"],
|
|
242
242
|
},
|
|
243
|
-
"sandbox": {"runtimeClass": e["V_RT_CLASS"]
|
|
243
|
+
"sandbox": {"runtimeClass": e["V_RT_CLASS"],
|
|
244
|
+
"networkPolicy": {"nodeCidrs": [e["V_NODE_IP"] + "/32"]}},
|
|
244
245
|
"registry": {"enabled": e["V_REG_ENABLED"] == "true", "image": e["V_REG_IMAGE"],
|
|
245
246
|
"storageClass": e["V_SC"], "adminPassword": e["V_REG_PW"],
|
|
246
247
|
"sessionSecret": e["V_REG_SS"], "pullToken": e["V_REG_PT"],
|
|
@@ -360,7 +361,7 @@ except Exception: print("")')
|
|
|
360
361
|
[ -n "$GTOK" ] || die "Gitea access token 生成失败。下一步:kubectl -n $NAMESPACE logs deploy/sema-gitea"
|
|
361
362
|
setk GIT_ADMIN_TOKEN "$GTOK"
|
|
362
363
|
fi
|
|
363
|
-
envf_load GIT_ADMIN_TOKEN #
|
|
364
|
+
envf_load GIT_ADMIN_TOKEN # 回读刚生成 / 已存的 token,不 source .env
|
|
364
365
|
if [ "$REGISTRY_ENABLED" = "true" ] && ! envf_has REGISTRY_GITEA_OAUTH_ID; then
|
|
365
366
|
REDIRECT="http://$NODE_IP:30300/api/auth/oauth/callback"
|
|
366
367
|
RESP=$($KUBECTL exec deploy/sema-gitea -n "$NAMESPACE" -- \
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
# shellcheck shell=bash
|
|
2
2
|
# lib/envf.sh — sema-up 家族 `.env` 的文法**与全部读写原语**,定义在这一处。
|
|
3
3
|
#
|
|
4
|
-
# 立场(
|
|
4
|
+
# 立场(一次收完 test 实测(srv796)报的一类):`.env` 是**数据**,永不 `source`。值里的
|
|
5
5
|
# `$(...)` / 反引号 / `;` / 空白在这里是字符串,不是代码;读值一律经数据解析(envf_get / envf_has /
|
|
6
6
|
# envf_load),写值一律经 envf_put(setk / setk_new / resetk 都落到它),绝不把 `.env` 交给 shell 执行。
|
|
7
7
|
#
|
|
8
8
|
# 使用者 = deploy/sema-up 下所有碰 `.env` 的脚本(sema-up.sh / kube-up.sh / cluster-up.sh / smoke.sh):
|
|
9
9
|
# 各自 `. "$HERE/lib/envf.sh"`,调用前设好 `ENVF`(`.env` 路径)。脚本里**不许**再有自己的 setk /
|
|
10
10
|
# has_env / `. "$ENVF"` / `printf '%s=%s' >> "$ENVF"` / `grep … "$ENVF"` —— 第二套写读规则迟早分叉
|
|
11
|
-
# (test/deploy-lanes-contract.test.ts
|
|
11
|
+
# (test/deploy-lanes-contract.test.ts 里「写口唯一」格与 smoke / kube-up / cluster-up 收进同一文法那一组,共两道机器钉)。
|
|
12
12
|
#
|
|
13
|
-
# **一条文法,两半共用。** 文法的依据是 compose-go dotenv 的**真实**读法(车MV
|
|
14
|
-
# 逐形实跑的语料,金样钉在 test/deploy-lanes-contract.test.ts
|
|
13
|
+
# **一条文法,两半共用。** 文法的依据是 compose-go dotenv 的**真实**读法(车MV,k3s8 docker compose 2.40.3
|
|
14
|
+
# 逐形实跑的语料,金样钉在 test/deploy-lanes-contract.test.ts 里「.env 文法与渲染对账对齐 compose 真实语义」那一组):一行 `KEY=<右半>` 的右半有三种形,
|
|
15
15
|
# 每种形里只有少数几个字符会让 compose **改写**读到的值 —— 不碰这几个字符,compose 读到的就是字面量:
|
|
16
16
|
# · 裸值 `KEY=v`:插值起点(`$` 后跟 `$` / `{` / 字母或 `_`,见 envf_has_interp)、「空格 + `#`」(行内注释;只认 ASCII 空格,`\t#` 是字面)、首尾空白(修剪 —— 开头按
|
|
17
17
|
# compose-go 自己的 isSpace = ASCII 空白 + U+0085 + U+00A0,结尾按 Go `unicode.IsSpace`,多出全角空格等 16 个)、
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
# 裸写则 bash 语法错)、以奇数个 `\` 结尾(单引号形 compose 闭引号失效;裸写则 bash 当续行吞下一行)⇒ **写之前**响亮拒,
|
|
36
36
|
# 点名键、不回显值,「下一步」按拒因给。写口产物恒在读口文法内(安全裸词 ⊂ 裸值形,单引号编码形 ⊂ 单引号形)⇒ 往返成立。
|
|
37
37
|
#
|
|
38
|
-
#
|
|
38
|
+
# 收编:7.96.0「写口只拒换行 / 回车」的判据、`envf_get` 的物理行假设,连同曾经的「另立
|
|
39
39
|
# 一件做渲染对账」都收进来——写口判据 = 本文件的 `envf_representable`;物理行假设的兜底 = 生成 `.env`
|
|
40
40
|
# 之后、`compose up` 之前那一道 `docker compose config` 渲染对账(sema-up.sh `reconcile_render`,
|
|
41
41
|
# 以 compose 自己为唯一属主)。不再有第二套文法。
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# lib/flagshape.sh — 取值旗的形(
|
|
1
|
+
# lib/flagshape.sh — 取值旗的形(7.104.0):一条规则、一处定义(判据 + 词表)。sema-up.sh(参数解析之后、建任何目录之前)、
|
|
2
2
|
# kube-up.sh / cluster-up.sh(单独跑时环境变量就是它们的旗)、preflight.sh / smoke.sh 都从这里判,不各写一份。
|
|
3
3
|
#
|
|
4
4
|
# 规则:每只取值旗都过形判;不合 ⇒ 拒句点名旗、收到的值、合法形,非零退出 —— 调用方把判放在任何建目录 / 写文件 / 动集群 /
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# · port —— 1–65535 的十进制整数,不带前导 0 / 正负号 / 空白(前导 0 在 bash 算术里读成八进制);
|
|
8
8
|
# · enum —— 列全词(词表就在下面:--help、拒句、交互选项的对拍钉都从这里取,不手抄);
|
|
9
9
|
# · project —— compose 项目名形(小写字母 / 数字 / - / _,首字符字母或数字):它也是工作目录 ~/.sema-up/<名> 与自动数据根
|
|
10
|
-
# <盘>/sema-data/<名>
|
|
10
|
+
# <盘>/sema-data/<名> 的一段路径—— `..` / `/` / 空串会把两者指到别处。
|
|
11
11
|
# 自由文本(URL / 镜像引用 / 路径 / 主机名 / 模型 id / 凭据)不在这里判:合法形不是闭集,各有自己的消费点(落 .env 的值
|
|
12
12
|
# 另过 lib/envf.sh 的写口)。盘点见 deploy/sema-up/README.md「取值旗的形」。
|
|
13
13
|
#
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
# ── 词表(单一属主)──────────────────────────────────────────────────────────────────────────────
|
|
19
19
|
FLAG_WORDS_PROFILE="full-single data-center local-plus full-cluster"
|
|
20
20
|
FLAG_WORDS_USERS="single multi"
|
|
21
|
-
# 租户形 ⇒ 容器上 REQUIRE_PRINCIPAL 的值 —— 这条翻译的**唯一**定义(
|
|
22
|
-
# 事实核对,kube-up 的 helm values,cluster-up 的渲染清单与 helm values 同调这一只(修前 kube-up
|
|
21
|
+
# 租户形 ⇒ 容器上 REQUIRE_PRINCIPAL 的值 —— 这条翻译的**唯一**定义(7.105.0 从 sema-up.sh 搬来):sema-up 的 compose 生成段 /
|
|
22
|
+
# 事实核对,kube-up 的 helm values,cluster-up 的渲染清单与 helm values 同调这一只(修前 kube-up 另写一份同义翻译;
|
|
23
23
|
# cluster-up 一份都没有 ⇒ --users=multi 在 --kube=machines 路径上被静默丢成单用户)。只认两词,别的词先过 flag_enum。
|
|
24
24
|
principal_of_users() { [ "$1" = "multi" ] && echo true || echo false; }
|
|
25
25
|
|
|
@@ -27,7 +27,7 @@ principal_of_users() { [ "$1" = "multi" ] && echo true || echo false; }
|
|
|
27
27
|
# compose 档同一条规则:**决策 = 显式 USERS ∨ 上一次落在 $ENVF 的部署事实 REQUIRE_PRINCIPAL ∨ single**;显式值与事实
|
|
28
28
|
# 不一致 ⇒ 拒并点名两处(不静默把一台多租部署降成单用户,也不静默把单用户升成多租)。事实 → 租户词只经
|
|
29
29
|
# principal_of_users 反查(两词逐个过正向比,不另写反表);认不出的事实值 ⇒ 拒。设 USERS。
|
|
30
|
-
#
|
|
30
|
+
# codex 一轮 [high]:machines 路径开始认 --users 之后,一次不带旗的重跑会拿缺省 single 把多租部署的
|
|
31
31
|
# REQUIRE_PRINCIPAL 翻回 false(kube-up 路径此前就同形)—— 事实由两只脚本各自在写凭据的同一处 resetk 落盘。
|
|
32
32
|
# 调用方先 source lib/envf.sh 并定好 ENVF(文件可以还不存在 = 首装,无事实)。
|
|
33
33
|
users_decide() {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
default <users> 打印该租户形下的缺省 choice
|
|
15
15
|
options <users> 每行一个 `ask` 选项串 `value:label[:infeasible=原因|建议]`
|
|
16
16
|
check <choice> 只判「是不是 compose 路径上的在役词」(退役词 / 表外词 ⇒ 拒,与 resolve 同一只判据),
|
|
17
|
-
不打印;sema-up 在建工作目录之前拿它判 --sandbox
|
|
17
|
+
不打印;sema-up 在建工作目录之前拿它判 --sandbox 的形,租户形那一半留给 resolve
|
|
18
18
|
resolve <users> <choice> 校验并打印该车道要落 .env 的 `KEY=VALUE` 行(仅有值的键);
|
|
19
19
|
必需但由运维自备的键名打印成 `#REQUIRED <NAME>` 注释行(「选了却没给」的早拒读它)
|
|
20
20
|
choice-of <REMOTE_EXEC 值> 部署事实 → `--sandbox` 词的反查(决策 = 显式旗 ∨ 部署事实 ∨ 表缺省):上一次落下的 `REMOTE_EXEC=<值>`
|
|
@@ -80,7 +80,7 @@ def main(path):
|
|
|
80
80
|
|
|
81
81
|
emit("PROFILE", top.get("profile"))
|
|
82
82
|
emit("REGION", top.get("region", "auto"))
|
|
83
|
-
#
|
|
83
|
+
# codex 一轮 [high]:不写 users 就**不发射** —— 修前缺省发射 single,等于替运维表了态,sema-up 于是把它当显式旗,
|
|
84
84
|
# 盖掉 `.env` 里上一次落下的部署事实(多租部署不带旗重跑 ⇒ 被降成单用户,或撞事实冲突拒)。缺省归 sema-up 的决策
|
|
85
85
|
# (显式旗 ∨ 部署事实 ∨ 表缺省 single),不在解析器里另立一份。
|
|
86
86
|
emit("USERS", top.get("users"))
|
|
@@ -104,7 +104,7 @@ def main(path):
|
|
|
104
104
|
emit("DP_S3", dp.get("s3", "deploy"))
|
|
105
105
|
emit("DP_BACKUP", dp.get("backup", "true"))
|
|
106
106
|
sb = sections.get("sandbox", {})
|
|
107
|
-
#
|
|
107
|
+
# `sandbox.lane` 是**死词**,已删。machines.yaml 只走 kube 路径,而 kube-up.sh 的 runtime
|
|
108
108
|
# 是按 runtimeClass `kata-qemu` 在不在自动定的(kube-up.sh:94-96),从来不读 SANDBOX_LANE ——
|
|
109
109
|
# 发射它只会让运维以为自己选到了什么。**响亮拒**而不是静默忽略:一个设了却没有任何效果的旋钮,
|
|
110
110
|
# 正是本批要消灭的那类病(留着它,下一个人还会照模板填)。
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# lib/shell-access.sh — 「壳(sema CLI)怎么接这台引擎」的唯一渲染(
|
|
1
|
+
# lib/shell-access.sh — 「壳(sema CLI)怎么接这台引擎」的唯一渲染(7.104.0)。sema-up.sh(汇总 / dry-run 计划 /
|
|
2
2
|
# `--interactive=json` 的 summary)、kube-up.sh、cluster-up.sh 三条部署路径都调它,不各写一份。
|
|
3
3
|
# 只给**位置**、不给值:令牌在哪只文件的哪个键、在壳里放进哪个变量 —— 本文件的函数不读任何凭据。
|
|
4
4
|
#
|
|
@@ -17,9 +17,9 @@ done
|
|
|
17
17
|
HERE="$(cd "$(dirname "$_self")" && pwd)"
|
|
18
18
|
unset _self _hops _dir
|
|
19
19
|
# <<< 自身目录
|
|
20
|
-
# 自动数据根的路径形只在 lib/dataroot.sh
|
|
20
|
+
# 自动数据根的路径形只在 lib/dataroot.sh 定义一次:下面「多盘机」建议句与 sema-up 自动选的根同一条规则。
|
|
21
21
|
. "$HERE/lib/dataroot.sh"
|
|
22
|
-
#
|
|
22
|
+
# 取值旗的形:判据与词表同 sema-up.sh 一处定义。
|
|
23
23
|
. "$HERE/lib/flagshape.sh"
|
|
24
24
|
log() { printf '[preflight] %s\n' "$*" >&2; }
|
|
25
25
|
|
|
@@ -36,7 +36,7 @@ for a in "$@"; do
|
|
|
36
36
|
--project=*) PROJECT="${a#--project=}" ;;
|
|
37
37
|
esac
|
|
38
38
|
done
|
|
39
|
-
#
|
|
39
|
+
# 取值旗的形——在任何探测之前(本脚本只读,但 --json 的 profile 原样进协议行、端口原样进 ss / lsof 的参数)。
|
|
40
40
|
# profile:sema-up 传它自己的档位词;单独跑的缺省是 full(= 非 data-center 的阈值)。
|
|
41
41
|
flag_enum "--profile" "$PROFILE" full $FLAG_WORDS_PROFILE
|
|
42
42
|
flag_project "--project" "$PROJECT"
|
|
@@ -122,7 +122,7 @@ if [ -n "$BEST_MNT" ] && [ "$BEST_MNT" != "/" ] && [ "$BEST_GB" -gt "${DISK_GB:-
|
|
|
122
122
|
add WARN disk-alt "$BEST_MNT ${BEST_GB}G avail" "存在比 / 更大的数据盘(多盘机)" "--data-root=$(dataroot_for_disk "$BEST_MNT" "$PROJECT")(sema-up 未显式指定时会自动选它;数据根按项目分)"
|
|
123
123
|
fi
|
|
124
124
|
|
|
125
|
-
# ── KVM(**kube 路径**的 kata runtimeClass 前提;compose 路径已无需要 KVM
|
|
125
|
+
# ── KVM(**kube 路径**的 kata runtimeClass 前提;compose 路径已无需要 KVM 的车道)────────
|
|
126
126
|
# 有 KVM ⇒ 走 full-cluster 时 kata-deploy 能装上,沙箱得 VM 级隔离;没有 ⇒ kube 路径退 runc 容器
|
|
127
127
|
# 隔离(仍是真隔离,只是弱于 VM)。两种都不是 BLOCK:单机 compose 路径的车道(host / e2b-cloud)
|
|
128
128
|
# 与 KVM 无关。
|