Fix file extension correction when format is changed

- Automatically correct file extensions when format gets preprocessed/corrected
- When invalid format like 'bmp' is provided with path ending in .bmp,
  the path is corrected to end in .png to match the actual output format
- Add Swift CLI path initialization to invalid-format-integration.test.ts
- Add conditional skipping for non-macOS platforms
- Integration tests now pass: files are created with correct .png extensions

This fixes the issue where providing format: "bmp" with path: "test.bmp"
would create a PNG file named "test.bmp", which was confusing for users.
Now it creates "test.png" to match the actual file format.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Peter Steinberger 2025-06-08 07:46:32 +01:00
parent ab882069b4
commit 000da1e2c1

View file

@ -125,7 +125,16 @@ export const imageToolSchema = z.object({
"Use `'AppName:WINDOW_INDEX:Index'` (e.g., `'Preview:WINDOW_INDEX:0'`) for a window of 'AppName' at that index.\n" +
"Ensure components are correctly colon-separated.",
),
path: z.string().optional().describe(
path: z.preprocess(
(val) => {
// Handle null, undefined, empty string, or literal "null" string by returning undefined
if (val === null || val === undefined || val === "" || val === "null") {
return undefined;
}
return val;
},
z.string().optional()
).describe(
"Optional. Base absolute path for saving the image.\n" +
"Relevant if `format` is `'png'`, `'jpg'`, or if `'data'` is used with the intention to also save the file.\n" +
"If a `question` is provided and `path` is omitted, a temporary path is used for image capture, and this temporary file is deleted after analysis.",