@agi-fans/dsh-tui 0.22.0 → 0.23.1
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/LICENSE +26 -0
- package/lib/CHANGELOG.md +219 -1
- package/lib/chrome/box.d.ts +1 -18
- package/lib/chrome/box.js +2 -45
- package/lib/chrome/box.js.map +1 -1
- package/lib/chrome/code-highlight.js +4 -4
- package/lib/chrome/code-highlight.js.map +1 -1
- package/lib/chrome/command-output.d.ts +0 -1
- package/lib/chrome/command-output.js +11 -5
- package/lib/chrome/command-output.js.map +1 -1
- package/lib/chrome/goal-bar.js +1 -1
- package/lib/chrome/goal-bar.js.map +1 -1
- package/lib/chrome/main-screen-renderer.js +4 -3
- package/lib/chrome/main-screen-renderer.js.map +1 -1
- package/lib/chrome/markdown.d.ts +3 -3
- package/lib/chrome/markdown.js +85 -36
- package/lib/chrome/markdown.js.map +1 -1
- package/lib/chrome/md-style.d.ts +5 -2
- package/lib/chrome/md-style.js +13 -4
- package/lib/chrome/md-style.js.map +1 -1
- package/lib/chrome/renderer.d.ts +37 -1
- package/lib/chrome/renderer.js.map +1 -1
- package/lib/chrome/status-line.d.ts +3 -3
- package/lib/chrome/status-line.js +5 -5
- package/lib/chrome/status-line.js.map +1 -1
- package/lib/chrome/theme.d.ts +8 -3
- package/lib/chrome/theme.js +51 -153
- package/lib/chrome/theme.js.map +1 -1
- package/lib/commands/auth-account.d.ts +9 -0
- package/lib/commands/auth-account.js +202 -0
- package/lib/commands/auth-account.js.map +1 -0
- package/lib/commands/auth.js +238 -414
- package/lib/commands/auth.js.map +1 -1
- package/lib/commands/diff.js +22 -16
- package/lib/commands/diff.js.map +1 -1
- package/lib/commands/export.d.ts +0 -1
- package/lib/commands/export.js +99 -32
- package/lib/commands/export.js.map +1 -1
- package/lib/commands/files.js +11 -9
- package/lib/commands/files.js.map +1 -1
- package/lib/commands/integrations.d.ts +12 -1
- package/lib/commands/integrations.js +120 -23
- package/lib/commands/integrations.js.map +1 -1
- package/lib/commands/jobs-browser.d.ts +3 -0
- package/lib/commands/jobs-browser.js +152 -0
- package/lib/commands/jobs-browser.js.map +1 -0
- package/lib/commands/jobs.d.ts +3 -14
- package/lib/commands/jobs.js +26 -18
- package/lib/commands/jobs.js.map +1 -1
- package/lib/commands/model.d.ts +3 -0
- package/lib/commands/model.js +212 -128
- package/lib/commands/model.js.map +1 -1
- package/lib/commands/open-external.d.ts +2 -0
- package/lib/commands/open-external.js +19 -0
- package/lib/commands/open-external.js.map +1 -0
- package/lib/commands/permission.js +65 -54
- package/lib/commands/permission.js.map +1 -1
- package/lib/commands/plugins.js +381 -139
- package/lib/commands/plugins.js.map +1 -1
- package/lib/commands/schedule-catalog.d.ts +12 -0
- package/lib/commands/schedule-catalog.js +41 -0
- package/lib/commands/schedule-catalog.js.map +1 -0
- package/lib/commands/schedule-history.d.ts +4 -0
- package/lib/commands/schedule-history.js +62 -0
- package/lib/commands/schedule-history.js.map +1 -0
- package/lib/commands/schedule.d.ts +12 -15
- package/lib/commands/schedule.js +220 -187
- package/lib/commands/schedule.js.map +1 -1
- package/lib/commands/session-configuration.d.ts +3 -0
- package/lib/commands/session-configuration.js +62 -28
- package/lib/commands/session-configuration.js.map +1 -1
- package/lib/commands/session.js +116 -66
- package/lib/commands/session.js.map +1 -1
- package/lib/commands/terminal.js +14 -8
- package/lib/commands/terminal.js.map +1 -1
- package/lib/definition.d.ts +115 -15
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/input/actions.d.ts +1 -1
- package/lib/input/actions.js +5 -2
- package/lib/input/actions.js.map +1 -1
- package/lib/input/composer-files.d.ts +2 -0
- package/lib/input/composer-files.js +13 -3
- package/lib/input/composer-files.js.map +1 -1
- package/lib/input/image-paste.d.ts +5 -12
- package/lib/input/image-paste.js +32 -28
- package/lib/input/image-paste.js.map +1 -1
- package/lib/input/key-test.d.ts +5 -0
- package/lib/input/key-test.js +19 -0
- package/lib/input/key-test.js.map +1 -0
- package/lib/input/keys.d.ts +2 -0
- package/lib/input/keys.js +4 -1
- package/lib/input/keys.js.map +1 -1
- package/lib/locale/index.d.ts +6 -0
- package/lib/locale/index.js +32 -0
- package/lib/locale/index.js.map +1 -0
- package/lib/locale/prompt.d.ts +4 -0
- package/lib/locale/prompt.js +24 -0
- package/lib/locale/prompt.js.map +1 -0
- package/lib/locale/zh.d.ts +1114 -0
- package/lib/locale/zh.js +1115 -0
- package/lib/locale/zh.js.map +1 -0
- package/lib/prompt-intents.d.ts +4 -0
- package/lib/prompt-intents.js +4 -0
- package/lib/prompt-intents.js.map +1 -1
- package/lib/runtime/account-settings.d.ts +18 -0
- package/lib/runtime/account-settings.js +241 -0
- package/lib/runtime/account-settings.js.map +1 -0
- package/lib/runtime/agent-profile.d.ts +3 -3
- package/lib/runtime/agent-profile.js +4 -4
- package/lib/runtime/agent-profile.js.map +1 -1
- package/lib/runtime/btw-policy.js +2 -1
- package/lib/runtime/btw-policy.js.map +1 -1
- package/lib/runtime/btw.js +1 -2
- package/lib/runtime/btw.js.map +1 -1
- package/lib/runtime/composer-images.d.ts +2 -2
- package/lib/runtime/composer-images.js +4 -4
- package/lib/runtime/composer-images.js.map +1 -1
- package/lib/runtime/composer-shell.js +27 -1
- package/lib/runtime/composer-shell.js.map +1 -1
- package/lib/runtime/file-browser.d.ts +19 -0
- package/lib/runtime/file-browser.js +291 -0
- package/lib/runtime/file-browser.js.map +1 -0
- package/lib/runtime/file-review.d.ts +6 -9
- package/lib/runtime/file-review.js +91 -7
- package/lib/runtime/file-review.js.map +1 -1
- package/lib/runtime/help-reader.d.ts +12 -0
- package/lib/runtime/help-reader.js +50 -0
- package/lib/runtime/help-reader.js.map +1 -0
- package/lib/runtime/human-interaction.js +1 -1
- package/lib/runtime/human-interaction.js.map +1 -1
- package/lib/runtime/model-catalog-editor.d.ts +12 -0
- package/lib/runtime/model-catalog-editor.js +215 -0
- package/lib/runtime/model-catalog-editor.js.map +1 -0
- package/lib/runtime/model-settings.d.ts +11 -0
- package/lib/runtime/model-settings.js +404 -0
- package/lib/runtime/model-settings.js.map +1 -0
- package/lib/runtime/plugin-settings.d.ts +4 -1
- package/lib/runtime/plugin-settings.js +164 -88
- package/lib/runtime/plugin-settings.js.map +1 -1
- package/lib/runtime/prompt-browser.d.ts +9 -0
- package/lib/runtime/prompt-browser.js +19 -0
- package/lib/runtime/prompt-browser.js.map +1 -0
- package/lib/runtime/provider-local.d.ts +27 -27
- package/lib/runtime/provider-local.js +1288 -308
- package/lib/runtime/provider-local.js.map +1 -1
- package/lib/runtime/reference-reader.d.ts +15 -0
- package/lib/runtime/reference-reader.js +78 -0
- package/lib/runtime/reference-reader.js.map +1 -0
- package/lib/runtime/runner.js +38 -29
- package/lib/runtime/runner.js.map +1 -1
- package/lib/runtime/session-runtime.js +1 -1
- package/lib/runtime/session-runtime.js.map +1 -1
- package/lib/runtime/settings-draft.d.ts +21 -0
- package/lib/runtime/settings-draft.js +166 -0
- package/lib/runtime/settings-draft.js.map +1 -0
- package/lib/runtime/settings-preferences.js +1 -1
- package/lib/runtime/settings-preferences.js.map +1 -1
- package/lib/runtime/startup-notices.d.ts +0 -1
- package/lib/runtime/startup-notices.js +35 -6
- package/lib/runtime/startup-notices.js.map +1 -1
- package/lib/runtime/subagent-model-selection.js +2 -1
- package/lib/runtime/subagent-model-selection.js.map +1 -1
- package/lib/runtime/subagent-settings.d.ts +14 -0
- package/lib/runtime/subagent-settings.js +288 -0
- package/lib/runtime/subagent-settings.js.map +1 -0
- package/lib/runtime/terminal-notifications.d.ts +3 -0
- package/lib/runtime/terminal-notifications.js +13 -8
- package/lib/runtime/terminal-notifications.js.map +1 -1
- package/lib/runtime/terminal-probe.d.ts +2 -0
- package/lib/runtime/terminal-probe.js +9 -0
- package/lib/runtime/terminal-probe.js.map +1 -1
- package/lib/runtime/tool-presentation.js.map +1 -1
- package/lib/runtime/tool-reader.d.ts +5 -0
- package/lib/runtime/tool-reader.js +27 -0
- package/lib/runtime/tool-reader.js.map +1 -0
- package/lib/runtime/web-settings.d.ts +14 -0
- package/lib/runtime/web-settings.js +339 -0
- package/lib/runtime/web-settings.js.map +1 -0
- package/lib/session/command-attachments.d.ts +17 -0
- package/lib/session/command-attachments.js +50 -0
- package/lib/session/command-attachments.js.map +1 -0
- package/lib/session/context-diagnostics.d.ts +16 -0
- package/lib/session/context-diagnostics.js +15 -0
- package/lib/session/context-diagnostics.js.map +1 -1
- package/lib/session/external-agents.d.ts +3 -1
- package/lib/session/external-agents.js +35 -10
- package/lib/session/external-agents.js.map +1 -1
- package/lib/session/generation-continuation.d.ts +11 -0
- package/lib/session/generation-continuation.js +34 -0
- package/lib/session/generation-continuation.js.map +1 -0
- package/lib/session/goal-controls.d.ts +5 -0
- package/lib/session/goal-controls.js +81 -0
- package/lib/session/goal-controls.js.map +1 -0
- package/lib/session/interaction-adapter.d.ts +7 -3
- package/lib/session/interaction-adapter.js +121 -49
- package/lib/session/interaction-adapter.js.map +1 -1
- package/lib/session/message-queue.d.ts +2 -0
- package/lib/session/message-queue.js +102 -17
- package/lib/session/message-queue.js.map +1 -1
- package/lib/session/pending-inputs.d.ts +30 -0
- package/lib/session/pending-inputs.js +183 -0
- package/lib/session/pending-inputs.js.map +1 -0
- package/lib/session/session-configuration.js +1 -1
- package/lib/session/session-configuration.js.map +1 -1
- package/lib/session/session-controller.d.ts +33 -20
- package/lib/session/session-controller.js +500 -129
- package/lib/session/session-controller.js.map +1 -1
- package/lib/session/session-library.d.ts +3 -1
- package/lib/session/session-library.js +15 -0
- package/lib/session/session-library.js.map +1 -1
- package/lib/session/subagent-roster.d.ts +1 -0
- package/lib/session/subagent-roster.js +16 -5
- package/lib/session/subagent-roster.js.map +1 -1
- package/lib/session/subagent-tracker.d.ts +2 -0
- package/lib/session/subagent-tracker.js +18 -0
- package/lib/session/subagent-tracker.js.map +1 -1
- package/lib/session/tui-settings.d.ts +9 -5
- package/lib/session/tui-settings.js +3 -1
- package/lib/session/tui-settings.js.map +1 -1
- package/lib/session/workflow-projection.d.ts +2 -1
- package/lib/session/workflow-projection.js +34 -4
- package/lib/session/workflow-projection.js.map +1 -1
- package/lib/views/autocomplete.d.ts +12 -12
- package/lib/views/autocomplete.js +54 -45
- package/lib/views/autocomplete.js.map +1 -1
- package/lib/views/context-overview.d.ts +4 -0
- package/lib/views/context-overview.js +43 -0
- package/lib/views/context-overview.js.map +1 -0
- package/lib/views/copy-targets.d.ts +6 -2
- package/lib/views/copy-targets.js +19 -14
- package/lib/views/copy-targets.js.map +1 -1
- package/lib/views/document-reader.d.ts +10 -1
- package/lib/views/document-reader.js +63 -6
- package/lib/views/document-reader.js.map +1 -1
- package/lib/views/event-views.js +29 -11
- package/lib/views/event-views.js.map +1 -1
- package/lib/views/file-actions.js +21 -0
- package/lib/views/file-actions.js.map +1 -1
- package/lib/views/file-browser.d.ts +98 -0
- package/lib/views/file-browser.js +120 -0
- package/lib/views/file-browser.js.map +1 -0
- package/lib/views/history-search.js +4 -4
- package/lib/views/history-search.js.map +1 -1
- package/lib/views/hotkey-format.d.ts +3 -2
- package/lib/views/hotkey-format.js +4 -3
- package/lib/views/hotkey-format.js.map +1 -1
- package/lib/views/hotkeys.js +10 -12
- package/lib/views/hotkeys.js.map +1 -1
- package/lib/views/list-view.js +16 -11
- package/lib/views/list-view.js.map +1 -1
- package/lib/views/prompt-selector.d.ts +23 -1
- package/lib/views/prompt-selector.js +123 -60
- package/lib/views/prompt-selector.js.map +1 -1
- package/lib/views/settings-list.d.ts +6 -1
- package/lib/views/settings-list.js +69 -46
- package/lib/views/settings-list.js.map +1 -1
- package/lib/views/tool-actions.d.ts +16 -0
- package/lib/views/tool-actions.js +29 -0
- package/lib/views/tool-actions.js.map +1 -0
- package/lib/views/trajectory-timeline.d.ts +5 -6
- package/lib/views/trajectory-timeline.js +25 -15
- package/lib/views/trajectory-timeline.js.map +1 -1
- package/lib/views/trajectory.d.ts +23 -2
- package/lib/views/trajectory.js +404 -186
- package/lib/views/trajectory.js.map +1 -1
- package/lib/views/transcript-render.d.ts +39 -15
- package/lib/views/transcript-render.js +406 -208
- package/lib/views/transcript-render.js.map +1 -1
- package/lib/views/transcript-types.d.ts +3 -2
- package/lib/views/transcript-types.js.map +1 -1
- package/lib/views/workflow.d.ts +16 -0
- package/lib/views/workflow.js +42 -0
- package/lib/views/workflow.js.map +1 -0
- package/package.json +61 -58
- package/lib/chrome/welcome-tips.d.ts +0 -23
- package/lib/chrome/welcome-tips.js +0 -24
- package/lib/chrome/welcome-tips.js.map +0 -1
- package/lib/session/steering.d.ts +0 -3
- package/lib/session/steering.js +0 -9
- package/lib/session/steering.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composer-images.js","sourceRoot":"","sources":["../../src/runtime/composer-images.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"composer-images.js","sourceRoot":"","sources":["../../src/runtime/composer-images.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** Composer shortcut over the same owner-scoped Shell used by `/terminal`. */
|
|
2
|
+
import { resolveUiLanguage, uiText } from "../locale/index.js";
|
|
2
3
|
import { shareTerminalOutputToConversation } from "../commands/terminal.js";
|
|
3
4
|
import { currentWorkingDirectory } from "../session/working-directory.js";
|
|
4
5
|
/** Only deliberate, attachment-free composer input may execute a Shell line. */
|
|
@@ -118,7 +119,32 @@ export async function runComposerShell(ctx, owner, command, upstream, options =
|
|
|
118
119
|
});
|
|
119
120
|
if (options.share === true && !signal.aborted) {
|
|
120
121
|
// Share what this line produced, for the same reason the card shows that.
|
|
121
|
-
|
|
122
|
+
await shareShellOutput(ctx, owner, command, produced, signal);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/** Retry delivery of captured output without executing the Shell command again. */
|
|
126
|
+
async function shareShellOutput(ctx, owner, command, output, parentSignal) {
|
|
127
|
+
if (output.trim() === '')
|
|
128
|
+
return;
|
|
129
|
+
const lifetime = new AbortController();
|
|
130
|
+
const signal = AbortSignal.any([parentSignal, lifetime.signal]);
|
|
131
|
+
while (!signal.aborted) {
|
|
132
|
+
try {
|
|
133
|
+
shareTerminalOutputToConversation(owner, `Shell · \`${command}\``, output);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
const answer = await ctx.tui.prompt({ localize: ['title', 'question', 'options'],
|
|
137
|
+
title: 'Share Shell output', question: 'Sharing failed. Retry sends the captured output to the conversation.',
|
|
138
|
+
detail: error instanceof Error ? error.message : String(error),
|
|
139
|
+
options: [{ label: 'Retry sharing', value: 'retry' }, { label: 'Keep output in terminal', value: 'keep' }],
|
|
140
|
+
allowCustom: false, notify: false, signal, onSuperseded: () => lifetime.abort(),
|
|
141
|
+
});
|
|
142
|
+
if (answer !== 'retry')
|
|
143
|
+
return;
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
ctx.tui.notice(uiText(resolveUiLanguage(ctx.tui.prefs?.().uiLanguage), 'Shell output queued for the next model step.'));
|
|
147
|
+
return;
|
|
122
148
|
}
|
|
123
149
|
}
|
|
124
150
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composer-shell.js","sourceRoot":"","sources":["../../src/runtime/composer-shell.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"composer-shell.js","sourceRoot":"","sources":["../../src/runtime/composer-shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Owns one review's loading, navigation, and cancellation; never owns the terminal. */
|
|
2
|
+
import type { TuiFileReview } from '../definition.ts';
|
|
3
|
+
import type { KeyEvent } from '../input/keys.ts';
|
|
4
|
+
import type { Theme } from '../chrome/theme.ts';
|
|
5
|
+
import { type FileBrowserState } from '../views/file-browser.ts';
|
|
6
|
+
export declare class FileBrowser {
|
|
7
|
+
#private;
|
|
8
|
+
readonly request: TuiFileReview;
|
|
9
|
+
readonly changed: () => void;
|
|
10
|
+
readonly closed: () => void;
|
|
11
|
+
state: FileBrowserState;
|
|
12
|
+
readonly done: Promise<void>;
|
|
13
|
+
constructor(request: TuiFileReview, changed: () => void, closed: () => void);
|
|
14
|
+
start(): void;
|
|
15
|
+
close(): void;
|
|
16
|
+
select(index: number): void;
|
|
17
|
+
click(row: number, column: number, width: number, height: number): void;
|
|
18
|
+
input(event: KeyEvent, theme: Theme, width: number, height: number): void;
|
|
19
|
+
}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import { InputEditor } from "../input/editor.js";
|
|
2
|
+
import { browserActions, browserFiles, browserHelp, fileBrowserDocument, fileBrowserGeometry } from "../views/file-browser.js";
|
|
3
|
+
import { documentDestination, documentLineRow, documentMatches, documentModel, documentPosition } from "../views/document-reader.js";
|
|
4
|
+
export class FileBrowser {
|
|
5
|
+
request;
|
|
6
|
+
changed;
|
|
7
|
+
closed;
|
|
8
|
+
state;
|
|
9
|
+
done;
|
|
10
|
+
#resolve;
|
|
11
|
+
#closed = false;
|
|
12
|
+
#generation = 0;
|
|
13
|
+
#readAbort;
|
|
14
|
+
#offAbort;
|
|
15
|
+
#positions = new Map();
|
|
16
|
+
#modes = new Map();
|
|
17
|
+
#limits = new Map();
|
|
18
|
+
#editor = new InputEditor();
|
|
19
|
+
#origin;
|
|
20
|
+
constructor(request, changed, closed) {
|
|
21
|
+
this.request = request;
|
|
22
|
+
this.changed = changed;
|
|
23
|
+
this.closed = closed;
|
|
24
|
+
this.done = new Promise(resolve => { this.#resolve = resolve; });
|
|
25
|
+
this.state = { title: request.title, files: request.files, selected: request.initial ?? 0,
|
|
26
|
+
focus: request.initial === undefined ? 'files' : 'document', filter: '', input: '', inputCursor: 0, mode: 'diff', markdown: false,
|
|
27
|
+
position: { row: 0, wrap: 0, query: '' }, message: '', loading: true, help: false, helpScroll: 0, menu: undefined, notice: '',
|
|
28
|
+
canEdit: request.canEdit, canQuote: request.canQuote, truncated: false, limit: 128 * 1024 };
|
|
29
|
+
const abort = () => this.close();
|
|
30
|
+
request.signal.addEventListener('abort', abort, { once: true });
|
|
31
|
+
this.#offAbort = () => request.signal.removeEventListener('abort', abort);
|
|
32
|
+
}
|
|
33
|
+
start() { if (this.request.signal.aborted)
|
|
34
|
+
this.close();
|
|
35
|
+
else
|
|
36
|
+
void this.#load(); }
|
|
37
|
+
close() {
|
|
38
|
+
if (this.#closed)
|
|
39
|
+
return;
|
|
40
|
+
this.#closed = true;
|
|
41
|
+
this.#generation++;
|
|
42
|
+
this.#readAbort?.abort();
|
|
43
|
+
this.#offAbort();
|
|
44
|
+
this.#resolve();
|
|
45
|
+
this.closed();
|
|
46
|
+
}
|
|
47
|
+
#key() { return `${this.state.selected}:${this.state.mode}:${this.state.markdown}`; }
|
|
48
|
+
#save() { this.#positions.set(this.#key(), this.state.position); this.#modes.set(this.state.selected, this.state.mode); }
|
|
49
|
+
#restore() { this.state.position = this.#positions.get(this.#key()) ?? { row: 0, wrap: 0, query: '' }; }
|
|
50
|
+
async #load() {
|
|
51
|
+
this.#readAbort?.abort();
|
|
52
|
+
const abort = this.#readAbort = new AbortController();
|
|
53
|
+
const generation = ++this.#generation;
|
|
54
|
+
this.state = { ...this.state, source: undefined, loading: true, message: '', notice: '', truncated: false,
|
|
55
|
+
limit: this.#limits.get(this.state.selected) ?? 128 * 1024 };
|
|
56
|
+
this.changed();
|
|
57
|
+
try {
|
|
58
|
+
const result = await this.request.read(this.state.selected, this.state.mode, this.state.limit, abort.signal);
|
|
59
|
+
if (this.#closed || generation !== this.#generation)
|
|
60
|
+
return;
|
|
61
|
+
this.state = { ...this.state, source: result.source, message: result.message ?? '', truncated: result.truncated === true, loading: false };
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
if (this.#closed || generation !== this.#generation)
|
|
65
|
+
return;
|
|
66
|
+
this.state = { ...this.state, loading: false, message: error instanceof Error ? error.message : String(error) };
|
|
67
|
+
}
|
|
68
|
+
this.changed();
|
|
69
|
+
}
|
|
70
|
+
select(index) {
|
|
71
|
+
if (index === this.state.selected || this.state.files[index] === undefined)
|
|
72
|
+
return;
|
|
73
|
+
this.#save();
|
|
74
|
+
this.state = { ...this.state, selected: index, mode: this.#modes.get(index) ?? 'diff', markdown: false };
|
|
75
|
+
this.#restore();
|
|
76
|
+
void this.#load();
|
|
77
|
+
}
|
|
78
|
+
click(row, column, width, height) {
|
|
79
|
+
if (this.state.editing !== undefined)
|
|
80
|
+
return;
|
|
81
|
+
const geometry = fileBrowserGeometry(this.state, width, height);
|
|
82
|
+
if (row < 4 || row >= 4 + geometry.page)
|
|
83
|
+
return;
|
|
84
|
+
if (this.state.menu !== undefined && (!geometry.split || column > geometry.left)) {
|
|
85
|
+
const action = browserActions(this.state)[Math.max(0, this.state.menu - geometry.page + 1) + row - 4];
|
|
86
|
+
if (action !== undefined) {
|
|
87
|
+
this.state.menu = undefined;
|
|
88
|
+
this.#action(action.key);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else if (!this.state.help && geometry.showFiles && (!geometry.split || column < geometry.left)) {
|
|
92
|
+
const index = geometry.files[geometry.start + row - 4];
|
|
93
|
+
if (index !== undefined) {
|
|
94
|
+
this.select(index);
|
|
95
|
+
this.state.focus = geometry.split ? 'files' : 'document';
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else
|
|
99
|
+
this.state.focus = 'document';
|
|
100
|
+
this.changed();
|
|
101
|
+
}
|
|
102
|
+
input(event, theme, width, height) {
|
|
103
|
+
if (this.#closed)
|
|
104
|
+
return;
|
|
105
|
+
const s = this.state;
|
|
106
|
+
const key = event.type === 'key' ? event.id : event.type === 'text' ? event.value.toLowerCase() : '';
|
|
107
|
+
const doc = fileBrowserDocument(s, theme, width, height);
|
|
108
|
+
const jump = (row) => { if (row !== undefined)
|
|
109
|
+
s.position = { ...s.position, row, wrap: 0 }; };
|
|
110
|
+
if (s.editing !== undefined) {
|
|
111
|
+
if (key === 'escape' || key === 'ctrl+c') {
|
|
112
|
+
if (this.#origin !== undefined) {
|
|
113
|
+
s.position = this.#origin.position;
|
|
114
|
+
s.filter = this.#origin.filter;
|
|
115
|
+
this.select(this.#origin.selected);
|
|
116
|
+
}
|
|
117
|
+
this.state.editing = undefined;
|
|
118
|
+
}
|
|
119
|
+
else if (key === 'enter') {
|
|
120
|
+
if (s.editing === 'line') {
|
|
121
|
+
const row = s.source === undefined || !/^[1-9]\d*$/u.test(s.input.trim()) ? undefined : documentLineRow(s.source, Number(s.input));
|
|
122
|
+
if (row === undefined) {
|
|
123
|
+
s.notice = 'Enter a new-file line visible in this view.';
|
|
124
|
+
this.changed();
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
jump(row);
|
|
128
|
+
}
|
|
129
|
+
s.editing = undefined;
|
|
130
|
+
s.notice = '';
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
this.#editor.handle(event);
|
|
134
|
+
s.input = this.#editor.text.replace(/[\r\n]/gu, ' ');
|
|
135
|
+
s.inputCursor = this.#editor.cursor;
|
|
136
|
+
if (s.editing === 'filter') {
|
|
137
|
+
s.filter = s.input;
|
|
138
|
+
const files = browserFiles(s);
|
|
139
|
+
if (!files.includes(s.selected) && files[0] !== undefined)
|
|
140
|
+
this.select(files[0]);
|
|
141
|
+
}
|
|
142
|
+
else if (s.editing === 'search') {
|
|
143
|
+
s.position = { ...s.position, query: s.input };
|
|
144
|
+
if (s.source !== undefined)
|
|
145
|
+
jump(documentMatches(s.source, s.input)[0]);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
this.changed();
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
if (key === 'ctrl+c') {
|
|
152
|
+
this.close();
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (s.help) {
|
|
156
|
+
if (['escape', '?', 'enter'].includes(key))
|
|
157
|
+
s.help = false;
|
|
158
|
+
else if (key === 'up' || key === 'pageUp')
|
|
159
|
+
s.helpScroll = Math.max(0, s.helpScroll - (key === 'up' ? 1 : doc.page));
|
|
160
|
+
else if (key === 'down' || key === 'pageDown')
|
|
161
|
+
s.helpScroll = Math.min(Math.max(0, browserHelp(doc.documentWidth).length - doc.page), s.helpScroll + (key === 'down' ? 1 : doc.page));
|
|
162
|
+
this.changed();
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
if (s.menu !== undefined) {
|
|
166
|
+
const actions = browserActions(s);
|
|
167
|
+
if (key === 'escape' || key === 'a')
|
|
168
|
+
s.menu = undefined;
|
|
169
|
+
else if (key === 'down')
|
|
170
|
+
s.menu = (s.menu + 1) % actions.length;
|
|
171
|
+
else if (key === 'up')
|
|
172
|
+
s.menu = (s.menu + actions.length - 1) % actions.length;
|
|
173
|
+
else if (key === 'enter') {
|
|
174
|
+
const action = actions[s.menu];
|
|
175
|
+
s.menu = undefined;
|
|
176
|
+
if (action)
|
|
177
|
+
this.#action(action.key);
|
|
178
|
+
}
|
|
179
|
+
this.changed();
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
if (key === 'escape') {
|
|
183
|
+
if (!doc.split && s.focus === 'document')
|
|
184
|
+
s.focus = 'files';
|
|
185
|
+
else {
|
|
186
|
+
this.close();
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
else if (key === 'tab' || key === 'shift+tab')
|
|
191
|
+
s.focus = s.focus === 'files' ? 'document' : 'files';
|
|
192
|
+
else if (key === 'enter')
|
|
193
|
+
s.focus = 'document';
|
|
194
|
+
else if (key === '/' || key === 'ctrl+f' || key === 'g' || key === 'ctrl+g') {
|
|
195
|
+
if (s.markdown && s.focus === 'document') {
|
|
196
|
+
this.#save();
|
|
197
|
+
s.markdown = false;
|
|
198
|
+
this.#restore();
|
|
199
|
+
}
|
|
200
|
+
s.editing = key === 'g' || key === 'ctrl+g' ? 'line' : s.focus === 'files' ? 'filter' : 'search';
|
|
201
|
+
this.#origin = { position: { ...s.position }, filter: s.filter, selected: s.selected };
|
|
202
|
+
s.input = s.editing === 'filter' ? s.filter : s.editing === 'search' ? s.position.query : '';
|
|
203
|
+
this.#editor.setText(s.input);
|
|
204
|
+
s.inputCursor = this.#editor.cursor;
|
|
205
|
+
}
|
|
206
|
+
else if (key === 'v') {
|
|
207
|
+
this.#save();
|
|
208
|
+
s.mode = s.mode === 'diff' ? 'source' : 'diff';
|
|
209
|
+
s.markdown = false;
|
|
210
|
+
this.#restore();
|
|
211
|
+
void this.#load();
|
|
212
|
+
}
|
|
213
|
+
else if (key === 'n' || key === 'p') {
|
|
214
|
+
const files = browserFiles(s), at = Math.max(0, files.indexOf(s.selected));
|
|
215
|
+
const index = files[(at + files.length + (key === 'n' ? 1 : -1)) % files.length];
|
|
216
|
+
if (index !== undefined)
|
|
217
|
+
this.select(index);
|
|
218
|
+
}
|
|
219
|
+
else if (key === 'a')
|
|
220
|
+
s.menu = 0;
|
|
221
|
+
else if (key === 'w')
|
|
222
|
+
s.position = { ...s.position, wordWrap: s.position.wordWrap === false, wrap: 0 };
|
|
223
|
+
else if (key === 'alt+left' || key === 'alt+right')
|
|
224
|
+
s.position = { ...s.position, wordWrap: false, wrap: 0, column: Math.max(0, Math.min(doc.layout?.maxColumn ?? 0, (s.position.column ?? 0) + (key === 'alt+right' ? 8 : -8))) };
|
|
225
|
+
else if (s.source !== undefined && !s.markdown && ['ctrl+n', 'ctrl+p', '[', ']'].includes(key)) {
|
|
226
|
+
jump(documentDestination(key === '[' || key === ']' ? documentModel(s.source).hunks : documentMatches(s.source, s.position.query), s.position.row, key === ']' || key === 'ctrl+n' ? 1 : -1));
|
|
227
|
+
}
|
|
228
|
+
else if (event.type === 'wheel' || ['up', 'down', 'pageUp', 'pageDown', 'home', 'end'].includes(key)) {
|
|
229
|
+
const filesFocus = event.type === 'wheel' && event.column !== undefined
|
|
230
|
+
? doc.split ? event.column < doc.left : s.focus === 'files' : s.focus === 'files';
|
|
231
|
+
const delta = event.type === 'wheel' ? event.direction === 'up' ? -3 : 3 : (key === 'up' || key === 'pageUp' ? -1 : 1) * (key.startsWith('page') ? doc.page : 1);
|
|
232
|
+
if (filesFocus) {
|
|
233
|
+
const at = Math.max(0, doc.files.indexOf(s.selected));
|
|
234
|
+
const index = doc.files[key === 'home' ? 0 : key === 'end' ? doc.files.length - 1 : Math.max(0, Math.min(doc.files.length - 1, at + delta))];
|
|
235
|
+
if (index !== undefined)
|
|
236
|
+
this.select(index);
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
const at = Math.max(0, Math.min(doc.max, key === 'home' ? 0 : key === 'end' ? doc.max : doc.documentStart + delta));
|
|
240
|
+
s.position = doc.layout === undefined ? { ...s.position, row: at } : documentPosition(doc.layout, at, s.position.query);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
else
|
|
244
|
+
this.#action(key);
|
|
245
|
+
this.changed();
|
|
246
|
+
}
|
|
247
|
+
#action(key) {
|
|
248
|
+
const s = this.state;
|
|
249
|
+
if (key === '?') {
|
|
250
|
+
s.help = true;
|
|
251
|
+
s.helpScroll = 0;
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
if (key === 'r') {
|
|
255
|
+
void this.#load();
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
if (key === 'l' && s.truncated && s.limit < 4 * 1024 * 1024) {
|
|
259
|
+
this.#limits.set(s.selected, s.limit * 2);
|
|
260
|
+
void this.#load();
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
if (key === 'm' && s.mode === 'source' && /\.md$/iu.test(s.files[s.selected]?.path ?? '')) {
|
|
264
|
+
this.#save();
|
|
265
|
+
s.markdown = !s.markdown;
|
|
266
|
+
this.#restore();
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
const action = key === 'o' ? 'open' : key === 'e' && s.canEdit ? 'editor' : key === 'q' && s.canQuote ? 'quote' : key === 'i' && s.mode === 'source' && /\.(png|jpe?g|webp|gif)$/iu.test(s.files[s.selected]?.path ?? '') ? 'image' : undefined;
|
|
270
|
+
if (action === undefined || s.loading)
|
|
271
|
+
return;
|
|
272
|
+
const index = s.selected;
|
|
273
|
+
void Promise.resolve().then(() => {
|
|
274
|
+
if (!this.#closed)
|
|
275
|
+
return this.request.action(action, index, s.markdown ? undefined : s.source, s.position);
|
|
276
|
+
}).then(() => {
|
|
277
|
+
if (this.#closed)
|
|
278
|
+
return;
|
|
279
|
+
if (action === 'quote')
|
|
280
|
+
this.close();
|
|
281
|
+
else {
|
|
282
|
+
this.state.notice = action === 'image' ? '' : 'Opened original file.';
|
|
283
|
+
this.changed();
|
|
284
|
+
}
|
|
285
|
+
}, error => { if (!this.#closed) {
|
|
286
|
+
this.state.notice = error instanceof Error ? error.message : String(error);
|
|
287
|
+
this.changed();
|
|
288
|
+
} });
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=file-browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-browser.js","sourceRoot":"","sources":["../../src/runtime/file-browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Bounded host-file previews and keyboard-driven document inspection. */
|
|
2
|
-
import type { TuiDocumentPosition, TuiDocumentSource, TuiService } from '../definition.ts';
|
|
2
|
+
import type { TuiDocumentPosition, TuiDocumentSource, TuiService, TuiReviewFile } from '../definition.ts';
|
|
3
3
|
export { openSystemFile } from './file-open.ts';
|
|
4
4
|
export declare const PREVIEW_BYTES: number;
|
|
5
5
|
export declare const MAX_PREVIEW_BYTES: number;
|
|
@@ -11,17 +11,14 @@ export declare function formatQuoteReference(cwd: string, file: ReviewFile, sour
|
|
|
11
11
|
/** Fence untrusted text without letting its own backticks end the block. */
|
|
12
12
|
export declare function codeDocument(text: string, language?: string): string;
|
|
13
13
|
export declare function gitOutput(cwd: string, args: readonly string[], signal: AbortSignal): Promise<string>;
|
|
14
|
+
/** Git's NUL records retain literal whitespace and both sides of a rename. */
|
|
15
|
+
export declare function changedFiles(cwd: string, signal: AbortSignal): Promise<ReviewFile[]>;
|
|
14
16
|
/** Include staged, unstaged, deleted, and untracked paths without shell parsing. */
|
|
15
17
|
export declare function changedPaths(cwd: string, signal: AbortSignal): Promise<string[]>;
|
|
16
18
|
export declare function filePreview(path: string, signal: AbortSignal): Promise<string>;
|
|
17
19
|
/** Read an explicitly bounded prefix; incomplete UTF-8 characters await the next load. */
|
|
18
20
|
export declare function fileDocument(path: string, signal: AbortSignal, limit?: number, sourcePath?: string): Promise<FileDocument>;
|
|
19
|
-
export
|
|
20
|
-
|
|
21
|
-
label: string;
|
|
22
|
-
description?: string;
|
|
23
|
-
line?: number;
|
|
24
|
-
}
|
|
25
|
-
export type FileReviewSurface = Pick<TuiService, 'prompt' | 'notice' | 'openFileInEditor' | 'insertText'>;
|
|
21
|
+
export type ReviewFile = TuiReviewFile;
|
|
22
|
+
export type FileReviewSurface = Pick<TuiService, 'prompt' | 'notice' | 'openFileInEditor' | 'insertText' | 'reviewFiles'>;
|
|
26
23
|
/** Keep file selection, document scrolling, and external opening in one loop. */
|
|
27
|
-
export declare function reviewFiles(tui: FileReviewSurface, title: string, cwd: string, files: readonly ReviewFile[], readDiff: (index: number) => Promise<string | TuiDocumentSource>, signal: AbortSignal, initial?: number, hasDiff?: boolean): Promise<void>;
|
|
24
|
+
export declare function reviewFiles(tui: FileReviewSurface, title: string, cwd: string, files: readonly ReviewFile[], readDiff: (index: number, signal: AbortSignal) => Promise<string | TuiDocumentSource>, signal: AbortSignal, initial?: number, hasDiff?: boolean): Promise<void>;
|
|
@@ -44,14 +44,48 @@ export async function gitOutput(cwd, args, signal) {
|
|
|
44
44
|
const { stdout } = await exec('git', [...args], { cwd, signal, maxBuffer: 2 * 1024 * 1024 });
|
|
45
45
|
return stdout;
|
|
46
46
|
}
|
|
47
|
+
/** Git's NUL records retain literal whitespace and both sides of a rename. */
|
|
48
|
+
export async function changedFiles(cwd, signal) {
|
|
49
|
+
const status = await gitOutput(cwd, ['status', '--porcelain=v1', '-z', '--untracked-files=all'], signal);
|
|
50
|
+
const records = status.split('\0');
|
|
51
|
+
const files = [];
|
|
52
|
+
for (let at = 0; at < records.length; at++) {
|
|
53
|
+
const record = records[at];
|
|
54
|
+
if (record.length < 4)
|
|
55
|
+
continue;
|
|
56
|
+
const xy = record.slice(0, 2), path = record.slice(3);
|
|
57
|
+
const previousPath = /[RC]/u.test(xy) ? records[++at] : undefined;
|
|
58
|
+
const kind = xy === '??' ? '?' : xy.includes('U') || xy === 'AA' || xy === 'DD' ? 'U'
|
|
59
|
+
: xy.includes('R') ? 'R' : xy.includes('D') ? 'D' : xy.includes('A') ? 'A' : xy.includes('C') ? 'C' : 'M';
|
|
60
|
+
const scope = xy === '??' ? 'untracked' : xy[0] !== ' ' && xy[1] !== ' ' ? 'staged + working tree' : xy[0] !== ' ' ? 'staged' : 'working tree';
|
|
61
|
+
files.push({ path, label: path, status: kind, description: scope, ...(previousPath === undefined ? {} : { previousPath }) });
|
|
62
|
+
}
|
|
63
|
+
let numstat;
|
|
64
|
+
try {
|
|
65
|
+
numstat = await gitOutput(cwd, ['diff', 'HEAD', '--numstat', '-z'], signal);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
numstat = await gitOutput(cwd, ['diff', '--cached', '--numstat', '-z'], signal);
|
|
69
|
+
}
|
|
70
|
+
const stats = numstat.split('\0');
|
|
71
|
+
for (let at = 0; at < stats.length; at++) {
|
|
72
|
+
const record = stats[at], match = /^(\d+|-)\t(\d+|-)\t(.*)$/su.exec(record);
|
|
73
|
+
if (!match)
|
|
74
|
+
continue;
|
|
75
|
+
let path = match[3];
|
|
76
|
+
if (path === '') {
|
|
77
|
+
at++;
|
|
78
|
+
path = stats[++at] ?? '';
|
|
79
|
+
}
|
|
80
|
+
const file = files.find(file => file.path === path);
|
|
81
|
+
if (file !== undefined)
|
|
82
|
+
file.description = (match[1] === '-' ? 'binary' : `+${match[1]} −${match[2]}`) + ` · ${file.description}`;
|
|
83
|
+
}
|
|
84
|
+
return files.sort((a, b) => a.path.localeCompare(b.path, undefined, { numeric: true }));
|
|
85
|
+
}
|
|
47
86
|
/** Include staged, unstaged, deleted, and untracked paths without shell parsing. */
|
|
48
87
|
export async function changedPaths(cwd, signal) {
|
|
49
|
-
|
|
50
|
-
gitOutput(cwd, ['diff', '--name-only', '-z'], signal),
|
|
51
|
-
gitOutput(cwd, ['diff', '--cached', '--name-only', '-z'], signal),
|
|
52
|
-
gitOutput(cwd, ['ls-files', '--others', '--exclude-standard', '-z'], signal),
|
|
53
|
-
]);
|
|
54
|
-
return [...new Set(results.flatMap(result => result.split('\0').filter(Boolean)))].sort();
|
|
88
|
+
return (await changedFiles(cwd, signal)).map(file => file.path);
|
|
55
89
|
}
|
|
56
90
|
export async function filePreview(path, signal) {
|
|
57
91
|
const source = await fileDocument(path, signal);
|
|
@@ -103,6 +137,44 @@ export async function fileDocument(path, signal, limit = PREVIEW_BYTES, sourcePa
|
|
|
103
137
|
}
|
|
104
138
|
/** Keep file selection, document scrolling, and external opening in one loop. */
|
|
105
139
|
export async function reviewFiles(tui, title, cwd, files, readDiff, signal, initial, hasDiff = true) {
|
|
140
|
+
if (hasDiff && tui.reviewFiles !== undefined) {
|
|
141
|
+
await tui.reviewFiles({ title, files, signal, ...(initial === undefined ? {} : { initial }),
|
|
142
|
+
canEdit: tui.openFileInEditor !== undefined, canQuote: tui.insertText !== undefined,
|
|
143
|
+
read: async (index, mode, limit, readSignal) => {
|
|
144
|
+
if (mode === 'source') {
|
|
145
|
+
const content = await fileDocument(resolve(cwd, files[index].path), readSignal, limit);
|
|
146
|
+
return content.binary ? { message: content.text } : { source: content, truncated: content.truncated === true };
|
|
147
|
+
}
|
|
148
|
+
const content = await readDiff(index, readSignal);
|
|
149
|
+
readSignal.throwIfAborted();
|
|
150
|
+
if (typeof content === 'string')
|
|
151
|
+
return { message: content };
|
|
152
|
+
// Empty comparisons must explain why; a current file is never an implicit historical fallback.
|
|
153
|
+
if (content.diff !== true)
|
|
154
|
+
return { message: content.status ?? 'No comparison is available. Press V to view the current file.' };
|
|
155
|
+
return { source: content };
|
|
156
|
+
},
|
|
157
|
+
action: async (action, index, source, position) => {
|
|
158
|
+
const file = files[index];
|
|
159
|
+
if (action === 'editor')
|
|
160
|
+
tui.openFileInEditor?.(resolve(cwd, file.path));
|
|
161
|
+
else if (action === 'open')
|
|
162
|
+
await openSystemFile(resolve(cwd, file.path));
|
|
163
|
+
else if (action === 'image') {
|
|
164
|
+
const image = await imageFile(resolve(cwd, file.path), signal);
|
|
165
|
+
if (image !== undefined)
|
|
166
|
+
await tui.prompt({ title: file.label, question: 'Current file', documentImage: image,
|
|
167
|
+
presentation: 'document', options: [{ label: 'Back', value: 'back' }], allowCustom: false, notify: false, signal });
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
const ref = formatQuoteReference(cwd, file, source, position);
|
|
171
|
+
tui.insertText?.(ref);
|
|
172
|
+
tui.notice(`Quoted ${ref} in composer.`);
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
});
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
106
178
|
let index = initial;
|
|
107
179
|
let selected;
|
|
108
180
|
const positions = new Map();
|
|
@@ -135,11 +207,23 @@ export async function reviewFiles(tui, title, cwd, files, readDiff, signal, init
|
|
|
135
207
|
try {
|
|
136
208
|
if (preview && imageMediaType(file.path) !== undefined)
|
|
137
209
|
image = previewImage ??= await imageFile(resolve(cwd, file.path), signal);
|
|
138
|
-
|
|
210
|
+
let content = image !== undefined ? { binary: true, text: '' } : preview ? loaded = await fileDocument(resolve(cwd, file.path), signal, limits.get(index)) : await readDiff(index, signal);
|
|
139
211
|
if (typeof content !== 'string' && content.diff !== true && hasDiff && !preview && 'truncated' in content) {
|
|
140
212
|
modes.set(index, 'source');
|
|
141
213
|
continue;
|
|
142
214
|
}
|
|
215
|
+
// A declared match can lie beyond the first prefix. Grow only until it
|
|
216
|
+
// is reachable, retaining the same bounded preview policy as Load more.
|
|
217
|
+
if (preview && loaded !== undefined && loaded.binary !== true && file.line !== undefined && !positions.has(key)) {
|
|
218
|
+
while (loaded.truncated === true && loaded.text.split('\n').length <= file.line && (limits.get(index) ?? PREVIEW_BYTES) < MAX_PREVIEW_BYTES) {
|
|
219
|
+
const limit = Math.min(MAX_PREVIEW_BYTES, (limits.get(index) ?? PREVIEW_BYTES) * 2);
|
|
220
|
+
limits.set(index, limit);
|
|
221
|
+
loaded = await fileDocument(resolve(cwd, file.path), signal, limit);
|
|
222
|
+
}
|
|
223
|
+
content = loaded;
|
|
224
|
+
if (loaded.binary !== true && loaded.text.split('\n').length < file.line)
|
|
225
|
+
feedback = `Line ${file.line} is outside this preview. The file may have changed; Open reads the original.`;
|
|
226
|
+
}
|
|
143
227
|
if (typeof content === 'string')
|
|
144
228
|
detail = content;
|
|
145
229
|
else if ('binary' in content && content.binary === true)
|