@sema-agent/server 7.79.1 → 7.79.3

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 (41) hide show
  1. package/dist/boot/late-binds.d.ts +35 -0
  2. package/dist/boot/late-binds.js +20 -0
  3. package/dist/boot/stage-01-config.d.ts +7 -0
  4. package/dist/boot/stage-01-config.js +60 -0
  5. package/dist/boot/stage-02-registry-pull.d.ts +10 -0
  6. package/dist/boot/stage-02-registry-pull.js +11 -0
  7. package/dist/boot/stage-03-store-backend.d.ts +32 -0
  8. package/dist/boot/stage-03-store-backend.js +11 -0
  9. package/dist/boot/stage-04-stores.d.ts +69 -0
  10. package/dist/boot/stage-04-stores.js +49 -0
  11. package/dist/boot/stage-05-execution-env.d.ts +82 -0
  12. package/dist/boot/stage-05-execution-env.js +20 -0
  13. package/dist/boot/stage-06-runners.d.ts +143 -0
  14. package/dist/boot/stage-06-runners.js +207 -0
  15. package/dist/boot/stage-07-capability-layer.d.ts +157 -0
  16. package/dist/boot/stage-07-capability-layer.js +162 -0
  17. package/dist/boot/stage-08-reapers.d.ts +172 -0
  18. package/dist/boot/stage-08-reapers.js +78 -0
  19. package/dist/boot/stage-09-leader.d.ts +204 -0
  20. package/dist/boot/stage-09-leader.js +47 -0
  21. package/dist/boot/stage-10-http-server.d.ts +204 -0
  22. package/dist/boot/stage-10-http-server.js +289 -0
  23. package/dist/config-invariants.d.ts +9 -0
  24. package/dist/config-invariants.js +7 -1
  25. package/dist/config-types.d.ts +1 -1
  26. package/dist/http/dispatch.d.ts +9 -73
  27. package/dist/http/dispatch.js +12 -281
  28. package/dist/http/route-table.d.ts +113 -0
  29. package/dist/http/route-table.js +235 -0
  30. package/dist/http/routes/admin-memory-optout.d.ts +1 -1
  31. package/dist/http/routes/memory-compliance.d.ts +1 -1
  32. package/dist/http/routes/memory-origin.d.ts +1 -1
  33. package/dist/http/routes/rules.js +4 -4
  34. package/dist/http/server.d.ts +2 -1
  35. package/dist/http/server.js +2 -1
  36. package/dist/main.js +20 -870
  37. package/dist/service-version.d.ts +5 -0
  38. package/dist/service-version.js +12 -0
  39. package/dist/trace/redact.d.ts +16 -6
  40. package/dist/trace/redact.js +568 -246
  41. package/package.json +1 -1
