/** * [ref] A10:composition root 分段 —— 进程内活体 HITL 协调器 + SendUserFile 工具面。 * * 纯搬运:函数体逐字来自 `main.ts`(原 1443-1518 行),缩进不变;新增的只有 import 与包壳。 * * ⚠️ **位置即契约**:`durableEnabled` 必须在 `RunnerDeps` 字面量**之前**求值([1.294 G1]:onAsk 的 * 在场性本身是 core suspendAsk 的分路条件,不能靠闭包惰性读),故本段整体排在 runner-deps 段之前; * `sendUserFileTaskEnvs` 由 exec-env 段产出,故本段又必须排在它之后。 */ import type { ServiceConfig } from "../config.js"; import { ElicitationCoordinator } from "../elicitation.js"; import type { Logger } from "../observability/logger.js"; import { QuestionCoordinator } from "../question.js"; import { ToolApprovalCoordinator, type ParkedAskRedeem } from "../tool-approval.js"; import { FileApprovalAskAuditStore } from "../approval-ask-audit-store.js"; import { SendUserFileEmitter } from "../capabilities/send-user-file-tool.js"; import { TaskEnvRegistry } from "../capabilities/sandbox-file-send.js"; import type { StoreBackend } from "../plugins/store-backend.js"; import type { RuleConsentLane } from "../rules-consent.js"; export interface LiveCoordinatorsCtx { config: ServiceConfig; logger: Logger; backend: StoreBackend | undefined; sendUserFileTaskEnvs: TaskEnvRegistry | undefined; /** [ref] 车二:持久化权限规则的同意车道(main.ts 与 `RunnerDeps.permissionRuleStore` **同源**于 * `backend.permissionRule()` 的同一个返回值)。在场 ⇒ ask 帧投 `ruleOffers` + 回决可兑付。 */ ruleConsent: RuleConsentLane | undefined; /** [ref](F-1):卡批规则的 project root 解析器(语义单点=task-cwd.ts `cardRuleScopeRoot`;main.ts * 用 per-session cwd 登记簿 + config 铸)。缺席 ⇒ 不铸 scope,卡批规则落 core 的 global 缺省。 */ ruleScopeRootFor: ((sessionId: string | undefined) => string | undefined) | undefined; /** [ref]:PARKED 行迟到决议的赎回席**取值口**(晚绑 —— 席本体是 `createHttpServer` 的产物,而本段 * 必须排在它之前;同款 holder 先例 = reaper 的 `getRunDenySweep`)。取到 undefined ⇒ 那条臂逐字回落 * 修前 404(partial 部署安全)。缺席(不传本键)⇒ 协调器整条迟到腿的 PARKED 臂恒 404。 */ getParkedRedeem?: () => ParkedAskRedeem | undefined; } export declare function createLiveCoordinators(ctx: LiveCoordinatorsCtx): { elicitation: ElicitationCoordinator | undefined; question: QuestionCoordinator | undefined; toolApproval: ToolApprovalCoordinator | undefined; durableEnabled: boolean; streamApprovalGate: import("../tool-approval.js").StreamApprovalGate; approvalAskAudit: FileApprovalAskAuditStore | undefined; sendUserFileEmitter: SendUserFileEmitter | undefined; sendFileLedger: import("../plugins/send-file-ledger.js").SendFileLedger | undefined; sendUserFileToolSpec: import("@sema-agent/core").ToolSpec | undefined; }; //# sourceMappingURL=coordinators.d.ts.map