@sema-agent/server 7.137.0 → 7.139.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 +600 -142
- package/README.md +7 -3
- package/README.zh-CN.md +6 -3
- package/USAGE.md +132 -41
- package/deploy/sema-up/README.md +1 -1
- package/deploy/sema-up/lib/lanes.json +3 -2
- package/dist/adoption/wire.d.ts +3 -3
- package/dist/approval-card.d.ts +23 -16
- package/dist/approval-card.js +1 -0
- package/dist/audit.js +1 -0
- package/dist/background-agent-name.d.ts +5 -0
- package/dist/background-agent-name.js +5 -0
- package/dist/bench/s1/arms.d.ts +1 -1
- package/dist/bench/s1/arms.js +1 -3
- package/dist/bench/s1/run-firm.js +2 -2
- package/dist/boot/budget-tracing.d.ts +1 -12
- package/dist/boot/deployment-mods.d.ts +46 -16
- package/dist/boot/deployment-mods.js +82 -6
- package/dist/boot/device-lane.d.ts +8 -3
- package/dist/boot/device-lane.js +7 -2
- package/dist/boot/execution-env.d.ts +4 -2
- package/dist/boot/execution-env.js +16 -24
- package/dist/boot/execution-lane.d.ts +1 -1
- package/dist/boot/governance-seams.d.ts +12 -18
- package/dist/boot/governance-seams.js +10 -24
- package/dist/boot/leader.d.ts +3 -0
- package/dist/boot/leader.js +1 -0
- package/dist/boot/memory-consolidation.js +2 -2
- package/dist/boot/org-delivery.js +15 -2
- package/dist/boot/resolve-spec.d.ts +4 -1
- package/dist/boot/resolve-spec.js +29 -19
- package/dist/boot/retention-lane.d.ts +14 -8
- package/dist/boot/retention-lane.js +2 -8
- package/dist/boot/runner-deps.d.ts +10 -4
- package/dist/boot/runner-deps.js +2 -0
- package/dist/boot/session-faces.d.ts +0 -3
- package/dist/boot/session-faces.js +15 -8
- package/dist/boot/stage-02-web-admin-pull.js +2 -2
- package/dist/boot/stage-04-stores.d.ts +1 -12
- package/dist/boot/stage-05-execution-env.d.ts +3 -12
- package/dist/boot/stage-05-execution-env.js +8 -5
- package/dist/boot/stage-06-runners.d.ts +3 -12
- package/dist/boot/stage-06-runners.js +5 -3
- package/dist/boot/stage-07-capability-layer.d.ts +3 -12
- package/dist/boot/stage-07-capability-layer.js +2 -2
- package/dist/boot/stage-08-reapers.d.ts +3 -12
- package/dist/boot/stage-09-leader.d.ts +3 -12
- package/dist/boot/stage-09-leader.js +2 -3
- package/dist/boot/stage-10-http-server.d.ts +3 -12
- package/dist/boot/stage-10-http-server.js +5 -3
- package/dist/boot/stores.js +4 -4
- package/dist/boot/web-admin.d.ts +5 -2
- package/dist/boot/web-admin.js +5 -5
- package/dist/brain.js +5 -5
- package/dist/budget.d.ts +17 -15
- package/dist/budget.js +2 -2
- package/dist/capabilities/mcp-probe.d.ts +36 -11
- package/dist/capabilities/mcp-probe.js +44 -5
- package/dist/capabilities/scenarios.d.ts +1 -1
- package/dist/capability-facts.d.ts +21 -7
- package/dist/capability-facts.js +13 -3
- package/dist/checkpoint-identity.d.ts +13 -6
- package/dist/config-catalog.js +14 -8
- package/dist/config-invariants.d.ts +23 -3
- package/dist/config-invariants.js +42 -0
- package/dist/config-provider.d.ts +19 -24
- package/dist/config-provider.js +27 -12
- package/dist/config-types.d.ts +25 -12
- package/dist/config.d.ts +33 -0
- package/dist/config.js +52 -20
- package/dist/delegated-session-owner.d.ts +2 -2
- package/dist/deployment-shape.d.ts +7 -7
- package/dist/device-enrollment.d.ts +41 -2
- package/dist/device-enrollment.js +27 -12
- package/dist/device-store.d.ts +58 -85
- package/dist/device-store.js +19 -49
- package/dist/device-ws-hub.js +2 -1
- package/dist/env-name-allowlist-knobs.d.ts +5 -4
- package/dist/exec-cut.d.ts +60 -0
- package/dist/exec-cut.js +36 -0
- package/dist/execution-lane-caps.d.ts +19 -0
- package/dist/execution-lane-caps.js +10 -0
- package/dist/execution-placement.d.ts +259 -0
- package/dist/execution-placement.js +199 -0
- package/dist/field-conflict.d.ts +3 -2
- package/dist/field-conflict.js +1 -0
- package/dist/gate-settlement.d.ts +71 -0
- package/dist/gate-settlement.js +40 -0
- package/dist/hooks/classic-stations.d.ts +1 -0
- package/dist/hooks/classic-stations.js +1 -0
- package/dist/hooks/command-spawn.d.ts +2 -2
- package/dist/hooks/hook-runner.js +14 -14
- package/dist/hosted-posture.d.ts +2 -2
- package/dist/http/admission.js +10 -19
- package/dist/http/checkpoint-ctx.d.ts +21 -12
- package/dist/http/checkpoint-ctx.js +4 -2
- package/dist/http/claimed-run.d.ts +1 -1
- package/dist/http/dispatch.d.ts +4 -0
- package/dist/http/dispatch.js +3 -0
- package/dist/http/durable-run-leg.js +12 -6
- package/dist/http/execution-context.d.ts +218 -0
- package/dist/http/execution-context.js +330 -0
- package/dist/http/memory-compliance-failure-reply.js +3 -0
- package/dist/http/resume-legs.d.ts +5 -11
- package/dist/http/resume-legs.js +179 -104
- package/dist/http/route-ctx.d.ts +44 -59
- package/dist/http/route-ctx.js +2 -5
- package/dist/http/routes/a2a-serve.js +10 -4
- package/dist/http/routes/agents-roster.d.ts +1 -1
- package/dist/http/routes/agents-roster.js +5 -1
- package/dist/http/routes/approvals-assistant.js +6 -6
- package/dist/http/routes/background.d.ts +29 -1
- package/dist/http/routes/background.js +29 -2
- package/dist/http/routes/capabilities.js +12 -10
- package/dist/http/routes/devices.d.ts +13 -19
- package/dist/http/routes/devices.js +21 -26
- package/dist/http/routes/mcp-reconnect.d.ts +3 -2
- package/dist/http/routes/mcp-reconnect.js +7 -5
- package/dist/http/routes/memory-consolidation.d.ts +1 -1
- package/dist/http/routes/memory-origin.d.ts +1 -1
- package/dist/http/routes/rules.js +3 -3
- package/dist/http/routes/runs.js +11 -7
- package/dist/http/routes/session-sync.js +110 -15
- package/dist/http/routes/sessions.d.ts +6 -0
- package/dist/http/routes/sessions.js +119 -13
- package/dist/http/routes/side-query.d.ts +12 -4
- package/dist/http/routes/side-query.js +6 -8
- package/dist/http/routes/tasks.js +800 -782
- package/dist/http/server.d.ts +61 -39
- package/dist/http/server.js +11 -0
- package/dist/http/session-inherit-env.d.ts +3 -4
- package/dist/http/session-inherit-env.js +1 -1
- package/dist/http/wire-types.d.ts +22 -18
- package/dist/identity-source.d.ts +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +1 -0
- package/dist/leader/wire.d.ts +7 -0
- package/dist/leader/wire.js +5 -4
- package/dist/mcp-assertion-header.d.ts +51 -40
- package/dist/mcp-assertion-header.js +10 -11
- package/dist/mcp-authorization-face.d.ts +27 -0
- package/dist/mcp-authorization-face.js +15 -0
- package/dist/memory-operator-faces.d.ts +13 -4
- package/dist/memory-operator-faces.js +1 -17
- package/dist/memory-sync-client.d.ts +53 -14
- package/dist/memory-sync-client.js +187 -92
- package/dist/memory-sync.d.ts +1 -1
- package/dist/memory-sync.js +3 -2
- package/dist/model-route-gap.d.ts +6 -22
- package/dist/model-route-gap.js +7 -5
- package/dist/mods-declaration.d.ts +110 -0
- package/dist/mods-declaration.js +109 -0
- package/dist/observability/cost-taxonomy.d.ts +2 -2
- package/dist/observability/err-text.d.ts +5 -0
- package/dist/observability/err-text.js +9 -0
- package/dist/observability/fail-open.d.ts +17 -1
- package/dist/observability/fail-open.js +17 -1
- package/dist/observability/run-terminal.js +0 -1
- package/dist/observability/secret-env-scrub.d.ts +1 -1
- package/dist/observability/secret-env-scrub.js +1 -1
- package/dist/orchestration/workflow-notify-journal.js +4 -4
- package/dist/org-memory-admission.d.ts +4 -3
- package/dist/org-memory-admission.js +6 -6
- package/dist/parked-decide.d.ts +49 -11
- package/dist/parked-decide.js +25 -26
- package/dist/parked-revive-surface.d.ts +12 -15
- package/dist/parked-revive-surface.js +3 -6
- package/dist/peer-seat.d.ts +156 -0
- package/dist/peer-seat.js +273 -0
- package/dist/permission-rule-vocab.d.ts +7 -7
- package/dist/permission-rule-vocab.js +3 -3
- package/dist/plain-string-record.d.ts +38 -0
- package/dist/plain-string-record.js +38 -0
- package/dist/plugins/approval-ask-store-file.d.ts +7 -0
- package/dist/plugins/approval-ask-store-file.js +11 -0
- package/dist/plugins/approval-ask-store-memory.d.ts +6 -0
- package/dist/plugins/approval-ask-store-memory.js +12 -0
- package/dist/plugins/approval-ask-store-sql.d.ts +22 -5
- package/dist/plugins/approval-ask-store-sql.js +30 -12
- package/dist/plugins/background-agent-store-sql.js +6 -3
- package/dist/plugins/caching-session-store.d.ts +11 -2
- package/dist/plugins/caching-session-store.js +15 -3
- package/dist/plugins/checkpoint-store-sql.d.ts +21 -25
- package/dist/plugins/checkpoint-store-sql.js +13 -15
- package/dist/plugins/device-store-sql.d.ts +25 -51
- package/dist/plugins/device-store-sql.js +49 -103
- package/dist/plugins/execution-placement-sql.d.ts +151 -0
- package/dist/plugins/execution-placement-sql.js +223 -0
- package/dist/plugins/file-history-store-sql.d.ts +7 -6
- package/dist/plugins/file-history-store-sql.js +8 -7
- package/dist/plugins/file-run-store.d.ts +6 -1
- package/dist/plugins/file-run-store.js +4 -0
- package/dist/plugins/fork-routing-session-store.d.ts +6 -0
- package/dist/plugins/fork-routing-session-store.js +16 -0
- package/dist/plugins/k8s-pod-reaper.d.ts +2 -8
- package/dist/plugins/k8s-pod-reaper.js +3 -3
- package/dist/plugins/local-checkpoint-store.d.ts +1 -11
- package/dist/plugins/local-checkpoint-store.js +0 -1
- package/dist/plugins/local-session-store.d.ts +183 -45
- package/dist/plugins/local-session-store.js +412 -105
- package/dist/plugins/mailbox-store-sql.d.ts +11 -3
- package/dist/plugins/mailbox-store-sql.js +103 -15
- package/dist/plugins/memory-key-guards.d.ts +4 -0
- package/dist/plugins/memory-key-guards.js +1 -0
- package/dist/plugins/memory-run-store.d.ts +1 -1
- package/dist/plugins/memory-sync-store-pg.d.ts +16 -5
- package/dist/plugins/memory-sync-store-tidb.d.ts +3 -3
- package/dist/plugins/one-time-migrations.d.ts +117 -6
- package/dist/plugins/one-time-migrations.js +383 -14
- package/dist/plugins/outcome-ledger-sql.d.ts +2 -2
- package/dist/plugins/permission-rule-store-sql.d.ts +13 -15
- package/dist/plugins/permission-rule-store-sql.js +34 -29
- package/dist/plugins/pg-pool.d.ts +7 -3
- package/dist/plugins/pg-session-storage.d.ts +41 -22
- package/dist/plugins/pg-session-storage.js +136 -55
- package/dist/plugins/remote-env-adb.d.ts +22 -4
- package/dist/plugins/remote-env-adb.js +70 -62
- package/dist/plugins/remote-env-device.d.ts +32 -12
- package/dist/plugins/remote-env-device.js +18 -17
- package/dist/plugins/remote-env-e2b.d.ts +19 -3
- package/dist/plugins/remote-env-e2b.js +41 -42
- package/dist/plugins/remote-env-file-error.d.ts +2 -0
- package/dist/plugins/remote-env-file-error.js +1 -1
- package/dist/plugins/remote-env-host.d.ts +23 -8
- package/dist/plugins/remote-env-host.js +66 -70
- package/dist/plugins/remote-env-k8s.d.ts +13 -16
- package/dist/plugins/remote-env-k8s.js +61 -54
- package/dist/plugins/remote-env-local-docker.d.ts +30 -5
- package/dist/plugins/remote-env-local-docker.js +46 -59
- package/dist/plugins/remote-env-ssh.d.ts +18 -4
- package/dist/plugins/remote-env-ssh.js +72 -56
- package/dist/plugins/remote-shell.d.ts +100 -3
- package/dist/plugins/remote-shell.js +166 -2
- package/dist/plugins/retention-store-sql.d.ts +23 -8
- package/dist/plugins/retention-store-sql.js +13 -1
- package/dist/plugins/run-store-sql.d.ts +13 -3
- package/dist/plugins/run-store-sql.js +5 -0
- package/dist/plugins/schema-consistency.d.ts +15 -5
- package/dist/plugins/schema-consistency.js +14 -8
- package/dist/plugins/schema-drift-sentence.d.ts +27 -0
- package/dist/plugins/schema-drift-sentence.js +38 -0
- package/dist/plugins/session-fork.d.ts +63 -12
- package/dist/plugins/session-fork.js +38 -21
- package/dist/plugins/session-ownership.d.ts +7 -0
- package/dist/plugins/session-ownership.js +5 -0
- package/dist/plugins/session-row-sql.d.ts +22 -0
- package/dist/plugins/session-row-sql.js +81 -0
- package/dist/plugins/session-store.d.ts +1 -1
- package/dist/plugins/session-workspace-cell.d.ts +17 -0
- package/dist/plugins/session-workspace-cell.js +38 -0
- package/dist/plugins/store-backend.d.ts +1 -1
- package/dist/plugins/store-backend.js +26 -14
- package/dist/plugins/store-contracts.d.ts +25 -5
- package/dist/plugins/tidb-pool.d.ts +12 -7
- package/dist/plugins/tidb-pool.js +15 -3
- package/dist/plugins/tidb-session-store.d.ts +74 -28
- package/dist/plugins/tidb-session-store.js +132 -53
- package/dist/plugins/tool-result-store-sql.d.ts +16 -8
- package/dist/plugins/tool-result-store-sql.js +26 -17
- package/dist/plugins/worktree-isolation.d.ts +3 -2
- package/dist/plugins/worktree-isolation.js +1 -7
- package/dist/project-identity.d.ts +1 -14
- package/dist/project-identity.js +0 -4
- package/dist/project-memory.d.ts +9 -15
- package/dist/project-memory.js +5 -4
- package/dist/request-key-closure.js +1 -1
- package/dist/request-value-closure.d.ts +6 -7
- package/dist/request-value-closure.js +1 -3
- package/dist/rules-consent.js +6 -4
- package/dist/run-local.d.ts +6 -0
- package/dist/run-local.js +36 -26
- package/dist/runs.d.ts +9 -2
- package/dist/runs.js +9 -2
- package/dist/sandbox-git-plane.d.ts +2 -2
- package/dist/security.d.ts +38 -12
- package/dist/security.js +8 -2
- package/dist/server-secret-env.d.ts +15 -8
- package/dist/server-secret-env.js +4 -2
- package/dist/session-children-retire.d.ts +27 -9
- package/dist/session-children-retire.js +9 -5
- package/dist/session-incarnation.d.ts +19 -10
- package/dist/session-incarnation.js +5 -3
- package/dist/session-row.d.ts +114 -5
- package/dist/session-row.js +55 -5
- package/dist/session-titler.d.ts +2 -2
- package/dist/session-workspace.d.ts +130 -0
- package/dist/session-workspace.js +83 -0
- package/dist/spec-fields.d.ts +1 -1
- package/dist/standing-answer-grant.d.ts +2 -13
- package/dist/standing-answer-grant.js +0 -7
- package/dist/task-a2a.d.ts +44 -14
- package/dist/task-a2a.js +46 -20
- package/dist/task-cwd.d.ts +6 -1
- package/dist/task-mcp.d.ts +33 -20
- package/dist/task-mcp.js +46 -22
- package/dist/tool-approval.d.ts +38 -8
- package/dist/tool-approval.js +57 -13
- package/dist/trace/core-keyset-guard.d.ts +33 -18
- 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 +20 -1
- package/dist/trace/exit-seat.js +3 -0
- package/dist/trace/extension-call-face.d.ts +33 -0
- package/dist/trace/extension-call-face.js +39 -0
- package/dist/trace/project.d.ts +26 -7
- package/dist/trace/project.js +30 -3
- package/dist/trace/redact.js +42 -13
- package/dist/trace/self-minted-wire.d.ts +240 -12
- package/dist/trace/self-minted-wire.js +100 -4
- package/dist/trace/wire-projection-faces.d.ts +6 -6
- package/dist/trace/wire-projection-faces.js +6 -5
- package/dist/url-refusal.d.ts +1 -1
- package/dist/user-authored-text.d.ts +2 -2
- package/dist/user-authored-text.js +16 -1
- package/dist/web-admin-client/apply-effective.d.ts +17 -3
- package/dist/web-admin-client/apply-effective.js +20 -10
- package/dist/web-admin-client/center-request.d.ts +3 -2
- package/dist/web-admin-client/center-request.js +2 -3
- package/dist/web-admin-client/skills-mcp.d.ts +8 -4
- package/dist/web-admin-client/skills-mcp.js +32 -18
- package/dist/web-admin-client/types.d.ts +11 -0
- package/package.json +3 -3
- package/wire-changes/server@7.138.0.json +446 -0
- package/wire-changes/server@7.139.0.json +348 -0
- package/dist/http/device-placement.d.ts +0 -175
- package/dist/http/device-placement.js +0 -145
- package/dist/http/mcp-remote-text.d.ts +0 -5
- package/dist/http/mcp-remote-text.js +0 -7
package/dist/boot/runner-deps.js
CHANGED
|
@@ -32,6 +32,7 @@ export const CONFIG_ADVISORY_CLASSIFICATIONS = new Set([
|
|
|
32
32
|
"file-history-no-store",
|
|
33
33
|
"interaction-posture-refused",
|
|
34
34
|
"memory-tools-not-mounted",
|
|
35
|
+
"peer-seat-hold",
|
|
35
36
|
"sandbox-admission-unavailable",
|
|
36
37
|
"shared-memory-not-mounted",
|
|
37
38
|
]);
|
|
@@ -131,6 +132,7 @@ export function createSharedRunnerDeps(ctx) {
|
|
|
131
132
|
lockedConfig: ctx.governanceSeams.lockedConfig,
|
|
132
133
|
retentionPolicy: ctx.governanceSeams.retentionPolicy,
|
|
133
134
|
mcpRevocations: ctx.mcpRevocations ? ctx.mcpRevocations : undefined,
|
|
135
|
+
peerSeat: ctx.peerDesk.seat,
|
|
134
136
|
};
|
|
135
137
|
return shared;
|
|
136
138
|
}
|
|
@@ -21,7 +21,6 @@ import type { createSessionStore } from "../plugins/session-store.js";
|
|
|
21
21
|
import type { TaskAttachmentStore } from "../plugins/task-attachment-store.js";
|
|
22
22
|
import type { FileHistoryErasureFace } from "../file-history-capture.js";
|
|
23
23
|
import type { OwnerAwareSessionStore } from "../security.js";
|
|
24
|
-
import type { DeviceStore } from "../device-store.js";
|
|
25
24
|
import { SessionWatchRegistry } from "../session-watch.js";
|
|
26
25
|
import type { TaskListLane } from "./task-list-lane.js";
|
|
27
26
|
import { type RunnerDeps } from "@sema-agent/core";
|
|
@@ -48,8 +47,6 @@ export interface SessionFacesCtx {
|
|
|
48
47
|
workflowCompletionInbox: WorkflowCompletionInbox | undefined;
|
|
49
48
|
/** [ref]:会话级任务清单车道(E21 级联的一条腿)。缺席 = 装配未接本车道 ⇒ 无清单可删。 */
|
|
50
49
|
taskListLane: TaskListLane | undefined;
|
|
51
|
-
/** device lane 的四表店(E21 级联的一条腿:`device_session` 绑定行随会话删)。缺席 = 非 SQL 后端。 */
|
|
52
|
-
deviceStore: DeviceStore | undefined;
|
|
53
50
|
/** per-session cwd/shellEnv 登记簿的清除口(E21 级联的一条腿,codex R1-F1)。缺席 = 装配未接。 */
|
|
54
51
|
dropSessionScoped: ((sid: string) => void) | undefined;
|
|
55
52
|
/** [ref]:会话盒(`session.<id>`)的信箱 + 它的收件人生命周期面(E21 级联的一条腿)。**成对**在场
|
|
@@ -6,11 +6,12 @@ import { setLeafAdvanceListener } from "../session-leaf-bus.js";
|
|
|
6
6
|
import { SessionWatchRegistry, posIntEnv } from "../session-watch.js";
|
|
7
7
|
import { defaultTaskRegistry, peerSessionBoxHandle } from "@sema-agent/core";
|
|
8
8
|
import { reapSessionBackgroundHard } from "../background-session-reap.js";
|
|
9
|
-
import { probeSessionChildren, retireSessionChildren, SessionChildrenStopIncompleteError } from "../session-children-retire.js";
|
|
9
|
+
import { probeSessionChildren, retireSessionChildren, sessionChildrenScope, SessionChildrenStopIncompleteError } from "../session-children-retire.js";
|
|
10
|
+
import { SessionActiveRunError } from "../execution-placement.js";
|
|
10
11
|
import { headReadOf, redactIncarnations } from "../session-incarnation.js";
|
|
11
12
|
import { recordFailOpen } from "../observability/fail-open.js";
|
|
12
13
|
export function createSessionFaces(ctx) {
|
|
13
|
-
const { config, logger, metrics, localRoot, backend, sessionStore, runStore, checkpointStore, toolResultStore, resumeAnchorStore, approvalExemptionStore, sessionPolicyStore, taskAttachmentStore, fileHistoryErasure, workflowCompletionInbox, taskListLane,
|
|
14
|
+
const { config, logger, metrics, localRoot, backend, sessionStore, runStore, checkpointStore, toolResultStore, resumeAnchorStore, approvalExemptionStore, sessionPolicyStore, taskAttachmentStore, fileHistoryErasure, workflowCompletionInbox, taskListLane, dropSessionScoped, mailboxStore, mailboxRecipientLifecycle, backgroundAgentStore, userInputLedgerStore, spaceReclaimer, } = ctx;
|
|
14
15
|
const mysqlPool = backend?.mysqlPool();
|
|
15
16
|
const auditPgPool = backend?.pgPool();
|
|
16
17
|
const auditLocalRoot = backend?.kind === "local" ? (config.localDataRoot ?? localRoot) : undefined;
|
|
@@ -49,7 +50,7 @@ export function createSessionFaces(ctx) {
|
|
|
49
50
|
return { deleted: false };
|
|
50
51
|
spaceKey = spaceReclaimer !== undefined ? head.incarnation : undefined;
|
|
51
52
|
}
|
|
52
|
-
const childScope = owner
|
|
53
|
+
const childScope = sessionChildrenScope(owner);
|
|
53
54
|
const reach = await probeSessionChildren({ agentStore: backgroundAgentStore, checkpointStore, registry: defaultTaskRegistry }, sessionId, childScope);
|
|
54
55
|
if (!reach.reachable) {
|
|
55
56
|
logger.warn("session_delete_children_still_alive", { sessionId, remaining: reach.unreachableHandles.length, handles: reach.unreachableHandles });
|
|
@@ -60,8 +61,8 @@ export function createSessionFaces(ctx) {
|
|
|
60
61
|
return { active: runs.active };
|
|
61
62
|
{
|
|
62
63
|
const children = await retireSessionChildren({ agentStore: backgroundAgentStore, checkpointStore, registry: defaultTaskRegistry }, sessionId, childScope);
|
|
63
|
-
if (children.
|
|
64
|
-
logger.info("session_children_retired", { sessionId, found: children.
|
|
64
|
+
if (children.observed.length > 0)
|
|
65
|
+
logger.info("session_children_retired", { sessionId, found: children.observed.length, stopped: children.stopped, rounds: children.rounds });
|
|
65
66
|
if (children.stopped === "incomplete") {
|
|
66
67
|
logger.warn("session_delete_children_stop_incomplete", { sessionId, remaining: children.remainingHandles.length, handles: children.remainingHandles });
|
|
67
68
|
throw new SessionChildrenStopIncompleteError(sessionId, children.remainingHandles.length);
|
|
@@ -91,8 +92,6 @@ export function createSessionFaces(ctx) {
|
|
|
91
92
|
await userInputLedgerStore.deleteBySession(sessionId);
|
|
92
93
|
if (taskListLane)
|
|
93
94
|
await taskListLane.deleteBySession(sessionId);
|
|
94
|
-
if (deviceStore)
|
|
95
|
-
await deviceStore.deleteByRootSession(sessionId);
|
|
96
95
|
dropSessionScoped?.(sessionId);
|
|
97
96
|
if (fileHistoryErasure) {
|
|
98
97
|
if (typeof fileHistoryErasure.deleteBySession === "function")
|
|
@@ -122,7 +121,15 @@ export function createSessionFaces(ctx) {
|
|
|
122
121
|
}
|
|
123
122
|
if (peerBox !== undefined)
|
|
124
123
|
await peerBox.store.drop(peerBox.scope, peerBox.handle);
|
|
125
|
-
|
|
124
|
+
let historyDeleted;
|
|
125
|
+
try {
|
|
126
|
+
historyDeleted = await ownerAware.deleteSession(sessionId, owner);
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
if (err instanceof SessionActiveRunError)
|
|
130
|
+
return { active: err.activeTaskId };
|
|
131
|
+
throw err;
|
|
132
|
+
}
|
|
126
133
|
sessionWatchRegistry?.dropSession(sessionId);
|
|
127
134
|
if (historyDeleted && spaceReclaimer !== undefined && spaceKey !== undefined) {
|
|
128
135
|
void spaceReclaimer.reclaim([{ sessionId, spaceKey }]).catch((err) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createUnpricedCeilingVerdict } from "./unpriced-ceiling-verdict.js";
|
|
2
2
|
import { createWebAdminRuntime } from "./web-admin.js";
|
|
3
3
|
import { composeExecutionLane, FILE_SOURCED_LANES } from "./execution-lane.js";
|
|
4
|
-
import {
|
|
4
|
+
import { configSourceKind } from "../config-provider.js";
|
|
5
5
|
import { logConfigDirMigration, migrateLocalConfigDirectory } from "../config-d-migration.js";
|
|
6
6
|
import { assertLocalConfigDirTrusted } from "../config-dir-trust.js";
|
|
7
7
|
import { defaultModelRefusal, refusedNameMintedRefusal } from "../model-entry-refusal.js";
|
|
@@ -10,7 +10,7 @@ import { judgeServedModelRoute } from "../model-route-endpoint.js";
|
|
|
10
10
|
import { servedModelTableLeg } from "../model-select.js";
|
|
11
11
|
export async function runStage02(ctx) {
|
|
12
12
|
const { config, localRoot, logger, metrics } = ctx;
|
|
13
|
-
const configSource =
|
|
13
|
+
const configSource = configSourceKind(config);
|
|
14
14
|
if (configSource === "local") {
|
|
15
15
|
await assertLocalConfigDirTrusted({ root: localRoot, declaredOwnerUid: config.configLocalOwnerUid });
|
|
16
16
|
logConfigDirMigration(logger, await migrateLocalConfigDirectory(localRoot));
|
|
@@ -27,18 +27,7 @@ export declare function runStage04(ctx: Awaited<ReturnType<typeof runStage03>>):
|
|
|
27
27
|
ruleConsent: import("../rules-consent.js").RuleConsentLane | undefined;
|
|
28
28
|
sessionMemoryStatusFace: import("../memory-operator-faces.js").SessionMemoryStatusFace | undefined;
|
|
29
29
|
sessionPolicyStore: import("@sema-agent/core").SessionPolicyStore | undefined;
|
|
30
|
-
sideQueryAccounting: (
|
|
31
|
-
model: string;
|
|
32
|
-
usage?: {
|
|
33
|
-
input?: number;
|
|
34
|
-
output?: number;
|
|
35
|
-
cacheRead?: number;
|
|
36
|
-
cacheWrite?: number;
|
|
37
|
-
cost?: {
|
|
38
|
-
total?: number;
|
|
39
|
-
};
|
|
40
|
-
};
|
|
41
|
-
}) => void;
|
|
30
|
+
sideQueryAccounting: import("../budget.js").SideQueryAccounting;
|
|
42
31
|
toolResultStore: import("../plugins/store-backend.js").ToolResultStoreFull | undefined;
|
|
43
32
|
tracer: import("@sema-agent/core").TracerHook;
|
|
44
33
|
backend: import("../index.js").StoreBackend | undefined;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { runStage04 } from "./stage-04-stores.js";
|
|
2
2
|
export declare function runStage05(ctx: Awaited<ReturnType<typeof runStage04>>): Promise<{
|
|
3
3
|
deploymentMods: readonly import("@sema-agent/core").ModRegistration<import("@sema-agent/core").EngineDollar>[];
|
|
4
|
+
deploymentModsLoaded: readonly import("./deployment-mods.js").LoadedModPackage[];
|
|
4
5
|
deviceLane: import("./device-lane.js").DeviceLane | undefined;
|
|
6
|
+
peerDesk: import("../peer-seat.js").PeerDesk;
|
|
5
7
|
dropSessionScoped: (sid: string) => void;
|
|
6
8
|
executionEnvFactory: import("@sema-agent/core").ExecutionEnvFactory | undefined;
|
|
7
9
|
fenceSessionOwner: (sid: string, owner: string | null) => void;
|
|
@@ -44,18 +46,7 @@ export declare function runStage05(ctx: Awaited<ReturnType<typeof runStage04>>):
|
|
|
44
46
|
ruleConsent: import("../rules-consent.js").RuleConsentLane | undefined;
|
|
45
47
|
sessionMemoryStatusFace: import("../memory-operator-faces.js").SessionMemoryStatusFace | undefined;
|
|
46
48
|
sessionPolicyStore: import("@sema-agent/core").SessionPolicyStore | undefined;
|
|
47
|
-
sideQueryAccounting: (
|
|
48
|
-
model: string;
|
|
49
|
-
usage?: {
|
|
50
|
-
input?: number;
|
|
51
|
-
output?: number;
|
|
52
|
-
cacheRead?: number;
|
|
53
|
-
cacheWrite?: number;
|
|
54
|
-
cost?: {
|
|
55
|
-
total?: number;
|
|
56
|
-
};
|
|
57
|
-
};
|
|
58
|
-
}) => void;
|
|
49
|
+
sideQueryAccounting: import("../budget.js").SideQueryAccounting;
|
|
59
50
|
toolResultStore: import("../plugins/store-backend.js").ToolResultStoreFull | undefined;
|
|
60
51
|
tracer: import("@sema-agent/core").TracerHook;
|
|
61
52
|
backend: import("../index.js").StoreBackend | undefined;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { assembleDeploymentMods } from "./deployment-mods.js";
|
|
2
2
|
import { isBrandedDeployment } from "../capabilities/brand-identity.js";
|
|
3
3
|
import { assertDeviceLaneWired, createDeviceLane } from "./device-lane.js";
|
|
4
4
|
import { assertWorkspaceSpaceReadable, createExecutionEnv } from "./execution-env.js";
|
|
@@ -7,9 +7,10 @@ import * as facts from "../capability-facts.js";
|
|
|
7
7
|
import { sessionStoreLabelOf } from "../store-posture.js";
|
|
8
8
|
import { runStore } from "./late-binds.js";
|
|
9
9
|
import { SANDBOX_GIT_PLANE_OFF_TEXT } from "../sandbox-git-plane.js";
|
|
10
|
+
import { createPeerDesk } from "../peer-seat.js";
|
|
10
11
|
export async function runStage05(ctx) {
|
|
11
12
|
const { backend, config, instanceId, logger, metrics, sessionStore, taskAttachmentStore } = ctx;
|
|
12
|
-
const deviceLane = config.remoteExec?.provider === "device" ? createDeviceLane({ config, logger, metrics, backend, replicaId: instanceId }) : undefined;
|
|
13
|
+
const deviceLane = config.remoteExec?.provider === "device" ? createDeviceLane({ config, logger, metrics, backend, seat: sessionStore.executionPlacement, replicaId: instanceId }) : undefined;
|
|
13
14
|
const headOf = headReadOf(sessionStore);
|
|
14
15
|
const spaceCommits = backend !== undefined ? () => runStore : undefined;
|
|
15
16
|
const { perTaskImage, sessionEnvSelection, perSessionCwd, setSessionCwd, setSessionShellEnv, setSessionInheritEnv, fenceSessionOwner, dropSessionScoped, executionEnvFactory, worktreeReap, sendUserFileTaskEnvs, lspManager, spaceReclaimer, sandboxSecretSeatGate, sandboxPodReaper, readSandboxGitPlane, } = createExecutionEnv({ config, logger, metrics, taskAttachmentStore, ...(deviceLane ? { deviceLane } : {}), ...(spaceCommits !== undefined ? { spaceCommits } : {}), ...(headOf !== undefined ? { headOf } : {}), ...(backend !== undefined ? { runRows: () => runStore } : {}) });
|
|
@@ -23,10 +24,12 @@ export async function runStage05(ctx) {
|
|
|
23
24
|
else if (sandboxGitPlane.reason !== "single_user" && sandboxGitPlane.reason !== "lane_without_boundary") {
|
|
24
25
|
logger.info("credential_plane_sandbox_git", { state: "off", reason: sandboxGitPlane.reason, why: SANDBOX_GIT_PLANE_OFF_TEXT[sandboxGitPlane.reason] });
|
|
25
26
|
}
|
|
26
|
-
const deploymentMods = createDeploymentMods({ metrics, ...(config.toolTrace ? { traceLogger: logger } : {}), brandIdentity: isBrandedDeployment(config) });
|
|
27
27
|
if (config.toolTrace)
|
|
28
28
|
logger.info("tool_trace_enabled", {});
|
|
29
|
-
await
|
|
30
|
-
|
|
29
|
+
const { registrations: deploymentMods, loaded: deploymentModsLoaded } = await assembleDeploymentMods({ metrics, ...(config.toolTrace ? { traceLogger: logger } : {}), brandIdentity: isBrandedDeployment(config), declaration: config.modsDeclaration, logger });
|
|
30
|
+
const peerDesk = createPeerDesk({ log: logger });
|
|
31
|
+
metrics.dynamicGauge("peer_registry_entries", "Peer desk entries (declared peer credentials registered for in-flight legs and the roster)", () => peerDesk.size().entries);
|
|
32
|
+
metrics.dynamicGauge("peer_registry_holders", "Peer desk holders of entries (host leases and engine holds), summed across entries", () => peerDesk.size().holders);
|
|
33
|
+
return { ...ctx, deploymentMods, deploymentModsLoaded, deviceLane, peerDesk, dropSessionScoped, executionEnvFactory, fenceSessionOwner, lspManager, spaceReclaimer, sandboxPodReaper, sandboxGitPlane, perSessionCwd, perTaskImage, sendUserFileTaskEnvs, sessionEnvSelection, setSessionCwd, setSessionInheritEnv, setSessionShellEnv, worktreeReap };
|
|
31
34
|
}
|
|
32
35
|
//# sourceMappingURL=stage-05-execution-env.js.map
|
|
@@ -64,7 +64,9 @@ export declare function runStage06(ctx: Awaited<ReturnType<typeof runStage05>>):
|
|
|
64
64
|
workflowsCapable: boolean;
|
|
65
65
|
orgDeliveryGate: import("@sema-agent/core").OrgDeliveryGate | undefined;
|
|
66
66
|
deploymentMods: readonly import("@sema-agent/core").ModRegistration<import("@sema-agent/core").EngineDollar>[];
|
|
67
|
+
deploymentModsLoaded: readonly import("./deployment-mods.js").LoadedModPackage[];
|
|
67
68
|
deviceLane: import("./device-lane.js").DeviceLane | undefined;
|
|
69
|
+
peerDesk: import("../peer-seat.js").PeerDesk;
|
|
68
70
|
dropSessionScoped: (sid: string) => void;
|
|
69
71
|
executionEnvFactory: import("@sema-agent/core").ExecutionEnvFactory | undefined;
|
|
70
72
|
fenceSessionOwner: (sid: string, owner: string | null) => void;
|
|
@@ -107,18 +109,7 @@ export declare function runStage06(ctx: Awaited<ReturnType<typeof runStage05>>):
|
|
|
107
109
|
ruleConsent: import("../rules-consent.js").RuleConsentLane | undefined;
|
|
108
110
|
sessionMemoryStatusFace: import("../memory-operator-faces.js").SessionMemoryStatusFace | undefined;
|
|
109
111
|
sessionPolicyStore: import("@sema-agent/core").SessionPolicyStore | undefined;
|
|
110
|
-
sideQueryAccounting: (
|
|
111
|
-
model: string;
|
|
112
|
-
usage?: {
|
|
113
|
-
input?: number;
|
|
114
|
-
output?: number;
|
|
115
|
-
cacheRead?: number;
|
|
116
|
-
cacheWrite?: number;
|
|
117
|
-
cost?: {
|
|
118
|
-
total?: number;
|
|
119
|
-
};
|
|
120
|
-
};
|
|
121
|
-
}) => void;
|
|
112
|
+
sideQueryAccounting: import("../budget.js").SideQueryAccounting;
|
|
122
113
|
toolResultStore: import("../plugins/store-backend.js").ToolResultStoreFull | undefined;
|
|
123
114
|
tracer: import("@sema-agent/core").TracerHook;
|
|
124
115
|
backend: import("../index.js").StoreBackend | undefined;
|
|
@@ -28,8 +28,9 @@ import { createSharedMemoryScopeAuthorizer } from "../shared-memory-scope-author
|
|
|
28
28
|
import { mountOrgDeliveryGate } from "./org-delivery.js";
|
|
29
29
|
import { parkedAskRedeem, runStore } from "./late-binds.js";
|
|
30
30
|
import { withInternalRunEnvs } from "../internal-run-env.js";
|
|
31
|
+
import { retentionSweepRuns } from "../plugins/retention-store-sql.js";
|
|
31
32
|
export async function runStage06(ctx) {
|
|
32
|
-
const { backend, backgroundAgentStore, brain, engineDataRoot, config, webAdmin, consolidationValve, deploymentMods, executionEnvFactory, fileHistoryStore, localRoot, logger, lspManager, mailboxRecipientLifecycle, mailboxStore, memoryEngine, memorySyncRunner, metrics, perSessionCwd, permissionRuleProvider, pricing, rosterStore, ruleConsent, sendUserFileTaskEnvs, sessionCaptureRecordStore, sessionCaptureRecords, sessionPolicyStore, sessionStore, taskAttachmentStore, taskListLane, toolResultStore, tracer, usageWindowStore } = ctx;
|
|
33
|
+
const { backend, backgroundAgentStore, brain, engineDataRoot, peerDesk, config, webAdmin, consolidationValve, deploymentMods, executionEnvFactory, fileHistoryStore, localRoot, logger, lspManager, mailboxRecipientLifecycle, mailboxStore, memoryEngine, memorySyncRunner, metrics, perSessionCwd, permissionRuleProvider, pricing, rosterStore, ruleConsent, sendUserFileTaskEnvs, sessionCaptureRecordStore, sessionCaptureRecords, sessionPolicyStore, sessionStore, taskAttachmentStore, taskListLane, toolResultStore, tracer, usageWindowStore } = ctx;
|
|
33
34
|
const { sqlWorkflowRunStore, workflowNotifyJournal, workflowCompletionInbox, deliverWorkflowCompletion, workflowNotifyGate, fleetBus, workflowRunStore, workflowJournalStore, outcomeSink, workflowRecoverOpts, workflowAgentRegistry, subagentSteerRegistry, workflowAgentSessionIndex, workflowParkDecisions, } = createWorkflowOrchestration({ config, logger, metrics, localRoot, backend, getRunStore: () => runStore });
|
|
34
35
|
const parkCommitted = backend?.checkpoint && config.durableApproval ? createParkCommitWatch(backend.checkpoint(logger)) : undefined;
|
|
35
36
|
const checkpointStore = parkCommitted?.store;
|
|
@@ -69,7 +70,6 @@ export async function runStage06(ctx) {
|
|
|
69
70
|
const retentionLaneStore = backend?.retentionLane?.();
|
|
70
71
|
assertRetentionLaneWirable({
|
|
71
72
|
intervalSec: config.retentionSweep.intervalSec,
|
|
72
|
-
policy: config.retentionPolicy,
|
|
73
73
|
executor: retentionExecutor,
|
|
74
74
|
stores: [
|
|
75
75
|
{ name: "sessionStore", store: sessionStore },
|
|
@@ -125,7 +125,7 @@ export async function runStage06(ctx) {
|
|
|
125
125
|
{ name: "checkpointStore", store: checkpointStore },
|
|
126
126
|
{ name: "toolResultStore", store: runnerOffloadStore },
|
|
127
127
|
],
|
|
128
|
-
|
|
128
|
+
retentionExecutor: retentionSweepRuns(config.retentionSweep) ? (retentionExecutor ?? null) : null,
|
|
129
129
|
});
|
|
130
130
|
const mcpRevocations = webAdmin.takeMcpRevocations();
|
|
131
131
|
const workflowModelAllowlistSnapshot = workflowModelAllowlistFor(config) ?? [];
|
|
@@ -136,6 +136,7 @@ export async function runStage06(ctx) {
|
|
|
136
136
|
config, logger, metrics, localRoot, promptSource: webAdmin.promptSource, rosterStore, backgroundAgentStore, mailboxStore, mailboxRecipientLifecycle, usageWindowStore, brain,
|
|
137
137
|
pricing, tracer, outcomeSink, elicitation, question, toolApproval, sessionStore, memoryEngine,
|
|
138
138
|
engineDataRoot,
|
|
139
|
+
peerDesk,
|
|
139
140
|
sessionCaptureRecords,
|
|
140
141
|
memorySyncRunner, toolResultStore: runnerOffloadStore, checkpointStore, sessionPolicyStore, runtimeCapsResolver, fileHistoryStore,
|
|
141
142
|
permissionRuleStore: permissionRuleProvider,
|
|
@@ -220,6 +221,7 @@ export async function runStage06(ctx) {
|
|
|
220
221
|
governanceSeams,
|
|
221
222
|
sharedMemoryStores: sharedMemoryStore ? sharedMemoryStore : undefined,
|
|
222
223
|
engineDataRoot,
|
|
224
|
+
peerDesk,
|
|
223
225
|
}),
|
|
224
226
|
sessionStore: subRunnerSessions,
|
|
225
227
|
onBackgroundChildEvent: runnerDeps.onBackgroundChildEvent ? runnerDeps.onBackgroundChildEvent : undefined,
|
|
@@ -80,7 +80,9 @@ export declare function runStage07(ctx: Awaited<ReturnType<typeof runStage06>>):
|
|
|
80
80
|
workflowsCapable: boolean;
|
|
81
81
|
orgDeliveryGate: import("@sema-agent/core").OrgDeliveryGate | undefined;
|
|
82
82
|
deploymentMods: readonly import("@sema-agent/core").ModRegistration<import("@sema-agent/core").EngineDollar>[];
|
|
83
|
+
deploymentModsLoaded: readonly import("./deployment-mods.js").LoadedModPackage[];
|
|
83
84
|
deviceLane: import("./device-lane.js").DeviceLane | undefined;
|
|
85
|
+
peerDesk: import("../peer-seat.js").PeerDesk;
|
|
84
86
|
dropSessionScoped: (sid: string) => void;
|
|
85
87
|
executionEnvFactory: import("@sema-agent/core").ExecutionEnvFactory | undefined;
|
|
86
88
|
fenceSessionOwner: (sid: string, owner: string | null) => void;
|
|
@@ -123,18 +125,7 @@ export declare function runStage07(ctx: Awaited<ReturnType<typeof runStage06>>):
|
|
|
123
125
|
ruleConsent: import("../rules-consent.js").RuleConsentLane | undefined;
|
|
124
126
|
sessionMemoryStatusFace: import("../memory-operator-faces.js").SessionMemoryStatusFace | undefined;
|
|
125
127
|
sessionPolicyStore: import("@sema-agent/core").SessionPolicyStore | undefined;
|
|
126
|
-
sideQueryAccounting: (
|
|
127
|
-
model: string;
|
|
128
|
-
usage?: {
|
|
129
|
-
input?: number;
|
|
130
|
-
output?: number;
|
|
131
|
-
cacheRead?: number;
|
|
132
|
-
cacheWrite?: number;
|
|
133
|
-
cost?: {
|
|
134
|
-
total?: number;
|
|
135
|
-
};
|
|
136
|
-
};
|
|
137
|
-
}) => void;
|
|
128
|
+
sideQueryAccounting: import("../budget.js").SideQueryAccounting;
|
|
138
129
|
toolResultStore: import("../plugins/store-backend.js").ToolResultStoreFull | undefined;
|
|
139
130
|
tracer: import("@sema-agent/core").TracerHook;
|
|
140
131
|
backend: import("../index.js").StoreBackend | undefined;
|
|
@@ -29,7 +29,7 @@ import { buildDisplaySafeUrl } from "../trace/redact.js";
|
|
|
29
29
|
import * as facts from "../capability-facts.js";
|
|
30
30
|
import { WEB_ADMIN_ENV } from "@sema-agent/settings-schema";
|
|
31
31
|
export async function runStage07(ctx) {
|
|
32
|
-
const { approvalAskAudit, approvalExemptionStore, backend, backgroundAgentStore, brain, checkpointStore, config, webAdmin, counterDegradeHook, durableEnabled, instanceId, localRoot, logger, question, runner, runnerDeps, sendUserFileToolSpec, sessionEnvSelection, sessionStore, subRunner, subRunnerSessions, taskListLane, toolApproval } = ctx;
|
|
32
|
+
const { approvalAskAudit, approvalExemptionStore, backend, backgroundAgentStore, brain, checkpointStore, config, webAdmin, counterDegradeHook, peerDesk, durableEnabled, instanceId, localRoot, logger, question, runner, runnerDeps, sendUserFileToolSpec, sessionEnvSelection, sessionStore, subRunner, subRunnerSessions, taskListLane, toolApproval } = ctx;
|
|
33
33
|
const authorize = createAuthorizer(config, sessionStore);
|
|
34
34
|
const runStore = backend ? backend.run() : undefined;
|
|
35
35
|
bindRunStore(runStore);
|
|
@@ -153,7 +153,7 @@ export async function runStage07(ctx) {
|
|
|
153
153
|
: new RateLimiter(config.rateLimitPerMin);
|
|
154
154
|
bindRateLimiter(rateLimiter);
|
|
155
155
|
let skills = loadDeploymentSkills(config, logger);
|
|
156
|
-
skills = await webAdmin.applyCenterCapabilities(skills);
|
|
156
|
+
skills = await webAdmin.applyCenterCapabilities(skills, peerDesk, peerDesk.lease("roster"));
|
|
157
157
|
const repoClient = config.gitApiBaseUrl ? createRepoClient(config.gitApiKind, config.gitApiBaseUrl, config.gitApiToken) : undefined;
|
|
158
158
|
const webSearchCfg = webSearchConfigFromEnv();
|
|
159
159
|
const webSearch = webSearchCfg ? createWebSearchBackend(webSearchCfg) : undefined;
|
|
@@ -93,7 +93,9 @@ export declare function runStage08(ctx: Awaited<ReturnType<typeof runStage07>>):
|
|
|
93
93
|
workflowsCapable: boolean;
|
|
94
94
|
orgDeliveryGate: import("@sema-agent/core").OrgDeliveryGate | undefined;
|
|
95
95
|
deploymentMods: readonly import("@sema-agent/core").ModRegistration<import("@sema-agent/core").EngineDollar>[];
|
|
96
|
+
deploymentModsLoaded: readonly import("./deployment-mods.js").LoadedModPackage[];
|
|
96
97
|
deviceLane: import("./device-lane.js").DeviceLane | undefined;
|
|
98
|
+
peerDesk: import("../peer-seat.js").PeerDesk;
|
|
97
99
|
dropSessionScoped: (sid: string) => void;
|
|
98
100
|
executionEnvFactory: import("@sema-agent/core").ExecutionEnvFactory | undefined;
|
|
99
101
|
fenceSessionOwner: (sid: string, owner: string | null) => void;
|
|
@@ -136,18 +138,7 @@ export declare function runStage08(ctx: Awaited<ReturnType<typeof runStage07>>):
|
|
|
136
138
|
ruleConsent: import("../rules-consent.js").RuleConsentLane | undefined;
|
|
137
139
|
sessionMemoryStatusFace: import("../memory-operator-faces.js").SessionMemoryStatusFace | undefined;
|
|
138
140
|
sessionPolicyStore: import("@sema-agent/core").SessionPolicyStore | undefined;
|
|
139
|
-
sideQueryAccounting: (
|
|
140
|
-
model: string;
|
|
141
|
-
usage?: {
|
|
142
|
-
input?: number;
|
|
143
|
-
output?: number;
|
|
144
|
-
cacheRead?: number;
|
|
145
|
-
cacheWrite?: number;
|
|
146
|
-
cost?: {
|
|
147
|
-
total?: number;
|
|
148
|
-
};
|
|
149
|
-
};
|
|
150
|
-
}) => void;
|
|
141
|
+
sideQueryAccounting: import("../budget.js").SideQueryAccounting;
|
|
151
142
|
toolResultStore: import("../plugins/store-backend.js").ToolResultStoreFull | undefined;
|
|
152
143
|
tracer: import("@sema-agent/core").TracerHook;
|
|
153
144
|
backend: import("../index.js").StoreBackend | undefined;
|
|
@@ -117,7 +117,9 @@ export declare function runStage09(ctx: Awaited<ReturnType<typeof runStage08>>):
|
|
|
117
117
|
workflowsCapable: boolean;
|
|
118
118
|
orgDeliveryGate: import("@sema-agent/core").OrgDeliveryGate | undefined;
|
|
119
119
|
deploymentMods: readonly import("@sema-agent/core").ModRegistration<import("@sema-agent/core").EngineDollar>[];
|
|
120
|
+
deploymentModsLoaded: readonly import("./deployment-mods.js").LoadedModPackage[];
|
|
120
121
|
deviceLane: import("./device-lane.js").DeviceLane | undefined;
|
|
122
|
+
peerDesk: import("../peer-seat.js").PeerDesk;
|
|
121
123
|
dropSessionScoped: (sid: string) => void;
|
|
122
124
|
executionEnvFactory: import("@sema-agent/core").ExecutionEnvFactory | undefined;
|
|
123
125
|
fenceSessionOwner: (sid: string, owner: string | null) => void;
|
|
@@ -160,18 +162,7 @@ export declare function runStage09(ctx: Awaited<ReturnType<typeof runStage08>>):
|
|
|
160
162
|
ruleConsent: import("../rules-consent.js").RuleConsentLane | undefined;
|
|
161
163
|
sessionMemoryStatusFace: import("../memory-operator-faces.js").SessionMemoryStatusFace | undefined;
|
|
162
164
|
sessionPolicyStore: import("@sema-agent/core").SessionPolicyStore | undefined;
|
|
163
|
-
sideQueryAccounting: (
|
|
164
|
-
model: string;
|
|
165
|
-
usage?: {
|
|
166
|
-
input?: number;
|
|
167
|
-
output?: number;
|
|
168
|
-
cacheRead?: number;
|
|
169
|
-
cacheWrite?: number;
|
|
170
|
-
cost?: {
|
|
171
|
-
total?: number;
|
|
172
|
-
};
|
|
173
|
-
};
|
|
174
|
-
}) => void;
|
|
165
|
+
sideQueryAccounting: import("../budget.js").SideQueryAccounting;
|
|
175
166
|
toolResultStore: import("../plugins/store-backend.js").ToolResultStoreFull | undefined;
|
|
176
167
|
tracer: import("@sema-agent/core").TracerHook;
|
|
177
168
|
backend: import("../index.js").StoreBackend | undefined;
|
|
@@ -6,9 +6,8 @@ import { createLeaderFace } from "./leader.js";
|
|
|
6
6
|
import { assertStaticWiringConsistent } from "../http/routes/diagnostics.js";
|
|
7
7
|
import { buildDisplaySafeUrl } from "../trace/redact.js";
|
|
8
8
|
export function runStage09(ctx) {
|
|
9
|
-
const { approvalExemptionStore, backend, backgroundAgentStore, brain, checkpointStore, checkpointCtxSealing, config, webAdmin,
|
|
9
|
+
const { approvalExemptionStore, backend, backgroundAgentStore, brain, checkpointStore, checkpointCtxSealing, config, webAdmin, deploymentMods, dropSessionScoped, durableEnabled, executionEnvFactory, fileHistoryErasure, governanceSeams, localRoot, logger, mailboxRecipientLifecycle, mailboxStore, metrics, pricing, resumeAnchorStore, runStore, runnerDeps, sessionPolicyStore, sessionStore, streamApprovalGate, taskAttachmentStore, spaceReclaimer, taskListLane, toolResultStore, tracer, usageWindowStore, userInputLedgerStore, workflowCompletionInbox } = ctx;
|
|
10
10
|
const { ownerAware, sessionAudit, sessionWatchRegistry, purgeSession, instrumentDegenerate, planCacheProbe } = createSessionFaces({
|
|
11
|
-
deviceStore: deviceLane?.store,
|
|
12
11
|
dropSessionScoped,
|
|
13
12
|
config, logger, metrics, localRoot, backend, sessionStore, runStore, checkpointStore, toolResultStore,
|
|
14
13
|
resumeAnchorStore, approvalExemptionStore, sessionPolicyStore, taskAttachmentStore, fileHistoryErasure,
|
|
@@ -17,7 +16,7 @@ export function runStage09(ctx) {
|
|
|
17
16
|
userInputLedgerStore,
|
|
18
17
|
...(spaceReclaimer !== undefined ? { spaceReclaimer } : {}),
|
|
19
18
|
});
|
|
20
|
-
const leaderEndpoint = createLeaderFace({ config, logger, brain, pricing, executionEnvFactory, toolResultStore, sessionStore, checkpointStore, checkpointCtxSealing, governanceSeams, backend, tracer, usageWindowStore, promptSource: webAdmin.promptSource, onError: runnerDeps.onError });
|
|
19
|
+
const leaderEndpoint = createLeaderFace({ config, logger, brain, pricing, executionEnvFactory, toolResultStore, sessionStore, checkpointStore, checkpointCtxSealing, governanceSeams, backend, tracer, usageWindowStore, promptSource: webAdmin.promptSource, onError: runnerDeps.onError, deploymentMods });
|
|
21
20
|
const drainState = { draining: false };
|
|
22
21
|
const authBridgeIssuer = authBridgeIssuerOf(config)?.issuer;
|
|
23
22
|
const webAdminJwtVerifier = authBridgeIssuer
|
|
@@ -116,7 +116,9 @@ export declare function runStage10(ctx: Awaited<ReturnType<typeof runStage09>>):
|
|
|
116
116
|
workflowsCapable: boolean;
|
|
117
117
|
orgDeliveryGate: import("@sema-agent/core").OrgDeliveryGate | undefined;
|
|
118
118
|
deploymentMods: readonly import("@sema-agent/core").ModRegistration<import("@sema-agent/core").EngineDollar>[];
|
|
119
|
+
deploymentModsLoaded: readonly import("./deployment-mods.js").LoadedModPackage[];
|
|
119
120
|
deviceLane: import("./device-lane.js").DeviceLane | undefined;
|
|
121
|
+
peerDesk: import("../peer-seat.js").PeerDesk;
|
|
120
122
|
dropSessionScoped: (sid: string) => void;
|
|
121
123
|
executionEnvFactory: import("@sema-agent/core").ExecutionEnvFactory | undefined;
|
|
122
124
|
fenceSessionOwner: (sid: string, owner: string | null) => void;
|
|
@@ -159,18 +161,7 @@ export declare function runStage10(ctx: Awaited<ReturnType<typeof runStage09>>):
|
|
|
159
161
|
ruleConsent: import("../rules-consent.js").RuleConsentLane | undefined;
|
|
160
162
|
sessionMemoryStatusFace: import("../memory-operator-faces.js").SessionMemoryStatusFace | undefined;
|
|
161
163
|
sessionPolicyStore: import("@sema-agent/core").SessionPolicyStore | undefined;
|
|
162
|
-
sideQueryAccounting: (
|
|
163
|
-
model: string;
|
|
164
|
-
usage?: {
|
|
165
|
-
input?: number;
|
|
166
|
-
output?: number;
|
|
167
|
-
cacheRead?: number;
|
|
168
|
-
cacheWrite?: number;
|
|
169
|
-
cost?: {
|
|
170
|
-
total?: number;
|
|
171
|
-
};
|
|
172
|
-
};
|
|
173
|
-
}) => void;
|
|
164
|
+
sideQueryAccounting: import("../budget.js").SideQueryAccounting;
|
|
174
165
|
toolResultStore: import("../plugins/store-backend.js").ToolResultStoreFull | undefined;
|
|
175
166
|
tracer: import("@sema-agent/core").TracerHook;
|
|
176
167
|
backend: import("../plugins/store-backend.js").StoreBackend | undefined;
|
|
@@ -29,7 +29,7 @@ import { bindServerLateSeats } from "./late-binds.js";
|
|
|
29
29
|
import { serviceVersion } from "../service-version.js";
|
|
30
30
|
import { buildDisplaySafeUrl } from "../trace/redact.js";
|
|
31
31
|
export async function runStage10(ctx) {
|
|
32
|
-
const { approvalAskAudit, approvalExemptionStore, approvalNonceStore, authorize, backend, backgroundAgentStore, brain, breakerState, centerRuntimeCapsResolver, checkpointStore, checkpointCtxSealing, parkCommits, config, webAdmin, consolidationValve, costQuota, deviceLane, drainState, durableEnabled, elicitation, fenceSessionOwner, fileHistoryStore, fleetBus, fleetLease, fleetUsage, governanceSeams, handslessRunner, hookAgent, hookLlm, hookWakeBus, imageBakes, imageIndex, instanceId, instrumentDegenerate, leaderEndpoint, loadedSkills, localRoot, logger, lspManager, mcpRevocations, memoryBundleFaces, memoryComplianceFaces, memoryConsolidationFaces, memoryEngine, memoryExportBackend, memoryOptOutGrantStore, memoryOriginFaces, memoryPosture, memorySyncCursors, memorySyncRunner, metrics, modelUsageTracker, orgMemoryAdmission, otelExporter, outcomeSink, ownerAware, parkedReviveInheritedGate, parkedReviveSurface, perSessionCwd, perTaskImage, planCacheProbe, pricing, principalCaps, promptManifestTracker, purgeSession, question, rateLimiter, reaper, webAdminJwtVerifier, resumeAnchorStore, retentionLaneStarted, retentionLaneStore, ruleConsent, runStore, runner, runnerDeps, runtimeCapsPeekResolver, sandboxGitPlane, scenarioDetails, scenarios, selectEnvTool, sendFileLedger, sendUserFileEmitter, sendUserFileToolSpec, sessionAudit, sessionEnvSelection, sessionMemoryStatusFace, sessionPolicyStore, sessionTitler, sessionWatchRegistry, setSessionCwd, setSessionInheritEnv, setSessionShellEnv, sharedMemoryStore, sideQueryAccounting, sqlEngine, sqlWorkflowRunStore, staticWiring, storePosture, subRunner, subagentSteerRegistry, taskAttachmentStore, taskLimitCaps, taskTimeoutSec, toolApproval, toolResultStore, usageWindowStore, userInputLedger, webSearchProvider, workflowAgentRegistry, workflowAgentSessionIndex, workflowParkDecisions, workflowCompletionInbox, workflowJournalStore, workflowModelAllowlistSnapshot, workflowNotifyGate, workflowNotifyJournal, workflowRecoverOpts, workflowRunStore, workflowsCapable, orgDeliveryGate } = ctx;
|
|
32
|
+
const { peerDesk, approvalAskAudit, approvalExemptionStore, approvalNonceStore, authorize, backend, backgroundAgentStore, brain, breakerState, centerRuntimeCapsResolver, checkpointStore, checkpointCtxSealing, parkCommits, config, webAdmin, consolidationValve, costQuota, deploymentModsLoaded, deviceLane, drainState, durableEnabled, elicitation, fenceSessionOwner, fileHistoryStore, fleetBus, fleetLease, fleetUsage, governanceSeams, handslessRunner, hookAgent, hookLlm, hookWakeBus, imageBakes, imageIndex, instanceId, instrumentDegenerate, leaderEndpoint, loadedSkills, localRoot, logger, lspManager, mcpRevocations, memoryBundleFaces, memoryComplianceFaces, memoryConsolidationFaces, memoryEngine, memoryExportBackend, memoryOptOutGrantStore, memoryOriginFaces, memoryPosture, memorySyncCursors, memorySyncRunner, metrics, modelUsageTracker, orgMemoryAdmission, otelExporter, outcomeSink, ownerAware, parkedReviveInheritedGate, parkedReviveSurface, perSessionCwd, perTaskImage, planCacheProbe, pricing, principalCaps, promptManifestTracker, purgeSession, question, rateLimiter, reaper, webAdminJwtVerifier, resumeAnchorStore, retentionLaneStarted, retentionLaneStore, ruleConsent, runStore, runner, runnerDeps, runtimeCapsPeekResolver, sandboxGitPlane, scenarioDetails, scenarios, selectEnvTool, sendFileLedger, sendUserFileEmitter, sendUserFileToolSpec, sessionAudit, sessionEnvSelection, sessionMemoryStatusFace, sessionPolicyStore, sessionTitler, sessionWatchRegistry, setSessionCwd, setSessionInheritEnv, setSessionShellEnv, sharedMemoryStore, sideQueryAccounting, sqlEngine, sqlWorkflowRunStore, staticWiring, storePosture, subRunner, subagentSteerRegistry, taskAttachmentStore, taskLimitCaps, taskTimeoutSec, toolApproval, toolResultStore, usageWindowStore, userInputLedger, webSearchProvider, workflowAgentRegistry, workflowAgentSessionIndex, workflowParkDecisions, workflowCompletionInbox, workflowJournalStore, workflowModelAllowlistSnapshot, workflowNotifyGate, workflowNotifyJournal, workflowRecoverOpts, workflowRunStore, workflowsCapable, orgDeliveryGate } = ctx;
|
|
33
33
|
const stores = {
|
|
34
34
|
runStore,
|
|
35
35
|
resumeAnchorStore: resumeAnchorStore ? resumeAnchorStore : undefined,
|
|
@@ -105,6 +105,7 @@ export async function runStage10(ctx) {
|
|
|
105
105
|
sessionMirrorRuling: principalCaps
|
|
106
106
|
? async (p) => (await principalCaps.executionRuling(p))?.sessionMirror
|
|
107
107
|
: undefined,
|
|
108
|
+
executionRuling: principalCaps ? (p) => principalCaps.executionRuling(p) : undefined,
|
|
108
109
|
instrumentDegenerate,
|
|
109
110
|
sideQueryAccounting,
|
|
110
111
|
parkedReviveSurface: parkedReviveSurface ? parkedReviveSurface : undefined,
|
|
@@ -118,7 +119,6 @@ export async function runStage10(ctx) {
|
|
|
118
119
|
planCacheProbe,
|
|
119
120
|
};
|
|
120
121
|
const governance = {
|
|
121
|
-
authorize,
|
|
122
122
|
webAdminJwtVerifier: webAdminJwtVerifier ? webAdminJwtVerifier : undefined,
|
|
123
123
|
rateLimiter,
|
|
124
124
|
costQuota,
|
|
@@ -169,6 +169,7 @@ export async function runStage10(ctx) {
|
|
|
169
169
|
webSearchProvider,
|
|
170
170
|
sealedKeyPublic: webAdmin.sealedKeyPublic,
|
|
171
171
|
sandboxGitPlane,
|
|
172
|
+
deploymentModPackages: deploymentModsLoaded.length,
|
|
172
173
|
instanceId,
|
|
173
174
|
capabilities: {
|
|
174
175
|
version: serviceVersion(),
|
|
@@ -199,6 +200,7 @@ export async function runStage10(ctx) {
|
|
|
199
200
|
};
|
|
200
201
|
const resolveSpec = createResolveSpec({
|
|
201
202
|
config, logger, metrics, localRoot, scenarios, loadedSkills, principalCaps, centerRuntimeCapsResolver,
|
|
203
|
+
peerDesk,
|
|
202
204
|
getKeyResolver: () => webAdmin.getKeyResolver(),
|
|
203
205
|
taskAttachmentStore, perSessionCwd, setSessionCwd, setSessionShellEnv, fenceSessionOwner,
|
|
204
206
|
hookLlm, hookAgent, fleetBus, hookWakeBus, resumeAnchorStore, ownerAware, taskLimitCaps, taskTimeoutSec,
|
|
@@ -212,7 +214,7 @@ export async function runStage10(ctx) {
|
|
|
212
214
|
const runnerFor = createHandsRunnerSelector({ full: runner, handsless: handslessRunner });
|
|
213
215
|
const sideQuery = createSideQueryLane({ brain, config, getKeyResolver: () => webAdmin.getKeyResolver() });
|
|
214
216
|
const scenarioGate = createScenarioGate({ config, scenarios, principalCaps, logger }, "peek");
|
|
215
|
-
const server = createHttpServer({ runner, runnerFor, sideQuery, scenarioGate, config, resolveSpec, stores, coordinators, seams, observability, governance, deployment, knobs });
|
|
217
|
+
const server = createHttpServer({ runner, runnerFor, sideQuery, scenarioGate, peerDesk, config, authorize, resolveSpec, stores, coordinators, seams, observability, governance, deployment, knobs });
|
|
216
218
|
bindServerLateSeats({ config, logger, server });
|
|
217
219
|
const fleetReconcile = startFleetReconciler({
|
|
218
220
|
bus: fleetBus,
|
package/dist/boot/stores.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
2
|
import { FileBackgroundAgentStore, FileMailboxStore, FileRosterStore, InMemoryUsageWindowStore, mailboxCrossProcessMountVerdict } from "@sema-agent/core";
|
|
3
3
|
import { createCorruptReadFailOpenSeat } from "../observability/corrupt-read-seat.js";
|
|
4
|
-
import { createMemorySyncRunner, createMemorySyncTransport } from "../memory-sync-client.js";
|
|
4
|
+
import { buildMemorySyncEnabledFields, createMemorySyncRunner, createMemorySyncTransport } from "../memory-sync-client.js";
|
|
5
5
|
import { memoryEmbedderFor } from "../plugins/memory-embedder.js";
|
|
6
6
|
import { ensurePgMemoryEmbedderMetaSchema, reconcileEmbedderFingerprint } from "../plugins/memory-embedder-fingerprint.js";
|
|
7
7
|
import { PgMemoryEngineBackend, ensurePgMemoryEngineSchema } from "../plugins/memory-engine-pg.js";
|
|
@@ -39,7 +39,6 @@ import { buildMemoryPosture } from "../memory-posture.js";
|
|
|
39
39
|
import { headReadOf } from "../session-incarnation.js";
|
|
40
40
|
import { establishSqlEnginePosture, sqlPoolsOf } from "../sql-engine-posture.js";
|
|
41
41
|
import { buildStorePosture } from "../store-posture.js";
|
|
42
|
-
import { buildDisplaySafeUrl } from "../trace/redact.js";
|
|
43
42
|
const DARK_REASON_PROSE = {
|
|
44
43
|
engine_off: () => "MEMORY_ENGINE=off",
|
|
45
44
|
multi_tenant_file_backend: () => "multi-tenant on the FILE backend (no tenant isolation; set MEMORY_ENGINE_BACKEND=pg|tidb to light up)",
|
|
@@ -364,16 +363,17 @@ export async function openStores(ctx) {
|
|
|
364
363
|
let memorySyncRunner;
|
|
365
364
|
if (config.memorySync) {
|
|
366
365
|
if (memoryEngine) {
|
|
366
|
+
const transport = createMemorySyncTransport({ url: config.memorySync.url, token: config.memorySync.token });
|
|
367
367
|
memorySyncRunner = createMemorySyncRunner({
|
|
368
368
|
backend: memoryEngine.backend,
|
|
369
369
|
scope: config.memorySync.scope,
|
|
370
370
|
memoryRoot: memoryEngine.root,
|
|
371
|
-
transport
|
|
371
|
+
transport,
|
|
372
372
|
log: logger,
|
|
373
373
|
...(config.memorySync.maxPushEntries !== undefined ? { maxPushEntries: config.memorySync.maxPushEntries } : {}),
|
|
374
374
|
...(config.memorySync.maxPullEntries !== undefined ? { maxPullEntries: config.memorySync.maxPullEntries } : {}),
|
|
375
375
|
});
|
|
376
|
-
logger.info("memory_sync_enabled",
|
|
376
|
+
logger.info("memory_sync_enabled", buildMemorySyncEnabledFields(transport.peer, config.memorySync.scope, memorySyncRunner.cursorPathFor(config.memorySync.scope)));
|
|
377
377
|
memorySyncRunner.trigger("boot");
|
|
378
378
|
}
|
|
379
379
|
else {
|
package/dist/boot/web-admin.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ import { type CandidateRejection } from "../web-admin-client/candidate-gate.js";
|
|
|
20
20
|
import { type ConfigApplyLedgerView } from "../web-admin-client/apply-ledger.js";
|
|
21
21
|
import type { CenterPullView } from "../web-admin-client/pull-state.js";
|
|
22
22
|
import type { LimitSync } from "./limit-sync.js";
|
|
23
|
+
import type { PeerDesk, PeerLease } from "../peer-seat.js";
|
|
23
24
|
export interface WebAdminRuntimeCtx {
|
|
24
25
|
config: ServiceConfig;
|
|
25
26
|
logger: Logger;
|
|
@@ -53,8 +54,10 @@ export interface WebAdminRuntime {
|
|
|
53
54
|
readonly checkpointCtxSealing: CheckpointCtxSealing | undefined;
|
|
54
55
|
/** core `CenterPromptSource`(RunnerDeps / subRunner 必须同实例)。 */
|
|
55
56
|
readonly promptSource: CenterPromptSource;
|
|
56
|
-
/** center skills overlay → plugins 消费 → boot LKG 落盘/skill-stale 判定 → mcp 解析。返回新的 skills 表。
|
|
57
|
-
|
|
57
|
+
/** center skills overlay → plugins 消费 → boot LKG 落盘/skill-stale 判定 → mcp / a2a 解析。返回新的 skills 表。
|
|
58
|
+
* 名册(mcp / a2a 两域)条目的件在 `rosterLease`(起服开一只、进程寿命不放)下登记进 `desk`,`config.mcpServers` / `config.a2aPeers`
|
|
59
|
+
* 里是带引用、不带件值的声明。 */
|
|
60
|
+
applyCenterCapabilities(skills: LoadedSkill[], desk: Pick<PeerDesk, "declare">, rosterLease: PeerLease): Promise<LoadedSkill[]>;
|
|
58
61
|
/** center 声明场景 overlay(就地写进传入的两张表)。 */
|
|
59
62
|
applyCenterScenarios(t: CenterScenarioOverlayTargets): void;
|
|
60
63
|
/** per-model key resolver 首建(原位调用,见文件头注 5)。 */
|
package/dist/boot/web-admin.js
CHANGED
|
@@ -17,7 +17,7 @@ import { answerStillCurrent, centerStateBin, credentialIdentityNow, judgeCenterC
|
|
|
17
17
|
import { createCenterConfigTier } from "../center-config-tier.js";
|
|
18
18
|
import { buildCenterCredentialHealthView, createCenterCredentialRenewer } from "../center-credential-renewer.js";
|
|
19
19
|
import { centerManagedConfigKeys } from "../web-admin-client/apply-effective.js";
|
|
20
|
-
import { createConfigProvider, raceBootFetch,
|
|
20
|
+
import { configSourceKind, createConfigProvider, raceBootFetch, BOOT_FETCH_DEFERRED } from "../config-provider.js";
|
|
21
21
|
import { ConfigDirUntrustedError } from "../config-dir-trust.js";
|
|
22
22
|
import { createKeyResolver } from "../key-resolver.js";
|
|
23
23
|
import { buildSealedKeyPublicFace, ensureCheckpointCtxSealing, ensureSealedKeyStore, reportExecutionPublicKey } from "../sealed-key.js";
|
|
@@ -161,7 +161,7 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
161
161
|
catch (err) {
|
|
162
162
|
logger.warn("checkpoint_ctx_sealing_unavailable", { err: err instanceof Error ? err.message : String(err), dir: join(sealedKeyDir, "checkpoint-ctx-keys"), note: "suspended tasks' request credentials cannot be sealed on this host; with durable approvals on the boot refuses — make that directory (under the sealed-key custody directory: SEALED_KEY_DIR, default <data root>/sealed-key) creatable and chmod-able by the service, or repair / remove a key file there whose public and private halves do not belong together" });
|
|
163
163
|
}
|
|
164
|
-
const configProvider =
|
|
164
|
+
const configProvider = configSourceKind(config) !== undefined
|
|
165
165
|
? createConfigProvider({
|
|
166
166
|
...(config.configProvider ? { provider: config.configProvider } : {}),
|
|
167
167
|
...(cc ? { webAdmin: { baseUrl: cc.baseUrl, credential: cc.credential, worker: cc.worker, dryRun: cc.dryRun } } : {}),
|
|
@@ -735,7 +735,7 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
735
735
|
return "not-wired";
|
|
736
736
|
return (await manualRefresh()) === "failed" ? "failed" : "triggered";
|
|
737
737
|
},
|
|
738
|
-
async applyCenterCapabilities(skills) {
|
|
738
|
+
async applyCenterCapabilities(skills, desk, rosterLease) {
|
|
739
739
|
if (effective?.skills)
|
|
740
740
|
skills = await applySkillsManifest(skills, effective.skills, candidateSource(), logger);
|
|
741
741
|
if (effective?.plugins !== undefined) {
|
|
@@ -775,10 +775,10 @@ export async function createWebAdminRuntime(ctx) {
|
|
|
775
775
|
}
|
|
776
776
|
}
|
|
777
777
|
if (effective?.mcp)
|
|
778
|
-
config.mcpServers = resolveMcpServers(effective.mcp, logger);
|
|
778
|
+
config.mcpServers = resolveMcpServers(effective.mcp, desk, rosterLease, logger);
|
|
779
779
|
mcpRevocations.applyEnabledEntries(enabledMcpEntries(effective?.mcp), { isBaseline: true });
|
|
780
780
|
if (effective?.a2a)
|
|
781
|
-
config.a2aPeers = resolveA2aPeers(effective.a2a, logger);
|
|
781
|
+
config.a2aPeers = resolveA2aPeers(effective.a2a, desk, rosterLease, logger);
|
|
782
782
|
return skills;
|
|
783
783
|
},
|
|
784
784
|
applyCenterScenarios(t) {
|