@ashx-j/lunr-dev 0.2.13-dev.3.1 → 0.2.13-dev.5.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/CHANGELOG.md +4 -0
- package/dist/builtin-extensions/ashxj-tui.d.ts +2 -1
- package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
- package/dist/builtin-extensions/ashxj-tui.js +7 -17
- package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +2 -0
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js +27 -22
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js +5 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js +12 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-status.d.ts +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-status.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-status.js +3 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-status.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-append.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-append.js +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-append.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.js +3 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/fleet-view.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/fleet-view.js +3 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/background/fleet-view.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.js +2 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js +3 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js +7 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js +2 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +19 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts +10 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js +19 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js +17 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/formatters.d.ts +3 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/formatters.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/formatters.js +14 -3
- package/dist/builtin-extensions/pi-subagents/src/shared/formatters.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +14 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/fleet.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/fleet.js +2 -2
- package/dist/builtin-extensions/pi-subagents/src/tui/fleet.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js +12 -10
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
- package/dist/core/customize.d.ts +2 -4
- package/dist/core/customize.d.ts.map +1 -1
- package/dist/core/customize.js +2 -8
- package/dist/core/customize.js.map +1 -1
- package/dist/core/settings-manager.d.ts +0 -6
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +0 -17
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -0
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/migrations.d.ts +2 -0
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +14 -4
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +1 -3
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +4 -32
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +2 -1
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/plan-message.d.ts +1 -3
- package/dist/modes/interactive/components/plan-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/plan-message.js +1 -16
- package/dist/modes/interactive/components/plan-message.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +0 -4
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +10 -30
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts +1 -3
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +2 -19
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +2 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +29 -34
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/moon.json +0 -1
- package/dist/modes/interactive/theme/theme-schema.json +3 -3
- package/dist/modes/interactive/theme/theme.d.ts +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +0 -6
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/docs/features.md +2 -2
- package/docs/keybindings.md +1 -1
- package/docs/quickstart.md +1 -1
- package/docs/settings.md +1 -3
- package/docs/terminal-setup.md +2 -2
- package/docs/usage.md +2 -1
- package/docs/windows.md +1 -1
- package/package.json +4 -4
|
@@ -200,6 +200,11 @@ function formatLoginProviderCompletionDescription(provider) {
|
|
|
200
200
|
const authTypes = provider.authTypes.map(formatAuthSelectorProviderType).join("/");
|
|
201
201
|
return provider.name === provider.id ? authTypes : `${provider.name} · ${authTypes}`;
|
|
202
202
|
}
|
|
203
|
+
export async function startInteractiveToolInstalls(currentFdPath, onFdInstalled, installer = ensureTool) {
|
|
204
|
+
const [fdPath] = await Promise.all([installer("fd", true), installer("rg", true)]);
|
|
205
|
+
if (fdPath && fdPath !== currentFdPath)
|
|
206
|
+
onFdInstalled(fdPath);
|
|
207
|
+
}
|
|
203
208
|
export class InteractiveMode {
|
|
204
209
|
runtimeHost;
|
|
205
210
|
ui;
|
|
@@ -555,11 +560,9 @@ export class InteractiveMode {
|
|
|
555
560
|
this.fdPath = getToolPath("fd") ?? undefined;
|
|
556
561
|
const toolMaintenance = startupBenchmark
|
|
557
562
|
? Promise.resolve()
|
|
558
|
-
:
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
this.setupAutocompleteProvider();
|
|
562
|
-
}
|
|
563
|
+
: startInteractiveToolInstalls(this.fdPath, (fdPath) => {
|
|
564
|
+
this.fdPath = fdPath;
|
|
565
|
+
this.setupAutocompleteProvider();
|
|
563
566
|
});
|
|
564
567
|
time("ensureTools");
|
|
565
568
|
if (this.session.scopedModels.length > 0 && (this.options.verbose || !this.settingsManager.getQuietStartup())) {
|
|
@@ -2024,9 +2027,6 @@ export class InteractiveMode {
|
|
|
2024
2027
|
if (!customEditor.onCtrlD) {
|
|
2025
2028
|
customEditor.onCtrlD = () => this.defaultEditor.onCtrlD?.();
|
|
2026
2029
|
}
|
|
2027
|
-
if (!customEditor.onPasteImage) {
|
|
2028
|
-
customEditor.onPasteImage = () => this.defaultEditor.onPasteImage?.();
|
|
2029
|
-
}
|
|
2030
2030
|
if (!customEditor.onExtensionShortcut) {
|
|
2031
2031
|
customEditor.onExtensionShortcut = (data) => this.defaultEditor.onExtensionShortcut?.(data);
|
|
2032
2032
|
}
|
|
@@ -2208,6 +2208,7 @@ export class InteractiveMode {
|
|
|
2208
2208
|
// lunr: tool/thinking expand is per-item click; ctrl+o is not bound (tree filter still uses ctrl+o).
|
|
2209
2209
|
this.defaultEditor.onAction("app.thinking.toggle", () => this.toggleThinkingBlockVisibility());
|
|
2210
2210
|
this.defaultEditor.onAction("app.editor.external", () => this.openExternalEditor());
|
|
2211
|
+
this.defaultEditor.onAction("app.clipboard.pasteImage", () => void this.handleClipboardPaste());
|
|
2211
2212
|
this.defaultEditor.onAction("app.message.copy", () => void this.handleCopyCommand());
|
|
2212
2213
|
this.defaultEditor.onAction("app.message.followUp", () => this.handleFollowUp());
|
|
2213
2214
|
this.defaultEditor.onAction("app.message.dequeue", () => this.handleDequeue());
|
|
@@ -2222,12 +2223,6 @@ export class InteractiveMode {
|
|
|
2222
2223
|
this.updateEditorBorderColor();
|
|
2223
2224
|
}
|
|
2224
2225
|
};
|
|
2225
|
-
// Handle clipboard paste (keybinding: app.clipboard.pasteImage, Alt+V on Windows —
|
|
2226
|
-
// Ctrl+V is owned by the terminal and never reaches us). Images become `[image_n]`
|
|
2227
|
-
// chips; otherwise, paste plain text from the system clipboard.
|
|
2228
|
-
this.defaultEditor.onPasteImage = () => {
|
|
2229
|
-
void this.handleClipboardPaste();
|
|
2230
|
-
};
|
|
2231
2226
|
this.ui.addInputListener((data) => {
|
|
2232
2227
|
if (!this.ui.isPinned())
|
|
2233
2228
|
return;
|
|
@@ -2349,7 +2344,7 @@ export class InteractiveMode {
|
|
|
2349
2344
|
restoreEditorFromTreeResult(result) {
|
|
2350
2345
|
this.restoreEditorDraft(result.editorText ?? "", result.editorImages);
|
|
2351
2346
|
}
|
|
2352
|
-
async handleClipboardPaste() {
|
|
2347
|
+
async handleClipboardPaste(options = {}) {
|
|
2353
2348
|
try {
|
|
2354
2349
|
const image = await readClipboardImage();
|
|
2355
2350
|
if (image) {
|
|
@@ -2359,13 +2354,15 @@ export class InteractiveMode {
|
|
|
2359
2354
|
this.showStatus(`Pasted ${formatImageMarker(id)}`);
|
|
2360
2355
|
return;
|
|
2361
2356
|
}
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2365
|
-
|
|
2366
|
-
|
|
2357
|
+
if (options.textFallback !== false) {
|
|
2358
|
+
const text = await readClipboardText();
|
|
2359
|
+
if (text) {
|
|
2360
|
+
this.editor.insertTextAtCursor?.(text);
|
|
2361
|
+
this.ui.requestRender();
|
|
2362
|
+
return;
|
|
2363
|
+
}
|
|
2367
2364
|
}
|
|
2368
|
-
this.showStatus("Clipboard contains no image or text");
|
|
2365
|
+
this.showStatus(options.textFallback === false ? "Clipboard contains no image" : "Clipboard contains no image or text");
|
|
2369
2366
|
}
|
|
2370
2367
|
catch (err) {
|
|
2371
2368
|
this.showStatus(`Clipboard paste failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -2382,6 +2379,11 @@ export class InteractiveMode {
|
|
|
2382
2379
|
this.activateDeferredStartupEditor();
|
|
2383
2380
|
this.ui.setChatScroll(0);
|
|
2384
2381
|
// Handle commands
|
|
2382
|
+
if (text === "/paste-image") {
|
|
2383
|
+
this.editor.setText("");
|
|
2384
|
+
await this.handleClipboardPaste({ textFallback: false });
|
|
2385
|
+
return;
|
|
2386
|
+
}
|
|
2385
2387
|
if (text === "/settings") {
|
|
2386
2388
|
void this.showSettingsSelector();
|
|
2387
2389
|
this.editor.setText("");
|
|
@@ -2801,7 +2803,7 @@ export class InteractiveMode {
|
|
|
2801
2803
|
this.ui.requestRender();
|
|
2802
2804
|
}
|
|
2803
2805
|
else if (event.message.role === "assistant") {
|
|
2804
|
-
this.streamingComponent = new AssistantMessageComponent(undefined, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.hiddenThinkingLabel, this.outputPad, this.
|
|
2806
|
+
this.streamingComponent = new AssistantMessageComponent(undefined, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.hiddenThinkingLabel, this.outputPad, this.thinkingCollapse);
|
|
2805
2807
|
// lunr: collapsible reasoning — fresh timing array for this message.
|
|
2806
2808
|
this.thinkingRunTimings = [];
|
|
2807
2809
|
this.streamingComponent.setThinkingTimings(this.thinkingRunTimings);
|
|
@@ -3149,12 +3151,12 @@ export class InteractiveMode {
|
|
|
3149
3151
|
// Render user message separately if present
|
|
3150
3152
|
if (skillBlock.userMessage) {
|
|
3151
3153
|
this.chatContainer.addChild(new Spacer(1));
|
|
3152
|
-
const userComponent = new UserMessageComponent(skillBlock.userMessage, this.getMarkdownThemeWithSettings(), this.outputPad
|
|
3154
|
+
const userComponent = new UserMessageComponent(skillBlock.userMessage, this.getMarkdownThemeWithSettings(), this.outputPad);
|
|
3153
3155
|
this.chatContainer.addChild(userComponent);
|
|
3154
3156
|
}
|
|
3155
3157
|
}
|
|
3156
3158
|
else {
|
|
3157
|
-
const userComponent = new UserMessageComponent(textContent, this.getMarkdownThemeWithSettings(), this.outputPad
|
|
3159
|
+
const userComponent = new UserMessageComponent(textContent, this.getMarkdownThemeWithSettings(), this.outputPad);
|
|
3158
3160
|
this.chatContainer.addChild(userComponent);
|
|
3159
3161
|
}
|
|
3160
3162
|
if (options?.populateHistory) {
|
|
@@ -3164,7 +3166,7 @@ export class InteractiveMode {
|
|
|
3164
3166
|
break;
|
|
3165
3167
|
}
|
|
3166
3168
|
case "assistant": {
|
|
3167
|
-
const assistantComponent = new AssistantMessageComponent(message, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.hiddenThinkingLabel, this.outputPad, this.
|
|
3169
|
+
const assistantComponent = new AssistantMessageComponent(message, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.hiddenThinkingLabel, this.outputPad, this.thinkingCollapse);
|
|
3168
3170
|
// lunr: collapsible reasoning — re-attach live timings when this
|
|
3169
3171
|
// message was streamed in this session (undefined = history).
|
|
3170
3172
|
assistantComponent.setThinkingTimings(this.thinkingTimingsByMessage.get(message));
|
|
@@ -3993,8 +3995,6 @@ export class InteractiveMode {
|
|
|
3993
3995
|
memoryCharCap: this.settingsManager.getMemoryCharCap(),
|
|
3994
3996
|
searchCurator: getSearchCuratorSetting(),
|
|
3995
3997
|
// lunr: TUI customize settings
|
|
3996
|
-
gutterRail: this.settingsManager.getGutterRail(),
|
|
3997
|
-
promptSymbol: this.settingsManager.getPromptSymbol(),
|
|
3998
3998
|
footerMcp: this.settingsManager.getFooterMcp(),
|
|
3999
3999
|
footerLsp: this.settingsManager.getFooterLsp(),
|
|
4000
4000
|
footerContext: this.settingsManager.getFooterContext(),
|
|
@@ -4196,12 +4196,6 @@ export class InteractiveMode {
|
|
|
4196
4196
|
}
|
|
4197
4197
|
},
|
|
4198
4198
|
// lunr: TUI customize callbacks
|
|
4199
|
-
onGutterRailChange: (enabled) => {
|
|
4200
|
-
this.settingsManager.setGutterRail(enabled);
|
|
4201
|
-
},
|
|
4202
|
-
onPromptSymbolChange: (enabled) => {
|
|
4203
|
-
this.settingsManager.setPromptSymbol(enabled);
|
|
4204
|
-
},
|
|
4205
4199
|
onFooterMcpChange: (enabled) => {
|
|
4206
4200
|
this.settingsManager.setFooterMcp(enabled);
|
|
4207
4201
|
},
|
|
@@ -6464,7 +6458,7 @@ export class InteractiveMode {
|
|
|
6464
6458
|
// the result text the model sees. Esc/close counts as Decline.
|
|
6465
6459
|
showPlanInChat(summary) {
|
|
6466
6460
|
this.chatContainer.addChild(new Spacer(1));
|
|
6467
|
-
this.chatContainer.addChild(new PlanMessageComponent(summary, this.getMarkdownThemeWithSettings(), this.outputPad
|
|
6461
|
+
this.chatContainer.addChild(new PlanMessageComponent(summary, this.getMarkdownThemeWithSettings(), this.outputPad));
|
|
6468
6462
|
this.ui.requestRender();
|
|
6469
6463
|
}
|
|
6470
6464
|
async showPlanApprovalDialog(summary) {
|
|
@@ -6678,6 +6672,7 @@ ${cycleThinkingLevel ? `| \`${cycleThinkingLevel}\` | Cycle thinking level |\n`
|
|
|
6678
6672
|
| \`${followUp}\` | Queue follow-up message |
|
|
6679
6673
|
| \`${dequeue}\` | Restore queued messages |
|
|
6680
6674
|
| \`${pasteImage}\` | Paste image or text from clipboard |
|
|
6675
|
+
| \`/paste-image\` | Paste image without a terminal shortcut |
|
|
6681
6676
|
| \`/\` | Slash commands |
|
|
6682
6677
|
| \`!\` | Run bash command |
|
|
6683
6678
|
| \`!!\` | Run bash command (excluded from context) |
|