@@ -0,0 +1,172 @@
1
+ /**
2
+ * 装配第 8 段 —— **后台 reaper**(§3-8)。
3
+ * 维护 tick(startReapers)+ 托管留存 lane(独立定时器)+ OTLP 导出 + 限额座换代口 + 五只 boot Runner 的
4
+ * 原子换代闭包 + config-center 刷新环与 key resolver 首建。
5
+ * ⚠️ 位置即契约:刷新环必须在 `new Runner` 之后(runnerTierFrozen 与构造函数读同一 config 代际);
6
+ * key resolver 首建读的必须是 boot apply 之后的 config。
7
+ * 🔴 `runDenySweep` 的 holder 住在 `late-binds.ts`(赋值点在第十段的 server 之后)。
8
+ */
9
+ import { Runner } from "@sema-agent/core";
10
+ import type { runStage07 } from "./stage-07-capability-layer.js";
11
+ export declare function runStage08(ctx: Awaited<ReturnType<typeof runStage07>>): {
12
+ otelExporter: {
13
+ stop(): void;
14
+ } | undefined;
15
+ reaper: NodeJS.Timeout;
16
+ retentionLaneStarted: import("./retention-lane.js").RetentionLaneController | undefined;
17
+ approvalExemptionStore: import("../plugins/approval-exemption-store.js").ApprovalExemptionStore | undefined;
18
+ approvalNonceStore: import("../plugins/approval-nonce-store.js").ApprovalNonceStore | undefined;
19
+ authorize: (ctx: {
20
+ req: import("http").IncomingMessage;
21
+ body: import("../index.js").TaskRequestBody;
22
+ }) => Promise<import("../security.js").AuthContext>;
23
+ imageBakes: import("../plugins/store-backend.js").ImageBake | undefined;
24
+ imageIndex: import("../plugins/store-backend.js").ImageIndex | undefined;
25
+ parkedReviveInheritedGate: ((row: import("@sema-agent/core").BackgroundAgentRecord, identity: import("./parked-revive-gate.js").ParkedReviveIdentity) => Promise<import("./parked-revive-gate.js").RebuiltInheritedGate>) | undefined;
26
+ parkedReviveTool: import("@sema-agent/core").ToolSpec<import("@sema-agent/core").TSchema> | undefined;
27
+ rateLimiter: import("../index.js").RateLimiter | import("../plugins/pg-rate-limiter.js").PgRateLimiter | import("../plugins/tidb-rate-limiter.js").TiDBRateLimiter;
28
+ resumeAnchorStore: import("../plugins/store-backend.js").ResumeAnchorStore | undefined;
29
+ runStore: import("../plugins/store-backend.js").RunStore | undefined;
30
+ scenarioDetails: Record<string, import("../capabilities/scenarios.js").ScenarioDetail>;
31
+ scenarios: Record<string, import("../index.js").Scenario>;
32
+ selectEnvTool: import("@sema-agent/core").ToolSpec<import("@sema-agent/core").TSchema> | undefined;
33
+ singleUserAutoAcceptBaseline: boolean;
34
+ taskLimitCaps: {
35
+ timeoutSec: number | undefined;
36
+ maxOutputTokens: number | undefined;
37
+ maxTurns: number | undefined;
38
+ };
39
+ taskTimeoutSec: number;
40
+ approvalAskAudit: import("../approval-ask-audit-store.js").FileApprovalAskAuditStore | undefined;
41
+ centerRuntimeCapsResolver: ((principal: string | undefined) => Promise<import("@sema-agent/core").RuntimeCaps | undefined>) | undefined;
42
+ checkpointStore: import("../plugins/store-backend.js").CheckpointStoreFull | undefined;
43
+ durableEnabled: boolean;
44
+ elicitation: import("../elicitation.js").ElicitationCoordinator | undefined;
45
+ fleetBus: import("../fleet/fleet-bus.js").FleetEventBus;
46
+ governanceSeams: import("./governance-seams.js").GovernanceSeams;
47
+ handslessRunner: Runner;
48
+ handslessSubRunner: Runner;
49
+ hookAgent: import("../hooks/hook-runner.js").HookLlmCall;
50
+ hookAgentRunner: Runner;
51
+ hookLlm: import("../hooks/hook-runner.js").HookLlmCall;
52
+ mcpRevocations: import("../config-center/mcp-revocation.js").McpRevocationLedger;
53
+ memoryConsolidationFaces: import("./memory-consolidation.js").MemoryConsolidationFaces | undefined;
54
+ memoryOptOutGrantStore: import("../plugins/memory-optout-grant-store-sql.js").MemoryOptOutGrantStore | undefined;
55
+ orgMemoryAdmission: import("./org-memory.js").OrgMemoryAdmissionWiring;
56
+ outcomeSink: import("../plugins/file-outcome-sink.js").OutcomeSink | undefined;
57
+ principalCaps: import("../runtime-caps-resolver.js").PrincipalEntitlementsClient | undefined;
58
+ question: import("../question.js").QuestionCoordinator | undefined;
59
+ retentionExecutor: import("../plugins/retention-store-sql.js").SqlRetentionStore | undefined;
60
+ retentionLaneStore: import("../plugins/retention-lane-store-sql.js").RetentionLaneStore | undefined;
61
+ runner: Runner;
62
+ runnerDeps: import("@sema-agent/core").RunnerDeps;
63
+ runnerTierFrozen: boolean;
64
+ runtimeCapsPeekResolver: import("../runtime-caps-resolver.js").EntitlementsResolverFn | undefined;
65
+ sendFileLedger: import("../plugins/send-file-ledger.js").SendFileLedger | undefined;
66
+ sendUserFileEmitter: import("../capabilities/send-user-file-tool.js").SendUserFileEmitter | undefined;
67
+ sendUserFileToolSpec: import("@sema-agent/core").ToolSpec<import("@sema-agent/core").TSchema> | undefined;
68
+ sessionShellGateRegistry: import("./session-shell-gate-registry.js").SessionShellGateRegistry;
69
+ sessionTitler: import("../session-titler.js").SessionTitler | undefined;
70
+ sharedMemoryStore: import("../plugins/shared-memory-store-sql.js").SqlSharedMemoryStore | undefined;
71
+ sqlWorkflowRunStore: import("@sema-agent/core").WorkflowRunStore | undefined;
72
+ streamApprovalGate: import("../tool-approval.js").StreamApprovalGate;
73
+ subRunner: Runner;
74
+ subRunnerSessions: import("../plugins/fork-routing-session-store.js").ForkRoutingSessionStore;
75
+ subagentSteerRegistry: import("../orchestration/subagent-steer.js").SubagentSteerRegistry;
76
+ toolApproval: import("../tool-approval.js").ToolApprovalCoordinator | undefined;
77
+ workflowAgentRegistry: import("../orchestration/workflow-agent-steer.js").WorkflowAgentRegistry | undefined;
78
+ workflowAgentSessionIndex: import("../orchestration/workflow-agent-session-index.js").WorkflowAgentSessionIndex | undefined;
79
+ workflowCompletionInbox: import("../orchestration/workflow-completion-inbox.js").WorkflowCompletionInbox | undefined;
80
+ workflowJournalStore: import("../plugins/store-backend.js").ServiceWorkflowJournalStore | undefined;
81
+ workflowModelAllowlistSnapshot: readonly string[];
82
+ workflowNotifyGate: import("../orchestration/workflow-notify-journal.js").WorkflowNotifyGate | undefined;
83
+ workflowNotifyJournal: import("../orchestration/workflow-notify-journal.js").WorkflowNotifyJournalStore | undefined;
84
+ workflowRecoverOpts: {
85
+ orphanGraceMs?: number;
86
+ finalizeStartedBeforeMs?: number;
87
+ publishTerminalFleetRow?: (id: string, run: import("@sema-agent/core").WorkflowRun) => void;
88
+ };
89
+ workflowRunStore: import("../orchestration/workflow-notify-journal.js").JournalingWorkflowRunStore | undefined;
90
+ workflowsCapable: boolean;
91
+ deploymentHooks: import("@sema-agent/core").Hooks;
92
+ deviceLane: import("./device-lane.js").DeviceLane | undefined;
93
+ dropSessionScoped: (sid: string) => void;
94
+ executionEnvFactory: import("@sema-agent/core").ExecutionEnvFactory | undefined;
95
+ fenceSessionOwner: (sid: string, owner: string | null) => void;
96
+ lspManager: import("../lsp/manager.js").E2bLspManager | import("@sema-agent/core").NodeLspManager | undefined;
97
+ perSessionCwd: Map<string, string>;
98
+ perTaskImage: import("../per-task-image.js").PerTaskImageRegistry;
99
+ sendUserFileTaskEnvs: import("../capabilities/sandbox-file-send.js").TaskEnvRegistry | undefined;
100
+ sessionEnvSelection: import("../capabilities/select-environment-tool.js").SessionEnvironmentSelection;
101
+ setSessionCwd: (sid: string, cwd: string) => void;
102
+ setSessionShellEnv: (sid: string, env: Record<string, string>) => void;
103
+ worktreeReap: (() => Promise<void>) | undefined;
104
+ brain: import("@sema-agent/core").Brain;
105
+ costQuota: import("../observability/cost-quota.js").CostQuota | import("../plugins/pg-cost-quota.js").PgCostQuota | import("../plugins/tidb-cost-quota.js").TiDBCostQuota;
106
+ counterDegradeHook: (info: {
107
+ table: string;
108
+ kind: string;
109
+ streak: number;
110
+ prevStreak: number;
111
+ error
112
+ /** 租约 TTL = 2× sweep 间隔(§3)。抢租与每 domain 的续租共用同一个值 —— 两处手抄迟早只改一处。 */
113
+ ?: string;
114
+ }) => void;
115
+ fileHistoryStore: import("../plugins/store-backend.js").ServiceFileHistoryStore | undefined;
116
+ fleetLease: import("../fleet-lease.js").FleetLeaseManager | undefined;
117
+ fleetUsage: import("../fleet-client.js").FleetUsageAccumulator | undefined;
118
+ memoryBundleFaces: import("../memory-bundle-engine.js").MemoryBundleFaces | undefined;
119
+ memoryComplianceFaces: import("../memory-operator-faces.js").MemoryComplianceFaces | undefined;
120
+ memoryOriginFaces: import("../memory-operator-faces.js").MemoryOriginFaces | undefined;
121
+ modelUsageTracker: import("../budget.js").ModelUsageTracker;
122
+ permissionRuleProvider: import("@sema-agent/core").PermissionRuleStoreProvider | undefined;
123
+ permissionRuleStores: import("../rules-consent.js").PermissionRuleStoreBundle | undefined;
124
+ pricing: Record<string, import("@sema-agent/core").ModelPricing>;
125
+ promptManifestTracker: import("../budget.js").PromptManifestTracker;
126
+ ruleConsent: import("../rules-consent.js").RuleConsentLane | undefined;
127
+ sessionMemoryStatusFace: import("../memory-operator-faces.js").SessionMemoryStatusFace | undefined;
128
+ sessionPolicyStore: import("@sema-agent/core").SessionPolicyStore | undefined;
129
+ sideQueryAccounting: (principal: string | undefined, r: {
130
+ model: string;
131
+ usage?: {
132
+ input?: number;
133
+ output?: number;
134
+ cacheRead?: number;
135
+ cacheWrite?: number;
136
+ cost?: {
137
+ total?: number;
138
+ };
139
+ };
140
+ }) => void;
141
+ toolResultStore: import("../plugins/store-backend.js").ToolResultStoreFull | undefined;
142
+ tracer: import("@sema-agent/core").TracerHook;
143
+ backend: import("../index.js").StoreBackend | undefined;
144
+ backgroundAgentStore: import("@sema-agent/core").BackgroundAgentStore | undefined;
145
+ breakerState: import("../plugins/breaker-state-sql.js").TiDBBreakerState | import("../plugins/breaker-state-sql.js").PgBreakerState | undefined;
146
+ instanceId: string;
147
+ mailboxStore: import("@sema-agent/core").MailboxStore | undefined;
148
+ memoryEngine: {
149
+ backend: import("@sema-agent/core").MemoryBackend;
150
+ root: string;
151
+ } | undefined;
152
+ memoryExportBackend: import("@sema-agent/core").MemoryBackend | undefined;
153
+ memoryPosture: import("../memory-posture.js").MemoryPosture;
154
+ memorySyncCursors: import("../plugins/memory-sync-store-pg.js").MemorySyncStore | undefined;
155
+ memorySyncRunner: import("../memory-sync-client.js").MemorySyncRunner | undefined;
156
+ rosterStore: import("@sema-agent/core").RosterStore | undefined;
157
+ sessionCaptureRecordStore: import("@sema-agent/core").SessionCaptureRecordStore | undefined;
158
+ sessionCaptureRecords: import("../index.js").SessionCaptureRecordSource | undefined;
159
+ sessionStore: import("@sema-agent/core").SessionStore;
160
+ sqlEngineFacts: (() => import("../plugins/sql-driver.js").SqlEngineFacts | null) | undefined;
161
+ storeBackendDegraded: boolean;
162
+ taskAttachmentStore: import("../plugins/task-attachment-store.js").TaskAttachmentStore | undefined;
163
+ taskListLane: import("./task-list-lane.js").TaskListLane;
164
+ usageWindowStore: import("@sema-agent/core").UsageWindowStore | undefined;
165
+ ceilingVerdict: import("./unpriced-ceiling-verdict.js").UnpricedCeilingVerdict;
166
+ configCenter: import("./config-center.js").ConfigCenterRuntime;
167
+ config: import("../config-types.js").ServiceConfig;
168
+ localRoot: string;
169
+ logger: import("../index.js").Logger;
170
+ metrics: import("../index.js").Metrics;
171
+ };
172
+ //# sourceMappingURL=stage-08-reapers.d.ts.map
@@ -0,0 +1,78 @@
1
+ import { Runner } from "@sema-agent/core";
2
+ import { startOtlpExporter } from "../observability/otel-exporter.js";
3
+ import { startReapers } from "./reapers.js";
4
+ import { startRetentionLane, RETENTION_LEASE_TTL_FACTOR } from "./retention-lane.js";
5
+ import { createLimitSync } from "./limit-sync.js";
6
+ import { runDenySweep } from "./late-binds.js";
7
+ export function runStage08(ctx) {
8
+ const { approvalNonceStore, backend, backgroundAgentStore, ceilingVerdict, checkpointStore, config, configCenter, costQuota, fileHistoryStore, handslessRunner, handslessSubRunner, hookAgentRunner, imageBakes, instanceId, localRoot, logger, mailboxStore, metrics, permissionRuleStores, pricing, rateLimiter, retentionExecutor, retentionLaneStore, rosterStore, runStore, runner, runnerTierFrozen, sqlWorkflowRunStore, subRunner, taskAttachmentStore, toolApproval, toolResultStore, workflowJournalStore, workflowNotifyGate, workflowNotifyJournal, workflowRecoverOpts, worktreeReap } = ctx;
9
+ const reaper = startReapers({
10
+ config, logger, metrics, localRoot, backend, subRunner, runStore, checkpointStore,
11
+ rateLimiter, costQuota, toolResultStore, fileHistoryStore, taskAttachmentStore, imageBakes, worktreeReap,
12
+ workflowNotifyGate, workflowRecoverOpts, workflowJournalStore, sqlWorkflowRunStore, workflowNotifyJournal, rosterStore,
13
+ backgroundAgentStore, mailboxStore, toolApproval, permissionRuleStores, approvalNonceStore,
14
+ getRunDenySweep: () => runDenySweep,
15
+ });
16
+ const ttlMs = config.retentionSweep.intervalSec * 1000 * RETENTION_LEASE_TTL_FACTOR;
17
+ const retentionLaneStarted = retentionExecutor !== undefined && retentionLaneStore !== undefined && config.retentionPolicy !== undefined
18
+ ? startRetentionLane({
19
+ intervalSec: config.retentionSweep.intervalSec,
20
+ policy: config.retentionPolicy,
21
+ mode: config.retentionSweep.mode,
22
+ executor: retentionExecutor,
23
+ lease: {
24
+ acquire: async () => {
25
+ const claim = await retentionLaneStore.acquire(instanceId, ttlMs, Date.now());
26
+ return claim.held ? { held: true, fencingToken: claim.fencingToken } : { held: false };
27
+ },
28
+ renew: (fencingToken) => retentionLaneStore.renew(instanceId, fencingToken, ttlMs, Date.now()),
29
+ release: () => retentionLaneStore.release(instanceId),
30
+ },
31
+ audit: { append: (row) => retentionLaneStore.appendAudit(row, Date.now()) },
32
+ holdInForce: (domain) => retentionLaneStore.holdInForce(domain),
33
+ logger,
34
+ metrics,
35
+ now: () => Date.now(),
36
+ })
37
+ : undefined;
38
+ if (retentionLaneStarted !== undefined) {
39
+ logger.info("retention_lane_started", {
40
+ intervalSec: config.retentionSweep.intervalSec,
41
+ mode: config.retentionSweep.mode,
42
+ maxAgeDays: config.retentionPolicy?.maxAgeDays,
43
+ holder: instanceId,
44
+ });
45
+ }
46
+ const otelExporter = config.otel
47
+ ? startOtlpExporter(metrics, {
48
+ ...config.otel,
49
+ onError: (err) => logger.warn("otel_export_failed", { err: String(err) }),
50
+ })
51
+ : undefined;
52
+ const limitSync = createLimitSync({ config, rateGate: rateLimiter, quota: costQuota, logger });
53
+ limitSync.sync();
54
+ const bootRunners = [
55
+ ["runner", runner],
56
+ ["handsless", handslessRunner],
57
+ ["hookAgent", hookAgentRunner],
58
+ ["sub", subRunner],
59
+ ["handslessSub", handslessSubRunner],
60
+ ];
61
+ const swapRunnerDeps = (next) => {
62
+ for (let i = 0; i < bootRunners.length; i++) {
63
+ const [name, rn] = bootRunners[i];
64
+ try {
65
+ rn.swapDeps(next);
66
+ }
67
+ catch (err) {
68
+ if (i > 0)
69
+ logger.error("runner_deps_swap_split", { failedAt: name, seats: Object.keys(next), swapped: bootRunners.slice(0, i).map(([n]) => n), err: String(err) });
70
+ throw err;
71
+ }
72
+ }
73
+ };
74
+ configCenter.startRefreshLoop({ runnerTierFrozen, pricing, limitSync, swapRunnerDeps, ceilingVerdict });
75
+ configCenter.initKeyResolver();
76
+ return { ...ctx, otelExporter, reaper, retentionLaneStarted };
77
+ }
78
+ //# sourceMappingURL=stage-08-reapers.js.map
@@ -0,0 +1,204 @@
1
+ import type { runStage08 } from "./stage-08-reapers.js";
2
+ export declare function runStage09(ctx: Awaited<ReturnType<typeof runStage08>>): {
3
+ drainState: {
4
+ draining: boolean;
5
+ since?: number;
6
+ reason?: string;
7
+ inflight?: () => number;
8
+ lastActivityAt?: () => number;
9
+ attachedStreams?: () => number;
10
+ lastAttachEndedAt?: () => number;
11
+ };
12
+ hookWakeBus: {
13
+ deliver?: (sessionId: string, text: string) => Promise<boolean>;
14
+ };
15
+ instrumentDegenerate: ((result: import("@sema-agent/core").TaskResult) => void) | undefined;
16
+ leaderEndpoint: import("../leader/endpoint.js").LeaderEndpoint | undefined;
17
+ ownerAware: import("../security.js").OwnerAwareSessionStore;
18
+ planCacheProbe: import("../plan-cache-probe.js").PlanCacheProbe;
19
+ purgeSession: ((sessionId: string, owner: string | null) => Promise<{
20
+ deleted: boolean;
21
+ } | {
22
+ active: string;
23
+ }>) | undefined;
24
+ registryJwtVerifier: import("../auth-bridge.js").RegistryJwtVerifier | undefined;
25
+ sessionAudit: ((sessionId: string) => Promise<{
26
+ owner: string | null;
27
+ sessionId: string;
28
+ createdAt: string;
29
+ floorEntryId: string | null;
30
+ thinkingLevel: string;
31
+ model: {
32
+ provider: string;
33
+ modelId: string;
34
+ } | null;
35
+ messages: unknown[];
36
+ promptEpoch?: {
37
+ epoch: number;
38
+ artifactDigest: string;
39
+ packId: string;
40
+ assemblyApi: number;
41
+ activatedBy: "session_start" | "compaction" | "legacy_migration";
42
+ };
43
+ } | undefined>) | undefined;
44
+ sessionWatchRegistry: import("../session-watch.js").SessionWatchRegistry | undefined;
45
+ staticWiring: import("@sema-agent/core").WiringManifest;
46
+ otelExporter: {
47
+ stop(): void;
48
+ } | undefined;
49
+ reaper: NodeJS.Timeout;
50
+ retentionLaneStarted: import("./retention-lane.js").RetentionLaneController | undefined;
51
+ approvalExemptionStore: import("../plugins/approval-exemption-store.js").ApprovalExemptionStore | undefined;
52
+ approvalNonceStore: import("../plugins/approval-nonce-store.js").ApprovalNonceStore | undefined;
53
+ authorize: (ctx: {
54
+ req: import("http").IncomingMessage;
55
+ body: import("../index.js").TaskRequestBody;
56
+ }) => Promise<import("../security.js").AuthContext>;
57
+ imageBakes: import("../plugins/store-backend.js").ImageBake | undefined;
58
+ imageIndex: import("../plugins/store-backend.js").ImageIndex | undefined;
59
+ parkedReviveInheritedGate: ((row: import("@sema-agent/core").BackgroundAgentRecord, identity: import("./parked-revive-gate.js").ParkedReviveIdentity) => Promise<import("./parked-revive-gate.js").RebuiltInheritedGate>) | undefined;
60
+ parkedReviveTool: import("@sema-agent/core").ToolSpec<import("@sema-agent/core").TSchema> | undefined;
61
+ rateLimiter: import("../index.js").RateLimiter | import("../plugins/pg-rate-limiter.js").PgRateLimiter | import("../plugins/tidb-rate-limiter.js").TiDBRateLimiter;
62
+ resumeAnchorStore: import("../plugins/store-backend.js").ResumeAnchorStore | undefined;
63
+ runStore: import("../plugins/store-backend.js").RunStore | undefined;
64
+ scenarioDetails: Record<string, import("../capabilities/scenarios.js").ScenarioDetail>;
65
+ scenarios: Record<string, import("../index.js").Scenario>;
66
+ selectEnvTool: import("@sema-agent/core").ToolSpec<import("@sema-agent/core").TSchema> | undefined;
67
+ singleUserAutoAcceptBaseline: boolean;
68
+ taskLimitCaps: {
69
+ timeoutSec: number | undefined;
70
+ maxOutputTokens: number | undefined;
71
+ maxTurns: number | undefined;
72
+ };
73
+ taskTimeoutSec: number;
74
+ approvalAskAudit: import("../approval-ask-audit-store.js").FileApprovalAskAuditStore | undefined;
75
+ centerRuntimeCapsResolver: ((principal: string | undefined) => Promise<import("@sema-agent/core").RuntimeCaps | undefined>) | undefined;
76
+ checkpointStore: import("../plugins/store-backend.js").CheckpointStoreFull | undefined;
77
+ durableEnabled: boolean;
78
+ elicitation: import("../elicitation.js").ElicitationCoordinator | undefined;
79
+ fleetBus: import("../fleet/fleet-bus.js").FleetEventBus;
80
+ governanceSeams: import("./governance-seams.js").GovernanceSeams;
81
+ handslessRunner: import("@sema-agent/core").Runner;
82
+ handslessSubRunner: import("@sema-agent/core").Runner;
83
+ hookAgent: import("../hooks/hook-runner.js").HookLlmCall;
84
+ hookAgentRunner: import("@sema-agent/core").Runner;
85
+ hookLlm: import("../hooks/hook-runner.js").HookLlmCall;
86
+ mcpRevocations: import("../config-center/mcp-revocation.js").McpRevocationLedger;
87
+ memoryConsolidationFaces: import("./memory-consolidation.js").MemoryConsolidationFaces | undefined;
88
+ memoryOptOutGrantStore: import("../plugins/memory-optout-grant-store-sql.js").MemoryOptOutGrantStore | undefined;
89
+ orgMemoryAdmission: import("./org-memory.js").OrgMemoryAdmissionWiring;
90
+ outcomeSink: import("../plugins/file-outcome-sink.js").OutcomeSink | undefined;
91
+ principalCaps: import("../runtime-caps-resolver.js").PrincipalEntitlementsClient | undefined;
92
+ question: import("../question.js").QuestionCoordinator | undefined;
93
+ retentionExecutor: import("../plugins/retention-store-sql.js").SqlRetentionStore | undefined;
94
+ retentionLaneStore: import("../plugins/retention-lane-store-sql.js").RetentionLaneStore | undefined;
95
+ runner: import("@sema-agent/core").Runner;
96
+ runnerDeps: import("@sema-agent/core").RunnerDeps;
97
+ runnerTierFrozen: boolean;
98
+ runtimeCapsPeekResolver: import("../runtime-caps-resolver.js").EntitlementsResolverFn | undefined;
99
+ sendFileLedger: import("../plugins/send-file-ledger.js").SendFileLedger | undefined;
100
+ sendUserFileEmitter: import("../capabilities/send-user-file-tool.js").SendUserFileEmitter | undefined;
101
+ sendUserFileToolSpec: import("@sema-agent/core").ToolSpec<import("@sema-agent/core").TSchema> | undefined;
102
+ sessionShellGateRegistry: import("./session-shell-gate-registry.js").SessionShellGateRegistry;
103
+ sessionTitler: import("../session-titler.js").SessionTitler | undefined;
104
+ sharedMemoryStore: import("../plugins/shared-memory-store-sql.js").SqlSharedMemoryStore | undefined;
105
+ sqlWorkflowRunStore: import("@sema-agent/core").WorkflowRunStore | undefined;
106
+ streamApprovalGate: import("../tool-approval.js").StreamApprovalGate;
107
+ subRunner: import("@sema-agent/core").Runner;
108
+ subRunnerSessions: import("../plugins/fork-routing-session-store.js").ForkRoutingSessionStore;
109
+ subagentSteerRegistry: import("../orchestration/subagent-steer.js").SubagentSteerRegistry;
110
+ toolApproval: import("../tool-approval.js").ToolApprovalCoordinator | undefined;
111
+ workflowAgentRegistry: import("../orchestration/workflow-agent-steer.js").WorkflowAgentRegistry | undefined;
112
+ workflowAgentSessionIndex: import("../orchestration/workflow-agent-session-index.js").WorkflowAgentSessionIndex | undefined;
113
+ workflowCompletionInbox: import("../orchestration/workflow-completion-inbox.js").WorkflowCompletionInbox | undefined;
114
+ workflowJournalStore: import("../plugins/store-backend.js").ServiceWorkflowJournalStore | undefined;
115
+ workflowModelAllowlistSnapshot: readonly string[];
116
+ workflowNotifyGate: import("../orchestration/workflow-notify-journal.js").WorkflowNotifyGate | undefined;
117
+ workflowNotifyJournal: import("../orchestration/workflow-notify-journal.js").WorkflowNotifyJournalStore | undefined;
118
+ workflowRecoverOpts: {
119
+ orphanGraceMs?: number;
120
+ finalizeStartedBeforeMs?: number;
121
+ publishTerminalFleetRow?: (id: string, run: import("@sema-agent/core").WorkflowRun) => void;
122
+ };
123
+ workflowRunStore: import("../orchestration/workflow-notify-journal.js").JournalingWorkflowRunStore | undefined;
124
+ workflowsCapable: boolean;
125
+ deploymentHooks: import("@sema-agent/core").Hooks;
126
+ deviceLane: import("./device-lane.js").DeviceLane | undefined;
127
+ dropSessionScoped: (sid: string) => void;
128
+ executionEnvFactory: import("@sema-agent/core").ExecutionEnvFactory | undefined;
129
+ fenceSessionOwner: (sid: string, owner: string | null) => void;
130
+ lspManager: import("../lsp/manager.js").E2bLspManager | import("@sema-agent/core").NodeLspManager | undefined;
131
+ perSessionCwd: Map<string, string>;
132
+ perTaskImage: import("../per-task-image.js").PerTaskImageRegistry;
133
+ sendUserFileTaskEnvs: import("../capabilities/sandbox-file-send.js").TaskEnvRegistry | undefined;
134
+ sessionEnvSelection: import("../capabilities/select-environment-tool.js").SessionEnvironmentSelection;
135
+ setSessionCwd: (sid: string, cwd: string) => void;
136
+ setSessionShellEnv: (sid: string, env: Record<string, string>) => void;
137
+ worktreeReap: (() => Promise<void>) | undefined;
138
+ brain: import("@sema-agent/core").Brain;
139
+ costQuota: import("../observability/cost-quota.js").CostQuota | import("../plugins/pg-cost-quota.js").PgCostQuota | import("../plugins/tidb-cost-quota.js").TiDBCostQuota;
140
+ counterDegradeHook: (info: {
141
+ table: string;
142
+ kind: string;
143
+ streak: number;
144
+ prevStreak: number;
145
+ error?: string;
146
+ }) => void;
147
+ fileHistoryStore: import("../plugins/store-backend.js").ServiceFileHistoryStore | undefined;
148
+ fleetLease: import("../fleet-lease.js").FleetLeaseManager | undefined;
149
+ fleetUsage: import("../fleet-client.js").FleetUsageAccumulator | undefined;
150
+ memoryBundleFaces: import("../memory-bundle-engine.js").MemoryBundleFaces | undefined;
151
+ memoryComplianceFaces: import("../memory-operator-faces.js").MemoryComplianceFaces | undefined;
152
+ memoryOriginFaces: import("../memory-operator-faces.js").MemoryOriginFaces | undefined;
153
+ modelUsageTracker: import("../budget.js").ModelUsageTracker;
154
+ permissionRuleProvider: import("@sema-agent/core").PermissionRuleStoreProvider | undefined;
155
+ permissionRuleStores: import("../rules-consent.js").PermissionRuleStoreBundle | undefined;
156
+ pricing: Record<string, import("@sema-agent/core").ModelPricing>;
157
+ promptManifestTracker: import("../budget.js").PromptManifestTracker;
158
+ ruleConsent: import("../rules-consent.js").RuleConsentLane | undefined;
159
+ sessionMemoryStatusFace: import("../memory-operator-faces.js").SessionMemoryStatusFace | undefined;
160
+ sessionPolicyStore: import("@sema-agent/core").SessionPolicyStore | undefined;
161
+ sideQueryAccounting: (principal: string | undefined, r: {
162
+ model: string;
163
+ usage?: {
164
+ input?: number;
165
+ output?: number;
166
+ cacheRead?: number;
167
+ cacheWrite?: number;
168
+ cost?: {
169
+ total?: number;
170
+ };
171
+ };
172
+ }) => void;
173
+ toolResultStore: import("../plugins/store-backend.js").ToolResultStoreFull | undefined;
174
+ tracer: import("@sema-agent/core").TracerHook;
175
+ backend: import("../index.js").StoreBackend | undefined;
176
+ backgroundAgentStore: import("@sema-agent/core").BackgroundAgentStore | undefined;
177
+ breakerState: import("../plugins/breaker-state-sql.js").TiDBBreakerState | import("../plugins/breaker-state-sql.js").PgBreakerState | undefined;
178
+ instanceId: string;
179
+ mailboxStore: import("@sema-agent/core").MailboxStore | undefined;
180
+ memoryEngine: {
181
+ backend: import("@sema-agent/core").MemoryBackend;
182
+ root: string;
183
+ } | undefined;
184
+ memoryExportBackend: import("@sema-agent/core").MemoryBackend | undefined;
185
+ memoryPosture: import("../memory-posture.js").MemoryPosture;
186
+ memorySyncCursors: import("../plugins/memory-sync-store-pg.js").MemorySyncStore | undefined;
187
+ memorySyncRunner: import("../memory-sync-client.js").MemorySyncRunner | undefined;
188
+ rosterStore: import("@sema-agent/core").RosterStore | undefined;
189
+ sessionCaptureRecordStore: import("@sema-agent/core").SessionCaptureRecordStore | undefined;
190
+ sessionCaptureRecords: import("../index.js").SessionCaptureRecordSource | undefined;
191
+ sessionStore: import("@sema-agent/core").SessionStore;
192
+ sqlEngineFacts: (() => import("../plugins/sql-driver.js").SqlEngineFacts | null) | undefined;
193
+ storeBackendDegraded: boolean;
194
+ taskAttachmentStore: import("../plugins/task-attachment-store.js").TaskAttachmentStore | undefined;
195
+ taskListLane: import("./task-list-lane.js").TaskListLane;
196
+ usageWindowStore: import("@sema-agent/core").UsageWindowStore | undefined;
197
+ ceilingVerdict: import("./unpriced-ceiling-verdict.js").UnpricedCeilingVerdict;
198
+ configCenter: import("./config-center.js").ConfigCenterRuntime;
199
+ config: import("../config-types.js").ServiceConfig;
200
+ localRoot: string;
201
+ logger: import("../index.js").Logger;
202
+ metrics: import("../index.js").Metrics;
203
+ };
204
+ //# sourceMappingURL=stage-09-leader.d.ts.map
@@ -0,0 +1,47 @@
1
+ import { describeStaticWiring } from "@sema-agent/core";
2
+ import { encodeCheckpointScope } from "../security.js";
3
+ import { createRegistryJwtVerifier } from "../auth-bridge.js";
4
+ import { createSessionFaces } from "./session-faces.js";
5
+ import { createLeaderFace } from "./leader.js";
6
+ import { assertStaticWiringConsistent } from "../http/routes/diagnostics.js";
7
+ export function runStage09(ctx) {
8
+ const { approvalExemptionStore, backend, brain, checkpointStore, config, configCenter, deviceLane, dropSessionScoped, durableEnabled, executionEnvFactory, fileHistoryStore, governanceSeams, localRoot, logger, metrics, pricing, resumeAnchorStore, runStore, runnerDeps, sessionPolicyStore, sessionStore, streamApprovalGate, taskAttachmentStore, taskListLane, toolResultStore, tracer, usageWindowStore, workflowCompletionInbox } = ctx;
9
+ const { ownerAware, sessionAudit, sessionWatchRegistry, purgeSession, instrumentDegenerate, planCacheProbe } = createSessionFaces({
10
+ deviceStore: deviceLane?.store,
11
+ dropSessionScoped,
12
+ config, logger, metrics, localRoot, backend, sessionStore, runStore, checkpointStore, toolResultStore,
13
+ resumeAnchorStore, approvalExemptionStore, sessionPolicyStore, taskAttachmentStore, fileHistoryStore,
14
+ workflowCompletionInbox, taskListLane,
15
+ });
16
+ const leaderEndpoint = createLeaderFace({ config, logger, brain, pricing, executionEnvFactory, toolResultStore, sessionStore, checkpointStore, governanceSeams, backend, tracer, usageWindowStore, promptSource: configCenter.promptSource, onError: runnerDeps.onError });
17
+ const drainState = { draining: false };
18
+ const authBridgeIssuer = process.env.AUTH_BRIDGE_ISSUER || config.configCenter?.baseUrl;
19
+ const registryJwtVerifier = authBridgeIssuer
20
+ ? createRegistryJwtVerifier({
21
+ issuer: authBridgeIssuer,
22
+ ...(process.env.AUTH_BRIDGE_JWKS_URL ? { jwksUrl: process.env.AUTH_BRIDGE_JWKS_URL } : {}),
23
+ ...(process.env.AUTH_BRIDGE_AUDIENCE ? { audience: process.env.AUTH_BRIDGE_AUDIENCE } : {}),
24
+ logger,
25
+ metrics,
26
+ })
27
+ : undefined;
28
+ if (registryJwtVerifier)
29
+ logger.info("auth_bridge_enabled", { issuer: authBridgeIssuer });
30
+ const hookWakeBus = {};
31
+ const wiringSpecTemplate = durableEnabled
32
+ ? { checkpointStore, durableApproval: { scope: encodeCheckpointScope(undefined) } }
33
+ : {};
34
+ const staticWiring = describeStaticWiring(runnerDeps, wiringSpecTemplate);
35
+ assertStaticWiringConsistent({ manifest: staticWiring, parkFacility: durableEnabled, backendKind: backend?.kind }, logger);
36
+ logger.info("wiring_static", {
37
+ fingerprint: staticWiring.configFingerprint ?? null,
38
+ parkEffective: staticWiring.parkLane.effective,
39
+ sessionDurability: staticWiring.session.store,
40
+ posture: staticWiring.interaction.posture,
41
+ streamApproval: streamApprovalGate.active ? "active" : streamApprovalGate.reason,
42
+ subagentTranscripts: staticWiring.fleet.subagentTranscripts,
43
+ subagentTranscriptRetentionMs: config.backgroundAgentRetentionMs,
44
+ });
45
+ return { ...ctx, drainState, hookWakeBus, instrumentDegenerate, leaderEndpoint, ownerAware, planCacheProbe, purgeSession, registryJwtVerifier, sessionAudit, sessionWatchRegistry, staticWiring };
46
+ }
47
+ //# sourceMappingURL=stage-09-leader.js.map