@pentoshi/clai 3.8.44 → 3.8.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/README.md +249 -251
  2. package/dist/agent/compaction-summary.js +1 -1
  3. package/dist/agent/compaction-summary.js.map +1 -1
  4. package/dist/agent/plan-tool.js +110 -14
  5. package/dist/agent/plan-tool.js.map +1 -1
  6. package/dist/agent/reliability-policy.d.ts +4 -3
  7. package/dist/agent/reliability-policy.js +4 -3
  8. package/dist/agent/reliability-policy.js.map +1 -1
  9. package/dist/agent/responder-context.d.ts +10 -0
  10. package/dist/agent/responder-context.js +50 -0
  11. package/dist/agent/responder-context.js.map +1 -0
  12. package/dist/agent/runner.js +160 -12
  13. package/dist/agent/runner.js.map +1 -1
  14. package/dist/agent/task-plan.d.ts +4 -0
  15. package/dist/agent/task-plan.js.map +1 -1
  16. package/dist/app/adapters/current-jobs-adapter.js +7 -0
  17. package/dist/app/adapters/current-jobs-adapter.js.map +1 -1
  18. package/dist/app/controllers/job-controller.d.ts +9 -6
  19. package/dist/app/controllers/job-controller.js +21 -0
  20. package/dist/app/controllers/job-controller.js.map +1 -1
  21. package/dist/app/controllers/session-controller.d.ts +14 -33
  22. package/dist/app/controllers/session-controller.js +71 -132
  23. package/dist/app/controllers/session-controller.js.map +1 -1
  24. package/dist/app/controllers/session-prompt-queue.d.ts +34 -0
  25. package/dist/app/controllers/session-prompt-queue.js +141 -0
  26. package/dist/app/controllers/session-prompt-queue.js.map +1 -0
  27. package/dist/app/controllers/session-responder.d.ts +49 -0
  28. package/dist/app/controllers/session-responder.js +311 -0
  29. package/dist/app/controllers/session-responder.js.map +1 -0
  30. package/dist/app/ports/jobs-port.d.ts +10 -7
  31. package/dist/attachments/clipboard-image.d.ts +10 -0
  32. package/dist/attachments/clipboard-image.js +188 -0
  33. package/dist/attachments/clipboard-image.js.map +1 -0
  34. package/dist/attachments/image-content.d.ts +3 -0
  35. package/dist/attachments/image-content.js +51 -0
  36. package/dist/attachments/image-content.js.map +1 -0
  37. package/dist/attachments/service.js +6 -2
  38. package/dist/attachments/service.js.map +1 -1
  39. package/dist/commands/providers.js +4 -2
  40. package/dist/commands/providers.js.map +1 -1
  41. package/dist/commands/search-providers.d.ts +1 -0
  42. package/dist/commands/search-providers.js +4 -2
  43. package/dist/commands/search-providers.js.map +1 -1
  44. package/dist/llm/capabilities.js +17 -4
  45. package/dist/llm/capabilities.js.map +1 -1
  46. package/dist/prompts/embedded.js +2 -2
  47. package/dist/prompts/embedded.js.map +1 -1
  48. package/dist/prompts/index.js +1 -1
  49. package/dist/prompts/system.agent.md +19 -12
  50. package/dist/prompts/system.ask.md +1 -1
  51. package/dist/repl/prompt-line.js +39 -6
  52. package/dist/repl/prompt-line.js.map +1 -1
  53. package/dist/repl.js +25 -15
  54. package/dist/repl.js.map +1 -1
  55. package/dist/safety/engagement-policy.js +39 -7
  56. package/dist/safety/engagement-policy.js.map +1 -1
  57. package/dist/store/config.d.ts +5 -1
  58. package/dist/store/config.js +9 -1
  59. package/dist/store/config.js.map +1 -1
  60. package/dist/store/history.js +43 -5
  61. package/dist/store/history.js.map +1 -1
  62. package/dist/store/keys.js +1 -0
  63. package/dist/store/keys.js.map +1 -1
  64. package/dist/store/plan.d.ts +11 -0
  65. package/dist/store/plan.js +66 -3
  66. package/dist/store/plan.js.map +1 -1
  67. package/dist/tools/definitions.js +48 -11
  68. package/dist/tools/definitions.js.map +1 -1
  69. package/dist/tools/http.d.ts +6 -1
  70. package/dist/tools/http.js +247 -68
  71. package/dist/tools/http.js.map +1 -1
  72. package/dist/tools/jobs.d.ts +72 -3
  73. package/dist/tools/jobs.js +743 -121
  74. package/dist/tools/jobs.js.map +1 -1
  75. package/dist/tools/pentest-workflows.js +80 -4
  76. package/dist/tools/pentest-workflows.js.map +1 -1
  77. package/dist/tools/registry.js +62 -20
  78. package/dist/tools/registry.js.map +1 -1
  79. package/dist/tools/tool-types.d.ts +5 -0
  80. package/dist/tools/web/decode.d.ts +17 -0
  81. package/dist/tools/web/decode.js +65 -0
  82. package/dist/tools/web/decode.js.map +1 -0
  83. package/dist/tools/web/fetch-core.js +14 -20
  84. package/dist/tools/web/fetch-core.js.map +1 -1
  85. package/dist/tools/web/providers/exa.d.ts +51 -0
  86. package/dist/tools/web/providers/exa.js +303 -0
  87. package/dist/tools/web/providers/exa.js.map +1 -0
  88. package/dist/tools/web/readable.d.ts +5 -5
  89. package/dist/tools/web/readable.js +34 -12
  90. package/dist/tools/web/readable.js.map +1 -1
  91. package/dist/tools/web/search.d.ts +3 -1
  92. package/dist/tools/web/search.js +6 -4
  93. package/dist/tools/web/search.js.map +1 -1
  94. package/dist/tools/web/types.d.ts +25 -2
  95. package/dist/tools/web/types.js +32 -0
  96. package/dist/tools/web/types.js.map +1 -1
  97. package/dist/tools/wordlists.js +74 -87
  98. package/dist/tools/wordlists.js.map +1 -1
  99. package/dist/tui-v2/actions/action-id.js +1 -1
  100. package/dist/tui-v2/actions/action-id.js.map +1 -1
  101. package/dist/tui-v2/actions/keymap.js +1 -1
  102. package/dist/tui-v2/actions/keymap.js.map +1 -1
  103. package/dist/tui-v2/app/App.js +82 -12
  104. package/dist/tui-v2/app/App.js.map +1 -1
  105. package/dist/tui-v2/app/commands/key-commands.js +1 -1
  106. package/dist/tui-v2/app/commands/key-commands.js.map +1 -1
  107. package/dist/tui-v2/app/commands/picker-commands.js +59 -8
  108. package/dist/tui-v2/app/commands/picker-commands.js.map +1 -1
  109. package/dist/tui-v2/app/commands/session-commands.js +0 -5
  110. package/dist/tui-v2/app/commands/session-commands.js.map +1 -1
  111. package/dist/tui-v2/bootstrap/composition-root.js +2 -0
  112. package/dist/tui-v2/bootstrap/composition-root.js.map +1 -1
  113. package/dist/tui-v2/components/jobs/jobs-panel.d.ts +12 -0
  114. package/dist/tui-v2/components/jobs/jobs-panel.js +184 -14
  115. package/dist/tui-v2/components/jobs/jobs-panel.js.map +1 -1
  116. package/dist/tui-v2/components/plan/plan-view.js +7 -3
  117. package/dist/tui-v2/components/plan/plan-view.js.map +1 -1
  118. package/dist/tui-v2/components/status/status-line.js +2 -3
  119. package/dist/tui-v2/components/status/status-line.js.map +1 -1
  120. package/dist/tui-v2/components/toast/toast-host.js +16 -1
  121. package/dist/tui-v2/components/toast/toast-host.js.map +1 -1
  122. package/dist/tui-v2/components/transcript/intro-card.js +11 -5
  123. package/dist/tui-v2/components/transcript/intro-card.js.map +1 -1
  124. package/dist/tui-v2/components/transcript/tool-card.d.ts +3 -0
  125. package/dist/tui-v2/components/transcript/tool-card.js +12 -2
  126. package/dist/tui-v2/components/transcript/tool-card.js.map +1 -1
  127. package/dist/tui-v2/components/transcript/transcript-row.js +1 -1
  128. package/dist/tui-v2/components/transcript/transcript-row.js.map +1 -1
  129. package/dist/tui-v2/composer/composer-editor.d.ts +6 -0
  130. package/dist/tui-v2/composer/composer-editor.js +20 -25
  131. package/dist/tui-v2/composer/composer-editor.js.map +1 -1
  132. package/dist/tui-v2/composer/composer-image-paste.d.ts +20 -0
  133. package/dist/tui-v2/composer/composer-image-paste.js +77 -0
  134. package/dist/tui-v2/composer/composer-image-paste.js.map +1 -0
  135. package/dist/tui-v2/state/transcript-store.d.ts +4 -0
  136. package/dist/tui-v2/state/transcript-store.js +13 -0
  137. package/dist/tui-v2/state/transcript-store.js.map +1 -1
  138. package/dist/ui/intro-card.js +3 -3
  139. package/dist/ui/intro-card.js.map +1 -1
  140. package/dist/ui/keys.d.ts +1 -0
  141. package/dist/ui/keys.js +4 -0
  142. package/dist/ui/keys.js.map +1 -1
  143. package/dist/ui/mentions.d.ts +13 -29
  144. package/dist/ui/mentions.js +200 -129
  145. package/dist/ui/mentions.js.map +1 -1
  146. package/dist/ui/plan-pane.js +6 -2
  147. package/dist/ui/plan-pane.js.map +1 -1
  148. package/dist/version.generated.d.ts +2 -2
  149. package/dist/version.generated.js +2 -2
  150. package/package.json +1 -1
