@agi-fans/dsh-tui 0.6.0 → 0.7.0
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.
- package/lib/CHANGELOG.md +27 -1
- package/lib/chrome/path-mentions.js +12 -3
- package/lib/chrome/path-mentions.js.map +1 -1
- package/lib/definition.d.ts +13 -0
- package/lib/input/image-paste.d.ts +12 -0
- package/lib/input/image-paste.js +41 -0
- package/lib/input/image-paste.js.map +1 -1
- package/lib/runtime/provider-local.d.ts +7 -1
- package/lib/runtime/provider-local.js +110 -31
- package/lib/runtime/provider-local.js.map +1 -1
- package/lib/runtime/runner.js +9 -3
- package/lib/runtime/runner.js.map +1 -1
- package/lib/session/session-controller.d.ts +5 -2
- package/lib/session/session-controller.js +48 -4
- package/lib/session/session-controller.js.map +1 -1
- package/lib/views/at-complete.d.ts +31 -0
- package/lib/views/at-complete.js +104 -0
- package/lib/views/at-complete.js.map +1 -0
- package/lib/views/autocomplete.d.ts +2 -2
- package/lib/views/autocomplete.js +8 -3
- package/lib/views/autocomplete.js.map +1 -1
- package/lib/views/event-views.d.ts +1 -0
- package/lib/views/event-views.js +24 -5
- package/lib/views/event-views.js.map +1 -1
- package/lib/views/path-complete.d.ts +6 -0
- package/lib/views/path-complete.js +19 -2
- package/lib/views/path-complete.js.map +1 -1
- package/package.json +27 -25
package/lib/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,30 @@ The format is based on [Keep a Changelog], and this project adheres to [Semantic
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.7.0] - 2026-08-20
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Mention other sessions from the composer `@` menu. Unquoted `@` lists project files first, then session titles; `Tab` inserts a session mention, and sending the prompt captures a read-only snapshot for the model. Quoted `@"…` tokens stay file-only. File rows come from Harness `file-reference` discovery and still insert a path without uploading contents.
|
|
14
|
+
- Send composer images with `/goal` and `/plan`. Commands that do not accept attachments return an error and keep the original image draft in the composer.
|
|
15
|
+
- Mark an assistant reply cut off by an interrupt with a dim `· interrupted` suffix instead of presenting it as a complete reply. A turn interrupted before any visible content still prints the plain `interrupted` notice.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- Upgraded every direct DeepSeek Harness dependency to the coherent `0.1.0-rc.8` release. Failed model requests now retry up to five times by default (previously two), and an inapplicable or valueless `compat` switch in a hand-edited `llm-pi-ai` settings section fails startup with an error naming the offending key.
|
|
20
|
+
- Refuse attached images over 3.5 MiB or larger than 2000px per side, matching the new Harness admission defaults. The composer checks admission when an image is pasted: a refused image shows an immediate error notice and stays out of the prompt instead of failing the completed submission on send.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- Route `/goal` and `/plan` after dropping TUI image placeholders that match attached drafts, leave handwritten `[Image #N]` text unchanged when nothing is attached, pass command whitespace through to Harness, and keep the original image draft when those commands fail.
|
|
25
|
+
- Keep `@` file rows on Harness `file-reference` results when that service is composed, including empty matches; local path search remains only when it is not.
|
|
26
|
+
|
|
27
|
+
## [0.6.1] - 2026-08-19
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
|
|
31
|
+
- Load user-installed DSH bundles from the omdsh Profile when running the published npm package.
|
|
32
|
+
|
|
9
33
|
## [0.6.0] - 2026-08-19
|
|
10
34
|
|
|
11
35
|
### Added
|
|
@@ -167,7 +191,9 @@ The format is based on [Keep a Changelog], and this project adheres to [Semantic
|
|
|
167
191
|
- Preserved terminal-cell alignment and right padding for long commands, CJK text, emoji, ANSI styling, and narrow viewports.
|
|
168
192
|
- Stabilized incremental rendering, transcript scrolling, cursor placement, tool-output folding, and queued input during active turns.
|
|
169
193
|
|
|
170
|
-
[Unreleased]: https://github.com/agi-fans/oh-my-dsh/compare/v0.
|
|
194
|
+
[Unreleased]: https://github.com/agi-fans/oh-my-dsh/compare/v0.7.0...HEAD
|
|
195
|
+
[0.7.0]: https://github.com/agi-fans/oh-my-dsh/compare/v0.6.1...v0.7.0
|
|
196
|
+
[0.6.1]: https://github.com/agi-fans/oh-my-dsh/compare/v0.6.0...v0.6.1
|
|
171
197
|
[0.6.0]: https://github.com/agi-fans/oh-my-dsh/compare/v0.5.1...v0.6.0
|
|
172
198
|
[0.5.1]: https://github.com/agi-fans/oh-my-dsh/compare/v0.5.0...v0.5.1
|
|
173
199
|
[0.5.0]: https://github.com/agi-fans/oh-my-dsh/compare/v0.4.0...v0.5.0
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
/** Theme-aware rendering for `@path` mentions in submitted user messages. */
|
|
2
2
|
import { wrapIndexed } from "./width.js";
|
|
3
|
+
const SESSION_MENTION = /@\[(?:\\.|[^\\\]])*\]\(dsh-session:[^\s)]+\)/gu;
|
|
3
4
|
const PATH_MENTION = /@(?:"[^"\n]+"|'[^'\n]+'|[^\s@]+)/gu;
|
|
4
5
|
const MENTION_BOUNDARY = /[\s([{<"'`,。;:!?(【《]/u;
|
|
5
6
|
const TRAILING_PUNCTUATION = /[)\]}>.,;:!?"'`,。;:!?)】》]/u;
|
|
6
7
|
function mentionRanges(text) {
|
|
7
8
|
const ranges = [];
|
|
9
|
+
for (const match of text.matchAll(SESSION_MENTION)) {
|
|
10
|
+
if (match.index === undefined)
|
|
11
|
+
continue;
|
|
12
|
+
ranges.push({ start: match.index, end: match.index + match[0].length });
|
|
13
|
+
}
|
|
8
14
|
for (const match of text.matchAll(PATH_MENTION)) {
|
|
9
15
|
const start = match.index;
|
|
10
16
|
if (start === undefined || (start > 0 && !MENTION_BOUNDARY.test(text[start - 1] ?? '')))
|
|
@@ -16,10 +22,13 @@ function mentionRanges(text) {
|
|
|
16
22
|
while (end > start + 1 && TRAILING_PUNCTUATION.test(text[end - 1] ?? ''))
|
|
17
23
|
end -= 1;
|
|
18
24
|
}
|
|
19
|
-
if (end
|
|
20
|
-
|
|
25
|
+
if (end <= start + 1)
|
|
26
|
+
continue;
|
|
27
|
+
if (ranges.some(range => start < range.end && end > range.start))
|
|
28
|
+
continue;
|
|
29
|
+
ranges.push({ start, end });
|
|
21
30
|
}
|
|
22
|
-
return ranges;
|
|
31
|
+
return ranges.sort((left, right) => left.start - right.start);
|
|
23
32
|
}
|
|
24
33
|
function paintMentionSlice(text, sourceStart, ranges, theme) {
|
|
25
34
|
if (!theme.colors || ranges.length === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-mentions.js","sourceRoot":"","sources":["../../src/chrome/path-mentions.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAG7E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,MAAM,YAAY,GAAG,oCAAoC,CAAA;AACzD,MAAM,gBAAgB,GAAG,uBAAuB,CAAA;AAChD,MAAM,oBAAoB,GAAG,4BAA4B,CAAA;AAOzD,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,MAAM,GAAmB,EAAE,CAAA;IACjC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QACzB,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAAE,SAAQ;QACjG,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC3D,IAAI,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,GAAG,GAAG,KAAK,GAAG,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBAAE,GAAG,IAAI,CAAC,CAAA;QACpF,CAAC;QACD,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"path-mentions.js","sourceRoot":"","sources":["../../src/chrome/path-mentions.ts"],"names":[],"mappings":"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"}
|
package/lib/definition.d.ts
CHANGED
|
@@ -255,6 +255,19 @@ export interface TuiService {
|
|
|
255
255
|
* @returns disposer removing the listener.
|
|
256
256
|
*/
|
|
257
257
|
onInspectSubmit(listener: (submission: TuiSubmission) => void): () => void;
|
|
258
|
+
/** Replace the optional `@` session candidate source used by composer completion. */
|
|
259
|
+
setSessionSearch(search?: (query: string, signal?: AbortSignal) => Promise<readonly {
|
|
260
|
+
sessionId: string;
|
|
261
|
+
label: string;
|
|
262
|
+
cwd?: string;
|
|
263
|
+
}[]>): void;
|
|
264
|
+
/** Replace the optional `@` file candidate source used by composer completion. */
|
|
265
|
+
setFileSearch(search?: (query: string, signal?: AbortSignal) => Promise<readonly {
|
|
266
|
+
path: string;
|
|
267
|
+
kind: 'file' | 'directory';
|
|
268
|
+
}[]>): void;
|
|
269
|
+
/** Replace the optional Harness image-admission check applied when a paste drafts an image. */
|
|
270
|
+
setImageValidator(validate?: (image: TuiInputImage) => Promise<void>): void;
|
|
258
271
|
/** Restore terminal state and settle a pending input read with null. */
|
|
259
272
|
dispose(): void;
|
|
260
273
|
}
|
|
@@ -10,6 +10,18 @@ export declare function probeImageDimensions(data: Uint8Array, mediaType: ImageM
|
|
|
10
10
|
} | undefined;
|
|
11
11
|
/** Compact, stable composer placeholder matching OMP's image draft label. */
|
|
12
12
|
export declare function imageMarker(index: number, image: TuiInputImage): string;
|
|
13
|
+
/**
|
|
14
|
+
* Remove composer placeholders that match attached drafts.
|
|
15
|
+
*
|
|
16
|
+
* Without images the text is returned unchanged, including a handwritten
|
|
17
|
+
* `[Image #1]` that is not backed by an attachment. With images, each draft
|
|
18
|
+
* removes one matching {@link imageMarker} and its TUI-inserted neighboring
|
|
19
|
+
* space. A handwritten copy of the same token is left in place, and remaining
|
|
20
|
+
* user spacing is not collapsed or trimmed.
|
|
21
|
+
*/
|
|
22
|
+
export declare function stripComposerImageMarkers(text: string, images: readonly TuiInputImage[]): string;
|
|
23
|
+
/** True when composer text is a slash command after dropping attached image markers. */
|
|
24
|
+
export declare function looksLikeSlashCommand(text: string, images: readonly TuiInputImage[]): boolean;
|
|
13
25
|
/** Load a supported local image without exposing its path beyond the TUI boundary. */
|
|
14
26
|
export declare function readImageFile(path: string, cwd?: string): Promise<TuiInputImage | null>;
|
|
15
27
|
/** Read Finder's file-url pasteboard flavor, which `pbpaste` cannot expose. */
|
package/lib/input/image-paste.js
CHANGED
|
@@ -124,6 +124,47 @@ export function imageMarker(index, image) {
|
|
|
124
124
|
: `, ${image.width}x${image.height}`;
|
|
125
125
|
return `[Image #${index + 1}${dimensions}]`;
|
|
126
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Drop one TUI-owned image marker and the single adjacent separator space the
|
|
129
|
+
* composer inserts around it. Other user whitespace stays intact.
|
|
130
|
+
*/
|
|
131
|
+
function removeComposerImageMarker(text, marker) {
|
|
132
|
+
const start = text.indexOf(marker);
|
|
133
|
+
if (start < 0)
|
|
134
|
+
return text;
|
|
135
|
+
let from = start;
|
|
136
|
+
let to = start + marker.length;
|
|
137
|
+
if (text[to] === ' ')
|
|
138
|
+
to += 1;
|
|
139
|
+
else if (from > 0 && text[from - 1] === ' ')
|
|
140
|
+
from -= 1;
|
|
141
|
+
return text.slice(0, from) + text.slice(to);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Remove composer placeholders that match attached drafts.
|
|
145
|
+
*
|
|
146
|
+
* Without images the text is returned unchanged, including a handwritten
|
|
147
|
+
* `[Image #1]` that is not backed by an attachment. With images, each draft
|
|
148
|
+
* removes one matching {@link imageMarker} and its TUI-inserted neighboring
|
|
149
|
+
* space. A handwritten copy of the same token is left in place, and remaining
|
|
150
|
+
* user spacing is not collapsed or trimmed.
|
|
151
|
+
*/
|
|
152
|
+
export function stripComposerImageMarkers(text, images) {
|
|
153
|
+
if (images.length === 0)
|
|
154
|
+
return text;
|
|
155
|
+
let result = text;
|
|
156
|
+
for (let index = 0; index < images.length; index += 1) {
|
|
157
|
+
const image = images[index];
|
|
158
|
+
if (image === undefined)
|
|
159
|
+
continue;
|
|
160
|
+
result = removeComposerImageMarker(result, imageMarker(index, image));
|
|
161
|
+
}
|
|
162
|
+
return result;
|
|
163
|
+
}
|
|
164
|
+
/** True when composer text is a slash command after dropping attached image markers. */
|
|
165
|
+
export function looksLikeSlashCommand(text, images) {
|
|
166
|
+
return stripComposerImageMarkers(text, images).trimStart().startsWith('/');
|
|
167
|
+
}
|
|
127
168
|
/** Load a supported local image without exposing its path beyond the TUI boundary. */
|
|
128
169
|
export async function readImageFile(path, cwd = process.cwd()) {
|
|
129
170
|
const expanded = path.startsWith('~/') ? homedir() + path.slice(1) : path;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-paste.js","sourceRoot":"","sources":["../../src/input/image-paste.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"image-paste.js","sourceRoot":"","sources":["../../src/input/image-paste.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,9 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import type { Context } from '@deepseek-ai/cordis';
|
|
14
14
|
import type { SessionEvent } from '@deepseek-ai/dsh-session';
|
|
15
|
-
import { type TuiCommand, type TuiPrompt, type TuiNoticeOptions, type TuiRecentSession, type TuiService, type TuiSessionControls, type TuiSessionStats, type TuiStatus, type TuiInspectedSubagent, type TuiLoopStatus, type TuiSubagentRoster, type TuiSubmission } from '../definition.ts';
|
|
15
|
+
import { type TuiCommand, type TuiPrompt, type TuiNoticeOptions, type TuiRecentSession, type TuiService, type TuiSessionControls, type TuiSessionStats, type TuiStatus, type TuiInputImage, type TuiInspectedSubagent, type TuiLoopStatus, type TuiSubagentRoster, type TuiSubmission } from '../definition.ts';
|
|
16
16
|
import { type DirReader, type PathSearcher } from '../views/path-complete.ts';
|
|
17
|
+
import { type FileSearcher, type SessionSearcher } from '../views/at-complete.ts';
|
|
17
18
|
import { type ClipboardReader, type ClipboardWriter } from '../input/clipboard.ts';
|
|
18
19
|
import { type TuiPrefs } from '../views/settings-list.ts';
|
|
19
20
|
import { type RenderSink } from '../chrome/renderer.ts';
|
|
@@ -71,6 +72,8 @@ export declare class LocalTui implements TuiService {
|
|
|
71
72
|
home?: string;
|
|
72
73
|
listDir?: DirReader;
|
|
73
74
|
searchFiles?: PathSearcher;
|
|
75
|
+
searchFileMentions?: FileSearcher;
|
|
76
|
+
searchSessions?: SessionSearcher;
|
|
74
77
|
autocompleteDebounceMs?: number;
|
|
75
78
|
historyPath?: string;
|
|
76
79
|
keybindingsPath?: string;
|
|
@@ -87,6 +90,9 @@ export declare class LocalTui implements TuiService {
|
|
|
87
90
|
setInspectedSubagent(inspected: TuiInspectedSubagent | undefined): void;
|
|
88
91
|
setTools(tools: readonly ToolInfo[]): void;
|
|
89
92
|
setCommands(commands: readonly TuiCommand[]): void;
|
|
93
|
+
setSessionSearch(search?: SessionSearcher): void;
|
|
94
|
+
setFileSearch(search?: FileSearcher): void;
|
|
95
|
+
setImageValidator(validate?: (image: TuiInputImage) => Promise<void>): void;
|
|
90
96
|
notice(text: string, options?: TuiNoticeOptions): void;
|
|
91
97
|
commandOutput(command: string, text: string): void;
|
|
92
98
|
prompt(request: TuiPrompt): Promise<string | null>;
|
|
@@ -15,7 +15,9 @@ import { join } from 'node:path';
|
|
|
15
15
|
import { createInterface } from 'node:readline';
|
|
16
16
|
import { TUI_SERVICE, } from "../definition.js";
|
|
17
17
|
import { applySlashCompletion, formatHelpText, hitTestAutocomplete, parseSlashInput, resolveSlashCommand, slashSuggestions, BUILTIN_SLASH_COMMANDS, } from "../views/autocomplete.js";
|
|
18
|
-
import { applyPathCompletion, defaultPathSource, findPathToken, parsePathPrefix, pathSuggestions, searchPathSuggestions, } from "../views/path-complete.js";
|
|
18
|
+
import { applyPathCompletion, defaultPathSource, editorLineAt, findPathToken, parsePathPrefix, pathSuggestions, searchPathSuggestions, } from "../views/path-complete.js";
|
|
19
|
+
import { activeAtToken } from '@deepseek-ai/dsh-file-reference/grammar';
|
|
20
|
+
import { nextSelectableAutocompleteIndex, searchAtSuggestions, } from "../views/at-complete.js";
|
|
19
21
|
import { copyToClipboard, readFromClipboard } from "../input/clipboard.js";
|
|
20
22
|
import { applyCopySelectorEvent, createCopySelector, hitTestCopySelector, selectCopyTarget, } from "../views/copy-selector.js";
|
|
21
23
|
import { buildCopyTargets, extractCopyTarget, parseCopyKind } from "../views/copy-targets.js";
|
|
@@ -37,7 +39,7 @@ import { movePromptSelection, filteredPromptOptions, selectedPromptAnswer, selec
|
|
|
37
39
|
import { resolveProjectContext } from "../session/project-context.js";
|
|
38
40
|
import { pickWelcomeTips } from "../chrome/welcome-tips.js";
|
|
39
41
|
import { formatEssentialHotkeysText, formatHotkeysText, hotkeyCount } from "../views/hotkeys.js";
|
|
40
|
-
import { imageMarker, imagePathCandidates, probeImageDimensions, readImageFile, readImageFromClipboard, readMacClipboardFiles, } from "../input/image-paste.js";
|
|
42
|
+
import { imageMarker, imagePathCandidates, probeImageDimensions, stripComposerImageMarkers, readImageFile, readImageFromClipboard, readMacClipboardFiles, } from "../input/image-paste.js";
|
|
41
43
|
import { APP_NAME, APP_VERSION } from "../session/package-metadata.js";
|
|
42
44
|
const DOUBLE_CTRL_C_MS = 500;
|
|
43
45
|
const DOUBLE_ESCAPE_MS = 500;
|
|
@@ -146,6 +148,9 @@ export class LocalTui {
|
|
|
146
148
|
#home;
|
|
147
149
|
#listDir;
|
|
148
150
|
#searchFiles;
|
|
151
|
+
#searchFileMentions;
|
|
152
|
+
#searchSessions;
|
|
153
|
+
#validateImageDraft;
|
|
149
154
|
#autocompleteDebounceMs;
|
|
150
155
|
#persistPrefs = null;
|
|
151
156
|
/**
|
|
@@ -176,6 +181,8 @@ export class LocalTui {
|
|
|
176
181
|
this.#home = paths.home ?? fallback.home;
|
|
177
182
|
this.#listDir = paths.listDir ?? fallback.listDir;
|
|
178
183
|
this.#searchFiles = paths.searchFiles ?? fallback.searchFiles;
|
|
184
|
+
this.#searchFileMentions = paths.searchFileMentions;
|
|
185
|
+
this.#searchSessions = paths.searchSessions;
|
|
179
186
|
this.#autocompleteDebounceMs = Math.max(0, paths.autocompleteDebounceMs ?? 100);
|
|
180
187
|
this.#welcomeTips = pickWelcomeTips();
|
|
181
188
|
this.#trueColor = colors && detectTrueColor();
|
|
@@ -275,6 +282,21 @@ export class LocalTui {
|
|
|
275
282
|
if (this.#tty)
|
|
276
283
|
this.#render();
|
|
277
284
|
}
|
|
285
|
+
setSessionSearch(search) {
|
|
286
|
+
this.#searchSessions = search;
|
|
287
|
+
this.#refreshAutocomplete();
|
|
288
|
+
if (this.#tty)
|
|
289
|
+
this.#render();
|
|
290
|
+
}
|
|
291
|
+
setFileSearch(search) {
|
|
292
|
+
this.#searchFileMentions = search;
|
|
293
|
+
this.#refreshAutocomplete();
|
|
294
|
+
if (this.#tty)
|
|
295
|
+
this.#render();
|
|
296
|
+
}
|
|
297
|
+
setImageValidator(validate) {
|
|
298
|
+
this.#validateImageDraft = validate;
|
|
299
|
+
}
|
|
278
300
|
notice(text, options = {}) {
|
|
279
301
|
const block = {
|
|
280
302
|
kind: 'notice',
|
|
@@ -765,10 +787,17 @@ export class LocalTui {
|
|
|
765
787
|
if (paths.length > 0) {
|
|
766
788
|
const images = await Promise.all(paths.map(path => this.#readImagePath(path)));
|
|
767
789
|
if (images.every((image) => image !== null)) {
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
790
|
+
let inserted = false;
|
|
791
|
+
for (const image of images) {
|
|
792
|
+
if (await this.#admitImage(image)) {
|
|
793
|
+
this.#insertImageDraft(image);
|
|
794
|
+
inserted = true;
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
if (inserted) {
|
|
798
|
+
this.#refreshAutocomplete();
|
|
799
|
+
this.#render();
|
|
800
|
+
}
|
|
772
801
|
return;
|
|
773
802
|
}
|
|
774
803
|
// Screenshot tools sometimes paste a transient cache path and remove
|
|
@@ -790,9 +819,11 @@ export class LocalTui {
|
|
|
790
819
|
if (this.#search === null && this.#settings === null && this.#copySelector === null) {
|
|
791
820
|
const image = await this.#readClipboardImage();
|
|
792
821
|
if (image !== null) {
|
|
793
|
-
this.#
|
|
794
|
-
|
|
795
|
-
|
|
822
|
+
if (await this.#admitImage(image)) {
|
|
823
|
+
this.#insertImageDraft(image);
|
|
824
|
+
this.#refreshAutocomplete();
|
|
825
|
+
this.#render();
|
|
826
|
+
}
|
|
796
827
|
return;
|
|
797
828
|
}
|
|
798
829
|
const files = await this.#readClipboardFiles();
|
|
@@ -801,10 +832,17 @@ export class LocalTui {
|
|
|
801
832
|
const images = (await Promise.all(imagePaths.map(path => this.#readImagePath(path))))
|
|
802
833
|
.filter((candidate) => candidate !== null);
|
|
803
834
|
if (images.length > 0) {
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
835
|
+
let inserted = false;
|
|
836
|
+
for (const candidate of images) {
|
|
837
|
+
if (await this.#admitImage(candidate)) {
|
|
838
|
+
this.#insertImageDraft(candidate);
|
|
839
|
+
inserted = true;
|
|
840
|
+
}
|
|
841
|
+
}
|
|
842
|
+
if (inserted) {
|
|
843
|
+
this.#refreshAutocomplete();
|
|
844
|
+
this.#render();
|
|
845
|
+
}
|
|
808
846
|
return;
|
|
809
847
|
}
|
|
810
848
|
}
|
|
@@ -813,6 +851,23 @@ export class LocalTui {
|
|
|
813
851
|
if (text !== '')
|
|
814
852
|
await this.#acceptPastedText(text);
|
|
815
853
|
}
|
|
854
|
+
/**
|
|
855
|
+
* Run the Harness image-admission check for one paste candidate. A refusal
|
|
856
|
+
* becomes an error notice and skips the draft, instead of failing the whole
|
|
857
|
+
* submission after the user has typed a prompt around it.
|
|
858
|
+
*/
|
|
859
|
+
async #admitImage(image) {
|
|
860
|
+
if (this.#validateImageDraft === undefined)
|
|
861
|
+
return true;
|
|
862
|
+
try {
|
|
863
|
+
await this.#validateImageDraft(image);
|
|
864
|
+
return true;
|
|
865
|
+
}
|
|
866
|
+
catch (error) {
|
|
867
|
+
this.notice(error instanceof Error ? error.message : String(error), { level: 'error' });
|
|
868
|
+
return false;
|
|
869
|
+
}
|
|
870
|
+
}
|
|
816
871
|
#insertImageDraft(input) {
|
|
817
872
|
const size = input.width === undefined || input.height === undefined
|
|
818
873
|
? probeImageDimensions(input.data, input.mediaType)
|
|
@@ -1392,7 +1447,7 @@ export class LocalTui {
|
|
|
1392
1447
|
}
|
|
1393
1448
|
if (hit.kind === 'autocomplete' && this.#ac !== null) {
|
|
1394
1449
|
const index = hitTestAutocomplete(this.#ac.items.length, this.#ac.selected, localRow);
|
|
1395
|
-
if (index === undefined)
|
|
1450
|
+
if (index === undefined || this.#ac.items[index]?.kind === 'heading')
|
|
1396
1451
|
return true;
|
|
1397
1452
|
this.#ac = { ...this.#ac, selected: index };
|
|
1398
1453
|
this.#applySelectedCompletion();
|
|
@@ -1603,10 +1658,20 @@ export class LocalTui {
|
|
|
1603
1658
|
force: forcePath,
|
|
1604
1659
|
};
|
|
1605
1660
|
const token = findPathToken(this.#editor.text, this.#editor.cursor, forcePath);
|
|
1606
|
-
const
|
|
1607
|
-
const
|
|
1608
|
-
|
|
1609
|
-
|
|
1661
|
+
const { line, col } = editorLineAt(this.#editor.text, this.#editor.cursor);
|
|
1662
|
+
const at = forcePath ? undefined : activeAtToken(line, col);
|
|
1663
|
+
const atPrefix = at?.query.replaceAll('\\', '/')
|
|
1664
|
+
?? (token?.kind === 'at' ? parsePathPrefix(token.prefix).raw.replaceAll('\\', '/') : '');
|
|
1665
|
+
const fuzzyAt = (at !== undefined || token?.kind === 'at') && atPrefix !== '' && !atPrefix.endsWith('/');
|
|
1666
|
+
const harnessAt = at !== undefined
|
|
1667
|
+
&& (this.#searchFileMentions !== undefined || this.#searchSessions !== undefined);
|
|
1668
|
+
if (fuzzyAt || harnessAt) {
|
|
1669
|
+
if (harnessAt && !fuzzyAt) {
|
|
1670
|
+
this.#setAutocomplete(pathSuggestions(this.#editor.text, this.#editor.cursor, pathOptions, commands));
|
|
1671
|
+
}
|
|
1672
|
+
else {
|
|
1673
|
+
this.#ac = null;
|
|
1674
|
+
}
|
|
1610
1675
|
const text = this.#editor.text;
|
|
1611
1676
|
const cursor = this.#editor.cursor;
|
|
1612
1677
|
this.#autocompleteTimer = setTimeout(() => {
|
|
@@ -1615,11 +1680,20 @@ export class LocalTui {
|
|
|
1615
1680
|
return;
|
|
1616
1681
|
const controller = new AbortController();
|
|
1617
1682
|
this.#autocompleteAbort = controller;
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1683
|
+
const search = this.#searchFileMentions === undefined && this.#searchSessions === undefined
|
|
1684
|
+
? searchPathSuggestions(text, cursor, {
|
|
1685
|
+
...pathOptions,
|
|
1686
|
+
searchFiles: this.#searchFiles,
|
|
1687
|
+
signal: controller.signal,
|
|
1688
|
+
}, commands)
|
|
1689
|
+
: searchAtSuggestions(text, cursor, {
|
|
1690
|
+
...pathOptions,
|
|
1691
|
+
searchFiles: this.#searchFiles,
|
|
1692
|
+
...(this.#searchFileMentions === undefined ? {} : { searchFileMentions: this.#searchFileMentions }),
|
|
1693
|
+
...(this.#searchSessions === undefined ? {} : { searchSessions: this.#searchSessions }),
|
|
1694
|
+
signal: controller.signal,
|
|
1695
|
+
}, commands);
|
|
1696
|
+
void search.then((result) => {
|
|
1623
1697
|
if (this.#disposed || controller.signal.aborted || requestId !== this.#autocompleteRequestId)
|
|
1624
1698
|
return;
|
|
1625
1699
|
this.#autocompleteAbort = null;
|
|
@@ -1645,9 +1719,9 @@ export class LocalTui {
|
|
|
1645
1719
|
return;
|
|
1646
1720
|
}
|
|
1647
1721
|
const prev = this.#ac?.items[this.#ac.selected]?.value;
|
|
1648
|
-
let selected = 0;
|
|
1722
|
+
let selected = nextSelectableAutocompleteIndex(result.items, 0, 1);
|
|
1649
1723
|
if (prev !== undefined) {
|
|
1650
|
-
const idx = result.items.findIndex((item) => item.value === prev);
|
|
1724
|
+
const idx = result.items.findIndex((item) => item.value === prev && item.kind !== 'heading');
|
|
1651
1725
|
if (idx >= 0)
|
|
1652
1726
|
selected = idx;
|
|
1653
1727
|
}
|
|
@@ -1656,14 +1730,16 @@ export class LocalTui {
|
|
|
1656
1730
|
#moveAutocomplete(dir) {
|
|
1657
1731
|
if (this.#ac === null || this.#ac.items.length === 0)
|
|
1658
1732
|
return;
|
|
1659
|
-
|
|
1660
|
-
|
|
1733
|
+
this.#ac = {
|
|
1734
|
+
...this.#ac,
|
|
1735
|
+
selected: nextSelectableAutocompleteIndex(this.#ac.items, this.#ac.selected + dir, dir),
|
|
1736
|
+
};
|
|
1661
1737
|
}
|
|
1662
1738
|
#applySelectedCompletion() {
|
|
1663
1739
|
const item = this.#ac?.items[this.#ac.selected];
|
|
1664
|
-
if (item === undefined)
|
|
1740
|
+
if (item === undefined || item.kind === 'heading')
|
|
1665
1741
|
return;
|
|
1666
|
-
const next = item.kind === 'path'
|
|
1742
|
+
const next = item.kind === 'path' || item.kind === 'session'
|
|
1667
1743
|
? applyPathCompletion(this.#editor.text, this.#editor.cursor, item)
|
|
1668
1744
|
: applySlashCompletion(this.#editor.text, this.#editor.cursor, item);
|
|
1669
1745
|
this.#editor.setText(next.text, next.cursor);
|
|
@@ -1812,7 +1888,7 @@ export class LocalTui {
|
|
|
1812
1888
|
const images = this.#images.map(image => ({ ...image }));
|
|
1813
1889
|
const submittedText = images.length > 0 ? text.trim() : text;
|
|
1814
1890
|
const queueEditNewer = this.#queueEditNewer;
|
|
1815
|
-
const historyText =
|
|
1891
|
+
const historyText = stripComposerImageMarkers(submittedText, images)
|
|
1816
1892
|
.replace(/[ \t]{2,}/gu, ' ')
|
|
1817
1893
|
.trim();
|
|
1818
1894
|
if (historyText !== '' && this.#history[this.#history.length - 1] !== historyText) {
|
|
@@ -1830,6 +1906,9 @@ export class LocalTui {
|
|
|
1830
1906
|
this.#settings = null;
|
|
1831
1907
|
this.#copySelector = null;
|
|
1832
1908
|
this.#followTail();
|
|
1909
|
+
// Image placeholders are TUI-owned. Mixed image+slash drafts stay a
|
|
1910
|
+
// submission so restore can keep the original markers; the runner strips
|
|
1911
|
+
// them only to detect and execute Harness commands.
|
|
1833
1912
|
const slash = images.length === 0 ? parseSlashInput(submittedText) : null;
|
|
1834
1913
|
if (slash !== null) {
|
|
1835
1914
|
if (queueEditNewer !== null)
|
|
@@ -1856,7 +1935,7 @@ export class LocalTui {
|
|
|
1856
1935
|
#submitInspect(text) {
|
|
1857
1936
|
const images = this.#images.map(image => ({ ...image }));
|
|
1858
1937
|
const submittedText = images.length > 0 ? text.trim() : text;
|
|
1859
|
-
const historyText =
|
|
1938
|
+
const historyText = stripComposerImageMarkers(submittedText, images)
|
|
1860
1939
|
.replace(/[ \t]{2,}/gu, ' ')
|
|
1861
1940
|
.trim();
|
|
1862
1941
|
if (historyText !== '' && this.#history[this.#history.length - 1] !== historyText) {
|