mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 15:50:46 +00:00
fix(media): trim json suffixes from media paths
This commit is contained in:
@@ -22,6 +22,7 @@ Docs: https://docs.openclaw.ai
|
|||||||
### Fixes
|
### Fixes
|
||||||
|
|
||||||
- Gateway/chat history: merge Claude CLI transcript imports for Anthropic-routed sessions that still have a Claude CLI binding, so local chat history does not hide CLI JSONL turns. Fixes #75850. Thanks @alfredjbclaw.
|
- Gateway/chat history: merge Claude CLI transcript imports for Anthropic-routed sessions that still have a Claude CLI binding, so local chat history does not hide CLI JSONL turns. Fixes #75850. Thanks @alfredjbclaw.
|
||||||
|
- Media: trim serialized JSON suffixes after local `MEDIA:` directive file extensions, so generated-image metadata cannot pollute the parsed media path and cause false `ENOENT` delivery failures. Fixes #75182. Thanks @TnzGit and @hclsys.
|
||||||
- Cron: make scheduler reload schedule comparison tolerate malformed persisted jobs, so one bad cron entry no longer aborts the whole tick. Fixes #75886. Thanks @samfox-ai.
|
- Cron: make scheduler reload schedule comparison tolerate malformed persisted jobs, so one bad cron entry no longer aborts the whole tick. Fixes #75886. Thanks @samfox-ai.
|
||||||
- Doctor/channels: warn after migrations when default Telegram or Discord accounts have no configured token and their env fallback (`TELEGRAM_BOT_TOKEN` or `DISCORD_BOT_TOKEN`) is unavailable, with secret-safe migration docs for checking state-dir `.env`. Fixes #74298. Thanks @lolaopenclaw.
|
- Doctor/channels: warn after migrations when default Telegram or Discord accounts have no configured token and their env fallback (`TELEGRAM_BOT_TOKEN` or `DISCORD_BOT_TOKEN`) is unavailable, with secret-safe migration docs for checking state-dir `.env`. Fixes #74298. Thanks @lolaopenclaw.
|
||||||
- Control UI/chat: keep live replies visible when a raw session alias such as `main` sends the chat turn but Gateway emits events under the canonical session key for the same run. Fixes #73716. Thanks @teebes.
|
- Control UI/chat: keep live replies visible when a raw session alias such as `main` sends the chat turn but Gateway emits events under the canonical session key for the same run. Fixes #73716. Thanks @teebes.
|
||||||
|
|||||||
@@ -54,6 +54,15 @@ describe("splitMediaFromOutput", () => {
|
|||||||
["C:\\Users\\pete\\Pictures\\snap.png", "MEDIA:C:\\Users\\pete\\Pictures\\snap.png"],
|
["C:\\Users\\pete\\Pictures\\snap.png", "MEDIA:C:\\Users\\pete\\Pictures\\snap.png"],
|
||||||
["/tmp/tts-fAJy8C/voice-1770246885083.opus", "MEDIA:/tmp/tts-fAJy8C/voice-1770246885083.opus"],
|
["/tmp/tts-fAJy8C/voice-1770246885083.opus", "MEDIA:/tmp/tts-fAJy8C/voice-1770246885083.opus"],
|
||||||
["image.png", "MEDIA:image.png"],
|
["image.png", "MEDIA:image.png"],
|
||||||
|
[
|
||||||
|
"/path/to/image.png",
|
||||||
|
'MEDIA:/path/to/image.png"}],"details":{"provider":"openai","model":"gpt-image-2"}',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"/path/to/image.png",
|
||||||
|
String.raw`MEDIA:/path/to/image.png\"}],\"details\":{\"provider\":\"openai\"}`,
|
||||||
|
],
|
||||||
|
["/tmp/render,final.png", "MEDIA:/tmp/render,final.png"],
|
||||||
] as const)("accepts supported media path variant: %s", (expectedPath, input) => {
|
] as const)("accepts supported media path variant: %s", (expectedPath, input) => {
|
||||||
expectAcceptedMediaPathCase(expectedPath, input);
|
expectAcceptedMediaPathCase(expectedPath, input);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -34,8 +34,12 @@ export function normalizeMediaSource(src: string) {
|
|||||||
return src.startsWith("file://") ? src.replace("file://", "") : src;
|
return src.startsWith("file://") ? src.replace("file://", "") : src;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const TRAILING_SERIALIZED_JSON_AFTER_EXT_RE = /^(.*\.\w{1,10})\\?"(?=[\]},:,]|$).*/s;
|
||||||
|
|
||||||
function cleanCandidate(raw: string) {
|
function cleanCandidate(raw: string) {
|
||||||
return raw.replace(/^[`"'[{(]+/, "").replace(/[`"'\\})\],]+$/, "");
|
const stripped = raw.replace(/^[`"'[{(]+/, "").replace(/[`"'\\})\],]+$/, "");
|
||||||
|
const jsonSuffixMatch = TRAILING_SERIALIZED_JSON_AFTER_EXT_RE.exec(stripped);
|
||||||
|
return jsonSuffixMatch?.[1] ?? stripped;
|
||||||
}
|
}
|
||||||
|
|
||||||
const WINDOWS_DRIVE_RE = /^[a-zA-Z]:[\\/]/;
|
const WINDOWS_DRIVE_RE = /^[a-zA-Z]:[\\/]/;
|
||||||
|
|||||||
Reference in New Issue
Block a user