package/dist/ui/keys.js CHANGED
@@ -13,6 +13,10 @@ export function isCtrlP(key) {
13
13
  return ((Boolean(key.ctrl) && key.name?.toLowerCase() === "p") ||
14
14
  key.sequence === "\x10");
15
15
  }
16
+ export function isCtrlV(key) {
17
+ return ((Boolean(key.ctrl) && key.name?.toLowerCase() === "v") ||
18
+ key.sequence === "\x16");
19
+ }
16
20
  export function isEscape(key) {
17
21
  return key.name === "escape" || key.sequence === "\x1b";
18
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/ui/keys.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,OAAO,CAAC,GAAa;IACnC,OAAO,CACL,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,GAAG,CAAC;QACtD,GAAG,CAAC,QAAQ,KAAK,MAAM,CACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAa;IACnC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAa;IACnC,OAAO,CACL,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,GAAG,CAAC;QACtD,GAAG,CAAC,QAAQ,KAAK,MAAM,CACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAa;IACnC,OAAO,CACL,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,GAAG,CAAC;QACtD,GAAG,CAAC,QAAQ,KAAK,MAAM,CACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAa;IACpC,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/ui/keys.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,OAAO,CAAC,GAAa;IACnC,OAAO,CACL,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,GAAG,CAAC;QACtD,GAAG,CAAC,QAAQ,KAAK,MAAM,CACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAa;IACnC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAa;IACnC,OAAO,CACL,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,GAAG,CAAC;QACtD,GAAG,CAAC,QAAQ,KAAK,MAAM,CACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAa;IACnC,OAAO,CACL,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,GAAG,CAAC;QACtD,GAAG,CAAC,QAAQ,KAAK,MAAM,CACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAa;IACnC,OAAO,CACL,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,GAAG,CAAC;QACtD,GAAG,CAAC,QAAQ,KAAK,MAAM,CACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAa;IACpC,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC;AAC1D,CAAC"}
@@ -27,12 +27,8 @@ export interface MentionExpansion {
27
27
  contextBlock: string;
28
28
  }
29
29
  export declare function imageMediaType(absPath: string): string | undefined;
30
- /**
31
- * Strip shell-style quoting/escaping a terminal adds when you drag-drop a
32
- * file: surrounding single/double quotes, and backslash-escaped spaces and
33
- * special chars (common on macOS/Linux). Returns the cleaned path.
34
- */
35
30
  export declare function normalizeDroppedPath(token: string): string;
31
+ export declare function formatAttachmentReference(path: string, baseDir?: string): string;
36
32
  /**
37
33
  * Given the current input line and cursor index, return the partial @-mention
38
34
  * the user is typing, or null if the cursor is not inside one.
@@ -67,21 +63,19 @@ export declare function listDirectoryAttachment(absPath: string, baseDir?: strin
67
63
  * Returns the raw token strings (including any leading "@") in order.
68
64
  */
69
65
  export declare function extractMentionTokens(line: string): string[];
66
+ export declare function extractExistingPathsFs(line: string, baseDir: string): string[];
70
67
  /**
71
- * Filesystem-aware path extraction for the SUBMIT path. Terminals are
72
- * inconsistent about escaping spaces in drag-dropped paths (some escape
73
- * every space, some none, some only the first). A filename like
74
- * "Screenshot 2026-05-28 at 11.42.27 PM.png" followed by trailing prompt
75
- * text ("what is this") cannot be split by a regex alone. So, for each
76
- * place a path could start (an absolute/home/relative prefix at the line
77
- * start or after whitespace), we take the rest of the line and find the
78
- * LONGEST word-boundary prefix that resolves to a real file on disk
79
- * (tolerant of Unicode whitespace variants). This resolves real files with
80
- * spaces while leaving the trailing question out.
81
- *
82
- * Returns absolute paths (already resolved against baseDir).
68
+ * Stabilize image paths inside just-dropped/pasted text. macOS screenshot
69
+ * drags reference a transient TemporaryItems/NSIRD_screencaptureui file that
70
+ * is deleted moments after the drag, so submit-time resolution fails ("can't
71
+ * find the image"). Copying the image to the durable attachments dir at drop
72
+ * time while the source still exists and rewriting the text to a stable
73
+ * file:// reference fixes this. Non-image drops are left untouched.
83
74
  */
84
- export declare function extractExistingPathsFs(line: string, baseDir: string): string[];
75
+ export declare function stabilizeDroppedImagesInText(text: string, baseDir?: string): {
76
+ text: string;
77
+ images: string[];
78
+ };
85
79
  /**
86
80
  * Resolve all mentions/dropped paths in a submitted prompt into attachments
87
81
  * and a context block to append to the model message. The original text is
@@ -95,16 +89,6 @@ export declare function expandMentions(line: string, baseDir?: string, visionCap
95
89
  * even when a provider silently ignores attached image bytes.
96
90
  */
97
91
  export declare function imageAttachmentPaths(line: string, baseDir?: string): string[];
98
- /**
99
- * Copy image paths into a stable scratch folder so vision/OCR still work if
100
- * the original vanishes (macOS TemporaryItems, Desktop screenshots with
101
- * spaces, drag-drop temps). Always stabilizes readable images.
102
- */
103
92
  export declare function stabilizeImagePaths(paths: string[], baseDir?: string): string[];
104
- /**
105
- * Read the image attachments referenced in a prompt into base64 ChatImage
106
- * objects, ready to attach to a multimodal user message. Only called when
107
- * the active model supports vision. Skips images that are missing or larger
108
- * than MAX_IMAGE_BYTES (those still appear as text notes via expandMentions).
109
- */
93
+ export declare function loadImagePaths(paths: readonly string[]): ChatImage[];
110
94
  export declare function loadImageAttachments(line: string, baseDir?: string): ChatImage[];
@@ -1,6 +1,10 @@
1
- import { copyFileSync, existsSync, mkdirSync, readdirSync, readFileSync, statSync, } from "node:fs";
2
- import { homedir } from "node:os";
1
+ import { execFileSync } from "node:child_process";
2
+ import { randomUUID } from "node:crypto";
3
+ import { copyFileSync, existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, } from "node:fs";
4
+ import { homedir, platform } from "node:os";
3
5
  import { basename, dirname, extname, isAbsolute, join, resolve, relative, } from "node:path";
6
+ import { fileURLToPath, pathToFileURL } from "node:url";
7
+ import { detectModelImageMediaType, isModelImageMediaType, MAX_IMAGE_BYTES, } from "../attachments/image-content.js";
4
8
  import { safeCwd } from "../os/cwd.js";
5
9
  import { scratchDirFor } from "../prompts/index.js";
6
10
  /**
@@ -139,13 +143,6 @@ const DOC_EXTENSIONS = new Set([
139
143
  ".odt",
140
144
  ".ods",
141
145
  ]);
142
- /** Max raw bytes of an image we will base64-inline for a vision model.
143
- * Providers cap the *base64* payload (Anthropic rejects >5 MB base64, the
144
- * tightest limit across providers). Base64 inflates bytes by ~33%, so we
145
- * cap raw bytes at ~3.75 MB to stay safely under 5 MB encoded. Larger
146
- * images get a "too large" note so the agent can downscale them with a
147
- * tool (e.g. sips/magick) instead of triggering a 400 from the API. */
148
- const MAX_IMAGE_BYTES = 3_750_000;
149
146
  const IMAGE_MEDIA_TYPES = {
150
147
  ".png": "image/png",
151
148
  ".jpg": "image/jpeg",
@@ -168,25 +165,37 @@ function expandHome(p) {
168
165
  return join(homedir(), p.slice(2));
169
166
  return p;
170
167
  }
171
- /**
172
- * Strip shell-style quoting/escaping a terminal adds when you drag-drop a
173
- * file: surrounding single/double quotes, and backslash-escaped spaces and
174
- * special chars (common on macOS/Linux). Returns the cleaned path.
175
- */
176
168
  export function normalizeDroppedPath(token) {
177
- let t = token.trim();
178
- if (t.length === 0)
179
- return t;
180
- // Surrounding quotes
181
- if ((t.startsWith("'") && t.endsWith("'") && t.length >= 2) ||
182
- (t.startsWith('"') && t.endsWith('"') && t.length >= 2)) {
183
- t = t.slice(1, -1);
169
+ let normalized = token.trim();
170
+ if (normalized.length === 0)
171
+ return normalized;
172
+ if ((normalized.startsWith("'") &&
173
+ normalized.endsWith("'") &&
174
+ normalized.length >= 2) ||
175
+ (normalized.startsWith('"') &&
176
+ normalized.endsWith('"') &&
177
+ normalized.length >= 2)) {
178
+ normalized = normalized.slice(1, -1);
184
179
  }
185
- else {
186
- // Unescape "\ " and similar backslash escapes that drag-drop inserts.
187
- t = t.replace(/\\(.)/g, "$1");
180
+ if (/^file:\/\//i.test(normalized)) {
181
+ try {
182
+ return fileURLToPath(normalized);
183
+ }
184
+ catch {
185
+ return normalized;
186
+ }
188
187
  }
189
- return t;
188
+ const windowsPath = /^[A-Za-z]:[\\/]/.test(normalized) || /^\\\\/.test(normalized);
189
+ if (!windowsPath)
190
+ normalized = normalized.replace(/\\(.)/g, "$1");
191
+ return normalized;
192
+ }
193
+ export function formatAttachmentReference(path, baseDir = safeCwd()) {
194
+ const normalized = expandHome(normalizeDroppedPath(path));
195
+ const absolute = isAbsolute(normalized)
196
+ ? normalized
197
+ : resolve(baseDir, normalized);
198
+ return pathToFileURL(absolute).href;
190
199
  }
191
200
  /**
192
201
  * Given the current input line and cursor index, return the partial @-mention
@@ -385,29 +394,23 @@ export function listDirectoryAttachment(absPath, baseDir = absPath, depth = 0, b
385
394
  */
386
395
  export function extractMentionTokens(line) {
387
396
  const tokens = [];
388
- // 1. @-mentions: @ at start or after whitespace, run until whitespace.
389
397
  const mentionRe = /(^|\s)@(\S+)/g;
390
- let m;
391
- while ((m = mentionRe.exec(line)) !== null) {
392
- tokens.push(`@${m[2]}`);
398
+ let match;
399
+ while ((match = mentionRe.exec(line)) !== null) {
400
+ tokens.push(`@${match[2]}`);
393
401
  }
394
- // 2. Quoted paths (drag-drop on many terminals wraps in single quotes).
395
402
  const quotedRe = /'([^']+)'|"([^"]+)"/g;
396
- while ((m = quotedRe.exec(line)) !== null) {
397
- const inner = m[1] ?? m[2] ?? "";
398
- if (inner.includes("/") || isAbsolute(inner))
399
- tokens.push(`'${inner}'`);
400
- }
401
- // 3. Bare path-like tokens (absolute, ~/, ./, or escaped-space paths).
402
- // Conservative: only when they look like a path AND exist as a file.
403
- const bareRe = /(?:^|\s)((?:~\/|\.\/|\/)(?:\\ |[^\s])+)/g;
404
- while ((m = bareRe.exec(line)) !== null) {
405
- const raw = m[1] ?? "";
406
- if (raw.startsWith("@"))
407
- continue;
408
- tokens.push(raw);
403
+ while ((match = quotedRe.exec(line)) !== null) {
404
+ const inner = match[1] ?? match[2] ?? "";
405
+ if (inner)
406
+ tokens.push(match[0]);
407
+ }
408
+ const bareRe = /(?:^|\s)((?:file:\/\/|~[\\/]|\.{1,2}[\\/]|\/|[A-Za-z]:[\\/]|\\\\)(?:\\ |[^\s])+)/gi;
409
+ while ((match = bareRe.exec(line)) !== null) {
410
+ const raw = match[1] ?? "";
411
+ if (raw && !raw.startsWith("@"))
412
+ tokens.push(raw);
409
413
  }
410
- // De-dupe while preserving order.
411
414
  return [...new Set(tokens)];
412
415
  }
413
416
  /**
@@ -460,61 +463,99 @@ function canonicalizeName(name) {
460
463
  .normalize("NFC")
461
464
  .replace(/[\u00a0\u2007\u202f\u2009\u200a\u2002\u2003\u3000]/g, " ");
462
465
  }
463
- /**
464
- * Filesystem-aware path extraction for the SUBMIT path. Terminals are
465
- * inconsistent about escaping spaces in drag-dropped paths (some escape
466
- * every space, some none, some only the first). A filename like
467
- * "Screenshot 2026-05-28 at 11.42.27 PM.png" followed by trailing prompt
468
- * text ("what is this") cannot be split by a regex alone. So, for each
469
- * place a path could start (an absolute/home/relative prefix at the line
470
- * start or after whitespace), we take the rest of the line and find the
471
- * LONGEST word-boundary prefix that resolves to a real file on disk
472
- * (tolerant of Unicode whitespace variants). This resolves real files with
473
- * spaces while leaving the trailing question out.
474
- *
475
- * Returns absolute paths (already resolved against baseDir).
476
- */
477
- export function extractExistingPathsFs(line, baseDir) {
478
- const found = [];
466
+ /** End offsets (exclusive) of each whitespace-delimited word in `rest`,
467
+ * treating a backslash-escaped space ("\ ") as part of the word so
468
+ * drag-dropped paths with escaped spaces stay intact. */
469
+ function wordEndOffsets(rest) {
470
+ const ends = [];
471
+ let i = 0;
472
+ const n = rest.length;
473
+ while (i < n) {
474
+ while (i < n && /\s/.test(rest[i] ?? ""))
475
+ i += 1;
476
+ if (i >= n)
477
+ break;
478
+ while (i < n) {
479
+ if (rest[i] === "\\" && rest[i + 1] === " ") {
480
+ i += 2;
481
+ continue;
482
+ }
483
+ if (/\s/.test(rest[i] ?? ""))
484
+ break;
485
+ i += 1;
486
+ }
487
+ ends.push(i);
488
+ }
489
+ return ends;
490
+ }
491
+ /** Shared core for submit-time path extraction and drop-time stabilization.
492
+ * For each place a path could start, take the LONGEST word-boundary prefix
493
+ * that resolves to a real file (tolerant of Unicode whitespace variants) and
494
+ * return both the raw span and the resolved absolute path. */
495
+ function scanExistingPaths(line, baseDir) {
496
+ const results = [];
479
497
  const seen = new Set();
480
- // Candidate path starts: "/", "~/", "./", "../" at start or after space.
481
- const startRe = /(?:^|\s)((?:~|\.{1,2})?\/)/g;
498
+ const startRe = /(?:^|\s|["'])((?:file:\/\/|(?:~|\.{1,2})?[\\/]|[A-Za-z]:[\\/]|\\\\))/gi;
482
499
  let m;
483
500
  while ((m = startRe.exec(line)) !== null) {
484
501
  const startIdx = m.index + m[0].length - (m[1]?.length ?? 0);
485
502
  const rest = line.slice(startIdx);
486
- // Protect escaped spaces, then split on real (unescaped) spaces.
487
- const PLACEHOLDER = "\u0000";
488
- const protectedRest = rest.replace(/\\ /g, PLACEHOLDER);
489
- const words = protectedRest.split(/\s+/);
490
- // Try the longest prefix first so "a b.png" wins over "a".
491
- for (let k = words.length; k >= 1; k -= 1) {
492
- const candidateRaw = words.slice(0, k).join(" ");
493
- const candidate = normalizeDroppedPath(candidateRaw.replaceAll(PLACEHOLDER, "\\ "));
503
+ const ends = wordEndOffsets(rest);
504
+ for (let k = ends.length; k >= 1; k -= 1) {
505
+ const rawSpan = rest.slice(0, ends[k - 1]);
506
+ const candidate = normalizeDroppedPath(rawSpan);
494
507
  const expanded = expandHome(candidate);
495
508
  const abs = isAbsolute(expanded) ? expanded : resolve(baseDir, expanded);
496
509
  const resolved = resolveExistingFile(abs);
497
510
  if (resolved) {
498
511
  if (!seen.has(resolved)) {
499
512
  seen.add(resolved);
500
- found.push(resolved);
513
+ results.push({ raw: rawSpan, resolved });
501
514
  }
502
515
  break; // longest match for this start wins
503
516
  }
504
517
  }
505
518
  }
506
- return found;
519
+ return results;
520
+ }
521
+ export function extractExistingPathsFs(line, baseDir) {
522
+ return scanExistingPaths(line, baseDir).map((match) => match.resolved);
523
+ }
524
+ /** Non-path residual budget: a paste dominated by prose is not a file drop. */
525
+ const MAX_DROP_RESIDUAL = 512;
526
+ /**
527
+ * Stabilize image paths inside just-dropped/pasted text. macOS screenshot
528
+ * drags reference a transient TemporaryItems/NSIRD_screencaptureui file that
529
+ * is deleted moments after the drag, so submit-time resolution fails ("can't
530
+ * find the image"). Copying the image to the durable attachments dir at drop
531
+ * time — while the source still exists — and rewriting the text to a stable
532
+ * file:// reference fixes this. Non-image drops are left untouched.
533
+ */
534
+ export function stabilizeDroppedImagesInText(text, baseDir = safeCwd()) {
535
+ const matches = scanExistingPaths(text, baseDir).filter((match) => Boolean(imageMediaType(match.resolved)));
536
+ if (matches.length === 0)
537
+ return { text, images: [] };
538
+ const matchedChars = matches.reduce((sum, match) => sum + match.raw.length, 0);
539
+ if (text.trim().length - matchedChars > MAX_DROP_RESIDUAL) {
540
+ return { text, images: [] };
541
+ }
542
+ let rewritten = text;
543
+ const images = [];
544
+ for (const match of matches) {
545
+ const stable = stabilizeImagePaths([match.resolved], baseDir)[0] ?? match.resolved;
546
+ rewritten = rewritten.replace(match.raw, formatAttachmentReference(stable));
547
+ images.push(stable);
548
+ }
549
+ return { text: rewritten, images };
507
550
  }
508
551
  function tokenToPath(token, baseDir) {
509
- let t = token;
510
- if (t.startsWith("@"))
511
- t = t.slice(1);
512
- t = normalizeDroppedPath(t);
513
- // Trailing slash is fine for directories in the prompt (`@src/`) but
514
- // path.resolve/stat work cleaner without it.
515
- t = t.replace(/\/+$/, "") || t;
516
- t = expandHome(t);
517
- return isAbsolute(t) ? t : resolve(baseDir, t);
552
+ let path = token;
553
+ if (path.startsWith("@"))
554
+ path = path.slice(1);
555
+ path = normalizeDroppedPath(path);
556
+ path = path.replace(/[\\/]+$/, "") || path;
557
+ path = expandHome(path);
558
+ return isAbsolute(path) ? path : resolve(baseDir, path);
518
559
  }
519
560
  /**
520
561
  * Resolve all mentions/dropped paths in a submitted prompt into attachments
@@ -579,6 +620,8 @@ export function expandMentions(line, baseDir = safeCwd(), visionCapable = false)
579
620
  }
580
621
  else if (kind === "image") {
581
622
  const stablePath = stabilizeImagePaths([absPath], baseDir)[0] ?? absPath;
623
+ const mediaType = imageMediaType(stablePath);
624
+ const sendable = Boolean(mediaType && isModelImageMediaType(mediaType));
582
625
  let oversized = false;
583
626
  try {
584
627
  oversized = statSync(stablePath).size > MAX_IMAGE_BYTES;
@@ -588,7 +631,7 @@ export function expandMentions(line, baseDir = safeCwd(), visionCapable = false)
588
631
  oversized = statSync(absPath).size > MAX_IMAGE_BYTES;
589
632
  }
590
633
  catch {
591
- /* ignore */
634
+ oversized = false;
592
635
  }
593
636
  }
594
637
  attachments.push({
@@ -597,9 +640,11 @@ export function expandMentions(line, baseDir = safeCwd(), visionCapable = false)
597
640
  kind: "image",
598
641
  note: oversized
599
642
  ? `image is larger than ${Math.round(MAX_IMAGE_BYTES / 1_000_000)}MB and was NOT attached — downscale it first (macOS: sips -Z 1600 "<img>" --out /tmp/small.png; or use magick/ffmpeg), then reference the smaller copy`
600
- : visionCapable
601
- ? "image file attached as multimodal input; inspect it directly for text, colors, layout, spacing, and visual style. Stable path used if original may vanish. Prefer vision over OCR unless the user asks for OCR."
602
- : "image file — the current model can't view images; switch to a vision model for colors/layout/style, or extract text with OCR if only text is needed (OCR grounding may still be attached)",
643
+ : !sendable
644
+ ? "image format could not be converted to PNG/JPEG/GIF/WebP and was NOT attached"
645
+ : visionCapable
646
+ ? "image file — attached as multimodal input; inspect it directly for text, colors, layout, spacing, and visual style. Stable path used if original may vanish. Prefer vision over OCR unless the user asks for OCR."
647
+ : "image file — the current model can't view images; switch to a vision model for colors/layout/style, or extract text with OCR if only text is needed (OCR grounding may still be attached)",
603
648
  });
604
649
  }
605
650
  else if (kind === "document") {
@@ -671,76 +716,102 @@ export function imageAttachmentPaths(line, baseDir = safeCwd()) {
671
716
  }
672
717
  return stabilizeImagePaths(paths, baseDir);
673
718
  }
674
- /**
675
- * Copy image paths into a stable scratch folder so vision/OCR still work if
676
- * the original vanishes (macOS TemporaryItems, Desktop screenshots with
677
- * spaces, drag-drop temps). Always stabilizes readable images.
678
- */
719
+ function convertImageToPng(source, destination) {
720
+ const attempts = [];
721
+ if (platform() === "darwin") {
722
+ attempts.push([
723
+ "sips",
724
+ ["-s", "format", "png", source, "--out", destination],
725
+ ]);
726
+ }
727
+ attempts.push(["magick", [source, destination]]);
728
+ if (platform() !== "win32")
729
+ attempts.push(["convert", [source, destination]]);
730
+ for (const [command, args] of attempts) {
731
+ try {
732
+ execFileSync(command, args, {
733
+ stdio: "ignore",
734
+ timeout: 15_000,
735
+ });
736
+ if (existsSync(destination) && statSync(destination).size > 0)
737
+ return true;
738
+ }
739
+ catch {
740
+ rmSync(destination, { force: true });
741
+ }
742
+ }
743
+ return false;
744
+ }
679
745
  export function stabilizeImagePaths(paths, baseDir = safeCwd()) {
680
- const out = [];
681
- const attachDir = join(scratchDirFor(baseDir), "attachments");
682
- for (const p of paths) {
683
- if (!existsSync(p)) {
684
- out.push(p);
746
+ const output = [];
747
+ const attachmentDir = join(scratchDirFor(baseDir), "attachments");
748
+ for (const source of paths) {
749
+ if (!existsSync(source)) {
750
+ output.push(source);
751
+ continue;
752
+ }
753
+ if (resolve(dirname(source)) === resolve(attachmentDir)) {
754
+ output.push(source);
685
755
  continue;
686
756
  }
687
757
  try {
688
- mkdirSync(attachDir, { recursive: true });
689
- const safeName = basename(p)
690
- .replace(/[^\w.\-]+/g, "_")
758
+ mkdirSync(attachmentDir, { recursive: true });
759
+ const extension = extname(source).toLowerCase();
760
+ const stem = basename(source, extension)
761
+ .replace(/[^\w.-]+/g, "_")
691
762
  .replace(/_+/g, "_")
692
- .slice(0, 120) || "image";
693
- const dest = join(attachDir, `${Date.now()}-${safeName}`);
694
- copyFileSync(p, dest);
695
- out.push(dest);
763
+ .slice(0, 100) || "image";
764
+ const id = `${Date.now()}-${randomUUID().slice(0, 8)}`;
765
+ const mediaType = imageMediaType(source);
766
+ if (!mediaType || !isModelImageMediaType(mediaType)) {
767
+ const converted = join(attachmentDir, `${id}-${stem}.png`);
768
+ if (convertImageToPng(source, converted)) {
769
+ output.push(converted);
770
+ continue;
771
+ }
772
+ }
773
+ const destination = join(attachmentDir, `${id}-${stem}${extension || ".img"}`);
774
+ copyFileSync(source, destination);
775
+ output.push(destination);
696
776
  }
697
777
  catch {
698
- out.push(p);
778
+ output.push(source);
699
779
  }
700
780
  }
701
- return out;
781
+ return output;
702
782
  }
703
- /**
704
- * Read the image attachments referenced in a prompt into base64 ChatImage
705
- * objects, ready to attach to a multimodal user message. Only called when
706
- * the active model supports vision. Skips images that are missing or larger
707
- * than MAX_IMAGE_BYTES (those still appear as text notes via expandMentions).
708
- */
709
- export function loadImageAttachments(line, baseDir = safeCwd()) {
783
+ export function loadImagePaths(paths) {
710
784
  const images = [];
711
785
  const seen = new Set();
712
- const candidates = stabilizeImagePaths([
713
- ...extractMentionTokens(line).map((t) => tokenToPath(t, baseDir)),
714
- ...extractExistingPathsFs(line, baseDir),
715
- ].filter((p) => {
716
- if (seen.has(p))
717
- return false;
718
- seen.add(p);
719
- return true;
720
- }), baseDir);
721
- for (const absPath of candidates) {
722
- if (classifyPath(absPath) !== "image")
786
+ for (const path of paths) {
787
+ if (seen.has(path))
723
788
  continue;
724
- const mediaType = imageMediaType(absPath);
725
- if (!mediaType)
789
+ seen.add(path);
790
+ if (classifyPath(path) !== "image")
726
791
  continue;
727
792
  try {
728
- const stat = statSync(absPath);
793
+ const stat = statSync(path);
729
794
  if (stat.size > MAX_IMAGE_BYTES)
730
795
  continue;
731
- const buf = readFileSync(absPath);
796
+ const buffer = readFileSync(path);
797
+ const mediaType = detectModelImageMediaType(buffer);
798
+ if (!mediaType)
799
+ continue;
732
800
  images.push({
733
801
  mediaType,
734
- dataBase64: buf.toString("base64"),
735
- path: absPath,
802
+ dataBase64: buffer.toString("base64"),
803
+ path,
736
804
  });
737
805
  }
738
806
  catch {
739
- // unreadable — skip; the text note from expandMentions still applies
807
+ continue;
740
808
  }
741
809
  }
742
810
  return images;
743
811
  }
812
+ export function loadImageAttachments(line, baseDir = safeCwd()) {
813
+ return loadImagePaths(imageAttachmentPaths(line, baseDir));
814
+ }
744
815
  function displayPath(absPath, baseDir) {
745
816
  const rel = relative(baseDir, absPath);
746
817
  if (rel && !rel.startsWith("..") && !isAbsolute(rel))
@@ -1 +1 @@
1
- {"version":3,"file":"mentions.js","sourceRoot":"","sources":["../../src/ui/mentions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mentions.js","sourceRoot":"","sources":["../../src/ui/mentions.ts"],"names":[],"mappings":"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"}