mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
* fix(images): preserve Windows preview paths Provider image markdown used escaped backslash paths on Windows, which markdown parsing could turn into encoded drive paths that the app treated as workspace-relative. Emit drive-letter paths as file URIs and normalize existing encoded local paths before file preview. * test(server): accept file URI image sources Windows provider image output now renders drive-letter paths as file URIs. Decode those markdown sources before filesystem assertions so the image rendering tests keep checking the materialized file. * fix(images): keep plain local paths literal Limit legacy URI decoding to markdown-encoded Windows drive paths so ordinary local paths with percent sequences remain unchanged. Document why provider image markdown matching still accepts old doubled-backslash history.
35 lines
865 B
TypeScript
35 lines
865 B
TypeScript
import { localFileSourceToPath } from "@/attachments/utils";
|
|
import { resolveFilePreviewReadTarget } from "@/file-explorer/preview-target";
|
|
|
|
export type AssistantImageSourceResolution =
|
|
| { kind: "direct"; uri: string }
|
|
| { kind: "file_rpc"; cwd: string; path: string };
|
|
|
|
export function resolveAssistantImageSource(input: {
|
|
source: string;
|
|
workspaceRoot?: string;
|
|
}): AssistantImageSourceResolution | null {
|
|
const source = input.source.trim();
|
|
if (!source) {
|
|
return null;
|
|
}
|
|
|
|
if (/^(https?:|data:|blob:)/i.test(source)) {
|
|
return { kind: "direct", uri: source };
|
|
}
|
|
|
|
const readTarget = resolveFilePreviewReadTarget({
|
|
path: localFileSourceToPath(source),
|
|
workspaceRoot: input.workspaceRoot,
|
|
});
|
|
if (!readTarget) {
|
|
return null;
|
|
}
|
|
|
|
return {
|
|
kind: "file_rpc",
|
|
cwd: readTarget.cwd,
|
|
path: readTarget.path,
|
|
};
|
|
}
|