import type { OpenClawConfig } from "../config/config.js"; import "./runtime.js"; import type { CommitmentExtractionBatchResult, CommitmentExtractionItem } from "./types.js"; type TimerHandle = ReturnType; type CommitmentExtractionRuntime = { extractBatch?: (params: { cfg?: OpenClawConfig; items: CommitmentExtractionItem[]; }) => Promise; resolveDefaultModel?: (params: { cfg: OpenClawConfig; agentId?: string }) => { provider: string; model: string; }; setTimer?: (callback: () => void, delayMs: number) => TimerHandle; clearTimer?: (timer: TimerHandle) => void; forceInTests?: boolean; }; type CommitmentRuntimeTestApi = { configureCommitmentExtractionRuntime(next: CommitmentExtractionRuntime): void; drainCommitmentExtractionQueue(): Promise; resetCommitmentExtractionRuntimeForTests(): void; }; function getTestApi(): CommitmentRuntimeTestApi { const api = (globalThis as Record)[ Symbol.for("openclaw.commitmentRuntimeTestApi") ]; if (!api) { throw new Error("commitment runtime test API is unavailable"); } return api as CommitmentRuntimeTestApi; } export function configureCommitmentExtractionRuntime(next: CommitmentExtractionRuntime): void { getTestApi().configureCommitmentExtractionRuntime(next); } export async function drainCommitmentExtractionQueue(): Promise { return await getTestApi().drainCommitmentExtractionQueue(); } export function resetCommitmentExtractionRuntimeForTests(): void { getTestApi().resetCommitmentExtractionRuntimeForTests(); }