@sema-agent/server 7.79.2 → 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.
- package/dist/boot/late-binds.d.ts +35 -0
- package/dist/boot/late-binds.js +20 -0
- package/dist/boot/stage-01-config.d.ts +7 -0
- package/dist/boot/stage-01-config.js +60 -0
- package/dist/boot/stage-02-registry-pull.d.ts +10 -0
- package/dist/boot/stage-02-registry-pull.js +11 -0
- package/dist/boot/stage-03-store-backend.d.ts +32 -0
- package/dist/boot/stage-03-store-backend.js +11 -0
- package/dist/boot/stage-04-stores.d.ts +69 -0
- package/dist/boot/stage-04-stores.js +49 -0
- package/dist/boot/stage-05-execution-env.d.ts +82 -0
- package/dist/boot/stage-05-execution-env.js +20 -0
- package/dist/boot/stage-06-runners.d.ts +143 -0
- package/dist/boot/stage-06-runners.js +207 -0
- package/dist/boot/stage-07-capability-layer.d.ts +157 -0
- package/dist/boot/stage-07-capability-layer.js +162 -0
- package/dist/boot/stage-08-reapers.d.ts +172 -0
- package/dist/boot/stage-08-reapers.js +78 -0
- package/dist/boot/stage-09-leader.d.ts +204 -0
- package/dist/boot/stage-09-leader.js +47 -0
- package/dist/boot/stage-10-http-server.d.ts +204 -0
- package/dist/boot/stage-10-http-server.js +289 -0
- package/dist/config-invariants.d.ts +9 -0
- package/dist/config-invariants.js +7 -1
- package/dist/config-types.d.ts +1 -1
- package/dist/main.js +20 -870
- package/dist/service-version.d.ts +5 -0
- package/dist/service-version.js +12 -0
- package/dist/trace/redact.d.ts +7 -6
- package/dist/trace/redact.js +419 -229
- package/package.json +1 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 晚绑席(S-151 十段切分的**唯一**跨段可变面)—— 四只 cell,读点在前段、写点在后段。
|
|
3
|
+
*
|
|
4
|
+
* 为什么是模块级 live binding 而不是 ctx 字段:读点的原文是**裸标识符**(`() => runStore`、
|
|
5
|
+
* `() => parkedAskRedeem`),而 ctx 字段是**快照** —— 把读点改成 `ctx.runStore` 就是正文改写,
|
|
6
|
+
* 而本刀的律是字节不变(`scripts/move-only-check.mjs`)。ESM 的 `import` 对 `let` 是 **live 读**,
|
|
7
|
+
* 于是读点一个字都不改就能拿到后段写进来的值。写点分两形:
|
|
8
|
+
* · `runStore` / `rateLimiter` —— 声明行留在第 7 段原位,紧随一行 `bindX(...)` 把值交过来;
|
|
9
|
+
* · `parkedAskRedeem` / `runDenySweep` —— 它们的**声明行本身**就是 `let`(逐字搬进本文件,含缩进),
|
|
10
|
+
* 赋值点(server 造出来之后那两处)也随之搬进 `bindServerLateSeats` —— 跨模块给 import 赋值是非法的,
|
|
11
|
+
* 所以 cell 与它的写点必须同居一个模块。
|
|
12
|
+
*
|
|
13
|
+
* 时序与修前逐字相同:四只 cell 的读点全是 `() => x` 取值闭包(boot 期不求值,最早的求值发生在
|
|
14
|
+
* listen 之后的请求/tick 上),写点仍在各自原来的那一拍。未绑窗内取值得到 `undefined` —— 这正是
|
|
15
|
+
* 各消费座既有的 fail-closed 臂(device 限速座:`gate()` 取不到就抛,见 boot/device-lane.ts:68)。
|
|
16
|
+
*/
|
|
17
|
+
import type { Logger } from "../observability/logger.js";
|
|
18
|
+
import type { ParkedAskRedeem } from "../tool-approval.js";
|
|
19
|
+
import type { RateGate } from "../observability/rate-limit.js";
|
|
20
|
+
import type { ServiceConfig } from "../config.js";
|
|
21
|
+
import type { StoreBackend } from "../plugins/store-backend.js";
|
|
22
|
+
import type { createHttpServer } from "../http/server.js";
|
|
23
|
+
declare let runStore: ReturnType<StoreBackend["run"]> | undefined;
|
|
24
|
+
declare let rateLimiter: RateGate | undefined;
|
|
25
|
+
declare let parkedAskRedeem: ParkedAskRedeem | undefined;
|
|
26
|
+
declare let runDenySweep: ((now: number) => Promise<void>) | undefined;
|
|
27
|
+
export { runStore, rateLimiter, parkedAskRedeem, runDenySweep };
|
|
28
|
+
export declare function bindRunStore(v: ReturnType<StoreBackend["run"]> | undefined): void;
|
|
29
|
+
export declare function bindRateLimiter(v: RateGate): void;
|
|
30
|
+
export declare function bindServerLateSeats(ctx: {
|
|
31
|
+
config: ServiceConfig;
|
|
32
|
+
logger: Logger;
|
|
33
|
+
server: ReturnType<typeof createHttpServer>;
|
|
34
|
+
}): void;
|
|
35
|
+
//# sourceMappingURL=late-binds.d.ts.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
let runStore;
|
|
2
|
+
let rateLimiter;
|
|
3
|
+
let parkedAskRedeem;
|
|
4
|
+
let runDenySweep;
|
|
5
|
+
export { runStore, rateLimiter, parkedAskRedeem, runDenySweep };
|
|
6
|
+
export function bindRunStore(v) {
|
|
7
|
+
runStore = v;
|
|
8
|
+
}
|
|
9
|
+
export function bindRateLimiter(v) {
|
|
10
|
+
rateLimiter = v;
|
|
11
|
+
}
|
|
12
|
+
export function bindServerLateSeats(ctx) {
|
|
13
|
+
const { config, logger, server } = ctx;
|
|
14
|
+
runDenySweep = server.denyExpiredApprovals;
|
|
15
|
+
if (!config.directDoorActive)
|
|
16
|
+
parkedAskRedeem = server.redeemParkedAsk;
|
|
17
|
+
else
|
|
18
|
+
logger.info("parked_late_decision_disabled", { reason: "direct_door_requires_signed_decision_envelope" });
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=late-binds.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function runStage01(): {
|
|
2
|
+
config: import("../config-types.js").ServiceConfig;
|
|
3
|
+
localRoot: string;
|
|
4
|
+
logger: import("../observability/logger.js").Logger;
|
|
5
|
+
metrics: import("../observability/metrics.js").Metrics;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=stage-01-config.d.ts.map
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { loadConfig, logConfigDiagnostics, splitLocalRoots } from "../config.js";
|
|
4
|
+
import { crossInvariant } from "../config-invariants.js";
|
|
5
|
+
import { drainNumEnvWarnings } from "../plugins/remote-shell.js";
|
|
6
|
+
import { setWebSearchBadPayloadObserver } from "../plugins/web-search.js";
|
|
7
|
+
import { createLogger } from "../observability/logger.js";
|
|
8
|
+
import { createMetrics } from "../observability/metrics.js";
|
|
9
|
+
import { installFailOpenRecorder } from "../observability/fail-open.js";
|
|
10
|
+
import { installFileHistoryFailureRecorder } from "../file-history-disclosure.js";
|
|
11
|
+
import { installSecretEnvScrubRecorder } from "../observability/secret-env-scrub.js";
|
|
12
|
+
import { setRunTerminalObserver } from "../observability/run-terminal-log.js";
|
|
13
|
+
import { setRedactionObserver } from "../trace/redact.js";
|
|
14
|
+
export function runStage01() {
|
|
15
|
+
const config = loadConfig();
|
|
16
|
+
const runStaleFailure = crossInvariant("run-stale-heartbeat").check({ live: config, next: config });
|
|
17
|
+
if (runStaleFailure !== undefined) {
|
|
18
|
+
throw new Error(runStaleFailure);
|
|
19
|
+
}
|
|
20
|
+
const logger = createLogger(config.logLevel);
|
|
21
|
+
const metrics = createMetrics();
|
|
22
|
+
installFailOpenRecorder({ logger, metrics });
|
|
23
|
+
installSecretEnvScrubRecorder({ logger, metrics });
|
|
24
|
+
installFileHistoryFailureRecorder({ logger, metrics });
|
|
25
|
+
logConfigDiagnostics(logger);
|
|
26
|
+
for (const w of drainNumEnvWarnings())
|
|
27
|
+
logger.warn("config_env_invalid_using_default", { env: w.env, raw: w.raw });
|
|
28
|
+
if ((config.roles?.verifier ?? "default") === "default") {
|
|
29
|
+
logger.warn("verify_decorrelation_unavailable", {
|
|
30
|
+
hint: "verifier role = default (= implementer) — adversarial verification grades its own work; set MODEL_VERIFIER=<catalog model id> to a heterogeneous model",
|
|
31
|
+
...(process.env.MODEL_VERIFIER ? { rejected: process.env.MODEL_VERIFIER, reason: "not in catalog" } : {}),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
setRedactionObserver((pattern, n, meta) => metrics.inc("redactions_applied_total", { pattern, arm: meta.arm }, n));
|
|
35
|
+
setWebSearchBadPayloadObserver((provider) => {
|
|
36
|
+
metrics.inc("web_search_bad_payload_total", { provider });
|
|
37
|
+
logger.warn("web_search_non_array_payload", { provider });
|
|
38
|
+
});
|
|
39
|
+
setRunTerminalObserver((level, fields) => {
|
|
40
|
+
if (level === "error")
|
|
41
|
+
logger.error("run_failed", fields);
|
|
42
|
+
else
|
|
43
|
+
logger.info("run_failed", fields);
|
|
44
|
+
});
|
|
45
|
+
const localRoot = config.configLocalDir ?? process.env.AGENT_DATA_DIR ?? join(homedir(), ".ai-agent");
|
|
46
|
+
const rootsSplit = splitLocalRoots({
|
|
47
|
+
localDataRoot: config.localDataRoot,
|
|
48
|
+
configLocalDir: config.configLocalDir,
|
|
49
|
+
agentDataDir: process.env.AGENT_DATA_DIR,
|
|
50
|
+
home: homedir(),
|
|
51
|
+
});
|
|
52
|
+
if (rootsSplit) {
|
|
53
|
+
logger.warn("local_roots_split", {
|
|
54
|
+
...rootsSplit,
|
|
55
|
+
note: "LOCAL_DATA_ROOT moved the local backend's DATA root, but config.d / remote-exec.json are still read from the config root (LOCAL_DATA_ROOT is not consulted there). If you meant to move both, set CONFIG_LOCAL_DIR to the same directory.",
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return { config, localRoot, logger, metrics };
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=stage-01-config.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { runStage01 } from "./stage-01-config.js";
|
|
2
|
+
export declare function runStage02(ctx: Awaited<ReturnType<typeof runStage01>>): Promise<{
|
|
3
|
+
ceilingVerdict: import("./unpriced-ceiling-verdict.js").UnpricedCeilingVerdict;
|
|
4
|
+
configCenter: import("./config-center.js").ConfigCenterRuntime;
|
|
5
|
+
config: import("../config-types.js").ServiceConfig;
|
|
6
|
+
localRoot: string;
|
|
7
|
+
logger: import("../index.js").Logger;
|
|
8
|
+
metrics: import("../index.js").Metrics;
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=stage-02-registry-pull.d.ts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createUnpricedCeilingVerdict } from "./unpriced-ceiling-verdict.js";
|
|
2
|
+
import { createConfigCenterRuntime } from "./config-center.js";
|
|
3
|
+
export async function runStage02(ctx) {
|
|
4
|
+
const { config, localRoot, logger, metrics } = ctx;
|
|
5
|
+
const configCenter = await createConfigCenterRuntime({ config, logger, metrics, localRoot });
|
|
6
|
+
await configCenter.applyLocalRemoteExec();
|
|
7
|
+
const ceilingVerdict = createUnpricedCeilingVerdict({ config, logger });
|
|
8
|
+
ceilingVerdict.judge();
|
|
9
|
+
return { ...ctx, ceilingVerdict, configCenter };
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=stage-02-registry-pull.js.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { runStage02 } from "./stage-02-registry-pull.js";
|
|
2
|
+
export declare function runStage03(ctx: Awaited<ReturnType<typeof runStage02>>): Promise<{
|
|
3
|
+
backend: import("../index.js").StoreBackend | undefined;
|
|
4
|
+
backgroundAgentStore: import("@sema-agent/core").BackgroundAgentStore | undefined;
|
|
5
|
+
breakerState: import("../plugins/breaker-state-sql.js").TiDBBreakerState | import("../plugins/breaker-state-sql.js").PgBreakerState | undefined;
|
|
6
|
+
instanceId: string;
|
|
7
|
+
mailboxStore: import("@sema-agent/core").MailboxStore | undefined;
|
|
8
|
+
memoryEngine: {
|
|
9
|
+
backend: import("@sema-agent/core").MemoryBackend;
|
|
10
|
+
root: string;
|
|
11
|
+
} | undefined;
|
|
12
|
+
memoryExportBackend: import("@sema-agent/core").MemoryBackend | undefined;
|
|
13
|
+
memoryPosture: import("../memory-posture.js").MemoryPosture;
|
|
14
|
+
memorySyncCursors: import("../plugins/memory-sync-store-pg.js").MemorySyncStore | undefined;
|
|
15
|
+
memorySyncRunner: import("../memory-sync-client.js").MemorySyncRunner | undefined;
|
|
16
|
+
rosterStore: import("@sema-agent/core").RosterStore | undefined;
|
|
17
|
+
sessionCaptureRecordStore: import("@sema-agent/core").SessionCaptureRecordStore | undefined;
|
|
18
|
+
sessionCaptureRecords: import("../index.js").SessionCaptureRecordSource | undefined;
|
|
19
|
+
sessionStore: import("@sema-agent/core").SessionStore;
|
|
20
|
+
sqlEngineFacts: (() => import("../plugins/sql-driver.js").SqlEngineFacts | null) | undefined;
|
|
21
|
+
storeBackendDegraded: boolean;
|
|
22
|
+
taskAttachmentStore: import("../plugins/task-attachment-store.js").TaskAttachmentStore | undefined;
|
|
23
|
+
taskListLane: import("./task-list-lane.js").TaskListLane;
|
|
24
|
+
usageWindowStore: import("@sema-agent/core").UsageWindowStore | undefined;
|
|
25
|
+
ceilingVerdict: import("./unpriced-ceiling-verdict.js").UnpricedCeilingVerdict;
|
|
26
|
+
configCenter: import("./config-center.js").ConfigCenterRuntime;
|
|
27
|
+
config: import("../config-types.js").ServiceConfig;
|
|
28
|
+
localRoot: string;
|
|
29
|
+
logger: import("../index.js").Logger;
|
|
30
|
+
metrics: import("../index.js").Metrics;
|
|
31
|
+
}>;
|
|
32
|
+
//# sourceMappingURL=stage-03-store-backend.d.ts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { uuidv7 } from "@sema-agent/core";
|
|
2
|
+
import { openStores } from "./stores.js";
|
|
3
|
+
export async function runStage03(ctx) {
|
|
4
|
+
const { config, localRoot, logger, metrics } = ctx;
|
|
5
|
+
const { backend, storeBackendDegraded, memoryEngine, memorySyncCursors, rosterStore, backgroundAgentStore, taskAttachmentStore, mailboxStore, memoryExportBackend, memorySyncRunner, sessionStore, breakerState, usageWindowStore, memoryPosture, taskListLane, sqlEngineFacts, } = await openStores({ config, logger, metrics, localRoot });
|
|
6
|
+
const instanceId = uuidv7();
|
|
7
|
+
const sessionCaptureRecords = backend?.sessionCaptureRecords();
|
|
8
|
+
const sessionCaptureRecordStore = sessionCaptureRecords?.();
|
|
9
|
+
return { ...ctx, backend, backgroundAgentStore, breakerState, instanceId, mailboxStore, memoryEngine, memoryExportBackend, memoryPosture, memorySyncCursors, memorySyncRunner, rosterStore, sessionCaptureRecordStore, sessionCaptureRecords, sessionStore, sqlEngineFacts, storeBackendDegraded, taskAttachmentStore, taskListLane, usageWindowStore };
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=stage-03-store-backend.js.map
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { runStage03 } from "./stage-03-store-backend.js";
|
|
2
|
+
export declare function runStage04(ctx: Awaited<ReturnType<typeof runStage03>>): Promise<{
|
|
3
|
+
brain: import("@sema-agent/core").Brain;
|
|
4
|
+
costQuota: import("../observability/cost-quota.js").CostQuota | import("../plugins/pg-cost-quota.js").PgCostQuota | import("../plugins/tidb-cost-quota.js").TiDBCostQuota;
|
|
5
|
+
counterDegradeHook: (info: {
|
|
6
|
+
table: string;
|
|
7
|
+
kind: string;
|
|
8
|
+
streak: number;
|
|
9
|
+
prevStreak: number;
|
|
10
|
+
error?: string;
|
|
11
|
+
}) => void;
|
|
12
|
+
fileHistoryStore: import("../plugins/store-backend.js").ServiceFileHistoryStore | undefined;
|
|
13
|
+
fleetLease: import("../fleet-lease.js").FleetLeaseManager | undefined;
|
|
14
|
+
fleetUsage: import("../fleet-client.js").FleetUsageAccumulator | undefined;
|
|
15
|
+
memoryBundleFaces: import("../memory-bundle-engine.js").MemoryBundleFaces | undefined;
|
|
16
|
+
memoryComplianceFaces: import("../memory-operator-faces.js").MemoryComplianceFaces | undefined;
|
|
17
|
+
memoryOriginFaces: import("../memory-operator-faces.js").MemoryOriginFaces | undefined;
|
|
18
|
+
modelUsageTracker: import("../budget.js").ModelUsageTracker;
|
|
19
|
+
permissionRuleProvider: import("@sema-agent/core").PermissionRuleStoreProvider | undefined;
|
|
20
|
+
permissionRuleStores: import("../rules-consent.js").PermissionRuleStoreBundle | undefined;
|
|
21
|
+
pricing: Record<string, import("@sema-agent/core").ModelPricing>;
|
|
22
|
+
promptManifestTracker: import("../budget.js").PromptManifestTracker;
|
|
23
|
+
ruleConsent: import("../rules-consent.js").RuleConsentLane | undefined;
|
|
24
|
+
sessionMemoryStatusFace: import("../memory-operator-faces.js").SessionMemoryStatusFace | undefined;
|
|
25
|
+
sessionPolicyStore: import("@sema-agent/core").SessionPolicyStore | undefined;
|
|
26
|
+
sideQueryAccounting: (principal: string | undefined, r: {
|
|
27
|
+
model: string;
|
|
28
|
+
usage?: {
|
|
29
|
+
input?: number;
|
|
30
|
+
output?: number;
|
|
31
|
+
cacheRead?: number;
|
|
32
|
+
cacheWrite?: number;
|
|
33
|
+
cost?: {
|
|
34
|
+
total?: number;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
}) => void;
|
|
38
|
+
toolResultStore: import("../plugins/store-backend.js").ToolResultStoreFull | undefined;
|
|
39
|
+
tracer: import("@sema-agent/core").TracerHook;
|
|
40
|
+
backend: import("../index.js").StoreBackend | undefined;
|
|
41
|
+
backgroundAgentStore: import("@sema-agent/core").BackgroundAgentStore | undefined;
|
|
42
|
+
breakerState: import("../plugins/breaker-state-sql.js").TiDBBreakerState | import("../plugins/breaker-state-sql.js").PgBreakerState | undefined;
|
|
43
|
+
instanceId: string;
|
|
44
|
+
mailboxStore: import("@sema-agent/core").MailboxStore | undefined;
|
|
45
|
+
memoryEngine: {
|
|
46
|
+
backend: import("@sema-agent/core").MemoryBackend;
|
|
47
|
+
root: string;
|
|
48
|
+
} | undefined;
|
|
49
|
+
memoryExportBackend: import("@sema-agent/core").MemoryBackend | undefined;
|
|
50
|
+
memoryPosture: import("../memory-posture.js").MemoryPosture;
|
|
51
|
+
memorySyncCursors: import("../plugins/memory-sync-store-pg.js").MemorySyncStore | undefined;
|
|
52
|
+
memorySyncRunner: import("../memory-sync-client.js").MemorySyncRunner | undefined;
|
|
53
|
+
rosterStore: import("@sema-agent/core").RosterStore | undefined;
|
|
54
|
+
sessionCaptureRecordStore: import("@sema-agent/core").SessionCaptureRecordStore | undefined;
|
|
55
|
+
sessionCaptureRecords: import("../index.js").SessionCaptureRecordSource | undefined;
|
|
56
|
+
sessionStore: import("@sema-agent/core").SessionStore;
|
|
57
|
+
sqlEngineFacts: (() => import("../plugins/sql-driver.js").SqlEngineFacts | null) | undefined;
|
|
58
|
+
storeBackendDegraded: boolean;
|
|
59
|
+
taskAttachmentStore: import("../plugins/task-attachment-store.js").TaskAttachmentStore | undefined;
|
|
60
|
+
taskListLane: import("./task-list-lane.js").TaskListLane;
|
|
61
|
+
usageWindowStore: import("@sema-agent/core").UsageWindowStore | undefined;
|
|
62
|
+
ceilingVerdict: import("./unpriced-ceiling-verdict.js").UnpricedCeilingVerdict;
|
|
63
|
+
configCenter: import("./config-center.js").ConfigCenterRuntime;
|
|
64
|
+
config: import("../config-types.js").ServiceConfig;
|
|
65
|
+
localRoot: string;
|
|
66
|
+
logger: import("../index.js").Logger;
|
|
67
|
+
metrics: import("../index.js").Metrics;
|
|
68
|
+
}>;
|
|
69
|
+
//# sourceMappingURL=stage-04-stores.d.ts.map
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { createPermissionRuleStoreProvider } from "@sema-agent/core";
|
|
2
|
+
import { createMemoryBundleFaces } from "../memory-bundle-engine.js";
|
|
3
|
+
import { createMemoryComplianceFaces, createMemoryOriginFaces, createSessionMemoryStatusFace } from "../memory-operator-faces.js";
|
|
4
|
+
import { runAdoptionBootScan } from "./adoption.js";
|
|
5
|
+
import { auditDormantPermissionRules } from "./permission-rules-audit.js";
|
|
6
|
+
import { createBudgetAndTracing } from "./budget-tracing.js";
|
|
7
|
+
import { createRuleConsentLane } from "../rules-consent.js";
|
|
8
|
+
export async function runStage04(ctx) {
|
|
9
|
+
const { backend, breakerState, config, logger, memoryEngine, metrics, sessionCaptureRecordStore } = ctx;
|
|
10
|
+
const memoryBundleFaces = memoryEngine ? createMemoryBundleFaces(memoryEngine, { ...(sessionCaptureRecordStore !== undefined ? { captureRecordStore: sessionCaptureRecordStore } : {}) }) : undefined;
|
|
11
|
+
const memoryComplianceFaces = memoryEngine
|
|
12
|
+
? createMemoryComplianceFaces(memoryEngine, {
|
|
13
|
+
onIncident: (err) => logger.warn("memory_compliance_incident", { code: err.code ?? null, detail: err.message }),
|
|
14
|
+
...(sessionCaptureRecordStore !== undefined ? { captureRecordStore: sessionCaptureRecordStore } : {}),
|
|
15
|
+
})
|
|
16
|
+
: undefined;
|
|
17
|
+
const memoryOriginFaces = memoryEngine
|
|
18
|
+
? createMemoryOriginFaces(memoryEngine, {
|
|
19
|
+
onIncident: (err) => logger.warn("memory_origin_incident", { code: err.code ?? null, detail: err.message }),
|
|
20
|
+
...(sessionCaptureRecordStore !== undefined ? { captureRecordStore: sessionCaptureRecordStore } : {}),
|
|
21
|
+
})
|
|
22
|
+
: undefined;
|
|
23
|
+
const sessionMemoryStatusFace = memoryEngine
|
|
24
|
+
? createSessionMemoryStatusFace(memoryEngine, { ...(sessionCaptureRecordStore !== undefined ? { captureRecordStore: sessionCaptureRecordStore } : {}) })
|
|
25
|
+
: undefined;
|
|
26
|
+
const adoptionBoot = await runAdoptionBootScan({ backend, logger });
|
|
27
|
+
if (adoptionBoot.scanned > 0 || adoptionBoot.error !== undefined) {
|
|
28
|
+
logger.info("adoption_boot_scan", { ...adoptionBoot });
|
|
29
|
+
}
|
|
30
|
+
const { brain, pricing, counterDegradeHook, costQuota, modelUsageTracker, promptManifestTracker, fleetUsage, fleetLease, tracer, sideQueryAccounting, toolResultStore, sessionPolicyStore, fileHistoryStore, } = createBudgetAndTracing({ config, logger, metrics, backend, breakerState });
|
|
31
|
+
const permissionRuleStores = config.permissionRulesEnabled && backend ? backend.permissionRule() : undefined;
|
|
32
|
+
const permissionRuleProvider = permissionRuleStores
|
|
33
|
+
? createPermissionRuleStoreProvider({ durable: permissionRuleStores.durable })
|
|
34
|
+
: undefined;
|
|
35
|
+
const ruleConsent = permissionRuleStores && permissionRuleProvider
|
|
36
|
+
? createRuleConsentLane({ ...permissionRuleStores, provider: permissionRuleProvider })
|
|
37
|
+
: undefined;
|
|
38
|
+
if (config.permissionRulesEnabled && permissionRuleStores === undefined) {
|
|
39
|
+
logger.info("permission_rules_lane_unavailable", {
|
|
40
|
+
knob: "PERMISSION_RULES_ENABLED",
|
|
41
|
+
reason: backend === undefined ? "no_backend" : "backend_has_no_rule_store",
|
|
42
|
+
backendKind: backend?.kind ?? null,
|
|
43
|
+
note: "PERMISSION_RULES_ENABLED is on but no permission-rule store is wired — /v1/rules/* answer 501, approval cards carry no rule suggestions, and respond's persistRule is refused with rule_lane_unavailable",
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
await auditDormantPermissionRules({ stores: permissionRuleStores, logger, explicit: config.permissionRulesEnabledExplicit });
|
|
47
|
+
return { ...ctx, brain, costQuota, counterDegradeHook, fileHistoryStore, fleetLease, fleetUsage, memoryBundleFaces, memoryComplianceFaces, memoryOriginFaces, modelUsageTracker, permissionRuleProvider, permissionRuleStores, pricing, promptManifestTracker, ruleConsent, sessionMemoryStatusFace, sessionPolicyStore, sideQueryAccounting, toolResultStore, tracer };
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=stage-04-stores.js.map
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { runStage04 } from "./stage-04-stores.js";
|
|
2
|
+
export declare function runStage05(ctx: Awaited<ReturnType<typeof runStage04>>): {
|
|
3
|
+
deploymentHooks: import("@sema-agent/core").Hooks;
|
|
4
|
+
deviceLane: import("./device-lane.js").DeviceLane | undefined;
|
|
5
|
+
dropSessionScoped: (sid: string) => void;
|
|
6
|
+
executionEnvFactory: import("@sema-agent/core").ExecutionEnvFactory | undefined;
|
|
7
|
+
fenceSessionOwner: (sid: string, owner: string | null) => void;
|
|
8
|
+
lspManager: import("../lsp/manager.js").E2bLspManager | import("@sema-agent/core").NodeLspManager | undefined;
|
|
9
|
+
perSessionCwd: Map<string, string>;
|
|
10
|
+
perTaskImage: import("../per-task-image.js").PerTaskImageRegistry;
|
|
11
|
+
sendUserFileTaskEnvs: import("../capabilities/sandbox-file-send.js").TaskEnvRegistry | undefined;
|
|
12
|
+
sessionEnvSelection: import("../capabilities/select-environment-tool.js").SessionEnvironmentSelection;
|
|
13
|
+
setSessionCwd: (sid: string, cwd: string) => void;
|
|
14
|
+
setSessionShellEnv: (sid: string, env: Record<string, string>) => void;
|
|
15
|
+
worktreeReap: (() => Promise<void>) | undefined;
|
|
16
|
+
brain: import("@sema-agent/core").Brain;
|
|
17
|
+
costQuota: import("../observability/cost-quota.js").CostQuota | import("../plugins/pg-cost-quota.js").PgCostQuota | import("../plugins/tidb-cost-quota.js").TiDBCostQuota;
|
|
18
|
+
counterDegradeHook: (info: {
|
|
19
|
+
table: string;
|
|
20
|
+
kind: string;
|
|
21
|
+
streak: number;
|
|
22
|
+
prevStreak: number;
|
|
23
|
+
error?: string;
|
|
24
|
+
}) => void;
|
|
25
|
+
fileHistoryStore: import("../plugins/store-backend.js").ServiceFileHistoryStore | undefined;
|
|
26
|
+
fleetLease: import("../fleet-lease.js").FleetLeaseManager | undefined;
|
|
27
|
+
fleetUsage: import("../fleet-client.js").FleetUsageAccumulator | undefined;
|
|
28
|
+
memoryBundleFaces: import("../memory-bundle-engine.js").MemoryBundleFaces | undefined;
|
|
29
|
+
memoryComplianceFaces: import("../memory-operator-faces.js").MemoryComplianceFaces | undefined;
|
|
30
|
+
memoryOriginFaces: import("../memory-operator-faces.js").MemoryOriginFaces | undefined;
|
|
31
|
+
modelUsageTracker: import("../budget.js").ModelUsageTracker;
|
|
32
|
+
permissionRuleProvider: import("@sema-agent/core").PermissionRuleStoreProvider | undefined;
|
|
33
|
+
permissionRuleStores: import("../rules-consent.js").PermissionRuleStoreBundle | undefined;
|
|
34
|
+
pricing: Record<string, import("@sema-agent/core").ModelPricing>;
|
|
35
|
+
promptManifestTracker: import("../budget.js").PromptManifestTracker;
|
|
36
|
+
ruleConsent: import("../rules-consent.js").RuleConsentLane | undefined;
|
|
37
|
+
sessionMemoryStatusFace: import("../memory-operator-faces.js").SessionMemoryStatusFace | undefined;
|
|
38
|
+
sessionPolicyStore: import("@sema-agent/core").SessionPolicyStore | undefined;
|
|
39
|
+
sideQueryAccounting: (principal: string | undefined, r: {
|
|
40
|
+
model: string;
|
|
41
|
+
usage?: {
|
|
42
|
+
input?: number;
|
|
43
|
+
output?: number;
|
|
44
|
+
cacheRead?: number;
|
|
45
|
+
cacheWrite?: number;
|
|
46
|
+
cost?: {
|
|
47
|
+
total?: number;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
}) => void;
|
|
51
|
+
toolResultStore: import("../plugins/store-backend.js").ToolResultStoreFull | undefined;
|
|
52
|
+
tracer: import("@sema-agent/core").TracerHook;
|
|
53
|
+
backend: import("../index.js").StoreBackend | undefined;
|
|
54
|
+
backgroundAgentStore: import("@sema-agent/core").BackgroundAgentStore | undefined;
|
|
55
|
+
breakerState: import("../plugins/breaker-state-sql.js").TiDBBreakerState | import("../plugins/breaker-state-sql.js").PgBreakerState | undefined;
|
|
56
|
+
instanceId: string;
|
|
57
|
+
mailboxStore: import("@sema-agent/core").MailboxStore | undefined;
|
|
58
|
+
memoryEngine: {
|
|
59
|
+
backend: import("@sema-agent/core").MemoryBackend;
|
|
60
|
+
root: string;
|
|
61
|
+
} | undefined;
|
|
62
|
+
memoryExportBackend: import("@sema-agent/core").MemoryBackend | undefined;
|
|
63
|
+
memoryPosture: import("../memory-posture.js").MemoryPosture;
|
|
64
|
+
memorySyncCursors: import("../plugins/memory-sync-store-pg.js").MemorySyncStore | undefined;
|
|
65
|
+
memorySyncRunner: import("../memory-sync-client.js").MemorySyncRunner | undefined;
|
|
66
|
+
rosterStore: import("@sema-agent/core").RosterStore | undefined;
|
|
67
|
+
sessionCaptureRecordStore: import("@sema-agent/core").SessionCaptureRecordStore | undefined;
|
|
68
|
+
sessionCaptureRecords: import("../index.js").SessionCaptureRecordSource | undefined;
|
|
69
|
+
sessionStore: import("@sema-agent/core").SessionStore;
|
|
70
|
+
sqlEngineFacts: (() => import("../plugins/sql-driver.js").SqlEngineFacts | null) | undefined;
|
|
71
|
+
storeBackendDegraded: boolean;
|
|
72
|
+
taskAttachmentStore: import("../plugins/task-attachment-store.js").TaskAttachmentStore | undefined;
|
|
73
|
+
taskListLane: import("./task-list-lane.js").TaskListLane;
|
|
74
|
+
usageWindowStore: import("@sema-agent/core").UsageWindowStore | undefined;
|
|
75
|
+
ceilingVerdict: import("./unpriced-ceiling-verdict.js").UnpricedCeilingVerdict;
|
|
76
|
+
configCenter: import("./config-center.js").ConfigCenterRuntime;
|
|
77
|
+
config: import("../config-types.js").ServiceConfig;
|
|
78
|
+
localRoot: string;
|
|
79
|
+
logger: import("../index.js").Logger;
|
|
80
|
+
metrics: import("../index.js").Metrics;
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=stage-05-execution-env.d.ts.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createToolTracer, createPermissionDeniedMeter } from "../observability/tool-trace.js";
|
|
2
|
+
import { composeHooks } from "../hooks/hook-runner.js";
|
|
3
|
+
import { assertDeviceLaneWired, createDeviceLane } from "./device-lane.js";
|
|
4
|
+
import { createExecutionEnv } from "./execution-env.js";
|
|
5
|
+
import { rateLimiter } from "./late-binds.js";
|
|
6
|
+
export function runStage05(ctx) {
|
|
7
|
+
const { backend, config, instanceId, logger, metrics, taskAttachmentStore } = ctx;
|
|
8
|
+
const deviceLane = config.remoteExec?.provider === "device" ? createDeviceLane({ config, logger, metrics, backend, replicaId: instanceId, rateGate: () => rateLimiter }) : undefined;
|
|
9
|
+
const { perTaskImage, sessionEnvSelection, perSessionCwd, setSessionCwd, setSessionShellEnv, fenceSessionOwner, dropSessionScoped, executionEnvFactory, worktreeReap, sendUserFileTaskEnvs, lspManager, } = createExecutionEnv({ config, logger, metrics, taskAttachmentStore, ...(deviceLane ? { deviceLane } : {}) });
|
|
10
|
+
assertDeviceLaneWired(config.remoteExec?.provider === "device", deviceLane, executionEnvFactory !== undefined);
|
|
11
|
+
const toolTracer = config.toolTrace ? createToolTracer(logger) : undefined;
|
|
12
|
+
if (toolTracer)
|
|
13
|
+
logger.info("tool_trace_enabled", {});
|
|
14
|
+
const deploymentHooks = {
|
|
15
|
+
...(toolTracer ? composeHooks(createPermissionDeniedMeter(metrics), toolTracer) : createPermissionDeniedMeter(metrics)),
|
|
16
|
+
...(config.hooksTimeoutMs !== undefined ? { timeoutMs: config.hooksTimeoutMs } : {}),
|
|
17
|
+
};
|
|
18
|
+
return { ...ctx, deploymentHooks, deviceLane, dropSessionScoped, executionEnvFactory, fenceSessionOwner, lspManager, perSessionCwd, perTaskImage, sendUserFileTaskEnvs, sessionEnvSelection, setSessionCwd, setSessionShellEnv, worktreeReap };
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=stage-05-execution-env.js.map
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 装配第 6 段 —— **两只 Runner**(§3-6)。
|
|
3
|
+
* workflow 编排 → 活体协调器 → per-principal caps → org/共享记忆 → checkpoint/留存/consolidation/治理座席 →
|
|
4
|
+
* RunnerDeps → `new Runner` ×2(主 + 无手孪生)→ hook LLM/agent 载体 → 会话标题器 → subRunner ×2。
|
|
5
|
+
* ⚠️ 位置即契约:checkpointStore 必须早于 `createGovernanceSeams` 与 `createRunnerDeps`;
|
|
6
|
+
* `workflowModelAllowlistSnapshot` 必须与 `createRunnerDeps` 同步紧邻(两者之间零 await)。
|
|
7
|
+
* 🔴 `runStore` / `parkedAskRedeem` 经 `late-binds.ts` 的晚绑 cell 读(原文同作用域前向引用/晚绑 holder)。
|
|
8
|
+
*/
|
|
9
|
+
import { Runner } from "@sema-agent/core";
|
|
10
|
+
import { ForkRoutingSessionStore } from "../plugins/fork-routing-session-store.js";
|
|
11
|
+
import type { runStage05 } from "./stage-05-execution-env.js";
|
|
12
|
+
export declare function runStage06(ctx: Awaited<ReturnType<typeof runStage05>>): {
|
|
13
|
+
approvalAskAudit: import("../approval-ask-audit-store.js").FileApprovalAskAuditStore | undefined;
|
|
14
|
+
centerRuntimeCapsResolver: ((principal: string | undefined) => Promise<import("@sema-agent/core").RuntimeCaps | undefined>) | undefined;
|
|
15
|
+
checkpointStore: import("../plugins/store-backend.js").CheckpointStoreFull | undefined;
|
|
16
|
+
durableEnabled: boolean;
|
|
17
|
+
elicitation: import("../elicitation.js").ElicitationCoordinator | undefined;
|
|
18
|
+
fleetBus: import("../fleet/fleet-bus.js").FleetEventBus;
|
|
19
|
+
governanceSeams: import("./governance-seams.js").GovernanceSeams;
|
|
20
|
+
handslessRunner: Runner;
|
|
21
|
+
handslessSubRunner: Runner;
|
|
22
|
+
hookAgent: import("../hooks/hook-runner.js").HookLlmCall;
|
|
23
|
+
hookAgentRunner: Runner;
|
|
24
|
+
hookLlm: import("../hooks/hook-runner.js").HookLlmCall;
|
|
25
|
+
mcpRevocations: import("../config-center/mcp-revocation.js").McpRevocationLedger;
|
|
26
|
+
memoryConsolidationFaces: import("./memory-consolidation.js").MemoryConsolidationFaces | undefined;
|
|
27
|
+
memoryOptOutGrantStore: import("../plugins/memory-optout-grant-store-sql.js").MemoryOptOutGrantStore | undefined;
|
|
28
|
+
orgMemoryAdmission: import("./org-memory.js").OrgMemoryAdmissionWiring;
|
|
29
|
+
outcomeSink: import("../plugins/file-outcome-sink.js").OutcomeSink | undefined;
|
|
30
|
+
principalCaps: import("../runtime-caps-resolver.js").PrincipalEntitlementsClient | undefined;
|
|
31
|
+
question: import("../question.js").QuestionCoordinator | undefined;
|
|
32
|
+
retentionExecutor: import("../plugins/retention-store-sql.js").SqlRetentionStore | undefined;
|
|
33
|
+
retentionLaneStore: import("../plugins/retention-lane-store-sql.js").RetentionLaneStore | undefined;
|
|
34
|
+
runner: Runner;
|
|
35
|
+
runnerDeps: import("@sema-agent/core").RunnerDeps;
|
|
36
|
+
runnerTierFrozen: boolean;
|
|
37
|
+
runtimeCapsPeekResolver: import("../runtime-caps-resolver.js").EntitlementsResolverFn | undefined;
|
|
38
|
+
sendFileLedger: import("../plugins/send-file-ledger.js").SendFileLedger | undefined;
|
|
39
|
+
sendUserFileEmitter: import("../capabilities/send-user-file-tool.js").SendUserFileEmitter | undefined;
|
|
40
|
+
sendUserFileToolSpec: import("@sema-agent/core").ToolSpec<import("@sema-agent/core").TSchema> | undefined;
|
|
41
|
+
sessionShellGateRegistry: import("./session-shell-gate-registry.js").SessionShellGateRegistry;
|
|
42
|
+
sessionTitler: import("../session-titler.js").SessionTitler | undefined;
|
|
43
|
+
sharedMemoryStore: import("../plugins/shared-memory-store-sql.js").SqlSharedMemoryStore | undefined;
|
|
44
|
+
sqlWorkflowRunStore: import("@sema-agent/core").WorkflowRunStore | undefined;
|
|
45
|
+
streamApprovalGate: import("../tool-approval.js").StreamApprovalGate;
|
|
46
|
+
subRunner: Runner;
|
|
47
|
+
subRunnerSessions: ForkRoutingSessionStore;
|
|
48
|
+
subagentSteerRegistry: import("../orchestration/subagent-steer.js").SubagentSteerRegistry;
|
|
49
|
+
toolApproval: import("../tool-approval.js").ToolApprovalCoordinator | undefined;
|
|
50
|
+
workflowAgentRegistry: import("../orchestration/workflow-agent-steer.js").WorkflowAgentRegistry | undefined;
|
|
51
|
+
workflowAgentSessionIndex: import("../orchestration/workflow-agent-session-index.js").WorkflowAgentSessionIndex | undefined;
|
|
52
|
+
workflowCompletionInbox: import("../orchestration/workflow-completion-inbox.js").WorkflowCompletionInbox | undefined;
|
|
53
|
+
workflowJournalStore: import("../plugins/store-backend.js").ServiceWorkflowJournalStore | undefined;
|
|
54
|
+
workflowModelAllowlistSnapshot: readonly string[];
|
|
55
|
+
workflowNotifyGate: import("../orchestration/workflow-notify-journal.js").WorkflowNotifyGate | undefined;
|
|
56
|
+
workflowNotifyJournal: import("../orchestration/workflow-notify-journal.js").WorkflowNotifyJournalStore | undefined;
|
|
57
|
+
workflowRecoverOpts: {
|
|
58
|
+
orphanGraceMs?: number;
|
|
59
|
+
finalizeStartedBeforeMs?: number;
|
|
60
|
+
publishTerminalFleetRow?: (id: string, run: import("@sema-agent/core").WorkflowRun) => void;
|
|
61
|
+
};
|
|
62
|
+
workflowRunStore: import("../orchestration/workflow-notify-journal.js").JournalingWorkflowRunStore | undefined;
|
|
63
|
+
workflowsCapable: boolean;
|
|
64
|
+
deploymentHooks: import("@sema-agent/core").Hooks;
|
|
65
|
+
deviceLane: import("./device-lane.js").DeviceLane | undefined;
|
|
66
|
+
dropSessionScoped: (sid: string) => void;
|
|
67
|
+
executionEnvFactory: import("@sema-agent/core").ExecutionEnvFactory | undefined;
|
|
68
|
+
fenceSessionOwner: (sid: string, owner: string | null) => void;
|
|
69
|
+
lspManager: import("../lsp/manager.js").E2bLspManager | import("@sema-agent/core").NodeLspManager | undefined;
|
|
70
|
+
perSessionCwd: Map<string, string>;
|
|
71
|
+
perTaskImage: import("../per-task-image.js").PerTaskImageRegistry;
|
|
72
|
+
sendUserFileTaskEnvs: import("../capabilities/sandbox-file-send.js").TaskEnvRegistry | undefined;
|
|
73
|
+
sessionEnvSelection: import("../capabilities/select-environment-tool.js").SessionEnvironmentSelection;
|
|
74
|
+
setSessionCwd: (sid: string, cwd: string) => void;
|
|
75
|
+
setSessionShellEnv: (sid: string, env: Record<string, string>) => void;
|
|
76
|
+
worktreeReap: (() => Promise<void>) | undefined;
|
|
77
|
+
brain: import("@sema-agent/core").Brain;
|
|
78
|
+
costQuota: import("../observability/cost-quota.js").CostQuota | import("../plugins/pg-cost-quota.js").PgCostQuota | import("../plugins/tidb-cost-quota.js").TiDBCostQuota;
|
|
79
|
+
counterDegradeHook: (info: {
|
|
80
|
+
table: string;
|
|
81
|
+
kind: string;
|
|
82
|
+
streak: number;
|
|
83
|
+
prevStreak: number;
|
|
84
|
+
error?: string;
|
|
85
|
+
}) => void;
|
|
86
|
+
fileHistoryStore: import("../plugins/store-backend.js").ServiceFileHistoryStore | undefined;
|
|
87
|
+
fleetLease: import("../fleet-lease.js").FleetLeaseManager | undefined;
|
|
88
|
+
fleetUsage: import("../fleet-client.js").FleetUsageAccumulator | undefined;
|
|
89
|
+
memoryBundleFaces: import("../memory-bundle-engine.js").MemoryBundleFaces | undefined;
|
|
90
|
+
memoryComplianceFaces: import("../memory-operator-faces.js").MemoryComplianceFaces | undefined;
|
|
91
|
+
memoryOriginFaces: import("../memory-operator-faces.js").MemoryOriginFaces | undefined;
|
|
92
|
+
modelUsageTracker: import("../budget.js").ModelUsageTracker;
|
|
93
|
+
permissionRuleProvider: import("@sema-agent/core").PermissionRuleStoreProvider | undefined;
|
|
94
|
+
permissionRuleStores: import("../rules-consent.js").PermissionRuleStoreBundle | undefined;
|
|
95
|
+
pricing: Record<string, import("@sema-agent/core").ModelPricing>;
|
|
96
|
+
promptManifestTracker: import("../budget.js").PromptManifestTracker;
|
|
97
|
+
ruleConsent: import("../rules-consent.js").RuleConsentLane | undefined;
|
|
98
|
+
sessionMemoryStatusFace: import("../memory-operator-faces.js").SessionMemoryStatusFace | undefined;
|
|
99
|
+
sessionPolicyStore: import("@sema-agent/core").SessionPolicyStore | undefined;
|
|
100
|
+
sideQueryAccounting: (principal: string | undefined, r: {
|
|
101
|
+
model: string;
|
|
102
|
+
usage?: {
|
|
103
|
+
input?: number;
|
|
104
|
+
output?: number;
|
|
105
|
+
cacheRead?: number;
|
|
106
|
+
cacheWrite?: number;
|
|
107
|
+
cost?: {
|
|
108
|
+
total?: number;
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
}) => void;
|
|
112
|
+
toolResultStore: import("../plugins/store-backend.js").ToolResultStoreFull | undefined;
|
|
113
|
+
tracer: import("@sema-agent/core").TracerHook;
|
|
114
|
+
backend: import("../index.js").StoreBackend | undefined;
|
|
115
|
+
backgroundAgentStore: import("@sema-agent/core").BackgroundAgentStore | undefined;
|
|
116
|
+
breakerState: import("../plugins/breaker-state-sql.js").TiDBBreakerState | import("../plugins/breaker-state-sql.js").PgBreakerState | undefined;
|
|
117
|
+
instanceId: string;
|
|
118
|
+
mailboxStore: import("@sema-agent/core").MailboxStore | undefined;
|
|
119
|
+
memoryEngine: {
|
|
120
|
+
backend: import("@sema-agent/core").MemoryBackend;
|
|
121
|
+
root: string;
|
|
122
|
+
} | undefined;
|
|
123
|
+
memoryExportBackend: import("@sema-agent/core").MemoryBackend | undefined;
|
|
124
|
+
memoryPosture: import("../memory-posture.js").MemoryPosture;
|
|
125
|
+
memorySyncCursors: import("../plugins/memory-sync-store-pg.js").MemorySyncStore | undefined;
|
|
126
|
+
memorySyncRunner: import("../memory-sync-client.js").MemorySyncRunner | undefined;
|
|
127
|
+
rosterStore: import("@sema-agent/core").RosterStore | undefined;
|
|
128
|
+
sessionCaptureRecordStore: import("@sema-agent/core").SessionCaptureRecordStore | undefined;
|
|
129
|
+
sessionCaptureRecords: import("../index.js").SessionCaptureRecordSource | undefined;
|
|
130
|
+
sessionStore: import("@sema-agent/core").SessionStore;
|
|
131
|
+
sqlEngineFacts: (() => import("../plugins/sql-driver.js").SqlEngineFacts | null) | undefined;
|
|
132
|
+
storeBackendDegraded: boolean;
|
|
133
|
+
taskAttachmentStore: import("../plugins/task-attachment-store.js").TaskAttachmentStore | undefined;
|
|
134
|
+
taskListLane: import("./task-list-lane.js").TaskListLane;
|
|
135
|
+
usageWindowStore: import("@sema-agent/core").UsageWindowStore | undefined;
|
|
136
|
+
ceilingVerdict: import("./unpriced-ceiling-verdict.js").UnpricedCeilingVerdict;
|
|
137
|
+
configCenter: import("./config-center.js").ConfigCenterRuntime;
|
|
138
|
+
config: import("../config-types.js").ServiceConfig;
|
|
139
|
+
localRoot: string;
|
|
140
|
+
logger: import("../index.js").Logger;
|
|
141
|
+
metrics: import("../index.js").Metrics;
|
|
142
|
+
};
|
|
143
|
+
//# sourceMappingURL=stage-06-runners.d.ts.map
|