@sema-agent/server 7.146.0 → 7.147.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 +384 -0
- package/README.md +1 -1
- package/README.zh-CN.md +1 -1
- package/USAGE.md +170 -66
- package/deploy/facts/lanes.json +7 -0
- package/deploy/sema-up/README.md +2 -2
- package/deploy/sema-up/chart/templates/_helpers.tpl +22 -0
- 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 +1 -1
- package/deploy/sema-up/cluster-up.sh +2 -1
- package/deploy/sema-up/lib/flagshape.sh +4 -0
- package/deploy/sema-up/lib/lanes.json +2 -5
- package/deploy/sema-up/sema-up.sh +12 -9
- package/deploy/sema-up/stack/compose.yaml +5 -4
- package/deploy/sema-up/stack/sema-stack-cluster.yaml +4 -3
- package/dist/approval-card.d.ts +4 -4
- package/dist/approval.d.ts +3 -3
- package/dist/audit.js +2 -2
- package/dist/bench/s1/live-deps.js +3 -1
- package/dist/boot/crash-last.js +2 -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 +2 -1
- package/dist/boot/execution-env.js +45 -33
- package/dist/boot/execution-lane.d.ts +37 -9
- package/dist/boot/execution-lane.js +74 -20
- package/dist/boot/exit-boundary.d.ts +1 -1
- package/dist/boot/exit-last.js +2 -1
- package/dist/boot/governance-seams.d.ts +2 -2
- package/dist/boot/leader.js +1 -1
- package/dist/boot/memory-boundary.d.ts +11 -11
- package/dist/boot/memory-boundary.js +3 -3
- package/dist/boot/memory-consolidation.d.ts +13 -24
- package/dist/boot/memory-consolidation.js +0 -13
- package/dist/boot/org-memory.js +3 -2
- package/dist/boot/parked-revive-gate.d.ts +1 -1
- package/dist/boot/parked-revive-gate.js +1 -1
- package/dist/boot/reapers.js +1 -1
- package/dist/boot/resolve-spec.js +91 -111
- package/dist/boot/retention-lane.d.ts +4 -42
- package/dist/boot/session-faces.d.ts +1 -0
- package/dist/boot/session-faces.js +8 -2
- package/dist/boot/stage-01-config.d.ts +1 -1
- package/dist/boot/stage-01-config.js +6 -2
- package/dist/boot/stage-02-web-admin-pull.d.ts +1 -1
- package/dist/boot/stage-02-web-admin-pull.js +10 -8
- package/dist/boot/stage-03-store-backend.d.ts +1 -1
- package/dist/boot/stage-04-stores.d.ts +1 -1
- package/dist/boot/stage-05-execution-env.d.ts +2 -2
- package/dist/boot/stage-05-execution-env.js +3 -3
- package/dist/boot/stage-06-runners.d.ts +3 -3
- package/dist/boot/stage-06-runners.js +1 -3
- package/dist/boot/stage-07-capability-layer.d.ts +3 -3
- package/dist/boot/stage-07-capability-layer.js +4 -9
- package/dist/boot/stage-08-reapers.d.ts +3 -3
- package/dist/boot/stage-09-leader.d.ts +4 -3
- package/dist/boot/stage-10-http-server.d.ts +4 -3
- package/dist/boot/stage-10-http-server.js +2 -1
- package/dist/boot/stores.d.ts +9 -0
- package/dist/boot/stores.js +18 -7
- package/dist/boot/web-admin.js +3 -3
- package/dist/capabilities/center-plugins.d.ts +2 -0
- package/dist/capabilities/center-plugins.js +6 -2
- package/dist/capabilities/composite-members.d.ts +1 -0
- package/dist/capabilities/composite-members.js +1 -0
- 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/scenarios.d.ts +32 -18
- package/dist/capabilities/scenarios.js +13 -9
- package/dist/capabilities/settings-contract.d.ts +29 -0
- package/dist/capabilities/settings-contract.js +14 -0
- package/dist/capabilities/skills.d.ts +5 -5
- package/dist/capability-facts.d.ts +38 -0
- package/dist/capability-facts.js +34 -1
- package/dist/center-credential-renewer.js +3 -2
- package/dist/config-catalog.js +6 -5
- package/dist/config-invariants.d.ts +18 -3
- package/dist/config-invariants.js +36 -19
- package/dist/config-lkg.d.ts +1 -1
- package/dist/config-lkg.js +5 -6
- package/dist/config-provider.js +2 -0
- package/dist/config-types.d.ts +190 -186
- package/dist/config.d.ts +68 -5
- package/dist/config.js +80 -54
- package/dist/degenerate-instrument.js +1 -1
- package/dist/deploy-facts.js +3 -2
- package/dist/deployment-shape.d.ts +21 -12
- package/dist/deployment-shape.js +24 -6
- package/dist/env-facts.d.ts +7 -5
- package/dist/env-facts.js +10 -6
- 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 +49 -86
- package/dist/execution-lane-caps.js +52 -62
- package/dist/execution-placement.d.ts +18 -2
- package/dist/execution-placement.js +19 -0
- package/dist/file-history-disclosure.d.ts +2 -2
- package/dist/fleet/drain-entry.d.ts +17 -10
- package/dist/fleet/drain-entry.js +1 -1
- package/dist/fleet/serving-lease.js +3 -4
- package/dist/history-anchor.d.ts +22 -0
- package/dist/history-anchor.js +14 -0
- package/dist/hooks/command-spawn.d.ts +1 -4
- package/dist/hooks/command-spawn.js +0 -11
- package/dist/hooks/hook-runner.d.ts +52 -8
- package/dist/hooks/hook-runner.js +160 -36
- package/dist/http/approval-sweeps.d.ts +2 -5
- package/dist/http/approval-sweeps.js +3 -2
- package/dist/http/checkpoint-ctx.d.ts +17 -0
- package/dist/http/checkpoint-ctx.js +6 -0
- package/dist/http/claim-latency.d.ts +10 -0
- package/dist/http/claim-latency.js +12 -0
- package/dist/http/dispatch.js +1 -1
- package/dist/http/durable-run-leg.js +2 -1
- package/dist/http/execution-context.d.ts +3 -1
- package/dist/http/execution-context.js +4 -0
- package/dist/http/memory-compliance-failure-reply.d.ts +1 -1
- package/dist/http/memory-compliance-failure-reply.js +3 -0
- package/dist/http/memory-store-refusal-reply.d.ts +3 -3
- package/dist/http/memory-store-refusal-reply.js +3 -0
- package/dist/http/owner-access.d.ts +11 -0
- package/dist/http/owner-access.js +7 -4
- package/dist/http/principal-gate.d.ts +3 -14
- package/dist/http/principal-gate.js +0 -13
- package/dist/http/request-guards.d.ts +1 -1
- package/dist/http/resume-legs.d.ts +7 -10
- package/dist/http/resume-legs.js +79 -50
- 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 +32 -16
- package/dist/http/route-table.js +2 -0
- package/dist/http/routes/approvals-assistant.js +5 -25
- package/dist/http/routes/capabilities.js +8 -2
- package/dist/http/routes/devices.js +1 -1
- package/dist/http/routes/memory-origin.d.ts +1 -1
- package/dist/http/routes/notify-wake.js +2 -1
- package/dist/http/routes/projects.d.ts +70 -0
- package/dist/http/routes/projects.js +86 -0
- package/dist/http/routes/rules.js +30 -2
- package/dist/http/routes/runs.js +8 -8
- package/dist/http/routes/session-sync.js +27 -10
- package/dist/http/routes/sessions.d.ts +7 -1
- package/dist/http/routes/sessions.js +104 -2
- package/dist/http/routes/tasks.js +9 -3
- package/dist/http/server.d.ts +24 -10
- package/dist/http/server.js +17 -6
- package/dist/http/stored-body-replay.d.ts +5 -3
- package/dist/http/stored-body-replay.js +10 -1
- package/dist/http/wire-types.d.ts +19 -10
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/instruction-source-notice.d.ts +1 -1
- 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-scope.d.ts +2 -2
- package/dist/memory-scope.js +1 -1
- package/dist/memory-store-refusal.d.ts +17 -4
- package/dist/memory-store-refusal.js +1 -1
- package/dist/memory-sync-client.d.ts +2 -0
- package/dist/memory-sync-client.js +13 -11
- package/dist/memory-sync.js +1 -1
- package/dist/model-compat.d.ts +35 -21
- package/dist/model-compat.js +49 -21
- package/dist/model-entry-refusal.d.ts +11 -1
- package/dist/model-entry-refusal.js +7 -0
- package/dist/namespaced-rule-name.d.ts +18 -1
- package/dist/namespaced-rule-name.js +12 -0
- package/dist/observability/fail-open.d.ts +17 -9
- package/dist/observability/fail-open.js +17 -9
- package/dist/observability/metrics.d.ts +2 -0
- package/dist/observability/metrics.js +2 -0
- package/dist/observability/secret-env-scrub.d.ts +30 -4
- package/dist/observability/secret-env-scrub.js +15 -3
- 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 +26 -6
- package/dist/orchestration/workflow-completion-inbox.js +63 -45
- package/dist/org-memory-admission.d.ts +5 -2
- package/dist/org-memory-admission.js +25 -10
- package/dist/parked-decide.d.ts +33 -26
- package/dist/parked-decide.js +36 -44
- package/dist/plugins/approval-ask-store-file.d.ts +10 -2
- package/dist/plugins/approval-ask-store-file.js +37 -4
- package/dist/plugins/approval-ask-store-memory.d.ts +5 -3
- package/dist/plugins/approval-ask-store-memory.js +11 -2
- package/dist/plugins/approval-ask-store-sql.d.ts +3 -0
- package/dist/plugins/approval-ask-store-sql.js +3 -1
- package/dist/plugins/blob-backend.d.ts +38 -195
- package/dist/plugins/blob-backend.js +33 -229
- package/dist/plugins/caching-session-store.d.ts +9 -4
- package/dist/plugins/checkpoint-index-columns.d.ts +1 -1
- package/dist/plugins/checkpoint-index-columns.js +3 -2
- package/dist/plugins/checkpoint-store-face.d.ts +1 -1
- package/dist/plugins/device-store-sql.d.ts +2 -2
- package/dist/plugins/device-store-sql.js +5 -10
- 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 +26 -12
- package/dist/plugins/file-run-store.js +63 -63
- package/dist/plugins/imported-layer-root-retirement.d.ts +17 -8
- 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/local-checkpoint-store.d.ts +5 -0
- package/dist/plugins/local-checkpoint-store.js +11 -7
- package/dist/plugins/local-data-dir-modes-m39.d.ts +48 -0
- package/dist/plugins/local-data-dir-modes-m39.js +182 -0
- package/dist/plugins/local-engine-high-water.d.ts +11 -0
- package/dist/plugins/local-engine-high-water.js +59 -0
- package/dist/plugins/local-session-store.d.ts +91 -25
- package/dist/plugins/local-session-store.js +124 -45
- package/dist/plugins/local-task-attachment-store.d.ts +2 -0
- package/dist/plugins/local-task-attachment-store.js +10 -11
- 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 +2 -2
- package/dist/plugins/memory-engine-pg.d.ts +4 -3
- package/dist/plugins/memory-engine-pg.js +4 -4
- package/dist/plugins/memory-engine-sql-apply.d.ts +13 -4
- package/dist/plugins/memory-engine-sql-apply.js +1 -1
- package/dist/plugins/memory-engine-tidb.d.ts +8 -5
- package/dist/plugins/memory-engine-tidb.js +7 -8
- package/dist/plugins/one-time-migrations.d.ts +145 -35
- package/dist/plugins/one-time-migrations.js +272 -120
- 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 +8 -8
- package/dist/plugins/permission-rule-store-file.js +14 -2
- package/dist/plugins/pg-pool.d.ts +2 -1
- package/dist/plugins/pg-pool.js +11 -4
- 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 +12 -3
- package/dist/plugins/remote-env-e2b.js +6 -4
- package/dist/plugins/remote-env-host.d.ts +9 -1
- package/dist/plugins/remote-env-host.js +6 -5
- package/dist/plugins/remote-env-k8s.d.ts +5 -2
- package/dist/plugins/remote-env-k8s.js +15 -4
- package/dist/plugins/remote-env-local-docker.d.ts +4 -1
- package/dist/plugins/remote-env-local-docker.js +3 -3
- package/dist/plugins/remote-env-ssh.d.ts +8 -2
- package/dist/plugins/remote-env-ssh.js +26 -24
- 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 +126 -0
- package/dist/plugins/retention-deployment.js +88 -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/schema-consistency.d.ts +0 -6
- package/dist/plugins/schema-consistency.js +1 -2
- package/dist/plugins/schema-ensure-legs.d.ts +1 -1
- package/dist/plugins/schema-ensure-legs.js +11 -1
- package/dist/plugins/session-ext-table.d.ts +74 -0
- package/dist/plugins/session-ext-table.js +121 -0
- package/dist/plugins/session-fork.d.ts +1 -1
- package/dist/plugins/session-row-sql.d.ts +8 -7
- package/dist/plugins/session-row-sql.js +15 -7
- package/dist/plugins/session-store-sql.d.ts +131 -0
- package/dist/plugins/session-store-sql.js +298 -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 -0
- package/dist/plugins/shared-memory-store-sql.js +13 -13
- package/dist/plugins/snapshot-bucket-presence.js +1 -1
- package/dist/plugins/sql-driver.d.ts +23 -7
- package/dist/plugins/sql-driver.js +41 -8
- package/dist/plugins/sql-errors.d.ts +5 -2
- package/dist/plugins/sql-errors.js +4 -0
- package/dist/plugins/store-backend.d.ts +35 -8
- package/dist/plugins/store-backend.js +184 -62
- package/dist/plugins/store-contracts.d.ts +9 -2
- package/dist/plugins/store-contracts.js +1 -0
- package/dist/plugins/task-attachment-store.d.ts +6 -8
- package/dist/plugins/task-attachment-store.js +15 -10
- 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 +19 -31
- package/dist/plugins/user-input-ledger-sql.d.ts +1 -1
- package/dist/read-face-posture.d.ts +6 -6
- package/dist/read-face-posture.js +2 -2
- package/dist/request-value-closure.d.ts +5 -5
- package/dist/request-value-closure.js +1 -1
- package/dist/rules-consent.d.ts +41 -13
- package/dist/rules-consent.js +101 -53
- package/dist/run-local.js +17 -13
- package/dist/runs.d.ts +48 -30
- package/dist/runs.js +26 -16
- package/dist/runtime-caps-resolver.d.ts +15 -8
- package/dist/runtime-caps-resolver.js +14 -10
- package/dist/sealed-key-layout.d.ts +2 -3
- package/dist/sealed-key-layout.js +0 -1
- package/dist/sealed-key.js +7 -5
- package/dist/security.d.ts +5 -3
- package/dist/sema-config-dir.js +2 -2
- package/dist/server-secret-env.d.ts +2 -0
- package/dist/service-version.d.ts +2 -1
- package/dist/service-version.js +2 -2
- package/dist/session-error-wire.d.ts +1 -1
- package/dist/session-incarnation.d.ts +8 -5
- package/dist/session-resident-background.d.ts +85 -32
- package/dist/session-resident-background.js +75 -7
- package/dist/session-row.d.ts +1 -1
- package/dist/session-sync-kernel.d.ts +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/store-posture.d.ts +2 -1
- package/dist/stored-request-hooks-m20.d.ts +3 -2
- package/dist/stored-request-hooks-m20.js +19 -14
- 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 +1 -1
- package/dist/stores-sql/checkpoint-store-sql.js +11 -27
- 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/{plugins → stores-sql}/pg-session-storage.d.ts +23 -76
- package/dist/{plugins → stores-sql}/pg-session-storage.js +80 -209
- package/dist/{plugins → stores-sql}/retention-store-sql.d.ts +123 -217
- package/dist/{plugins → stores-sql}/retention-store-sql.js +66 -190
- 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 +1 -1
- package/dist/stores-sql/session-write-hooks.d.ts +59 -0
- package/dist/stores-sql/session-write-hooks.js +2 -0
- package/dist/{plugins → stores-sql}/tidb-session-storage.d.ts +10 -11
- package/dist/{plugins → stores-sql}/tidb-session-storage.js +10 -21
- package/dist/{plugins → stores-sql}/tidb-session-store.d.ts +32 -122
- package/dist/{plugins → stores-sql}/tidb-session-store.js +71 -171
- 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 +56 -0
- package/dist/stores-sql/windowed-session-storage.js +61 -0
- package/dist/task-a2a.d.ts +7 -1
- package/dist/task-a2a.js +15 -14
- package/dist/task-cwd.d.ts +11 -3
- package/dist/task-cwd.js +17 -1
- package/dist/task-mcp.d.ts +10 -2
- package/dist/task-mcp.js +13 -16
- package/dist/task-settings.d.ts +9 -4
- package/dist/task-settings.js +17 -6
- package/dist/tool-approval.d.ts +21 -8
- package/dist/tool-approval.js +10 -6
- package/dist/trace/core-keyset-guard.d.ts +9 -3
- 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 +23 -1
- package/dist/trace/exit-seat.js +3 -0
- package/dist/trace/project.d.ts +33 -16
- package/dist/trace/project.js +12 -9
- package/dist/trace/redact.d.ts +1 -1
- package/dist/trace/redact.js +61 -73
- package/dist/trace/self-minted-wire.d.ts +263 -10
- package/dist/trace/self-minted-wire.js +90 -2
- 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 +38 -2
- package/dist/trace/wire-projection-faces.js +26 -1
- package/dist/unread-request-members.d.ts +66 -0
- package/dist/unread-request-members.js +41 -0
- package/dist/user-input-ledger.d.ts +2 -2
- package/dist/web-admin-client/apply-effective.js +22 -26
- 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 +4 -1
- package/dist/web-admin-client/center-request.js +2 -1
- package/dist/web-admin-client/effective-keys.js +0 -1
- package/dist/web-admin-client/facade.d.ts +1 -1
- package/dist/web-admin-client/http-client.d.ts +1 -0
- package/dist/web-admin-client/http-client.js +17 -9
- package/dist/web-admin-client/restart-signal.js +5 -2
- package/dist/web-admin-client/skills-mcp.d.ts +20 -6
- package/dist/web-admin-client/skills-mcp.js +26 -21
- package/dist/web-admin-client/types.d.ts +34 -49
- package/docs/DEVICE-EXECUTOR-PROTOCOL.md +2 -2
- package/package.json +13 -12
- package/scripts/drain-check-local.mjs +2 -28
- package/scripts/drain-check.mysql.sql +2 -18
- package/scripts/drain-check.pg.sql +2 -18
- package/wire-changes/server@7.147.0.json +813 -0
|
@@ -35,9 +35,9 @@ import { type EnvTableReplacementInput } from "./env-model-table-gate.js";
|
|
|
35
35
|
*/
|
|
36
36
|
export declare const LIVENESS_HEARTBEAT_MS = 30000;
|
|
37
37
|
/** 闭集:新增一条不变量必须在这里加词(拼错 = 编译红,而不是运行期悄悄不判)。 */
|
|
38
|
-
export type CrossInvariantId = "run-stale-heartbeat" | "bind-posture" | "bake-runner-credential" | "direct-door-anchors" | "operator-principals-required" | "operator-single-user" | "bake-operator-principals" | "sensitive-write-patterns" | "leader-host-lane" | "multi-tenant-shared-lane" | "leader-durable-store" | "device-durable-store" | "device-durable-approval" | "model-provider-word" | "gateway-url-userinfo" | "anthropic-credential-exclusive" | "model-route-endpoint" | "default-model-resolvable" | "refused-names-not-minted" | "env-table-replacement-acknowledged" | "
|
|
38
|
+
export type CrossInvariantId = "run-stale-heartbeat" | "bind-posture" | "bake-runner-credential" | "direct-door-anchors" | "operator-principals-required" | "operator-single-user" | "operator-declaration-required" | "bake-operator-principals" | "sensitive-write-patterns" | "leader-host-lane" | "multi-tenant-shared-lane" | "leader-durable-store" | "device-durable-store" | "device-durable-approval" | "model-provider-word" | "gateway-url-userinfo" | "anthropic-credential-exclusive" | "model-route-endpoint" | "default-model-resolvable" | "refused-names-not-minted" | "env-table-replacement-acknowledged" | "center-one-identity" | "workflow-park-decision-domain" | "remote-config-provider-url" | "retention-lane-complete";
|
|
39
39
|
/** 表读的键集(取自平铺配置型 ⇒ 键名/类型永不与真配置漂)。 */
|
|
40
|
-
export type CrossInvariantView = Readonly<Pick<ServiceConfigFlat, "runStaleSec" | "authToken" | "authTokens" | "allowUnauthedWrites" | "imageBakes" | "directApprovalDoor" | "durableApproval" | "approvalHmacKeys" | "principalJwtPubkeys" | "principalJwtIss" | "principalJwtAud" | "requirePrincipal" | "operatorPrincipals" | "operatorSingleUser" | "sensitiveWritePatterns" | "leaderEnabled" | "selfOrchestrationEnabled" | "workflowRunStoreBackend" | "remoteExec" | "
|
|
40
|
+
export type CrossInvariantView = Readonly<Pick<ServiceConfigFlat, "runStaleSec" | "authToken" | "authTokens" | "allowUnauthedWrites" | "imageBakes" | "directApprovalDoor" | "durableApproval" | "approvalHmacKeys" | "principalJwtPubkeys" | "principalJwtIss" | "principalJwtAud" | "requirePrincipal" | "operatorPrincipals" | "operatorSingleUser" | "sensitiveWritePatterns" | "leaderEnabled" | "selfOrchestrationEnabled" | "workflowRunStoreBackend" | "remoteExec" | "dbBackend" | "tidb" | "pg" | "envModel" | "gatewayBaseUrl" | "gatewayFallbackUrls" | "anthropic" | "models" | "modelRefusals" | "tiers" | "authBridgeIssuer" | "webAdmin" | "configProvider" | "retentionPolicy" | "retentionSweep">>;
|
|
41
41
|
export interface CrossInvariantInput {
|
|
42
42
|
/** 现役配置(boot 期 = 候选自身)。 */
|
|
43
43
|
readonly live: CrossInvariantView;
|
|
@@ -65,7 +65,7 @@ export interface CrossInvariant {
|
|
|
65
65
|
}
|
|
66
66
|
/**
|
|
67
67
|
* ── [ref] ① 推广(车 UZ 推广轮):**拒因句单铸点**是一类 —— 下面五只是 `config.ts` 区里五条跨域拒启的**判据 + 句子的唯一属主**
|
|
68
|
-
* (`
|
|
68
|
+
* (`modelProviderRefusal` 同形):boot 的 throw(`config.ts`,锚在那儿)与注册表条目的 `check` **都调它**,
|
|
69
69
|
* 没有第二份文本可漂。修前这五条逐条两份不同的句子(boot 手写一份、表里另写一份),boot 那份是运维在 stderr 读到的(`config-validation.test.ts`
|
|
70
70
|
* 钉着它的指纹),表那份只在热路径上被调 —— 而热键集带不上这些键 ⇒ 实际无读者。句子**取 boot 那份**(逐字不变);类钉 =
|
|
71
71
|
* `test/config-hot/batch1-cross-invariants.test.ts` 的「类钉」一格(每条带 `bootAnchor` 的条目,boot 点不手写句子、且来自注册表本人或 check 同调的函数)。
|
|
@@ -84,6 +84,16 @@ export declare function operatorPrincipalsRequiredRefusal(v: Pick<CrossInvariant
|
|
|
84
84
|
* 只在单用户形、名单为空时成立:多租形没有「单一用户」(声明会把每个租户都变成运维);名单非空时两个来源答同一个问题。两形都拒,句子点名两根旋钮与出路。
|
|
85
85
|
*/
|
|
86
86
|
export declare function operatorSingleUserRefusal(v: Pick<CrossInvariantView, "operatorSingleUser" | "requirePrincipal" | "operatorPrincipals">): string | undefined;
|
|
87
|
+
/**
|
|
88
|
+
* `operator-declaration-required`([ref])—— **单用户部署必须说出谁是运维**。单用户形(租户轴不成立,`DEPLOYMENT_SHAPE_PREDICATES.multiTenant`)上
|
|
89
|
+
* 「谁是运维」只有两种答法:`OPERATOR_SINGLE_USER=true`(每个调用方都是)或具名 `OPERATOR_PRINCIPALS`;两样都没有 = 没人能用这台部署的运维面
|
|
90
|
+
* (审批队列全量、诊断、outcomes、管理与记忆治理口),而升级前它是静默的 —— 本条把它变成起服拒,拒句一行给出两条出路。不加旋钮、不加宽限、不给缺省:
|
|
91
|
+
* 只有字面 `true` 是声明(`=false` 与缺席同判)。多租形不归本条:空名单 = 没人是运维是合法的多租姿态(durable 形另由 `operator-principals-required` 管)。
|
|
92
|
+
* 出路 A 只在单用户 ∧ 空名单时给出 —— 恰是 `operator-single-user` 放行的形;忘设 `REQUIRE_PRINCIPAL` 的团队机器不该照它把每个调用方变成运维,句子把它点出来。
|
|
93
|
+
* **两处调用、一只判据**:兜底座在装配运维面的地方(`createHttpServer`,装路由之前;所有装运维面者都过,嵌入方只过这一座,表条目的锚在这里);
|
|
94
|
+
* 服务入口另在起服第 1 段早拒(先于店连接与中心拉取)。不在 `loadConfig`:律管的是有运维面的进程,不装路由的 `run-local`(一次性 CLI,同读 `loadConfig`)不在射程。
|
|
95
|
+
*/
|
|
96
|
+
export declare function operatorDeclarationRefusal(v: Pick<CrossInvariantView, "requirePrincipal" | "operatorPrincipals" | "operatorSingleUser">): string | undefined;
|
|
87
97
|
/** `bake-operator-principals`(IMAGE-API-DESIGN §P2.4a):bake 门是 build-host 无限制执行面,要**具名**运维 —— 空名单下要么没人用得了,要么(单用户声明)人人用得了。 */
|
|
88
98
|
export declare function bakeOperatorPrincipalsRefusal(v: Pick<CrossInvariantView, "imageBakes" | "operatorPrincipals">): string | undefined;
|
|
89
99
|
/**
|
|
@@ -133,6 +143,11 @@ export declare function remoteConfigProviderUrlRefusal(v: {
|
|
|
133
143
|
* 留在扫车道自持门(`boot/retention-lane.ts`)。状态型:三键都只来自 env、运行期无写点 ⇒ 热路径上恒与 boot 同答。
|
|
134
144
|
*/
|
|
135
145
|
export declare function retentionLaneRefusal(v: Pick<CrossInvariantView, "retentionPolicy" | "retentionSweep">): string | undefined;
|
|
146
|
+
/**
|
|
147
|
+
* `run-stale-heartbeat` 的判据与拒因(唯一属主;[ref] ① 同形 —— 注册表条目的 `check` 与起服第 1 段的早拒都调它)。参数取窄 `Pick`:起服第 1 段手里是
|
|
148
|
+
* 合成之前的 raw 配置(执行车道还没定形),本条不读车道。
|
|
149
|
+
*/
|
|
150
|
+
export declare function runStaleHeartbeatRefusal(v: Pick<CrossInvariantView, "runStaleSec">): string | undefined;
|
|
136
151
|
export declare const CONFIG_CROSS_INVARIANTS: readonly CrossInvariant[];
|
|
137
152
|
/**
|
|
138
153
|
* 按 id 取**一条**([ref]②:boot 面的单源化出口)。
|
|
@@ -8,17 +8,17 @@ import { judgeEnvTableReplacement } from "./env-model-table-gate.js";
|
|
|
8
8
|
import { WEB_ADMIN_ENV, httpUrlFlaws } from "@sema-agent/settings-schema";
|
|
9
9
|
import { authBridgeIssuerOf } from "./auth-bridge.js";
|
|
10
10
|
import { buildDisplaySafeUrl } from "./trace/redact.js";
|
|
11
|
-
import {
|
|
11
|
+
import { ALL_EXECUTION_LANES, executionLaneCaps } from "./execution-lane-caps.js";
|
|
12
12
|
import { DEPLOYMENT_SHAPE_PREDICATES } from "./deployment-shape.js";
|
|
13
13
|
export const LIVENESS_HEARTBEAT_MS = 30_000;
|
|
14
14
|
const anyServiceAuth = (v) => Boolean(v.authToken) || Object.keys(v.authTokens ?? {}).length > 0;
|
|
15
15
|
const mustNarrowBind = (v) => Boolean(v.allowUnauthedWrites) && !anyServiceAuth(v);
|
|
16
16
|
const directDoorConjuncts = (v) => Boolean(v.directApprovalDoor) && Boolean(v.durableApproval) && v.approvalHmacKeys.length > 0 && v.principalJwtPubkeys.length > 0 && Boolean(v.principalJwtIss) && Boolean(v.principalJwtAud);
|
|
17
17
|
function multiTenantSharedLaneRefusal(v) {
|
|
18
|
-
const lane =
|
|
18
|
+
const lane = v.remoteExec.provider;
|
|
19
19
|
if (DEPLOYMENT_SHAPE_PREDICATES.laneSeparatesTenants.holds(v))
|
|
20
20
|
return undefined;
|
|
21
|
-
const outlets =
|
|
21
|
+
const outlets = ALL_EXECUTION_LANES.filter((w) => executionLaneCaps(w).tenantSeparation === "supported");
|
|
22
22
|
return (`REQUIRE_PRINCIPAL=true (multi-tenant posture) with the "${lane}" execution lane runs every tenant's Bash on one shared target — ` +
|
|
23
23
|
`this lane does not separate tenants; set REMOTE_EXEC to ${outlets.join(" / ")}, or unset REQUIRE_PRINCIPAL for a single-user box`);
|
|
24
24
|
}
|
|
@@ -56,6 +56,20 @@ export function operatorSingleUserRefusal(v) {
|
|
|
56
56
|
return "OPERATOR_SINGLE_USER=true but OPERATOR_PRINCIPALS is also set — the two answer the same question (who is an operator) in two ways. Keep one: OPERATOR_SINGLE_USER=true (every caller of this single-user deployment) or OPERATOR_PRINCIPALS (only the named principals)";
|
|
57
57
|
return undefined;
|
|
58
58
|
}
|
|
59
|
+
export function operatorDeclarationRefusal(v) {
|
|
60
|
+
if (DEPLOYMENT_SHAPE_PREDICATES.multiTenant.holds(v) || v.operatorPrincipals.length > 0 || v.operatorSingleUser === true)
|
|
61
|
+
return undefined;
|
|
62
|
+
return ("No operator is declared for this single-user deployment: REQUIRE_PRINCIPAL is off, OPERATOR_PRINCIPALS is empty and OPERATOR_SINGLE_USER is not true, " +
|
|
63
|
+
"so no caller could use its operator endpoints (the approval queues across owners, GET /v1/diagnostics/wiring, GET /v1/outcomes, the admin and memory-governance endpoints). " +
|
|
64
|
+
"Declare who operates it in one line: OPERATOR_SINGLE_USER=true (every caller of this single-user deployment is its operator) or OPERATOR_PRINCIPALS=<principal,...> (only the named principals); " +
|
|
65
|
+
"a worker called by more than one person is multi-tenant — set REQUIRE_PRINCIPAL=true instead (MIGRATION.md, invariant operator-declaration-required). Refusing to boot.");
|
|
66
|
+
}
|
|
67
|
+
function sameOperatorDeclaration(a, b) {
|
|
68
|
+
return (DEPLOYMENT_SHAPE_PREDICATES.multiTenant.holds(a) === DEPLOYMENT_SHAPE_PREDICATES.multiTenant.holds(b) &&
|
|
69
|
+
a.operatorSingleUser === b.operatorSingleUser &&
|
|
70
|
+
a.operatorPrincipals.length === b.operatorPrincipals.length &&
|
|
71
|
+
a.operatorPrincipals.every((p, k) => p === b.operatorPrincipals[k]));
|
|
72
|
+
}
|
|
59
73
|
export function bakeOperatorPrincipalsRefusal(v) {
|
|
60
74
|
return v.imageBakes.enabled && v.operatorPrincipals.length === 0
|
|
61
75
|
? "IMAGE_BAKES_ENABLED=true but OPERATOR_PRINCIPALS is empty — the bake door runs build.sh on the privileged build host and needs named operators: with an empty list nobody can use it, and the single-user operator declaration would open it to every caller (world-writable RCE). Set OPERATOR_PRINCIPALS or disable bakes (IMAGE-API-DESIGN.md §P2.4a boot invariant)"
|
|
@@ -132,15 +146,18 @@ export function retentionLaneRefusal(v) {
|
|
|
132
146
|
return (`RETENTION_SWEEP_INTERVAL_SEC=${intervalSec} arms the retention sweep lane, but ${gaps} — the lane would enumerate domains every tick and compute nothing. ` +
|
|
133
147
|
"Set RETENTION_MAX_AGE_DAYS, or set RETENTION_SWEEP_INTERVAL_SEC=0 to leave the lane off. Refusing to boot.");
|
|
134
148
|
}
|
|
149
|
+
export function runStaleHeartbeatRefusal(v) {
|
|
150
|
+
return v.runStaleSec * 1000 <= LIVENESS_HEARTBEAT_MS
|
|
151
|
+
? `runStaleSec (${v.runStaleSec}s) must exceed the ${LIVENESS_HEARTBEAT_MS / 1000}s liveness heartbeat — the reaper would race a run that is still heartbeating normally and reap live work`
|
|
152
|
+
: undefined;
|
|
153
|
+
}
|
|
135
154
|
export const CONFIG_CROSS_INVARIANTS = [
|
|
136
155
|
{
|
|
137
156
|
id: "run-stale-heartbeat",
|
|
138
157
|
keys: ["runStaleSec"],
|
|
139
158
|
restartReason: "run-stale-heartbeat",
|
|
140
159
|
bootAnchor: { file: "src/boot/stage-01-config.ts", marker: "CROSS-INVARIANT:run-stale-heartbeat" },
|
|
141
|
-
check: ({ next }) => next
|
|
142
|
-
? `runStaleSec (${next.runStaleSec}s) must exceed the ${LIVENESS_HEARTBEAT_MS / 1000}s liveness heartbeat — the reaper would race a run that is still heartbeating normally and reap live work`
|
|
143
|
-
: undefined,
|
|
160
|
+
check: ({ next }) => runStaleHeartbeatRefusal(next),
|
|
144
161
|
},
|
|
145
162
|
{
|
|
146
163
|
id: "bind-posture",
|
|
@@ -181,6 +198,13 @@ export const CONFIG_CROSS_INVARIANTS = [
|
|
|
181
198
|
bootAnchor: { file: "src/config.ts", marker: "CROSS-INVARIANT:operator-single-user" },
|
|
182
199
|
check: ({ next }) => operatorSingleUserRefusal(next),
|
|
183
200
|
},
|
|
201
|
+
{
|
|
202
|
+
id: "operator-declaration-required",
|
|
203
|
+
keys: ["requirePrincipal", "operatorPrincipals", "operatorSingleUser"],
|
|
204
|
+
restartReason: "operator-principals",
|
|
205
|
+
bootAnchor: { file: "src/http/server.ts", marker: "CROSS-INVARIANT:operator-declaration-required" },
|
|
206
|
+
check: ({ live, next }) => (sameOperatorDeclaration(live, next) ? undefined : operatorDeclarationRefusal(next)),
|
|
207
|
+
},
|
|
184
208
|
{
|
|
185
209
|
id: "bake-operator-principals",
|
|
186
210
|
keys: ["imageBakes", "operatorPrincipals"],
|
|
@@ -203,20 +227,13 @@ export const CONFIG_CROSS_INVARIANTS = [
|
|
|
203
227
|
}
|
|
204
228
|
},
|
|
205
229
|
},
|
|
206
|
-
{
|
|
207
|
-
id: "require-execution-lane",
|
|
208
|
-
keys: ["requireExecutionLane", "remoteExec"],
|
|
209
|
-
restartReason: "execution-lane",
|
|
210
|
-
bootAnchor: { file: "src/config.ts", marker: "CROSS-INVARIANT:require-execution-lane" },
|
|
211
|
-
check: ({ next }) => executionLaneRequiredRefusal(next),
|
|
212
|
-
},
|
|
213
230
|
{
|
|
214
231
|
id: "leader-host-lane",
|
|
215
232
|
keys: ["leaderEnabled", "remoteExec"],
|
|
216
233
|
restartReason: "leader-lane",
|
|
217
234
|
bootAnchor: { file: "src/boot/execution-lane.ts", marker: "CROSS-INVARIANT:leader-host-lane" },
|
|
218
|
-
check: ({ next }) => next.leaderEnabled && next.remoteExec
|
|
219
|
-
? "LEADER_ENABLED=true on the host execution lane (REMOTE_EXEC=host,
|
|
235
|
+
check: ({ next }) => next.leaderEnabled && next.remoteExec.provider === "host"
|
|
236
|
+
? "LEADER_ENABLED=true on the host execution lane (REMOTE_EXEC=host, or a " +
|
|
220
237
|
"config.d/remote-exec.json host override) is refused: the leader wire pins ONE absolute workspace path " +
|
|
221
238
|
"(LEADER_WORKSPACE / the /home/user default) for every sub-worker, while the host adapter gives each env a " +
|
|
222
239
|
"DIFFERENT random directory — so N concurrent host workers would share one physical git worktree and " +
|
|
@@ -251,13 +268,13 @@ export const CONFIG_CROSS_INVARIANTS = [
|
|
|
251
268
|
keys: ["remoteExec", "dbBackend", "tidb", "pg"],
|
|
252
269
|
restartReason: "device-lane",
|
|
253
270
|
bootAnchor: { file: "src/boot/execution-lane.ts", marker: "CROSS-INVARIANT:device-durable-store" },
|
|
254
|
-
check: ({ next }) => next.remoteExec
|
|
271
|
+
check: ({ next }) => next.remoteExec.provider === "device" && !((next.dbBackend === "mysql" && next.tidb !== undefined) || (next.dbBackend === "pg" && next.pg !== undefined))
|
|
255
272
|
? `REMOTE_EXEC=device with DB_BACKEND=${next.dbBackend} and no SQL connection coordinates built is refused ` +
|
|
256
273
|
"[device-durable-store]: the device registry, the session↔device binding and the device audit trail are all " +
|
|
257
274
|
"SQL-backed — without a real SQL store the binding lives in this process only, so a restart forgets WHICH device " +
|
|
258
275
|
"a parked run must resume onto and a second replica cannot see it at all. Note DB_BACKEND alone is not enough: " +
|
|
259
276
|
"SESSION_BACKEND=memory (or auto with no MYSQL_HOST/PG_HOST) builds no coordinates at all. Configure a durable " +
|
|
260
|
-
"store (DB_BACKEND=mysql|pg + its *_HOST/*_USER/*_DATABASE), or
|
|
277
|
+
"store (DB_BACKEND=mysql|pg + its *_HOST/*_USER/*_DATABASE), or declare another lane (REMOTE_EXEC=none if the agent's tools need no execution environment) " +
|
|
261
278
|
"(device-executor-lane-v2 §4.7 boot invariant)"
|
|
262
279
|
: undefined,
|
|
263
280
|
},
|
|
@@ -266,11 +283,11 @@ export const CONFIG_CROSS_INVARIANTS = [
|
|
|
266
283
|
keys: ["remoteExec", "durableApproval"],
|
|
267
284
|
restartReason: "device-lane",
|
|
268
285
|
bootAnchor: { file: "src/boot/execution-lane.ts", marker: "CROSS-INVARIANT:device-durable-approval" },
|
|
269
|
-
check: ({ next }) => next.remoteExec
|
|
286
|
+
check: ({ next }) => next.remoteExec.provider === "device" && !next.durableApproval
|
|
270
287
|
? "REMOTE_EXEC=device without DURABLE_APPROVAL=true is refused [device-durable-approval]: a personal device goes " +
|
|
271
288
|
"offline (lid closed, network drop) at arbitrary points, so an in-flight approval that outlives the window MUST " +
|
|
272
289
|
"have a park exit — without the durable approval store there is none and the run is stuck with nowhere to persist. " +
|
|
273
|
-
"Set DURABLE_APPROVAL=true, or
|
|
290
|
+
"Set DURABLE_APPROVAL=true, or declare another lane (REMOTE_EXEC=none if the agent's tools need no execution environment) (device-executor-lane-v2 §4.7 boot invariant)"
|
|
274
291
|
: undefined,
|
|
275
292
|
},
|
|
276
293
|
{
|
package/dist/config-lkg.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type MigrationReceipt } from "@sema-agent/settings-schema/one-time-migrations";
|
|
2
|
-
import type
|
|
2
|
+
import { type PublishedPromptArtifact } from "@sema-agent/core";
|
|
3
3
|
/** 落盘信封。`effective`/`etag` 逐字=当时的 fetchEffective 返回(JSON verbatim 面)。`formatVersion` 的语义见头注(5 = 载荷的 prompts 是中心层唯一的那种 wire 形)。 */
|
|
4
4
|
export interface PersistedLkg {
|
|
5
5
|
formatVersion: 5;
|
package/dist/config-lkg.js
CHANGED
|
@@ -2,10 +2,11 @@ import { promises as fs } from "node:fs";
|
|
|
2
2
|
import { migrateEffectiveSnapshot } from "@sema-agent/settings-schema/one-time-migrations";
|
|
3
3
|
import { formatConfigPath } from "@sema-agent/settings-schema";
|
|
4
4
|
import { join, dirname, resolve } from "node:path";
|
|
5
|
-
import {
|
|
5
|
+
import { ensureDir } from "@sema-agent/core";
|
|
6
6
|
import { judgeConfigCandidate } from "./web-admin-client/candidate-gate.js";
|
|
7
7
|
import { centerStateBin } from "./center-credential.js";
|
|
8
8
|
import { configRootOf } from "./sema-config-dir.js";
|
|
9
|
+
import { atomicWriteFileAsync } from "./plugins/owner-only-file-mode.js";
|
|
9
10
|
export function defaultSkillCacheDir(config) {
|
|
10
11
|
return join(configRootOf(config), "skill-cache");
|
|
11
12
|
}
|
|
@@ -28,10 +29,8 @@ export function lkgReadDenyRows(configLkgPath) {
|
|
|
28
29
|
}
|
|
29
30
|
export async function saveLkg(path, worker, identity, effective, etag) {
|
|
30
31
|
const body = { formatVersion: 5, savedAt: new Date().toISOString(), worker: worker ?? "global", identity, ...(etag !== undefined ? { etag } : {}), effective };
|
|
31
|
-
|
|
32
|
-
await
|
|
33
|
-
await fs.writeFile(tmp, JSON.stringify(body), { mode: 0o600 });
|
|
34
|
-
await fs.rename(tmp, path);
|
|
32
|
+
ensureDir(dirname(path));
|
|
33
|
+
await atomicWriteFileAsync(path, JSON.stringify(body), { durability: "best-effort" });
|
|
35
34
|
}
|
|
36
35
|
export async function loadLkg(path, worker, identity) {
|
|
37
36
|
let text;
|
|
@@ -153,7 +152,7 @@ function lkgPayloadShapeProblem(effective, etag) {
|
|
|
153
152
|
const eff = effective;
|
|
154
153
|
if (typeof eff.version !== "number")
|
|
155
154
|
return "bad effective.version";
|
|
156
|
-
for (const [domain, arrayKey] of [["models", "models"], ["skills", "skills"], ["mcp", "servers"], ["scenarios", "scenarios"], ["limits", null]]) {
|
|
155
|
+
for (const [domain, arrayKey] of [["models", "models"], ["skills", "skills"], ["mcp", "servers"], ["a2a", "peers"], ["scenarios", "scenarios"], ["limits", null]]) {
|
|
157
156
|
const v = eff[domain];
|
|
158
157
|
if (v === undefined)
|
|
159
158
|
continue;
|
package/dist/config-provider.js
CHANGED
|
@@ -169,6 +169,7 @@ export function mapToServiceEffective(eff, version) {
|
|
|
169
169
|
tier: m.tier,
|
|
170
170
|
...(m.reasoning !== undefined ? { reasoning: m.reasoning } : {}),
|
|
171
171
|
...(m.vision !== undefined ? { vision: m.vision } : {}),
|
|
172
|
+
...(m.thinkingLevelMap !== undefined ? { thinkingLevelMap: m.thinkingLevelMap } : {}),
|
|
172
173
|
...(m.contextWindow !== undefined ? { contextWindow: m.contextWindow } : {}),
|
|
173
174
|
...(m.maxTokens !== undefined ? { maxTokens: m.maxTokens } : {}),
|
|
174
175
|
...(typeof m.autoCompactTokens === "number" ? { autoCompactTokens: m.autoCompactTokens } : {}),
|
|
@@ -187,6 +188,7 @@ export function mapToServiceEffective(eff, version) {
|
|
|
187
188
|
},
|
|
188
189
|
...(eff.collab?.templates?.length ? { collab: { templates: eff.collab.templates } } : {}),
|
|
189
190
|
...(eff.plugins?.plugins?.length ? { plugins: { plugins: eff.plugins.plugins } } : {}),
|
|
191
|
+
a2a: eff.a2a,
|
|
190
192
|
skills: {
|
|
191
193
|
skills: (eff.skills.skills ?? []).map((s) => ({
|
|
192
194
|
name: s.name,
|