@sema-agent/server 7.123.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.
Files changed (224) hide show
  1. package/MIGRATION.md +132 -0
  2. package/README.md +2 -2
  3. package/README.zh-CN.md +2 -2
  4. package/USAGE.md +53 -51
  5. package/dist/approval-ask-audit-store.d.ts +27 -32
  6. package/dist/approval-ask-audit-store.js +10 -9
  7. package/dist/approval-crash-convergence.d.ts +2 -2
  8. package/dist/approval-crash-convergence.js +5 -5
  9. package/dist/approval-deny-reasons.d.ts +163 -51
  10. package/dist/approval-deny-reasons.js +79 -8
  11. package/dist/approval-policy-settlement.d.ts +4 -1
  12. package/dist/approval-policy-settlement.js +3 -2
  13. package/dist/approval-reconciler.d.ts +3 -3
  14. package/dist/approval-reconciler.js +10 -10
  15. package/dist/approval.d.ts +1 -1
  16. package/dist/approval.js +1 -1
  17. package/dist/audit.js +1 -1
  18. package/dist/auth-bridge.d.ts +8 -8
  19. package/dist/auth-bridge.js +6 -6
  20. package/dist/auth-keys.d.ts +2 -2
  21. package/dist/auto-mode-face.d.ts +1 -1
  22. package/dist/boot/budget-tracing.js +1 -1
  23. package/dist/boot/execution-env.js +1 -0
  24. package/dist/boot/leader.d.ts +1 -1
  25. package/dist/boot/memory-consolidation.d.ts +4 -4
  26. package/dist/boot/org-memory.d.ts +3 -3
  27. package/dist/boot/org-memory.js +5 -5
  28. package/dist/boot/resolve-spec.js +7 -7
  29. package/dist/boot/runner-deps.d.ts +1 -1
  30. package/dist/boot/runtime-caps.d.ts +1 -1
  31. package/dist/boot/runtime-caps.js +10 -10
  32. package/dist/boot/shutdown.d.ts +2 -2
  33. package/dist/boot/shutdown.js +2 -2
  34. package/dist/boot/side-query-lane.d.ts +3 -3
  35. package/dist/boot/{stage-02-registry-pull.d.ts → stage-02-web-admin-pull.d.ts} +2 -2
  36. package/dist/boot/{stage-02-registry-pull.js → stage-02-web-admin-pull.js} +4 -4
  37. package/dist/boot/stage-03-store-backend.d.ts +2 -2
  38. package/dist/boot/stage-04-stores.d.ts +1 -1
  39. package/dist/boot/stage-05-execution-env.d.ts +1 -1
  40. package/dist/boot/stage-06-runners.d.ts +2 -2
  41. package/dist/boot/stage-06-runners.js +6 -6
  42. package/dist/boot/stage-07-capability-layer.d.ts +2 -2
  43. package/dist/boot/stage-07-capability-layer.js +6 -5
  44. package/dist/boot/stage-08-reapers.d.ts +3 -3
  45. package/dist/boot/stage-08-reapers.js +3 -3
  46. package/dist/boot/stage-09-leader.d.ts +3 -3
  47. package/dist/boot/stage-09-leader.js +7 -7
  48. package/dist/boot/stage-10-http-server.d.ts +3 -3
  49. package/dist/boot/stage-10-http-server.js +19 -19
  50. package/dist/boot/unpriced-ceiling-verdict.d.ts +1 -1
  51. package/dist/boot/{config-center.d.ts → web-admin.d.ts} +11 -11
  52. package/dist/boot/{config-center.js → web-admin.js} +38 -22
  53. package/dist/boot/webfetch-summarize-lane.d.ts +2 -2
  54. package/dist/brain.d.ts +1 -1
  55. package/dist/brain.js +1 -1
  56. package/dist/budget.d.ts +3 -3
  57. package/dist/canonical-json.d.ts +2 -2
  58. package/dist/capabilities/center-plugins.d.ts +1 -1
  59. package/dist/capabilities/center-wiring.d.ts +12 -5
  60. package/dist/capabilities/center-wiring.js +11 -2
  61. package/dist/capabilities/composite-members.d.ts +1 -1
  62. package/dist/capabilities/composite-members.js +1 -1
  63. package/dist/capabilities/scenarios.js +2 -2
  64. package/dist/capabilities/team.d.ts +1 -1
  65. package/dist/capabilities/tool-defer.d.ts +1 -1
  66. package/dist/center-credential-renewer.d.ts +1 -1
  67. package/dist/center-credential-renewer.js +7 -7
  68. package/dist/center-credential.d.ts +9 -9
  69. package/dist/center-credential.js +6 -6
  70. package/dist/config-catalog.d.ts +7 -10
  71. package/dist/config-catalog.js +15 -15
  72. package/dist/config-d-migration.d.ts +32 -0
  73. package/dist/config-d-migration.js +59 -0
  74. package/dist/config-invariants.d.ts +14 -4
  75. package/dist/config-invariants.js +31 -2
  76. package/dist/config-lkg.d.ts +26 -6
  77. package/dist/config-lkg.js +43 -14
  78. package/dist/config-provider.d.ts +23 -19
  79. package/dist/config-provider.js +24 -26
  80. package/dist/config-types.d.ts +52 -51
  81. package/dist/config.d.ts +9 -46
  82. package/dist/config.js +33 -92
  83. package/dist/execution-lane-caps.d.ts +1 -1
  84. package/dist/fleet/drain-entry.d.ts +1 -1
  85. package/dist/fleet/engine-signal.d.ts +8 -8
  86. package/dist/fleet/fleet-bus.d.ts +12 -3
  87. package/dist/fleet/fleet-bus.js +13 -9
  88. package/dist/fleet/serving-lease.d.ts +3 -3
  89. package/dist/fleet/serving-lease.js +1 -1
  90. package/dist/fleet-client.d.ts +7 -7
  91. package/dist/fleet-client.js +5 -4
  92. package/dist/fleet-lease.d.ts +3 -3
  93. package/dist/fleet-lease.js +2 -2
  94. package/dist/host-lsp-manager.d.ts +1 -1
  95. package/dist/hosted-posture.d.ts +4 -4
  96. package/dist/http/admission.js +4 -4
  97. package/dist/http/checkpoint-ctx.d.ts +20 -3
  98. package/dist/http/checkpoint-ctx.js +13 -5
  99. package/dist/http/dispatch.js +2 -2
  100. package/dist/http/durable-run-leg.js +2 -1
  101. package/dist/http/health-self-report.d.ts +4 -4
  102. package/dist/http/health-self-report.js +3 -3
  103. package/dist/http/idempotency.d.ts +1 -1
  104. package/dist/http/resume-legs.d.ts +4 -3
  105. package/dist/http/resume-legs.js +31 -18
  106. package/dist/http/route-ctx.d.ts +8 -0
  107. package/dist/http/routes/admin-config-refresh.d.ts +1 -1
  108. package/dist/http/routes/admin-config-refresh.js +1 -1
  109. package/dist/http/routes/admin-drain.d.ts +1 -1
  110. package/dist/http/routes/admin-drain.js +5 -4
  111. package/dist/http/routes/approvals-assistant.js +4 -4
  112. package/dist/http/routes/capabilities.js +5 -5
  113. package/dist/http/routes/config-catalog.js +2 -3
  114. package/dist/http/routes/diagnostics.js +1 -1
  115. package/dist/http/routes/runs.js +8 -4
  116. package/dist/http/routes/sessions-list.js +2 -1
  117. package/dist/http/routes/sessions.js +1 -1
  118. package/dist/http/routes/side-query.js +3 -3
  119. package/dist/http/routes/tasks.js +3 -2
  120. package/dist/http/run-meta.d.ts +1 -1
  121. package/dist/http/run-meta.js +2 -2
  122. package/dist/http/server.d.ts +7 -7
  123. package/dist/http/server.js +1 -1
  124. package/dist/http/stored-body-replay.js +3 -2
  125. package/dist/index.d.ts +0 -1
  126. package/dist/index.js +0 -1
  127. package/dist/key-resolver.d.ts +1 -1
  128. package/dist/leader/wire.d.ts +2 -2
  129. package/dist/leader/wire.js +2 -1
  130. package/dist/main.js +1 -1
  131. package/dist/mcp-tool-faces.d.ts +2 -2
  132. package/dist/model-entry-refusal.d.ts +3 -3
  133. package/dist/model-entry-refusal.js +4 -4
  134. package/dist/model-provider.d.ts +2 -2
  135. package/dist/model-route-endpoint.d.ts +1 -1
  136. package/dist/model-route-url.d.ts +1 -1
  137. package/dist/model-route-url.js +2 -1
  138. package/dist/model-select.d.ts +24 -21
  139. package/dist/model-select.js +22 -17
  140. package/dist/observability/metrics.d.ts +1 -1
  141. package/dist/org-memory-admission.d.ts +1 -1
  142. package/dist/plugins/approval-ask-store-file.d.ts +4 -2
  143. package/dist/plugins/approval-ask-store-file.js +3 -3
  144. package/dist/plugins/approval-ask-store-memory.d.ts +4 -3
  145. package/dist/plugins/approval-ask-store-memory.js +10 -4
  146. package/dist/plugins/approval-ask-store-sql.d.ts +16 -2
  147. package/dist/plugins/approval-ask-store-sql.js +20 -13
  148. package/dist/plugins/caching-session-store.d.ts +0 -10
  149. package/dist/plugins/caching-session-store.js +0 -3
  150. package/dist/plugins/file-run-store.js +9 -3
  151. package/dist/plugins/leader-run-store-sql.d.ts +3 -2
  152. package/dist/plugins/leader-run-store-sql.js +3 -2
  153. package/dist/plugins/local-session-store.d.ts +20 -27
  154. package/dist/plugins/local-session-store.js +19 -17
  155. package/dist/plugins/memory-run-store.js +9 -3
  156. package/dist/plugins/one-time-migrations.js +26 -2
  157. package/dist/plugins/scheduler-support.d.ts +26 -7
  158. package/dist/plugins/scheduler-support.js +96 -53
  159. package/dist/plugins/store-backend.js +1 -1
  160. package/dist/plugins/store-contracts.d.ts +20 -4
  161. package/dist/plugins/web-search.d.ts +1 -1
  162. package/dist/plugins/web-search.js +2 -1
  163. package/dist/posture-source.d.ts +1 -1
  164. package/dist/read-face-posture.d.ts +3 -3
  165. package/dist/read-face-posture.js +1 -1
  166. package/dist/run-local.js +6 -3
  167. package/dist/runtime-caps-resolver.d.ts +4 -4
  168. package/dist/runtime-caps-resolver.js +2 -2
  169. package/dist/runtime-governance.d.ts +5 -5
  170. package/dist/sealed-key.d.ts +4 -4
  171. package/dist/sealed-key.js +3 -2
  172. package/dist/security.d.ts +3 -3
  173. package/dist/service-version.d.ts +1 -1
  174. package/dist/service-version.js +5 -0
  175. package/dist/session-titler.d.ts +0 -11
  176. package/dist/session-titler.js +3 -5
  177. package/dist/shared-memory-scope-authorizer.d.ts +4 -4
  178. package/dist/task-a2a.d.ts +1 -1
  179. package/dist/tool-approval.d.ts +43 -4
  180. package/dist/tool-approval.js +147 -98
  181. package/dist/trace/core-keyset-guard.d.ts +1 -1
  182. package/dist/trace/project.d.ts +3 -3
  183. package/dist/trace/redact.d.ts +2 -23
  184. package/dist/trace/redact.js +1 -6
  185. package/dist/trace/self-minted-wire.d.ts +147 -3
  186. package/dist/trace/self-minted-wire.js +50 -9
  187. package/dist/url-refusal.d.ts +35 -0
  188. package/dist/url-refusal.js +15 -0
  189. package/dist/user-authored-text.d.ts +31 -0
  190. package/dist/user-authored-text.js +18 -0
  191. package/dist/{config-center → web-admin-client}/apply-effective.d.ts +13 -70
  192. package/dist/{config-center → web-admin-client}/apply-effective.js +100 -119
  193. package/dist/{config-center → web-admin-client}/apply-ledger.d.ts +2 -2
  194. package/dist/{config-center → web-admin-client}/center-request.d.ts +7 -7
  195. package/dist/{config-center → web-admin-client}/center-request.js +5 -4
  196. package/dist/{config-center → web-admin-client}/effective-keys.d.ts +1 -3
  197. package/dist/{config-center → web-admin-client}/effective-keys.js +0 -9
  198. package/dist/{config-center → web-admin-client}/facade.d.ts +6 -6
  199. package/dist/{config-center → web-admin-client}/facade.js +2 -2
  200. package/dist/{config-center → web-admin-client}/http-client.d.ts +6 -10
  201. package/dist/{config-center → web-admin-client}/http-client.js +12 -12
  202. package/dist/{config-center → web-admin-client}/pull-state.d.ts +1 -1
  203. package/dist/{config-center → web-admin-client}/read-face.js +4 -4
  204. package/dist/{config-center → web-admin-client}/read-warnings.d.ts +23 -16
  205. package/dist/{config-center → web-admin-client}/read-warnings.js +33 -23
  206. package/dist/{config-center → web-admin-client}/restart-signal.d.ts +5 -3
  207. package/dist/{config-center → web-admin-client}/restart-signal.js +3 -4
  208. package/dist/{config-center → web-admin-client}/skills-mcp.d.ts +1 -1
  209. package/dist/{config-center → web-admin-client}/skills-mcp.js +13 -13
  210. package/dist/{config-center → web-admin-client}/stage-limits.d.ts +1 -7
  211. package/dist/{config-center → web-admin-client}/stage-limits.js +6 -7
  212. package/dist/{config-center → web-admin-client}/types.d.ts +12 -39
  213. package/package.json +2 -2
  214. package/skills/find-skills.md +2 -2
  215. package/dist/url-shape.d.ts +0 -31
  216. package/dist/url-shape.js +0 -41
  217. /package/dist/{config-center → web-admin-client}/apply-ledger.js +0 -0
  218. /package/dist/{config-center → web-admin-client}/hot-keys-registry.d.ts +0 -0
  219. /package/dist/{config-center → web-admin-client}/hot-keys-registry.js +0 -0
  220. /package/dist/{config-center → web-admin-client}/mcp-revocation.d.ts +0 -0
  221. /package/dist/{config-center → web-admin-client}/mcp-revocation.js +0 -0
  222. /package/dist/{config-center → web-admin-client}/pull-state.js +0 -0
  223. /package/dist/{config-center → web-admin-client}/read-face.d.ts +0 -0
  224. /package/dist/{config-center → web-admin-client}/types.js +0 -0
