UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

64 lines (63 loc) 2.46 kB
import { r as serveWorkerTasks } from "../worker-task-pool-BNbf5LmH.js"; import { c as buildSummaryChunks, l as computeAdaptiveChunkRatio, o as buildOversizedFallbackPlan, s as buildStageSplitPlan } from "../compaction-planning-DWqFldf6.js"; //#region src/agents/compaction-planning.worker.ts /** * Worker-thread entrypoint for serializable compaction planning requests. */ function isWorkerInput(value) { if (!value || typeof value !== "object" || !("kind" in value)) return false; const input = value; if (!Array.isArray(input.messages)) return false; switch (input.kind) { case "summaryChunks": case "stageSplit": return typeof input.maxChunkTokens === "number" && Number.isFinite(input.maxChunkTokens); case "oversizedFallback": case "adaptiveChunkRatio": return typeof input.contextWindow === "number" && Number.isFinite(input.contextWindow); default: return false; } } function createMessageIndexer(source) { const indexByMessage = new Map(source.map((message, index) => [message, index])); return (selected) => selected.map((message) => { const index = indexByMessage.get(message); if (index === void 0) throw new Error("Compaction planning result contains an unknown message"); return index; }); } /** Run one compaction planning request and return a serializable value. */ function runCompactionPlanningWorkerInput(input) { if (!isWorkerInput(input)) throw new Error("invalid compaction planning worker input"); switch (input.kind) { case "summaryChunks": return { kind: input.kind, chunkIndexes: buildSummaryChunks(input).map(createMessageIndexer(input.messages)) }; case "oversizedFallback": { const plan = buildOversizedFallbackPlan(input); return { kind: input.kind, smallMessageIndexes: createMessageIndexer(input.messages)(plan.smallMessages), oversizedNotes: plan.oversizedNotes }; } case "stageSplit": { const plan = buildStageSplitPlan(input); return plan.mode === "split" ? { kind: input.kind, mode: "split", chunkIndexes: plan.chunks.map(createMessageIndexer(input.messages)) } : { kind: input.kind, mode: "single" }; } case "adaptiveChunkRatio": return { kind: input.kind, ratio: computeAdaptiveChunkRatio(input.messages, input.contextWindow) }; } throw new Error("unsupported compaction planning worker input"); } serveWorkerTasks(runCompactionPlanningWorkerInput); //#endregion export { runCompactionPlanningWorkerInput };