@astralyn/pi 0.82.6 → 0.82.7
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 +27 -0
- package/README.md +1 -1
- package/dist/cli/session-picker.d.ts.map +1 -1
- package/dist/cli/session-picker.js +11 -13
- package/dist/cli/session-picker.js.map +1 -1
- package/dist/core/extensions/types.d.ts +4 -0
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +2 -2
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/tools/bash.d.ts +1 -5
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +16 -41
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +42 -11
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +6 -7
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +17 -8
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +3 -3
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +4 -4
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/render-utils.d.ts +7 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/render-utils.js +11 -0
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +2 -3
- package/dist/core/tools/write.js.map +1 -1
- package/dist/extensions/deepwiki/render.d.ts.map +1 -1
- package/dist/extensions/deepwiki/render.js +34 -22
- package/dist/extensions/deepwiki/render.js.map +1 -1
- package/dist/extensions/plan/constants.d.ts +32 -4
- package/dist/extensions/plan/constants.d.ts.map +1 -1
- package/dist/extensions/plan/constants.js +37 -6
- package/dist/extensions/plan/constants.js.map +1 -1
- package/dist/extensions/plan/index.d.ts +27 -0
- package/dist/extensions/plan/index.d.ts.map +1 -1
- package/dist/extensions/plan/index.js +150 -44
- package/dist/extensions/plan/index.js.map +1 -1
- package/dist/extensions/plan/schema.d.ts +5 -0
- package/dist/extensions/plan/schema.d.ts.map +1 -1
- package/dist/extensions/plan/schema.js.map +1 -1
- package/dist/extensions/plan/state.d.ts +11 -2
- package/dist/extensions/plan/state.d.ts.map +1 -1
- package/dist/extensions/plan/state.js +31 -9
- package/dist/extensions/plan/state.js.map +1 -1
- package/dist/extensions/plan/storage.d.ts +11 -3
- package/dist/extensions/plan/storage.d.ts.map +1 -1
- package/dist/extensions/plan/storage.js +45 -20
- package/dist/extensions/plan/storage.js.map +1 -1
- package/dist/extensions/plan/view.d.ts +15 -7
- package/dist/extensions/plan/view.d.ts.map +1 -1
- package/dist/extensions/plan/view.js +91 -16
- package/dist/extensions/plan/view.js.map +1 -1
- package/dist/extensions/question/dialog.d.ts.map +1 -1
- package/dist/extensions/question/dialog.js +29 -10
- package/dist/extensions/question/dialog.js.map +1 -1
- package/dist/extensions/question/index.d.ts.map +1 -1
- package/dist/extensions/question/index.js +7 -2
- package/dist/extensions/question/index.js.map +1 -1
- package/dist/extensions/question/render.d.ts +4 -8
- package/dist/extensions/question/render.d.ts.map +1 -1
- package/dist/extensions/question/render.js +202 -29
- package/dist/extensions/question/render.js.map +1 -1
- package/dist/extensions/question/results.d.ts.map +1 -1
- package/dist/extensions/question/results.js +1 -0
- package/dist/extensions/question/results.js.map +1 -1
- package/dist/extensions/question/schema.d.ts.map +1 -1
- package/dist/extensions/question/schema.js +2 -2
- package/dist/extensions/question/schema.js.map +1 -1
- package/dist/extensions/question/types.d.ts +1 -0
- package/dist/extensions/question/types.d.ts.map +1 -1
- package/dist/extensions/question/types.js +1 -1
- package/dist/extensions/question/types.js.map +1 -1
- package/dist/extensions/router/stream.d.ts +1 -0
- package/dist/extensions/router/stream.d.ts.map +1 -1
- package/dist/extensions/router/stream.js +44 -13
- package/dist/extensions/router/stream.js.map +1 -1
- package/dist/extensions/subagent/constants.d.ts +1 -0
- package/dist/extensions/subagent/constants.d.ts.map +1 -1
- package/dist/extensions/subagent/constants.js +1 -0
- package/dist/extensions/subagent/constants.js.map +1 -1
- package/dist/extensions/subagent/index.d.ts.map +1 -1
- package/dist/extensions/subagent/index.js +2 -0
- package/dist/extensions/subagent/index.js.map +1 -1
- package/dist/extensions/subagent/render.d.ts.map +1 -1
- package/dist/extensions/subagent/render.js +121 -48
- package/dist/extensions/subagent/render.js.map +1 -1
- package/dist/extensions/subagent/retry.d.ts +17 -0
- package/dist/extensions/subagent/retry.d.ts.map +1 -0
- package/dist/extensions/subagent/retry.js +41 -0
- package/dist/extensions/subagent/retry.js.map +1 -0
- package/dist/extensions/subagent/runner.d.ts.map +1 -1
- package/dist/extensions/subagent/runner.js +33 -5
- package/dist/extensions/subagent/runner.js.map +1 -1
- package/dist/extensions/subagent/sdk-runner.d.ts +6 -0
- package/dist/extensions/subagent/sdk-runner.d.ts.map +1 -1
- package/dist/extensions/subagent/sdk-runner.js +46 -24
- package/dist/extensions/subagent/sdk-runner.js.map +1 -1
- package/dist/extensions/subagent/types.d.ts +7 -0
- package/dist/extensions/subagent/types.d.ts.map +1 -1
- package/dist/extensions/subagent/types.js.map +1 -1
- package/dist/extensions/todo/index.d.ts.map +1 -1
- package/dist/extensions/todo/index.js +1 -1
- package/dist/extensions/todo/index.js.map +1 -1
- package/dist/extensions/todo/state.d.ts.map +1 -1
- package/dist/extensions/todo/state.js +10 -2
- package/dist/extensions/todo/state.js.map +1 -1
- package/dist/extensions/todo/view.d.ts +1 -1
- package/dist/extensions/todo/view.d.ts.map +1 -1
- package/dist/extensions/todo/view.js +179 -34
- package/dist/extensions/todo/view.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +2 -1
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/components/armin.d.ts.map +1 -1
- package/dist/modes/interactive/components/armin.js +5 -0
- package/dist/modes/interactive/components/armin.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts +1 -0
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +4 -2
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts +13 -6
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.js +54 -17
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-selector.js +10 -6
- package/dist/modes/interactive/components/extension-selector.js.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts +11 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js +56 -0
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts +3 -0
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +52 -2
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +10 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +133 -18
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tool-group.d.ts +1 -0
- package/dist/modes/interactive/components/tool-group.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-group.js +5 -0
- package/dist/modes/interactive/components/tool-group.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts +10 -1
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.js +55 -2
- package/dist/modes/interactive/components/tree-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +5 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +72 -18
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +3 -2
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/utils/paths.d.ts +6 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +8 -0
- package/dist/utils/paths.js.map +1 -1
- package/docs/bundled/README.md +1 -0
- package/docs/bundled/extensions/deepwiki.md +1 -1
- package/docs/bundled/extensions/plan.md +10 -9
- package/docs/bundled/extensions/question.md +7 -5
- package/docs/bundled/extensions/router.md +3 -4
- package/docs/bundled/extensions/statusline.md +0 -1
- package/docs/bundled/extensions/subagent.md +4 -3
- package/docs/bundled/extensions/todo.md +1 -1
- package/docs/bundled/tool-presentation.md +17 -16
- package/docs/extensions.md +20 -5
- package/docs/rpc.md +1 -1
- package/docs/usage.md +1 -1
- package/npm-shrinkwrap.json +6 -6
- package/package.json +1 -1
|
@@ -186,6 +186,8 @@ export class InteractiveMode {
|
|
|
186
186
|
onInputCallback;
|
|
187
187
|
pendingUserInputs = [];
|
|
188
188
|
activeStatusIndicator = undefined;
|
|
189
|
+
activeSelector = null;
|
|
190
|
+
activeSelectorCleanup = null;
|
|
189
191
|
idleStatus = new IdleStatus();
|
|
190
192
|
workingMessage = undefined;
|
|
191
193
|
workingVisible = true;
|
|
@@ -1252,7 +1254,7 @@ export class InteractiveMode {
|
|
|
1252
1254
|
if (result.cancelled) {
|
|
1253
1255
|
return { cancelled: true };
|
|
1254
1256
|
}
|
|
1255
|
-
this.
|
|
1257
|
+
this.clearChat();
|
|
1256
1258
|
this.renderInitialMessages();
|
|
1257
1259
|
if (result.editorText && !this.editor.getText().trim()) {
|
|
1258
1260
|
this.editor.setText(result.editorText);
|
|
@@ -1331,14 +1333,34 @@ export class InteractiveMode {
|
|
|
1331
1333
|
this.stop();
|
|
1332
1334
|
process.exit(1);
|
|
1333
1335
|
}
|
|
1336
|
+
disposeChatToolComponents() {
|
|
1337
|
+
for (const child of this.chatContainer.children) {
|
|
1338
|
+
if (child instanceof ToolExecutionComponent ||
|
|
1339
|
+
child instanceof ToolGroupComponent ||
|
|
1340
|
+
child instanceof ArminComponent ||
|
|
1341
|
+
child instanceof DaxnutsComponent) {
|
|
1342
|
+
child.dispose();
|
|
1343
|
+
}
|
|
1344
|
+
}
|
|
1345
|
+
}
|
|
1346
|
+
clearChat() {
|
|
1347
|
+
this.disposeChatToolComponents();
|
|
1348
|
+
this.chatContainer.clear();
|
|
1349
|
+
}
|
|
1350
|
+
clearPendingTools() {
|
|
1351
|
+
for (const component of this.pendingTools.values()) {
|
|
1352
|
+
component.dispose();
|
|
1353
|
+
}
|
|
1354
|
+
this.pendingTools.clear();
|
|
1355
|
+
}
|
|
1334
1356
|
renderCurrentSessionState() {
|
|
1335
1357
|
this.loadedResourcesContainer.clear();
|
|
1336
|
-
this.
|
|
1358
|
+
this.clearChat();
|
|
1337
1359
|
this.pendingMessagesContainer.clear();
|
|
1338
1360
|
this.compactionQueuedMessages = [];
|
|
1339
1361
|
this.streamingComponent = undefined;
|
|
1340
1362
|
this.streamingMessage = undefined;
|
|
1341
|
-
this.
|
|
1363
|
+
this.clearPendingTools();
|
|
1342
1364
|
this.renderInitialMessages();
|
|
1343
1365
|
}
|
|
1344
1366
|
/**
|
|
@@ -2326,7 +2348,7 @@ export class InteractiveMode {
|
|
|
2326
2348
|
case "agent_start":
|
|
2327
2349
|
this.agentRunActive = true;
|
|
2328
2350
|
this.coalescingTerminal.setScrollbackPreservation(true);
|
|
2329
|
-
this.
|
|
2351
|
+
this.clearPendingTools();
|
|
2330
2352
|
if (this.settingsManager.getShowTerminalProgress()) {
|
|
2331
2353
|
this.ui.terminal.setProgress(true);
|
|
2332
2354
|
}
|
|
@@ -2495,7 +2517,7 @@ export class InteractiveMode {
|
|
|
2495
2517
|
this.streamingComponent = undefined;
|
|
2496
2518
|
this.streamingMessage = undefined;
|
|
2497
2519
|
}
|
|
2498
|
-
this.
|
|
2520
|
+
this.clearPendingTools();
|
|
2499
2521
|
this.ui.requestRender();
|
|
2500
2522
|
break;
|
|
2501
2523
|
case "agent_settled":
|
|
@@ -2537,7 +2559,7 @@ export class InteractiveMode {
|
|
|
2537
2559
|
}
|
|
2538
2560
|
else {
|
|
2539
2561
|
if (event.result) {
|
|
2540
|
-
this.
|
|
2562
|
+
this.clearChat();
|
|
2541
2563
|
this.rebuildChatFromMessages();
|
|
2542
2564
|
this.addMessageToChat(createCompactionSummaryMessage(event.result.summary, event.result.tokensBefore, new Date().toISOString()));
|
|
2543
2565
|
this.footer.invalidate();
|
|
@@ -2733,7 +2755,7 @@ export class InteractiveMode {
|
|
|
2733
2755
|
}
|
|
2734
2756
|
}
|
|
2735
2757
|
renderSessionItems(items, options = {}) {
|
|
2736
|
-
this.
|
|
2758
|
+
this.clearPendingTools();
|
|
2737
2759
|
const renderedPendingTools = new Map();
|
|
2738
2760
|
// Cache-miss notices are not persisted; re-derive them from the full entry
|
|
2739
2761
|
// list and re-inject them after the assistant messages that paid for them.
|
|
@@ -2882,7 +2904,7 @@ export class InteractiveMode {
|
|
|
2882
2904
|
});
|
|
2883
2905
|
}
|
|
2884
2906
|
rebuildChatFromMessages() {
|
|
2885
|
-
this.
|
|
2907
|
+
this.clearChat();
|
|
2886
2908
|
this.renderSessionEntries(this.sessionManager.buildContextEntries());
|
|
2887
2909
|
}
|
|
2888
2910
|
// =========================================================================
|
|
@@ -3174,7 +3196,7 @@ export class InteractiveMode {
|
|
|
3174
3196
|
// Same reasoning as setToolsExpanded.
|
|
3175
3197
|
this.coalescingTerminal.passNextFullRedraw();
|
|
3176
3198
|
// Rebuild chat from session messages
|
|
3177
|
-
this.
|
|
3199
|
+
this.clearChat();
|
|
3178
3200
|
this.rebuildChatFromMessages();
|
|
3179
3201
|
// If streaming, re-add the streaming component with updated visibility and re-render
|
|
3180
3202
|
if (this.streamingComponent && this.streamingMessage) {
|
|
@@ -3422,15 +3444,42 @@ export class InteractiveMode {
|
|
|
3422
3444
|
* @param create Factory that receives a `done` callback and returns the component and focus target
|
|
3423
3445
|
*/
|
|
3424
3446
|
showSelector(create) {
|
|
3447
|
+
this.activeSelectorCleanup?.();
|
|
3448
|
+
this.activeSelectorCleanup = null;
|
|
3449
|
+
this.activeSelector = null;
|
|
3450
|
+
let selector;
|
|
3451
|
+
let disposed = false;
|
|
3452
|
+
let closed = false;
|
|
3453
|
+
const dispose = () => {
|
|
3454
|
+
if (disposed || !selector)
|
|
3455
|
+
return;
|
|
3456
|
+
disposed = true;
|
|
3457
|
+
selector.dispose?.();
|
|
3458
|
+
};
|
|
3425
3459
|
const done = () => {
|
|
3426
|
-
|
|
3427
|
-
|
|
3428
|
-
|
|
3460
|
+
if (closed)
|
|
3461
|
+
return;
|
|
3462
|
+
closed = true;
|
|
3463
|
+
dispose();
|
|
3464
|
+
if (!selector || this.activeSelector === selector) {
|
|
3465
|
+
this.activeSelector = null;
|
|
3466
|
+
this.activeSelectorCleanup = null;
|
|
3467
|
+
this.editorContainer.clear();
|
|
3468
|
+
this.editorContainer.addChild(this.editor);
|
|
3469
|
+
this.ui.setFocus(this.editor);
|
|
3470
|
+
}
|
|
3429
3471
|
};
|
|
3430
|
-
const
|
|
3472
|
+
const created = create(done);
|
|
3473
|
+
selector = created.component;
|
|
3474
|
+
if (closed) {
|
|
3475
|
+
dispose();
|
|
3476
|
+
return;
|
|
3477
|
+
}
|
|
3478
|
+
this.activeSelector = selector;
|
|
3479
|
+
this.activeSelectorCleanup = dispose;
|
|
3431
3480
|
this.editorContainer.clear();
|
|
3432
|
-
this.editorContainer.addChild(
|
|
3433
|
-
this.ui.setFocus(focus);
|
|
3481
|
+
this.editorContainer.addChild(selector);
|
|
3482
|
+
this.ui.setFocus(created.focus);
|
|
3434
3483
|
this.ui.requestRender();
|
|
3435
3484
|
}
|
|
3436
3485
|
showSettingsSelector() {
|
|
@@ -3530,7 +3579,7 @@ export class InteractiveMode {
|
|
|
3530
3579
|
child.setHideThinkingBlock(hidden);
|
|
3531
3580
|
}
|
|
3532
3581
|
}
|
|
3533
|
-
this.
|
|
3582
|
+
this.clearChat();
|
|
3534
3583
|
this.rebuildChatFromMessages();
|
|
3535
3584
|
},
|
|
3536
3585
|
onShowCacheMissNoticesChange: (shown) => {
|
|
@@ -3952,7 +4001,7 @@ export class InteractiveMode {
|
|
|
3952
4001
|
return;
|
|
3953
4002
|
}
|
|
3954
4003
|
// Update UI
|
|
3955
|
-
this.
|
|
4004
|
+
this.clearChat();
|
|
3956
4005
|
this.renderInitialMessages();
|
|
3957
4006
|
if (result.editorText && !this.editor.getText().trim()) {
|
|
3958
4007
|
this.editor.setText(result.editorText);
|
|
@@ -3975,7 +4024,7 @@ export class InteractiveMode {
|
|
|
3975
4024
|
}, (entryId, label) => {
|
|
3976
4025
|
this.sessionManager.appendLabelChange(entryId, label);
|
|
3977
4026
|
this.ui.requestRender();
|
|
3978
|
-
}, initialSelectedId, initialFilterMode);
|
|
4027
|
+
}, initialSelectedId, initialFilterMode, () => this.ui.requestRender());
|
|
3979
4028
|
selector.onCopy = async (text) => {
|
|
3980
4029
|
if (!text) {
|
|
3981
4030
|
this.showError("Selected entry has no text to copy");
|
|
@@ -5082,12 +5131,17 @@ export class InteractiveMode {
|
|
|
5082
5131
|
}
|
|
5083
5132
|
}
|
|
5084
5133
|
stop() {
|
|
5134
|
+
this.activeSelectorCleanup?.();
|
|
5135
|
+
this.activeSelectorCleanup = null;
|
|
5136
|
+
this.activeSelector = null;
|
|
5085
5137
|
if (this.settingsManager.getShowTerminalProgress()) {
|
|
5086
5138
|
this.ui.terminal.setProgress(false);
|
|
5087
5139
|
}
|
|
5088
5140
|
this.clearStatusIndicator();
|
|
5089
5141
|
this.themeController.disableAutoSync();
|
|
5090
5142
|
this.clearExtensionTerminalInputListeners();
|
|
5143
|
+
this.clearPendingTools();
|
|
5144
|
+
this.disposeChatToolComponents();
|
|
5091
5145
|
this.footer.dispose();
|
|
5092
5146
|
this.footerDataProvider.dispose();
|
|
5093
5147
|
if (this.unsubscribe) {
|