@@ -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("../config-center/mcp-revocation.js").McpRevocationLedger;
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
- configCenter: import("./config-center.js").ConfigCenterRuntime;
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, configCenter, 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;
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(() => configCenter.getKeyResolver()),
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 = configCenter.takeMcpRevocations();
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: configCenter.promptSource, rosterStore, backgroundAgentStore, mailboxStore, mailboxRecipientLifecycle, usageWindowStore, brain,
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: () => configCenter.getKeyResolver(), metrics });
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: configCenter.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("../config-center/mcp-revocation.js").McpRevocationLedger;
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
- configCenter: import("./config-center.js").ConfigCenterRuntime;
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, configCenter, counterDegradeHook, durableEnabled, handslessSubRunner, instanceId, localRoot, logger, memoryEngine, metrics, question, runner, runnerDeps, sendUserFileToolSpec, sessionEnvSelection, sessionStore, subRunner, subRunnerSessions, taskListLane, toolApproval } = ctx;
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: "SELF_ORCHESTRATION_ENABLED is on and REQUIRE_PRINCIPAL is on, but no per-principal entitlement source is wired (no config center, 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 config center (SEMA_REGISTRY_URL + token, not dry-run), or set SELF_ORCHESTRATION_ENABLED=false." });
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 configCenter.applyCenterCapabilities(skills);
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: () => configCenter.getKeyResolver(), logger });
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
- configCenter.applyCenterScenarios({ scenarioDeps, scenarios, scenarioDetails, builtinScenarioNames });
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
- * 原子换代闭包 + config-center 刷新环与 key resolver 首建。
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("../config-center/mcp-revocation.js").McpRevocationLedger;
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
- configCenter: import("./config-center.js").ConfigCenterRuntime;
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, configCenter, 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;
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
- configCenter.startRefreshLoop({ pricing, limitSync, swapRunnerDeps, ceilingVerdict, checkpointStorePresent: checkpointStore !== undefined, degradeRoute: degradeRouteWatch, ...(consolidationSeatWatch !== undefined ? { consolidationSeat: consolidationSeatWatch } : {}) });
75
- configCenter.initKeyResolver();
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
- registryJwtVerifier: import("../auth-bridge.js").RegistryJwtVerifier | undefined;
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("../config-center/mcp-revocation.js").McpRevocationLedger;
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
- configCenter: import("./config-center.js").ConfigCenterRuntime;
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, createRegistryJwtVerifier } from "../auth-bridge.js";
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, configCenter, 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;
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: configCenter.promptSource, onError: runnerDeps.onError });
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 registryJwtVerifier = authBridgeIssuer
23
- ? createRegistryJwtVerifier({
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 (registryJwtVerifier)
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, registryJwtVerifier, sessionAudit, sessionWatchRegistry, staticWiring };
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
- registryJwtVerifier: import("../auth-bridge.js").RegistryJwtVerifier | undefined;
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("../config-center/mcp-revocation.js").McpRevocationLedger;
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
- configCenter: import("./config-center.js").ConfigCenterRuntime;
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, configCenter, 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, registryJwtVerifier, 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;
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
- registryJwtVerifier: registryJwtVerifier ? registryJwtVerifier : undefined,
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: () => configCenter.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: configCenter.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: () => configCenter.restartState(),
177
- configApplyState: () => configCenter.configApplyState(),
178
- centerCredentialState: () => configCenter.centerCredentialState(),
179
- modelRefusalsState: () => configCenter.modelRefusalsState(),
180
- configHandoffState: () => configCenter.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: () => configCenter.mcpRevocationState(),
183
- configRefreshNow: () => configCenter.refreshNow(),
184
- configCenterManagedKeys: () => configCenter.centerManagedKeys(),
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: () => configCenter.centerPullState(), fleetLease, usageReport: fleetUsage !== undefined }),
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: () => configCenter.getCenterPrompts(),
200
- getKeyResolver: () => configCenter.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: () => configCenter.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
- configCenter.onSelfReportChange(() => void fleetClient?.announceNow());
277
+ webAdmin.onSelfReportChange(() => void fleetClient?.announceNow());
278
278
  if (fleetClient) {
279
279
  const advertised = config.fleetAdvertiseAddress;
280
- logger.info("fleet_client_started", { worker: config.configCenter?.worker, usageReport: fleetUsage !== undefined, announce: advertised !== undefined, ...(advertised !== undefined ? { address: buildDisplaySafeUrl(advertised) } : {}) });
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, configCenter,
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
- /** 活配置(config-center 热应用就地改写的**同一个**对象——所以每次 `judge()` 读到的是当代值)。 */
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 "../config-center/facade.js";
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 "../config-center/apply-ledger.js";
19
- import type { CenterPullView } from "../config-center/pull-state.js";
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 ConfigCenterRuntimeCtx {
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:config-center 持有的三样自报状态(fleet 心跳读它们)—— 闭集:加一样 = 写口与订阅方一起表态。 */
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 ConfigCenterRuntime {
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("../config-center/mcp-revocation.js").McpRevocationLedger;
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:本副本**自报状态**里由 config-center 持有的那两样 —— roster 落地(`modelReady` 翻真,one-way latch)与
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 视图的已应用修订号。形与词表见 `config-center/pull-state.ts`。 */
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 createConfigCenterRuntime(ctx: ConfigCenterRuntimeCtx): Promise<ConfigCenterRuntime>;
146
- //# sourceMappingURL=config-center.d.ts.map
145
+ export declare function createWebAdminRuntime(ctx: WebAdminRuntimeCtx): Promise<WebAdminRuntime>;
146
+ //# sourceMappingURL=web-admin.d.ts.map