UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

49 lines (48 loc) • 1.75 kB
import { c as isRecord } from "./record-coerce-TIsquoVR.mjs"; import { i as sha256StableValue, n as sha256Hex } from "./node-crypto-BG4u3UnX.mjs"; import { serializeModelRequestBody } from "@openclaw/ai/internal/openai"; //#region src/agents/embedded-agent-runner/provider-prompt-serialization.ts const MAX_MESSAGE_FINGERPRINTS = 512; function fingerprintEncodedPrompt(body) { if (body.byteLength === 0) return; const payload = JSON.parse(new TextDecoder().decode(body)); if (!isRecord(payload)) return; const { instructions, system, tools, ...parameters } = payload; let messageField; let messages = []; if (Array.isArray(parameters.input)) { messageField = "input"; messages = parameters.input; delete parameters.input; } else if (Array.isArray(parameters.messages)) { messageField = "messages"; messages = parameters.messages; delete parameters.messages; } return { system: sha256Hex(JSON.stringify({ instructions, system })), tools: sha256Hex(JSON.stringify({ tools })), messages: messages.slice(0, MAX_MESSAGE_FINGERPRINTS).map((message) => sha256Hex(JSON.stringify(message))), messageCount: messages.length, ...messages.length > MAX_MESSAGE_FINGERPRINTS ? { tail: sha256Hex(JSON.stringify(messages.slice(MAX_MESSAGE_FINGERPRINTS))) } : {}, parameters: sha256Hex(JSON.stringify([messageField, parameters])) }; } function prepareProviderPrompt({ payload, encode }) { if (!encode) return { ...sha256StableValue(payload), encoded: void 0 }; const encoded = serializeModelRequestBody(payload); return { digest: sha256Hex(encoded.body), byteWeight: encoded.body.byteLength, encoded, cachePrefix: fingerprintEncodedPrompt(encoded.body) }; } //#endregion export { prepareProviderPrompt as t };