UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

79 lines (78 loc) 2.95 kB
import { c as resolveUserPath } from "./home-dir-BPhrG-aM.js"; import "./utils-P__uGsPB.js"; import { l as normalizeMediaFacts, o as isImageMediaFact } from "./media-facts-8Sl_nPCc.js"; import { a as safeFileURLToPath } from "./local-file-access-B1HKoQAc.js"; //#region src/agents/embedded-agent-runner/run/images.media-refs.ts const URL_SCHEME_PATTERN = /^[a-z][a-z0-9+.-]*:/i; const WINDOWS_DRIVE_PATH_PATTERN = /^[A-Za-z]:[\\/]/; function isOpenClawCliImageCachePath(filePath) { const parts = filePath.replaceAll("\\", "/").split("/"); return parts.some((part, index) => { if (part === ".openclaw-cli-images") return true; const parent = parts[index - 1] ?? ""; return part === "openclaw-cli-images" && /^openclaw(?:-\d+)?$/.test(parent); }); } function resolveMediaFactLocalRef(fact) { const mediaUri = [fact.url, fact.path].find((value) => value?.startsWith("media://inbound/")); const identity = mediaUri ?? fact.path ?? fact.url; if (!identity) return; let resolved = mediaUri; if (!resolved && /^file:/i.test(identity)) try { resolved = safeFileURLToPath(identity); } catch { return; } else if (!resolved && (!URL_SCHEME_PATTERN.test(identity) || WINDOWS_DRIVE_PATH_PATTERN.test(identity))) resolved = identity; if (!resolved) return; return { raw: identity, type: mediaUri ? "media-uri" : "path", resolved: resolved.startsWith("~") ? resolveUserPath(resolved) : resolved }; } function mediaFactToImageRef(fact, factIndex) { if (!isImageMediaFact(fact)) return; const identity = [fact.url, fact.path].find((value) => value?.startsWith("media://inbound/")) ?? fact.path ?? fact.url; if (!identity) return fact.hydrationSuppressed === true ? { aliases: [], detect: false, factIndex, raw: "", type: "path", resolved: "", hydrate: false, ...fact.workspaceDir ? { workspaceDir: fact.workspaceDir } : {} } : void 0; const localRef = resolveMediaFactLocalRef(fact); const hydrate = fact.hydrationSuppressed !== true; if (!localRef || isOpenClawCliImageCachePath(localRef.resolved)) return { aliases: [fact.path, fact.url].filter((value) => Boolean(value)), detect: false, factIndex, raw: identity, type: "path", resolved: identity, hydrate: false, ...fact.workspaceDir ? { workspaceDir: fact.workspaceDir } : {} }; return { ...localRef, aliases: [ fact.path, fact.url, localRef.resolved ].filter((value) => Boolean(value)), factIndex, hydrate, ...fact.workspaceDir ? { workspaceDir: fact.workspaceDir } : {} }; } function collectMediaImageRefs(media) { return normalizeMediaFacts(media).flatMap((fact, factIndex) => isImageMediaFact(fact) ? [mediaFactToImageRef(fact, factIndex)] : []); } function hasHydratableMediaImages(media) { return collectMediaImageRefs(media).some((ref) => ref?.hydrate === true); } //#endregion export { resolveMediaFactLocalRef as i, hasHydratableMediaImages as n, isOpenClawCliImageCachePath as r, collectMediaImageRefs as t };