@sema-agent/server 7.122.0 → 7.124.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 +209 -0
- package/README.md +7 -2
- package/README.zh-CN.md +5 -2
- package/USAGE.md +76 -56
- package/dist/approval-ask-audit-store.d.ts +27 -32
- package/dist/approval-ask-audit-store.js +10 -9
- package/dist/approval-crash-convergence.d.ts +2 -2
- package/dist/approval-crash-convergence.js +5 -5
- package/dist/approval-deny-reasons.d.ts +163 -51
- package/dist/approval-deny-reasons.js +79 -8
- package/dist/approval-policy-settlement.d.ts +4 -1
- package/dist/approval-policy-settlement.js +3 -2
- package/dist/approval-reconciler.d.ts +3 -3
- package/dist/approval-reconciler.js +10 -10
- package/dist/approval.d.ts +1 -1
- package/dist/approval.js +1 -1
- package/dist/audit.d.ts +1 -1
- package/dist/audit.js +53 -23
- package/dist/auth-bridge.d.ts +8 -8
- package/dist/auth-bridge.js +6 -6
- package/dist/auth-keys.d.ts +2 -2
- package/dist/auto-mode-face.d.ts +13 -9
- package/dist/auto-mode-face.js +8 -7
- package/dist/boot/budget-tracing.js +1 -1
- package/dist/boot/execution-env.js +1 -0
- package/dist/boot/leader.d.ts +1 -1
- package/dist/boot/memory-consolidation.d.ts +4 -4
- package/dist/boot/org-memory.d.ts +3 -3
- package/dist/boot/org-memory.js +5 -5
- package/dist/boot/resolve-spec.js +7 -7
- package/dist/boot/runner-deps.d.ts +1 -1
- package/dist/boot/runtime-caps.d.ts +1 -1
- package/dist/boot/runtime-caps.js +10 -10
- package/dist/boot/shutdown.d.ts +2 -2
- package/dist/boot/shutdown.js +2 -2
- package/dist/boot/side-query-lane.d.ts +3 -3
- package/dist/boot/{stage-02-registry-pull.d.ts → stage-02-web-admin-pull.d.ts} +2 -2
- package/dist/boot/{stage-02-registry-pull.js → stage-02-web-admin-pull.js} +4 -4
- package/dist/boot/stage-03-store-backend.d.ts +2 -2
- package/dist/boot/stage-04-stores.d.ts +1 -1
- package/dist/boot/stage-05-execution-env.d.ts +1 -1
- package/dist/boot/stage-06-runners.d.ts +2 -2
- package/dist/boot/stage-06-runners.js +6 -6
- package/dist/boot/stage-07-capability-layer.d.ts +2 -2
- package/dist/boot/stage-07-capability-layer.js +6 -5
- package/dist/boot/stage-08-reapers.d.ts +3 -3
- package/dist/boot/stage-08-reapers.js +3 -3
- package/dist/boot/stage-09-leader.d.ts +3 -3
- package/dist/boot/stage-09-leader.js +7 -7
- package/dist/boot/stage-10-http-server.d.ts +3 -3
- package/dist/boot/stage-10-http-server.js +19 -19
- package/dist/boot/unpriced-ceiling-verdict.d.ts +1 -1
- package/dist/boot/{config-center.d.ts → web-admin.d.ts} +11 -11
- package/dist/boot/{config-center.js → web-admin.js} +39 -20
- package/dist/boot/webfetch-summarize-lane.d.ts +2 -2
- package/dist/brain.d.ts +1 -1
- package/dist/brain.js +1 -1
- package/dist/budget.d.ts +3 -3
- package/dist/canonical-json.d.ts +2 -2
- package/dist/capabilities/center-plugins.d.ts +1 -1
- package/dist/capabilities/center-wiring.d.ts +12 -5
- package/dist/capabilities/center-wiring.js +11 -2
- package/dist/capabilities/composite-members.d.ts +1 -1
- package/dist/capabilities/composite-members.js +1 -1
- package/dist/capabilities/scenarios.js +2 -2
- package/dist/capabilities/team.d.ts +1 -1
- package/dist/capabilities/tool-defer.d.ts +1 -1
- package/dist/center-credential-renewer.d.ts +1 -1
- package/dist/center-credential-renewer.js +7 -7
- package/dist/center-credential.d.ts +9 -9
- package/dist/center-credential.js +6 -6
- package/dist/config-catalog.d.ts +7 -10
- package/dist/config-catalog.js +16 -16
- package/dist/config-d-migration.d.ts +32 -0
- package/dist/config-d-migration.js +59 -0
- package/dist/config-invariants.d.ts +14 -4
- package/dist/config-invariants.js +31 -2
- package/dist/config-lkg.d.ts +34 -11
- package/dist/config-lkg.js +76 -48
- package/dist/config-provider.d.ts +26 -21
- package/dist/config-provider.js +25 -27
- package/dist/config-types.d.ts +59 -50
- package/dist/config.d.ts +17 -54
- package/dist/config.js +99 -181
- package/dist/execution-lane-caps.d.ts +1 -1
- package/dist/fleet/drain-entry.d.ts +1 -1
- package/dist/fleet/engine-signal.d.ts +61 -30
- package/dist/fleet/engine-signal.js +29 -5
- package/dist/fleet/fleet-bus.d.ts +12 -3
- package/dist/fleet/fleet-bus.js +13 -9
- package/dist/fleet/serving-lease.d.ts +3 -3
- package/dist/fleet/serving-lease.js +1 -1
- package/dist/fleet-client.d.ts +15 -13
- package/dist/fleet-client.js +9 -7
- package/dist/fleet-lease.d.ts +3 -3
- package/dist/fleet-lease.js +2 -2
- package/dist/host-lsp-manager.d.ts +1 -1
- package/dist/hosted-posture.d.ts +4 -4
- package/dist/http/admission.js +4 -4
- package/dist/http/checkpoint-ctx.d.ts +20 -3
- package/dist/http/checkpoint-ctx.js +13 -5
- package/dist/http/dispatch.js +7 -16
- package/dist/http/durable-run-leg.js +2 -1
- package/dist/http/health-self-report.d.ts +7 -4
- package/dist/http/health-self-report.js +3 -3
- package/dist/http/idempotency.d.ts +1 -1
- package/dist/http/resume-legs.d.ts +4 -3
- package/dist/http/resume-legs.js +31 -18
- package/dist/http/route-ctx.d.ts +8 -0
- package/dist/http/routes/admin-config-refresh.d.ts +1 -1
- package/dist/http/routes/admin-config-refresh.js +1 -1
- package/dist/http/routes/admin-drain.d.ts +1 -1
- package/dist/http/routes/admin-drain.js +5 -4
- package/dist/http/routes/approvals-assistant.js +4 -4
- package/dist/http/routes/capabilities.js +6 -5
- package/dist/http/routes/config-catalog.js +2 -3
- package/dist/http/routes/diagnostics.js +1 -1
- package/dist/http/routes/runs.js +8 -4
- package/dist/http/routes/sessions-list.js +2 -1
- package/dist/http/routes/sessions.js +2 -5
- package/dist/http/routes/side-query.js +3 -3
- package/dist/http/routes/tasks.js +3 -2
- package/dist/http/run-meta.d.ts +1 -1
- package/dist/http/run-meta.js +2 -2
- package/dist/http/server.d.ts +7 -7
- package/dist/http/server.js +1 -1
- package/dist/http/stored-body-replay.d.ts +4 -3
- package/dist/http/stored-body-replay.js +5 -5
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -1
- package/dist/key-resolver.d.ts +1 -1
- package/dist/leader/leader.d.ts +7 -6
- package/dist/leader/leader.js +3 -1
- package/dist/leader/run-entry.d.ts +2 -2
- package/dist/leader/run-entry.js +3 -3
- package/dist/leader/wire.d.ts +4 -4
- package/dist/leader/wire.js +2 -1
- package/dist/main.js +1 -1
- package/dist/mcp-tool-faces.d.ts +2 -2
- package/dist/model-entry-refusal.d.ts +20 -11
- package/dist/model-entry-refusal.js +22 -17
- package/dist/model-provider.d.ts +2 -2
- package/dist/model-route-endpoint.d.ts +22 -2
- package/dist/model-route-endpoint.js +9 -3
- package/dist/model-route-gap.d.ts +103 -0
- package/dist/model-route-gap.js +80 -0
- package/dist/model-route-url.d.ts +1 -1
- package/dist/model-route-url.js +2 -1
- package/dist/model-select.d.ts +24 -21
- package/dist/model-select.js +22 -17
- package/dist/namespaced-rule-name.d.ts +16 -30
- package/dist/namespaced-rule-name.js +2 -20
- package/dist/observability/fail-open.d.ts +0 -4
- package/dist/observability/fail-open.js +0 -4
- package/dist/observability/metrics.d.ts +1 -1
- package/dist/org-memory-admission.d.ts +1 -1
- package/dist/plugins/approval-ask-store-file.d.ts +4 -2
- package/dist/plugins/approval-ask-store-file.js +3 -3
- package/dist/plugins/approval-ask-store-memory.d.ts +4 -3
- package/dist/plugins/approval-ask-store-memory.js +10 -4
- package/dist/plugins/approval-ask-store-sql.d.ts +16 -2
- package/dist/plugins/approval-ask-store-sql.js +20 -13
- package/dist/plugins/caching-session-store.d.ts +0 -10
- package/dist/plugins/caching-session-store.js +0 -3
- package/dist/plugins/file-run-store.js +9 -3
- package/dist/plugins/leader-run-store-sql.d.ts +3 -2
- package/dist/plugins/leader-run-store-sql.js +3 -2
- package/dist/plugins/local-session-store.d.ts +20 -27
- package/dist/plugins/local-session-store.js +19 -17
- package/dist/plugins/memory-run-store.js +9 -3
- package/dist/plugins/one-time-migrations.js +51 -0
- package/dist/plugins/scheduler-support.d.ts +26 -7
- package/dist/plugins/scheduler-support.js +96 -53
- package/dist/plugins/session-policy-store-sql.js +1 -2
- package/dist/plugins/store-backend.js +1 -1
- package/dist/plugins/store-contracts.d.ts +20 -4
- package/dist/plugins/web-search.d.ts +1 -1
- package/dist/plugins/web-search.js +2 -1
- package/dist/plugins/workflow-run-store-sql.d.ts +4 -2
- package/dist/posture-source.d.ts +1 -1
- package/dist/read-face-posture.d.ts +3 -3
- package/dist/read-face-posture.js +1 -1
- package/dist/rule-entry-list.d.ts +3 -13
- package/dist/rule-entry-list.js +1 -12
- package/dist/run-local.js +10 -7
- package/dist/runtime-caps-resolver.d.ts +4 -4
- package/dist/runtime-caps-resolver.js +2 -2
- package/dist/runtime-governance.d.ts +36 -13
- package/dist/runtime-governance.js +7 -2
- package/dist/sealed-key.d.ts +4 -4
- package/dist/sealed-key.js +3 -2
- package/dist/security.d.ts +3 -3
- package/dist/service-version.d.ts +1 -1
- package/dist/service-version.js +5 -0
- package/dist/session-policy-wire.d.ts +47 -49
- package/dist/session-policy-wire.js +41 -36
- package/dist/session-sync.d.ts +5 -1
- package/dist/session-sync.js +2 -1
- package/dist/session-titler.d.ts +0 -11
- package/dist/session-titler.js +3 -5
- package/dist/shared-memory-scope-authorizer.d.ts +4 -4
- package/dist/spec-fields.d.ts +4 -4
- package/dist/spec-fields.js +1 -4
- package/dist/task-a2a.d.ts +1 -1
- package/dist/task-settings.d.ts +4 -5
- package/dist/task-settings.js +5 -8
- package/dist/tool-approval.d.ts +43 -4
- package/dist/tool-approval.js +147 -98
- package/dist/trace/core-keyset-guard.d.ts +1 -1
- package/dist/trace/project.d.ts +3 -3
- package/dist/trace/redact.d.ts +2 -23
- package/dist/trace/redact.js +1 -6
- package/dist/trace/self-minted-wire.d.ts +147 -3
- package/dist/trace/self-minted-wire.js +50 -9
- package/dist/unattended-permission-mode.d.ts +3 -3
- package/dist/unattended-permission-mode.js +2 -2
- package/dist/url-refusal.d.ts +35 -0
- package/dist/url-refusal.js +15 -0
- package/dist/user-authored-text.d.ts +31 -0
- package/dist/user-authored-text.js +18 -0
- package/dist/{config-center → web-admin-client}/apply-effective.d.ts +13 -70
- package/dist/{config-center → web-admin-client}/apply-effective.js +104 -121
- package/dist/{config-center → web-admin-client}/apply-ledger.d.ts +2 -2
- package/dist/{config-center → web-admin-client}/center-request.d.ts +7 -7
- package/dist/{config-center → web-admin-client}/center-request.js +5 -4
- package/dist/{config-center → web-admin-client}/effective-keys.d.ts +1 -3
- package/dist/{config-center → web-admin-client}/effective-keys.js +0 -9
- package/dist/{config-center → web-admin-client}/facade.d.ts +6 -6
- package/dist/{config-center → web-admin-client}/facade.js +2 -2
- package/dist/{config-center → web-admin-client}/http-client.d.ts +6 -10
- package/dist/{config-center → web-admin-client}/http-client.js +15 -15
- package/dist/{config-center → web-admin-client}/pull-state.d.ts +1 -1
- package/dist/{config-center → web-admin-client}/read-face.js +4 -4
- package/dist/web-admin-client/read-warnings.d.ts +137 -0
- package/dist/web-admin-client/read-warnings.js +168 -0
- package/dist/{config-center → web-admin-client}/restart-signal.d.ts +5 -3
- package/dist/{config-center → web-admin-client}/restart-signal.js +3 -4
- package/dist/{config-center → web-admin-client}/skills-mcp.d.ts +1 -1
- package/dist/{config-center → web-admin-client}/skills-mcp.js +13 -13
- package/dist/{config-center → web-admin-client}/stage-limits.d.ts +1 -7
- package/dist/{config-center → web-admin-client}/stage-limits.js +6 -7
- package/dist/{config-center → web-admin-client}/types.d.ts +19 -47
- package/package.json +3 -3
- package/skills/find-skills.md +2 -2
- package/dist/config-center/read-warnings.d.ts +0 -109
- package/dist/config-center/read-warnings.js +0 -110
- package/dist/url-shape.d.ts +0 -31
- package/dist/url-shape.js +0 -41
- /package/dist/{config-center → web-admin-client}/apply-ledger.js +0 -0
- /package/dist/{config-center → web-admin-client}/hot-keys-registry.d.ts +0 -0
- /package/dist/{config-center → web-admin-client}/hot-keys-registry.js +0 -0
- /package/dist/{config-center → web-admin-client}/mcp-revocation.d.ts +0 -0
- /package/dist/{config-center → web-admin-client}/mcp-revocation.js +0 -0
- /package/dist/{config-center → web-admin-client}/pull-state.js +0 -0
- /package/dist/{config-center → web-admin-client}/read-face.d.ts +0 -0
- /package/dist/{config-center → web-admin-client}/types.js +0 -0
|
@@ -69,9 +69,9 @@ export type SideQueryLane = (spec: SideQuerySpec) => Promise<SideQueryResult>;
|
|
|
69
69
|
export interface SideQueryLaneCtx {
|
|
70
70
|
/** 与 `RunnerDeps.brain` **同一只**实例([ref] 换装后本席不再包它 —— key 走 spec 座位)。 */
|
|
71
71
|
brain: Brain;
|
|
72
|
-
/** 活配置引用:目录/角色表/网关地址被
|
|
72
|
+
/** 活配置引用:目录/角色表/网关地址被 web-admin 就地热应用(`mutateInPlace`),按调用取值才跟得上。 */
|
|
73
73
|
config: ServiceConfig;
|
|
74
|
-
/** 活引用取值 —— registry 热应用整个换 resolver 引用(`boot/
|
|
74
|
+
/** 活引用取值 —— registry 热应用整个换 resolver 引用(`boot/web-admin.ts` 每次 apply 重铸)。 */
|
|
75
75
|
getKeyResolver: () => KeyResolver;
|
|
76
76
|
}
|
|
77
77
|
/**
|
|
@@ -119,7 +119,7 @@ export declare function createPerModelKeyBrain(brain: Brain, getKeyResolver: ()
|
|
|
119
119
|
* ([ref] codex R1-F2:目录与密钥表零 await 窗成对换代):
|
|
120
120
|
* · `models` = `expandTiers(config.models, config.tiers)` —— 档位词 / CC 别名(`flash`/`opus`/…)在
|
|
121
121
|
* side-query 上照常可选路(core 的 `Runner` 构造时做同一件事),且 `Runner` 那次展开是**构造时快照**,
|
|
122
|
-
* 而本路由的模型白名单门(`routes/side-query.ts` 的 `
|
|
122
|
+
* 而本路由的模型白名单门(`routes/side-query.ts` 的 `isAtMentionable`)按请求现算同一张增广目录 ——
|
|
123
123
|
* 两边取同一份才不会出现「名单放行、选路说不认识」的分歧;
|
|
124
124
|
* · `getKeyResolver()` —— 热应用整个换 resolver 引用,活取才跟得上(装配时快照 = 旧 key 用到重启)。
|
|
125
125
|
* (第三件 `config.gatewayBaseUrl` 曾是 off-route 记债判据的参照系,core 5.57.0 起判据整只上收 core 的
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { runStage01 } from "./stage-01-config.js";
|
|
2
2
|
export declare function runStage02(ctx: Awaited<ReturnType<typeof runStage01>>): Promise<{
|
|
3
3
|
ceilingVerdict: import("./unpriced-ceiling-verdict.js").UnpricedCeilingVerdict;
|
|
4
|
-
|
|
4
|
+
webAdmin: import("./web-admin.js").WebAdminRuntime;
|
|
5
5
|
config: import("../config-types.js").ServiceConfig;
|
|
6
6
|
localRoot: string;
|
|
7
7
|
logger: import("../index.js").Logger;
|
|
8
8
|
metrics: import("../index.js").Metrics;
|
|
9
9
|
}>;
|
|
10
|
-
//# sourceMappingURL=stage-02-
|
|
10
|
+
//# sourceMappingURL=stage-02-web-admin-pull.d.ts.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { createUnpricedCeilingVerdict } from "./unpriced-ceiling-verdict.js";
|
|
2
|
-
import {
|
|
2
|
+
import { createWebAdminRuntime } from "./web-admin.js";
|
|
3
3
|
import { composeExecutionLane, FILE_SOURCED_LANES } from "./execution-lane.js";
|
|
4
4
|
import { serviceConfigSourceKind } from "../config-provider.js";
|
|
5
5
|
import { defaultModelRefusal, refusedNameMintedRefusal } from "../model-entry-refusal.js";
|
|
6
6
|
export async function runStage02(ctx) {
|
|
7
7
|
const { config, localRoot, logger, metrics } = ctx;
|
|
8
8
|
await composeExecutionLane(config, { configSource: serviceConfigSourceKind(config), localRoot, logger, drivesFromFile: FILE_SOURCED_LANES });
|
|
9
|
-
const
|
|
9
|
+
const webAdmin = await createWebAdminRuntime({ config, logger, metrics, localRoot });
|
|
10
10
|
const noDefaultModel = defaultModelRefusal(config, "env");
|
|
11
11
|
if (noDefaultModel !== undefined) {
|
|
12
12
|
throw new Error(noDefaultModel);
|
|
@@ -17,6 +17,6 @@ export async function runStage02(ctx) {
|
|
|
17
17
|
}
|
|
18
18
|
const ceilingVerdict = createUnpricedCeilingVerdict({ config, logger });
|
|
19
19
|
ceilingVerdict.judge();
|
|
20
|
-
return { ...ctx, ceilingVerdict,
|
|
20
|
+
return { ...ctx, ceilingVerdict, webAdmin };
|
|
21
21
|
}
|
|
22
|
-
//# sourceMappingURL=stage-02-
|
|
22
|
+
//# sourceMappingURL=stage-02-web-admin-pull.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { runStage02 } from "./stage-02-
|
|
1
|
+
import type { runStage02 } from "./stage-02-web-admin-pull.js";
|
|
2
2
|
export declare function runStage03(ctx: Awaited<ReturnType<typeof runStage02>>): Promise<{
|
|
3
3
|
backend: import("../index.js").StoreBackend | undefined;
|
|
4
4
|
backgroundAgentStore: import("@sema-agent/core").BackgroundAgentStore | undefined;
|
|
@@ -24,7 +24,7 @@ export declare function runStage03(ctx: Awaited<ReturnType<typeof runStage02>>):
|
|
|
24
24
|
taskListLane: import("./task-list-lane.js").TaskListLane;
|
|
25
25
|
usageWindowStore: import("@sema-agent/core").UsageWindowStore | undefined;
|
|
26
26
|
ceilingVerdict: import("./unpriced-ceiling-verdict.js").UnpricedCeilingVerdict;
|
|
27
|
-
|
|
27
|
+
webAdmin: import("./web-admin.js").WebAdminRuntime;
|
|
28
28
|
config: import("../config-types.js").ServiceConfig;
|
|
29
29
|
localRoot: string;
|
|
30
30
|
logger: import("../index.js").Logger;
|
|
@@ -65,7 +65,7 @@ export declare function runStage04(ctx: Awaited<ReturnType<typeof runStage03>>):
|
|
|
65
65
|
taskListLane: import("./task-list-lane.js").TaskListLane;
|
|
66
66
|
usageWindowStore: import("@sema-agent/core").UsageWindowStore | undefined;
|
|
67
67
|
ceilingVerdict: import("./unpriced-ceiling-verdict.js").UnpricedCeilingVerdict;
|
|
68
|
-
|
|
68
|
+
webAdmin: import("./web-admin.js").WebAdminRuntime;
|
|
69
69
|
config: import("../config-types.js").ServiceConfig;
|
|
70
70
|
localRoot: string;
|
|
71
71
|
logger: import("../index.js").Logger;
|
|
@@ -81,7 +81,7 @@ export declare function runStage05(ctx: Awaited<ReturnType<typeof runStage04>>):
|
|
|
81
81
|
taskListLane: import("./task-list-lane.js").TaskListLane;
|
|
82
82
|
usageWindowStore: import("@sema-agent/core").UsageWindowStore | undefined;
|
|
83
83
|
ceilingVerdict: import("./unpriced-ceiling-verdict.js").UnpricedCeilingVerdict;
|
|
84
|
-
|
|
84
|
+
webAdmin: import("./web-admin.js").WebAdminRuntime;
|
|
85
85
|
config: import("../config-types.js").ServiceConfig;
|
|
86
86
|
localRoot: string;
|
|
87
87
|
logger: import("../index.js").Logger;
|
|
@@ -24,7 +24,7 @@ export declare function runStage06(ctx: Awaited<ReturnType<typeof runStage05>>):
|
|
|
24
24
|
hookAgent: import("../hooks/hook-runner.js").HookLlmCall;
|
|
25
25
|
hookAgentRunner: Runner;
|
|
26
26
|
hookLlm: import("../hooks/hook-runner.js").HookLlmCall;
|
|
27
|
-
mcpRevocations: import("../
|
|
27
|
+
mcpRevocations: import("../web-admin-client/mcp-revocation.js").McpRevocationLedger;
|
|
28
28
|
memoryConsolidationFaces: import("./memory-consolidation.js").MemoryConsolidationFaces | undefined;
|
|
29
29
|
memoryOptOutGrantStore: import("../plugins/memory-optout-grant-store-sql.js").MemoryOptOutGrantStore | undefined;
|
|
30
30
|
orgMemoryAdmission: import("./org-memory.js").OrgMemoryAdmissionWiring;
|
|
@@ -142,7 +142,7 @@ export declare function runStage06(ctx: Awaited<ReturnType<typeof runStage05>>):
|
|
|
142
142
|
taskListLane: import("./task-list-lane.js").TaskListLane;
|
|
143
143
|
usageWindowStore: import("@sema-agent/core").UsageWindowStore | undefined;
|
|
144
144
|
ceilingVerdict: import("./unpriced-ceiling-verdict.js").UnpricedCeilingVerdict;
|
|
145
|
-
|
|
145
|
+
webAdmin: import("./web-admin.js").WebAdminRuntime;
|
|
146
146
|
config: import("../config-types.js").ServiceConfig;
|
|
147
147
|
localRoot: string;
|
|
148
148
|
logger: import("../index.js").Logger;
|
|
@@ -21,7 +21,7 @@ import { createGovernanceSeams } from "./governance-seams.js";
|
|
|
21
21
|
import { createSharedMemoryScopeAuthorizer } from "../shared-memory-scope-authorizer.js";
|
|
22
22
|
import { parkedAskRedeem, runStore } from "./late-binds.js";
|
|
23
23
|
export function runStage06(ctx) {
|
|
24
|
-
const { backend, backgroundAgentStore, brain, sessionIncarnationOf, config,
|
|
24
|
+
const { backend, backgroundAgentStore, brain, sessionIncarnationOf, config, webAdmin, consolidationValve, deploymentHooks, 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;
|
|
25
25
|
const { sqlWorkflowRunStore, workflowNotifyJournal, workflowCompletionInbox, deliverWorkflowCompletion, workflowNotifyGate, fleetBus, workflowRunStore, workflowJournalStore, outcomeSink, workflowRecoverOpts, workflowAgentRegistry, subagentSteerRegistry, workflowAgentSessionIndex, } = createWorkflowOrchestration({ config, logger, metrics, localRoot, backend, getRunStore: () => runStore });
|
|
26
26
|
const parkCommitted = backend?.checkpoint && config.durableApproval ? createParkCommitWatch(backend.checkpoint(logger)) : undefined;
|
|
27
27
|
const checkpointStore = parkCommitted?.store;
|
|
@@ -63,7 +63,7 @@ export function runStage06(ctx) {
|
|
|
63
63
|
models: config.models,
|
|
64
64
|
tiers: config.tiers,
|
|
65
65
|
roles: config.roles,
|
|
66
|
-
getApiKeyAndHeaders: createPerModelAuthSeat(() =>
|
|
66
|
+
getApiKeyAndHeaders: createPerModelAuthSeat(() => webAdmin.getKeyResolver()),
|
|
67
67
|
})
|
|
68
68
|
: undefined;
|
|
69
69
|
const memoryConsolidationFaces = consolidationSeat && memoryEngine
|
|
@@ -104,14 +104,14 @@ export function runStage06(ctx) {
|
|
|
104
104
|
],
|
|
105
105
|
retentionExecutorWired: config.retentionSweep.intervalSec > 0 && retentionExecutor !== undefined && retentionLaneStore !== undefined,
|
|
106
106
|
});
|
|
107
|
-
const mcpRevocations =
|
|
107
|
+
const mcpRevocations = webAdmin.takeMcpRevocations();
|
|
108
108
|
const workflowModelAllowlistSnapshot = workflowModelAllowlistFor(config) ?? [];
|
|
109
109
|
const runnerDeps = createRunnerDeps({
|
|
110
110
|
consolidationSeat,
|
|
111
111
|
hands: commitHands,
|
|
112
112
|
mcpRevocations,
|
|
113
113
|
sessionIncarnationOf,
|
|
114
|
-
config, logger, metrics, localRoot, promptSource:
|
|
114
|
+
config, logger, metrics, localRoot, promptSource: webAdmin.promptSource, rosterStore, backgroundAgentStore, mailboxStore, mailboxRecipientLifecycle, usageWindowStore, brain,
|
|
115
115
|
pricing, tracer, outcomeSink, elicitation, question, toolApproval, sessionStore, memoryEngine,
|
|
116
116
|
sessionCaptureRecords,
|
|
117
117
|
memorySyncRunner, toolResultStore: runnerOffloadStore, checkpointStore, sessionPolicyStore, runtimeCapsResolver, fileHistoryStore,
|
|
@@ -124,7 +124,7 @@ export function runStage06(ctx) {
|
|
|
124
124
|
});
|
|
125
125
|
const runner = new Runner(runnerDeps);
|
|
126
126
|
const handslessRunner = new Runner(withoutExecutionEnv(runnerDeps));
|
|
127
|
-
const { hookModelFor, hookLlm } = createHookLlm({ config, getKeyResolver: () =>
|
|
127
|
+
const { hookModelFor, hookLlm } = createHookLlm({ config, getKeyResolver: () => webAdmin.getKeyResolver(), metrics });
|
|
128
128
|
const hookAgentRunner = new Runner({ ...runnerDeps, sessionStore: new TtlSessionStore({ defaultTtlDays: 1 / 24 }) });
|
|
129
129
|
const agentHookCall = async ({ prompt, model, timeoutMs, system }) => {
|
|
130
130
|
const pick = hookModelFor(model);
|
|
@@ -182,7 +182,7 @@ export function runStage06(ctx) {
|
|
|
182
182
|
brain,
|
|
183
183
|
pricing,
|
|
184
184
|
tracer,
|
|
185
|
-
promptSource:
|
|
185
|
+
promptSource: webAdmin.promptSource,
|
|
186
186
|
executionEnvFactory,
|
|
187
187
|
lspManager,
|
|
188
188
|
backgroundAgentStore,
|
|
@@ -39,7 +39,7 @@ export declare function runStage07(ctx: Awaited<ReturnType<typeof runStage06>>):
|
|
|
39
39
|
hookAgent: import("../hooks/hook-runner.js").HookLlmCall;
|
|
40
40
|
hookAgentRunner: import("@sema-agent/core").Runner;
|
|
41
41
|
hookLlm: import("../hooks/hook-runner.js").HookLlmCall;
|
|
42
|
-
mcpRevocations: import("../
|
|
42
|
+
mcpRevocations: import("../web-admin-client/mcp-revocation.js").McpRevocationLedger;
|
|
43
43
|
memoryConsolidationFaces: import("./memory-consolidation.js").MemoryConsolidationFaces | undefined;
|
|
44
44
|
memoryOptOutGrantStore: import("../plugins/memory-optout-grant-store-sql.js").MemoryOptOutGrantStore | undefined;
|
|
45
45
|
orgMemoryAdmission: import("./org-memory.js").OrgMemoryAdmissionWiring;
|
|
@@ -157,7 +157,7 @@ export declare function runStage07(ctx: Awaited<ReturnType<typeof runStage06>>):
|
|
|
157
157
|
taskListLane: import("./task-list-lane.js").TaskListLane;
|
|
158
158
|
usageWindowStore: import("@sema-agent/core").UsageWindowStore | undefined;
|
|
159
159
|
ceilingVerdict: import("./unpriced-ceiling-verdict.js").UnpricedCeilingVerdict;
|
|
160
|
-
|
|
160
|
+
webAdmin: import("./web-admin.js").WebAdminRuntime;
|
|
161
161
|
config: import("../config-types.js").ServiceConfig;
|
|
162
162
|
localRoot: string;
|
|
163
163
|
logger: import("../index.js").Logger;
|
|
@@ -25,8 +25,9 @@ import { createRunnerDepsOnAsk } from "./runner-deps.js";
|
|
|
25
25
|
import { bindRateLimiter, bindRunStore } from "./late-binds.js";
|
|
26
26
|
import { buildDisplaySafeUrl } from "../trace/redact.js";
|
|
27
27
|
import * as facts from "../capability-facts.js";
|
|
28
|
+
import { WEB_ADMIN_ENV } from "@sema-agent/settings-schema";
|
|
28
29
|
export async function runStage07(ctx) {
|
|
29
|
-
const { approvalAskAudit, approvalExemptionStore, backend, backgroundAgentStore, brain, checkpointStore, config,
|
|
30
|
+
const { approvalAskAudit, approvalExemptionStore, backend, backgroundAgentStore, brain, checkpointStore, config, webAdmin, counterDegradeHook, durableEnabled, handslessSubRunner, instanceId, localRoot, logger, memoryEngine, metrics, question, runner, runnerDeps, sendUserFileToolSpec, sessionEnvSelection, sessionStore, subRunner, subRunnerSessions, taskListLane, toolApproval } = ctx;
|
|
30
31
|
const authorize = createAuthorizer(config, sessionStore);
|
|
31
32
|
const runStore = backend ? backend.run() : undefined;
|
|
32
33
|
bindRunStore(runStore);
|
|
@@ -116,7 +117,7 @@ export async function runStage07(ctx) {
|
|
|
116
117
|
if (config.requirePrincipal && config.selfOrchestrationEnabled && !config.selfOrchestrationWorkerIsolation)
|
|
117
118
|
logger.warn("self_orchestration_no_worker_isolation", { detail: "multi-tenant self-orchestration without SELF_ORCHESTRATION_WORKER_ISOLATION=true — a tenant workflow can starve the host event loop (availability risk). Set it to enable worker_thread resource isolation." });
|
|
118
119
|
if (selfOrchestrationDenial(config, centerEntitlementSourceWired(config)) !== null)
|
|
119
|
-
logger.warn("self_orchestration_no_entitlement_source", { detail:
|
|
120
|
+
logger.warn("self_orchestration_no_entitlement_source", { detail: `SELF_ORCHESTRATION_ENABLED is on and REQUIRE_PRINCIPAL is on, but no per-principal entitlement source is wired (no web-admin, or it is in dry-run). core's allowWorkflows is tighten-only — an absent resolver leaves it ungated — so this service fail-closes self-orchestration for EVERY principal: no task on this worker can ever get the workflow engine. /v1/capabilities now reports workflows:false (workflowsGate.denial="entitlement_resolver_absent") and a submit carrying selfOrchestration/settings.ultracode is refused 501 instead of silently downgraded. Wire a web-admin (${WEB_ADMIN_ENV.url} + token, not dry-run), or set SELF_ORCHESTRATION_ENABLED=false.` });
|
|
120
121
|
{
|
|
121
122
|
const inert = buildForceDurableGateInertNotice({
|
|
122
123
|
entitlementSourceWired: centerEntitlementSourceWired(config),
|
|
@@ -133,7 +134,7 @@ export async function runStage07(ctx) {
|
|
|
133
134
|
: new RateLimiter(config.rateLimitPerMin);
|
|
134
135
|
bindRateLimiter(rateLimiter);
|
|
135
136
|
let skills = loadDeploymentSkills(config);
|
|
136
|
-
skills = await
|
|
137
|
+
skills = await webAdmin.applyCenterCapabilities(skills);
|
|
137
138
|
const repoClient = config.gitApiBaseUrl ? createRepoClient(config.gitApiKind, config.gitApiBaseUrl, config.gitApiToken) : undefined;
|
|
138
139
|
const webSearchCfg = webSearchConfigFromEnv();
|
|
139
140
|
const webSearch = webSearchCfg ? createWebSearchBackend(webSearchCfg) : undefined;
|
|
@@ -150,7 +151,7 @@ export async function runStage07(ctx) {
|
|
|
150
151
|
.catch((e) => logger.warn("web_search_probe_failed", { provider: webSearchCfg.provider, error: e instanceof Error ? e.message : String(e) }));
|
|
151
152
|
}
|
|
152
153
|
const ensureChildSessionDurable = checkpointStore && config.sessionBackend === "tidb" ? (sessionId) => ensureChildSessionDurableWithPromotion(sessionStore, subRunnerSessions, sessionId) : undefined;
|
|
153
|
-
const webFetchSummarize = createWebFetchSummarizeLane({ brain, config, getKeyResolver: () =>
|
|
154
|
+
const webFetchSummarize = createWebFetchSummarizeLane({ brain, config, getKeyResolver: () => webAdmin.getKeyResolver(), logger });
|
|
154
155
|
const scenarioDeps = {
|
|
155
156
|
runner, subRunner, handslessSubRunner, model: DEFAULT_MODEL_REF, skills, repoClient, requirePrincipal: config.requirePrincipal,
|
|
156
157
|
webSearch: webSearch ? webSearch : undefined, metrics, logger, webFetchSummarize,
|
|
@@ -176,7 +177,7 @@ export async function runStage07(ctx) {
|
|
|
176
177
|
: undefined;
|
|
177
178
|
const scenarioDetails = builtinScenarioDetails(scenarios, scenarioDeps);
|
|
178
179
|
const builtinScenarioNames = Object.keys(scenarioDetails);
|
|
179
|
-
|
|
180
|
+
webAdmin.applyCenterScenarios({ scenarioDeps, scenarios, scenarioDetails, builtinScenarioNames });
|
|
180
181
|
const defaultScenarioRefusal = danglingScenarioRefusal(config.defaultScenario, "deployment", Object.keys(scenarios));
|
|
181
182
|
if (defaultScenarioRefusal !== undefined)
|
|
182
183
|
throw new Error(defaultScenarioRefusal);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 装配第 8 段 —— **后台 reaper**(§3-8)。
|
|
3
3
|
* 维护 tick(startReapers)+ 托管留存 lane(独立定时器)+ OTLP 导出 + 限额座换代口 + 五只 boot Runner 的
|
|
4
|
-
* 原子换代闭包 +
|
|
4
|
+
* 原子换代闭包 + web-admin 刷新环与 key resolver 首建。
|
|
5
5
|
* ⚠️ 位置即契约:刷新环必须在 `new Runner` 之后(它要五只 boot Runner 的换代口 `swapRunnerDeps`);
|
|
6
6
|
* key resolver 首建读的必须是 boot apply 之后的 config。
|
|
7
7
|
* 🔴 `runDenySweep` 的 holder 住在 `late-binds.ts`(赋值点在第十段的 server 之后)。
|
|
@@ -52,7 +52,7 @@ export declare function runStage08(ctx: Awaited<ReturnType<typeof runStage07>>):
|
|
|
52
52
|
hookAgent: import("../hooks/hook-runner.js").HookLlmCall;
|
|
53
53
|
hookAgentRunner: Runner;
|
|
54
54
|
hookLlm: import("../hooks/hook-runner.js").HookLlmCall;
|
|
55
|
-
mcpRevocations: import("../
|
|
55
|
+
mcpRevocations: import("../web-admin-client/mcp-revocation.js").McpRevocationLedger;
|
|
56
56
|
memoryConsolidationFaces: import("./memory-consolidation.js").MemoryConsolidationFaces | undefined;
|
|
57
57
|
memoryOptOutGrantStore: import("../plugins/memory-optout-grant-store-sql.js").MemoryOptOutGrantStore | undefined;
|
|
58
58
|
orgMemoryAdmission: import("./org-memory.js").OrgMemoryAdmissionWiring;
|
|
@@ -170,7 +170,7 @@ export declare function runStage08(ctx: Awaited<ReturnType<typeof runStage07>>):
|
|
|
170
170
|
taskListLane: import("./task-list-lane.js").TaskListLane;
|
|
171
171
|
usageWindowStore: import("@sema-agent/core").UsageWindowStore | undefined;
|
|
172
172
|
ceilingVerdict: import("./unpriced-ceiling-verdict.js").UnpricedCeilingVerdict;
|
|
173
|
-
|
|
173
|
+
webAdmin: import("./web-admin.js").WebAdminRuntime;
|
|
174
174
|
config: import("../config-types.js").ServiceConfig;
|
|
175
175
|
localRoot: string;
|
|
176
176
|
logger: import("../index.js").Logger;
|
|
@@ -5,7 +5,7 @@ import { startRetentionLane, RETENTION_LEASE_TTL_FACTOR } from "./retention-lane
|
|
|
5
5
|
import { createLimitSync } from "./limit-sync.js";
|
|
6
6
|
import { runDenySweep } from "./late-binds.js";
|
|
7
7
|
export function runStage08(ctx) {
|
|
8
|
-
const { approvalNonceStore, backend, backgroundAgentStore, ceilingVerdict, checkpointStore, parkCommits, config,
|
|
8
|
+
const { approvalNonceStore, backend, backgroundAgentStore, ceilingVerdict, checkpointStore, parkCommits, config, webAdmin, consolidationSeatWatch, costQuota, degradeRouteWatch, fileHistoryErasure, handslessRunner, handslessSubRunner, hookAgentRunner, imageBakes, instanceId, localRoot, logger, mailboxStore, metrics, permissionRuleStores, pricing, rateLimiter, retentionExecutor, retentionLaneStore, rosterStore, runStore, runner, sqlWorkflowRunStore, subRunner, taskAttachmentStore, toolApproval, toolResultStore, userInputLedger, workflowJournalStore, workflowNotifyGate, workflowNotifyJournal, workflowRecoverOpts, worktreeReap } = ctx;
|
|
9
9
|
const reaper = startReapers({
|
|
10
10
|
config, logger, metrics, localRoot, backend, subRunner, runStore, checkpointStore, parkCommits,
|
|
11
11
|
rateLimiter, costQuota, toolResultStore, fileHistoryErasure, taskAttachmentStore, imageBakes, worktreeReap,
|
|
@@ -71,8 +71,8 @@ export function runStage08(ctx) {
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
};
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
webAdmin.startRefreshLoop({ pricing, limitSync, swapRunnerDeps, ceilingVerdict, checkpointStorePresent: checkpointStore !== undefined, degradeRoute: degradeRouteWatch, ...(consolidationSeatWatch !== undefined ? { consolidationSeat: consolidationSeatWatch } : {}) });
|
|
75
|
+
webAdmin.initKeyResolver();
|
|
76
76
|
return { ...ctx, otelExporter, reaper, retentionLaneStarted };
|
|
77
77
|
}
|
|
78
78
|
//# sourceMappingURL=stage-08-reapers.js.map
|
|
@@ -16,7 +16,7 @@ export declare function runStage09(ctx: Awaited<ReturnType<typeof runStage08>>):
|
|
|
16
16
|
} | {
|
|
17
17
|
childrenAlive: readonly string[];
|
|
18
18
|
}>) | undefined;
|
|
19
|
-
|
|
19
|
+
webAdminJwtVerifier: import("../auth-bridge.js").WebAdminJwtVerifier | undefined;
|
|
20
20
|
sessionAudit: ((sessionId: string) => Promise<{
|
|
21
21
|
owner: string | null;
|
|
22
22
|
sessionId: string;
|
|
@@ -81,7 +81,7 @@ export declare function runStage09(ctx: Awaited<ReturnType<typeof runStage08>>):
|
|
|
81
81
|
hookAgent: import("../hooks/hook-runner.js").HookLlmCall;
|
|
82
82
|
hookAgentRunner: import("@sema-agent/core").Runner;
|
|
83
83
|
hookLlm: import("../hooks/hook-runner.js").HookLlmCall;
|
|
84
|
-
mcpRevocations: import("../
|
|
84
|
+
mcpRevocations: import("../web-admin-client/mcp-revocation.js").McpRevocationLedger;
|
|
85
85
|
memoryConsolidationFaces: import("./memory-consolidation.js").MemoryConsolidationFaces | undefined;
|
|
86
86
|
memoryOptOutGrantStore: import("../plugins/memory-optout-grant-store-sql.js").MemoryOptOutGrantStore | undefined;
|
|
87
87
|
orgMemoryAdmission: import("./org-memory.js").OrgMemoryAdmissionWiring;
|
|
@@ -199,7 +199,7 @@ export declare function runStage09(ctx: Awaited<ReturnType<typeof runStage08>>):
|
|
|
199
199
|
taskListLane: import("./task-list-lane.js").TaskListLane;
|
|
200
200
|
usageWindowStore: import("@sema-agent/core").UsageWindowStore | undefined;
|
|
201
201
|
ceilingVerdict: import("./unpriced-ceiling-verdict.js").UnpricedCeilingVerdict;
|
|
202
|
-
|
|
202
|
+
webAdmin: import("./web-admin.js").WebAdminRuntime;
|
|
203
203
|
config: import("../config-types.js").ServiceConfig;
|
|
204
204
|
localRoot: string;
|
|
205
205
|
logger: import("../index.js").Logger;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { describeStaticWiring } from "@sema-agent/core";
|
|
2
2
|
import { encodeCheckpointScope } from "../security.js";
|
|
3
|
-
import { authBridgeIssuerOf,
|
|
3
|
+
import { authBridgeIssuerOf, createWebAdminJwtVerifier } from "../auth-bridge.js";
|
|
4
4
|
import { createSessionFaces } from "./session-faces.js";
|
|
5
5
|
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, config,
|
|
9
|
+
const { approvalExemptionStore, backend, backgroundAgentStore, brain, checkpointStore, config, webAdmin, deviceLane, dropSessionScoped, durableEnabled, executionEnvFactory, fileHistoryErasure, governanceSeams, localRoot, logger, mailboxRecipientLifecycle, mailboxStore, metrics, pricing, resumeAnchorStore, runStore, runnerDeps, sessionPolicyStore, sessionStore, streamApprovalGate, taskAttachmentStore, taskListLane, toolResultStore, tracer, usageWindowStore, userInputLedgerStore, workflowCompletionInbox } = ctx;
|
|
10
10
|
const { ownerAware, sessionAudit, sessionWatchRegistry, purgeSession, instrumentDegenerate, planCacheProbe } = createSessionFaces({
|
|
11
11
|
deviceStore: deviceLane?.store,
|
|
12
12
|
dropSessionScoped,
|
|
@@ -16,11 +16,11 @@ export function runStage09(ctx) {
|
|
|
16
16
|
backgroundAgentStore,
|
|
17
17
|
userInputLedgerStore,
|
|
18
18
|
});
|
|
19
|
-
const leaderEndpoint = createLeaderFace({ config, logger, brain, pricing, executionEnvFactory, toolResultStore, sessionStore, checkpointStore, governanceSeams, backend, tracer, usageWindowStore, promptSource:
|
|
19
|
+
const leaderEndpoint = createLeaderFace({ config, logger, brain, pricing, executionEnvFactory, toolResultStore, sessionStore, checkpointStore, governanceSeams, backend, tracer, usageWindowStore, promptSource: webAdmin.promptSource, onError: runnerDeps.onError });
|
|
20
20
|
const drainState = { draining: false };
|
|
21
21
|
const authBridgeIssuer = authBridgeIssuerOf(config)?.issuer;
|
|
22
|
-
const
|
|
23
|
-
?
|
|
22
|
+
const webAdminJwtVerifier = authBridgeIssuer
|
|
23
|
+
? createWebAdminJwtVerifier({
|
|
24
24
|
issuer: authBridgeIssuer,
|
|
25
25
|
...(process.env.AUTH_BRIDGE_JWKS_URL ? { jwksUrl: process.env.AUTH_BRIDGE_JWKS_URL } : {}),
|
|
26
26
|
...(process.env.AUTH_BRIDGE_AUDIENCE ? { audience: process.env.AUTH_BRIDGE_AUDIENCE } : {}),
|
|
@@ -28,7 +28,7 @@ export function runStage09(ctx) {
|
|
|
28
28
|
metrics,
|
|
29
29
|
})
|
|
30
30
|
: undefined;
|
|
31
|
-
if (
|
|
31
|
+
if (webAdminJwtVerifier)
|
|
32
32
|
logger.info("auth_bridge_enabled", { issuer: buildDisplaySafeUrl(authBridgeIssuer ?? "") });
|
|
33
33
|
const hookWakeBus = {};
|
|
34
34
|
const wiringSpecTemplate = durableEnabled
|
|
@@ -45,6 +45,6 @@ export function runStage09(ctx) {
|
|
|
45
45
|
subagentTranscripts: staticWiring.fleet.subagentTranscripts,
|
|
46
46
|
subagentTranscriptRetentionMs: config.backgroundAgentRetentionMs,
|
|
47
47
|
});
|
|
48
|
-
return { ...ctx, drainState, hookWakeBus, instrumentDegenerate, leaderEndpoint, ownerAware, planCacheProbe, purgeSession,
|
|
48
|
+
return { ...ctx, drainState, hookWakeBus, instrumentDegenerate, leaderEndpoint, ownerAware, planCacheProbe, purgeSession, webAdminJwtVerifier, sessionAudit, sessionWatchRegistry, staticWiring };
|
|
49
49
|
}
|
|
50
50
|
//# sourceMappingURL=stage-09-leader.js.map
|
|
@@ -15,7 +15,7 @@ export declare function runStage10(ctx: Awaited<ReturnType<typeof runStage09>>):
|
|
|
15
15
|
} | {
|
|
16
16
|
childrenAlive: readonly string[];
|
|
17
17
|
}>) | undefined;
|
|
18
|
-
|
|
18
|
+
webAdminJwtVerifier: import("../auth-bridge.js").WebAdminJwtVerifier | undefined;
|
|
19
19
|
sessionAudit: ((sessionId: string) => Promise<{
|
|
20
20
|
owner: string | null;
|
|
21
21
|
sessionId: string;
|
|
@@ -80,7 +80,7 @@ export declare function runStage10(ctx: Awaited<ReturnType<typeof runStage09>>):
|
|
|
80
80
|
hookAgent: import("../hooks/hook-runner.js").HookLlmCall;
|
|
81
81
|
hookAgentRunner: import("@sema-agent/core").Runner;
|
|
82
82
|
hookLlm: import("../hooks/hook-runner.js").HookLlmCall;
|
|
83
|
-
mcpRevocations: import("../
|
|
83
|
+
mcpRevocations: import("../web-admin-client/mcp-revocation.js").McpRevocationLedger;
|
|
84
84
|
memoryConsolidationFaces: import("./memory-consolidation.js").MemoryConsolidationFaces | undefined;
|
|
85
85
|
memoryOptOutGrantStore: import("../plugins/memory-optout-grant-store-sql.js").MemoryOptOutGrantStore | undefined;
|
|
86
86
|
orgMemoryAdmission: import("./org-memory.js").OrgMemoryAdmissionWiring;
|
|
@@ -198,7 +198,7 @@ export declare function runStage10(ctx: Awaited<ReturnType<typeof runStage09>>):
|
|
|
198
198
|
taskListLane: import("./task-list-lane.js").TaskListLane;
|
|
199
199
|
usageWindowStore: import("@sema-agent/core").UsageWindowStore | undefined;
|
|
200
200
|
ceilingVerdict: import("./unpriced-ceiling-verdict.js").UnpricedCeilingVerdict;
|
|
201
|
-
|
|
201
|
+
webAdmin: import("./web-admin.js").WebAdminRuntime;
|
|
202
202
|
config: import("../config-types.js").ServiceConfig;
|
|
203
203
|
localRoot: string;
|
|
204
204
|
logger: import("../index.js").Logger;
|
|
@@ -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, parkCommits, config,
|
|
32
|
+
const { approvalAskAudit, approvalExemptionStore, approvalNonceStore, authorize, backend, backgroundAgentStore, brain, breakerState, centerRuntimeCapsResolver, checkpointStore, parkCommits, config, webAdmin, consolidationValve, costQuota, deploymentHooks, deviceLane, drainState, durableEnabled, elicitation, fenceSessionOwner, noteSessionIncarnation, fileHistoryStore, fleetBus, fleetLease, fleetUsage, governanceSeams, handslessRunner, hookAgent, hookLlm, hookWakeBus, imageBakes, imageIndex, instanceId, instrumentDegenerate, leaderEndpoint, localRoot, logger, lspManager, mcpRevocations, memoryBundleFaces, memoryComplianceFaces, memoryConsolidationFaces, memoryEngine, memoryExportBackend, memoryOptOutGrantStore, memoryOriginFaces, memoryPosture, memorySyncCursors, 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, scenarioDetails, scenarios, selectEnvTool, sendFileLedger, sendUserFileEmitter, sendUserFileToolSpec, sessionAudit, sessionEnvSelection, sessionMemoryStatusFace, sessionPolicyStore, sessionTitler, sessionWatchRegistry, setSessionCwd, setSessionInheritEnv, setSessionShellEnv, sharedMemoryStore, sideQueryAccounting, sqlEngineFacts, sqlWorkflowRunStore, staticWiring, storePosture, subRunner, subagentSteerRegistry, taskAttachmentStore, taskLimitCaps, taskTimeoutSec, toolApproval, toolResultStore, usageWindowStore, userInputLedger, webSearchProvider, workflowAgentRegistry, workflowAgentSessionIndex, workflowCompletionInbox, workflowJournalStore, workflowModelAllowlistSnapshot, workflowNotifyGate, workflowNotifyJournal, workflowRecoverOpts, workflowRunStore, workflowsCapable } = ctx;
|
|
33
33
|
const stores = {
|
|
34
34
|
runStore,
|
|
35
35
|
resumeAnchorStore: resumeAnchorStore ? resumeAnchorStore : undefined,
|
|
@@ -116,7 +116,7 @@ export async function runStage10(ctx) {
|
|
|
116
116
|
};
|
|
117
117
|
const governance = {
|
|
118
118
|
authorize,
|
|
119
|
-
|
|
119
|
+
webAdminJwtVerifier: webAdminJwtVerifier ? webAdminJwtVerifier : undefined,
|
|
120
120
|
rateLimiter,
|
|
121
121
|
costQuota,
|
|
122
122
|
fleetLease: fleetLease ? fleetLease : undefined,
|
|
@@ -155,7 +155,7 @@ export async function runStage10(ctx) {
|
|
|
155
155
|
: undefined;
|
|
156
156
|
const deployment = {
|
|
157
157
|
sessionStoreLabel: sessionStoreLabelOf(config.sessionBackend, backend?.kind),
|
|
158
|
-
modelReady: () =>
|
|
158
|
+
modelReady: () => webAdmin.modelReady(),
|
|
159
159
|
scenarioDetails,
|
|
160
160
|
workflowsCapable,
|
|
161
161
|
workflowModelAllowlist: workflowModelAllowlistSnapshot,
|
|
@@ -164,7 +164,7 @@ export async function runStage10(ctx) {
|
|
|
164
164
|
sqlEngineFacts,
|
|
165
165
|
writeProtection: buildWriteProtectionPosture(config),
|
|
166
166
|
webSearchProvider,
|
|
167
|
-
sealedKeyPublic:
|
|
167
|
+
sealedKeyPublic: webAdmin.sealedKeyPublic,
|
|
168
168
|
instanceId,
|
|
169
169
|
capabilities: {
|
|
170
170
|
version: serviceVersion(),
|
|
@@ -173,19 +173,19 @@ export async function runStage10(ctx) {
|
|
|
173
173
|
return isPricingConfigured(pricing);
|
|
174
174
|
},
|
|
175
175
|
},
|
|
176
|
-
restartState: () =>
|
|
177
|
-
configApplyState: () =>
|
|
178
|
-
centerCredentialState: () =>
|
|
179
|
-
modelRefusalsState: () =>
|
|
180
|
-
configHandoffState: () =>
|
|
176
|
+
restartState: () => webAdmin.restartState(),
|
|
177
|
+
configApplyState: () => webAdmin.configApplyState(),
|
|
178
|
+
centerCredentialState: () => webAdmin.centerCredentialState(),
|
|
179
|
+
modelRefusalsState: () => webAdmin.modelRefusalsState(),
|
|
180
|
+
configHandoffState: () => webAdmin.configHandoffState(),
|
|
181
181
|
mcpRevocations,
|
|
182
|
-
mcpRevocationState: () =>
|
|
183
|
-
configRefreshNow: () =>
|
|
184
|
-
|
|
182
|
+
mcpRevocationState: () => webAdmin.mcpRevocationState(),
|
|
183
|
+
configRefreshNow: () => webAdmin.refreshNow(),
|
|
184
|
+
webAdminManagedKeys: () => webAdmin.centerManagedKeys(),
|
|
185
185
|
drainState,
|
|
186
186
|
servingLease: servingLease ? () => servingLease.view() : undefined,
|
|
187
187
|
storePosture,
|
|
188
|
-
centerWiring: createCenterWiringReader({ config, pullState: () =>
|
|
188
|
+
centerWiring: createCenterWiringReader({ config, pullState: () => webAdmin.centerPullState(), fleetLease, usageReport: fleetUsage !== undefined }),
|
|
189
189
|
storeLiveState: storeLiveProbe ? () => storeLiveProbe.state() : undefined,
|
|
190
190
|
};
|
|
191
191
|
const knobs = {
|
|
@@ -196,8 +196,8 @@ export async function runStage10(ctx) {
|
|
|
196
196
|
};
|
|
197
197
|
const resolveSpec = createResolveSpec({
|
|
198
198
|
config, logger, metrics, localRoot, scenarios, principalCaps, centerRuntimeCapsResolver,
|
|
199
|
-
getCenterPrompts: () =>
|
|
200
|
-
getKeyResolver: () =>
|
|
199
|
+
getCenterPrompts: () => webAdmin.getCenterPrompts(),
|
|
200
|
+
getKeyResolver: () => webAdmin.getKeyResolver(),
|
|
201
201
|
taskAttachmentStore, perSessionCwd, setSessionCwd, setSessionShellEnv, fenceSessionOwner,
|
|
202
202
|
noteSessionIncarnation,
|
|
203
203
|
hookLlm, hookAgent, fleetBus, hookWakeBus, resumeAnchorStore, ownerAware, taskLimitCaps, taskTimeoutSec,
|
|
@@ -209,7 +209,7 @@ export async function runStage10(ctx) {
|
|
|
209
209
|
approverSeat: createRunnerDepsOnAsk(toolApproval),
|
|
210
210
|
});
|
|
211
211
|
const runnerFor = createHandsRunnerSelector({ full: runner, handsless: handslessRunner });
|
|
212
|
-
const sideQuery = createSideQueryLane({ brain, config, getKeyResolver: () =>
|
|
212
|
+
const sideQuery = createSideQueryLane({ brain, config, getKeyResolver: () => webAdmin.getKeyResolver() });
|
|
213
213
|
const server = createHttpServer({ runner, runnerFor, sideQuery, config, resolveSpec, stores, coordinators, seams, observability, governance, deployment, knobs });
|
|
214
214
|
bindServerLateSeats({ config, logger, server });
|
|
215
215
|
const fleetReconcile = startFleetReconciler({
|
|
@@ -274,10 +274,10 @@ export async function runStage10(ctx) {
|
|
|
274
274
|
...(fleetUsage ? { usage: fleetUsage } : {}),
|
|
275
275
|
logger: { info: (m, d) => logger.info(m, d ?? {}), warn: (m, d) => logger.warn(m, d ?? {}) },
|
|
276
276
|
});
|
|
277
|
-
|
|
277
|
+
webAdmin.onSelfReportChange(() => void fleetClient?.announceNow());
|
|
278
278
|
if (fleetClient) {
|
|
279
279
|
const advertised = config.fleetAdvertiseAddress;
|
|
280
|
-
logger.info("fleet_client_started", { worker: config.
|
|
280
|
+
logger.info("fleet_client_started", { worker: config.webAdmin?.worker, usageReport: fleetUsage !== undefined, announce: advertised !== undefined, ...(advertised !== undefined ? { address: buildDisplaySafeUrl(advertised) } : {}) });
|
|
281
281
|
}
|
|
282
282
|
const failoverFirstByte = buildFailoverFirstByteNotice(config);
|
|
283
283
|
if (failoverFirstByte)
|
|
@@ -325,7 +325,7 @@ export async function runStage10(ctx) {
|
|
|
325
325
|
config, logger, server, reaper, fleetReconcile, otelExporter, breakerState, costQuota, rateLimiter,
|
|
326
326
|
version: serviceVersion(),
|
|
327
327
|
runner, subRunner, lspManager, workflowNotifyJournal, fleetClient, backend, drainState,
|
|
328
|
-
storeLiveProbe,
|
|
328
|
+
storeLiveProbe, webAdmin,
|
|
329
329
|
toolApproval,
|
|
330
330
|
parkCommits,
|
|
331
331
|
deviceHub: deviceLane?.hub,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ServiceConfig } from "../config-types.js";
|
|
2
2
|
import type { Logger } from "../observability/logger.js";
|
|
3
3
|
export interface UnpricedCeilingVerdictCtx {
|
|
4
|
-
/** 活配置(
|
|
4
|
+
/** 活配置(web-admin 热应用就地改写的**同一个**对象——所以每次 `judge()` 读到的是当代值)。 */
|
|
5
5
|
readonly config: Pick<ServiceConfig, "models" | "maxTaskCostUsd" | "maxPrincipalCostUsd">;
|
|
6
6
|
readonly logger?: Logger;
|
|
7
7
|
}
|
|
@@ -13,12 +13,12 @@ import { type SealedKeyPublicFace } from "../sealed-key.js";
|
|
|
13
13
|
import type { UnpricedCeilingVerdict } from "./unpriced-ceiling-verdict.js";
|
|
14
14
|
import type { ConsolidationSeatWatch } from "./memory-consolidation.js";
|
|
15
15
|
import type { DegradeRouteWatch } from "../brain.js";
|
|
16
|
-
import { type EngineRestartSignal } from "../
|
|
16
|
+
import { type EngineRestartSignal } from "../web-admin-client/facade.js";
|
|
17
17
|
import { type ConfigHandoff } from "../fleet/engine-signal.js";
|
|
18
|
-
import { type ConfigApplyLedgerView } from "../
|
|
19
|
-
import type { CenterPullView } from "../
|
|
18
|
+
import { type ConfigApplyLedgerView } from "../web-admin-client/apply-ledger.js";
|
|
19
|
+
import type { CenterPullView } from "../web-admin-client/pull-state.js";
|
|
20
20
|
import type { LimitSync } from "./limit-sync.js";
|
|
21
|
-
export interface
|
|
21
|
+
export interface WebAdminRuntimeCtx {
|
|
22
22
|
config: ServiceConfig;
|
|
23
23
|
logger: Logger;
|
|
24
24
|
metrics: Metrics;
|
|
@@ -33,10 +33,10 @@ export interface CenterScenarioOverlayTargets {
|
|
|
33
33
|
/** overlay 前捕获的六内建名(centerScenarioDetails 的 shadow 判据)。 */
|
|
34
34
|
builtinScenarioNames: string[];
|
|
35
35
|
}
|
|
36
|
-
/** S-740 / S-741 / S-768:
|
|
36
|
+
/** S-740 / S-741 / S-768:web-admin 持有的三样自报状态(fleet 心跳读它们)—— 闭集:加一样 = 写口与订阅方一起表态。 */
|
|
37
37
|
export type SelfReportChange = "roster_landed" | "restart_signal" | "model_refusals";
|
|
38
38
|
/** 跨段可变状态的**唯一**对外读口 + 三个原位动作。字段语义见各方法上的注释。 */
|
|
39
|
-
export interface
|
|
39
|
+
export interface WebAdminRuntime {
|
|
40
40
|
/** 配置源形态;`undefined` = 纯 env 部署(本运行时的所有分支不存在)。 */
|
|
41
41
|
readonly providerKind: "remote" | "local" | undefined;
|
|
42
42
|
/** S-737:本进程模型钥匙保管店的**公钥面**(只有最新那把公钥;私钥 / 持有 id 列表 / 开箱口结构上够不着,见
|
|
@@ -86,7 +86,7 @@ export interface ConfigCenterRuntime {
|
|
|
86
86
|
/** [ref](core 5.50 [ref]):mid-turn MCP 撤销台账读口,喂 `RunnerDeps.mcpRevocations` 席。
|
|
87
87
|
* **取走即声明接线**——调用本方法后,restart 信号的 mcp 片对纯删除向豁免(台账即时承接);
|
|
88
88
|
* 不取 ⇒ 旧 restart 语义逐字保留(fail-closed)。 */
|
|
89
|
-
takeMcpRevocations(): import("../
|
|
89
|
+
takeMcpRevocations(): import("../web-admin-client/mcp-revocation.js").McpRevocationLedger;
|
|
90
90
|
/** [ref] 诊断投影:当前被撤销的 MCP 服务器名单;纯 env 部署(无配置管道)= undefined(additive 纪律)。 */
|
|
91
91
|
mcpRevocationState(): {
|
|
92
92
|
revoked: string[];
|
|
@@ -100,7 +100,7 @@ export interface ConfigCenterRuntime {
|
|
|
100
100
|
/** boot ready 门:布防(`CONFIG_REQUIRE_ROSTER=true`,远程 registry 非 dryRun)且 roster 未落地 =
|
|
101
101
|
* 计费提交 503 + /health ready:false。缺省未布防 ⇒ 恒 true。 */
|
|
102
102
|
modelReady(): boolean;
|
|
103
|
-
/** S-740 / S-741:本副本**自报状态**里由
|
|
103
|
+
/** S-740 / S-741:本副本**自报状态**里由 web-admin 持有的那两样 —— roster 落地(`modelReady` 翻真,one-way latch)与
|
|
104
104
|
* restart 信号(`restartState()` 出现 / 消失 / 变)—— 任一翻转的那一拍通知订阅者。装配层接 fleet 心跳的 `announceNow`,
|
|
105
105
|
* 让中心在翻转当刻就知道本副本可路由 / 要重启(不等下一拍心跳;draining 那一样由收尾链直调 `announceNow`,同一个触发)。
|
|
106
106
|
* 在状态**写定之后**调用,同步、逐个,入参 = 这一次翻的是哪一样(闭集 {@link SelfReportChange});不回放(订阅方在订阅前已读过
|
|
@@ -121,7 +121,7 @@ export interface ConfigCenterRuntime {
|
|
|
121
121
|
* `undefined` = 本部署没有配置管道(纯 env worker)⇒ 两个读面的形状**逐字不变**(additive 纪律)。 */
|
|
122
122
|
configApplyState(): ConfigApplyLedgerView | undefined;
|
|
123
123
|
/** S-866 ②:caps `centerWiring.effectivePull` / `effectiveRevision` 的取值口 —— `lastPull`(新状态,只此一枚:boot 实拉 / 迟到 boot 到货 /
|
|
124
|
-
* refresh 拍收尾写)+ 与 `configApplyState()` **同一只** ledger 视图的已应用修订号。形与词表见 `
|
|
124
|
+
* refresh 拍收尾写)+ 与 `configApplyState()` **同一只** ledger 视图的已应用修订号。形与词表见 `web-admin-client/pull-state.ts`。 */
|
|
125
125
|
centerPullState(): CenterPullView;
|
|
126
126
|
/** DESIGN-278 §5 S2([ref]):center **当前在管**的 ServiceConfig 键集 —— `GET /v1/config/catalog` 判
|
|
127
127
|
* `effectiveLane` 的 center 半场。投影自最近一次成功应用的候选(`latestEffective`,LKG/refresh 同一
|
|
@@ -142,5 +142,5 @@ export interface ConfigCenterRuntime {
|
|
|
142
142
|
*/
|
|
143
143
|
refreshNow(): Promise<"triggered" | "not-wired" | "failed">;
|
|
144
144
|
}
|
|
145
|
-
export declare function
|
|
146
|
-
//# sourceMappingURL=
|
|
145
|
+
export declare function createWebAdminRuntime(ctx: WebAdminRuntimeCtx): Promise<WebAdminRuntime>;
|
|
146
|
+
//# sourceMappingURL=web-admin.d.ts.map
|