@astralyn/pi 0.82.4 → 0.82.6
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 +52 -0
- package/dist/cli/project-trust.d.ts.map +1 -1
- package/dist/cli/project-trust.js +4 -1
- package/dist/cli/project-trust.js.map +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +2 -2
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js +4 -22
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/extensions/index.d.ts +2 -2
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +2 -3
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/types.d.ts +37 -5
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js +11 -0
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts +3 -13
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js +6 -36
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/extensions/plan/constants.d.ts +11 -2
- package/dist/extensions/plan/constants.d.ts.map +1 -1
- package/dist/extensions/plan/constants.js +14 -2
- package/dist/extensions/plan/constants.js.map +1 -1
- package/dist/extensions/plan/index.d.ts +0 -18
- package/dist/extensions/plan/index.d.ts.map +1 -1
- package/dist/extensions/plan/index.js +35 -3
- package/dist/extensions/plan/index.js.map +1 -1
- package/dist/extensions/plan/view.d.ts +36 -0
- package/dist/extensions/plan/view.d.ts.map +1 -0
- package/dist/extensions/plan/view.js +74 -0
- package/dist/extensions/plan/view.js.map +1 -0
- package/dist/extensions/question/dialog.d.ts +3 -1
- package/dist/extensions/question/dialog.d.ts.map +1 -1
- package/dist/extensions/question/dialog.js +106 -52
- 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 +2 -2
- package/dist/extensions/question/index.js.map +1 -1
- package/dist/extensions/question/render-cache.d.ts +9 -0
- package/dist/extensions/question/render-cache.d.ts.map +1 -1
- package/dist/extensions/question/render-cache.js +22 -0
- package/dist/extensions/question/render-cache.js.map +1 -1
- package/dist/extensions/question/results.d.ts.map +1 -1
- package/dist/extensions/question/results.js +6 -1
- package/dist/extensions/question/results.js.map +1 -1
- package/dist/extensions/question/schema.d.ts +4 -0
- package/dist/extensions/question/schema.d.ts.map +1 -1
- package/dist/extensions/question/schema.js +19 -28
- package/dist/extensions/question/schema.js.map +1 -1
- package/dist/extensions/question/types.d.ts +1 -1
- package/dist/extensions/question/types.d.ts.map +1 -1
- package/dist/extensions/question/types.js.map +1 -1
- package/dist/extensions/router/stream.d.ts.map +1 -1
- package/dist/extensions/router/stream.js +44 -0
- package/dist/extensions/router/stream.js.map +1 -1
- package/dist/extensions/subagent/activity.d.ts.map +1 -1
- package/dist/extensions/subagent/activity.js +25 -4
- package/dist/extensions/subagent/activity.js.map +1 -1
- package/dist/extensions/subagent/agents.d.ts.map +1 -1
- package/dist/extensions/subagent/agents.js +12 -6
- package/dist/extensions/subagent/agents.js.map +1 -1
- package/dist/extensions/subagent/constants.d.ts +1 -1
- package/dist/extensions/subagent/constants.d.ts.map +1 -1
- package/dist/extensions/subagent/constants.js +3 -2
- 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 +14 -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 +243 -116
- package/dist/extensions/subagent/render.js.map +1 -1
- package/dist/extensions/subagent/resolve.d.ts.map +1 -1
- package/dist/extensions/subagent/resolve.js +13 -9
- package/dist/extensions/subagent/resolve.js.map +1 -1
- package/dist/extensions/subagent/runner.d.ts +1 -1
- package/dist/extensions/subagent/runner.d.ts.map +1 -1
- package/dist/extensions/subagent/runner.js +9 -3
- package/dist/extensions/subagent/runner.js.map +1 -1
- package/dist/extensions/subagent/schema.d.ts.map +1 -1
- package/dist/extensions/subagent/schema.js +4 -4
- package/dist/extensions/subagent/schema.js.map +1 -1
- package/dist/extensions/subagent/sdk-runner.d.ts.map +1 -1
- package/dist/extensions/subagent/sdk-runner.js +5 -0
- 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/constants.d.ts +17 -6
- package/dist/extensions/todo/constants.d.ts.map +1 -1
- package/dist/extensions/todo/constants.js +47 -9
- package/dist/extensions/todo/constants.js.map +1 -1
- package/dist/extensions/todo/index.d.ts +1 -15
- package/dist/extensions/todo/index.d.ts.map +1 -1
- package/dist/extensions/todo/index.js +35 -4
- package/dist/extensions/todo/index.js.map +1 -1
- package/dist/extensions/todo/schema.d.ts +59 -7
- package/dist/extensions/todo/schema.d.ts.map +1 -1
- package/dist/extensions/todo/schema.js +72 -12
- package/dist/extensions/todo/schema.js.map +1 -1
- package/dist/extensions/todo/state.d.ts +20 -5
- package/dist/extensions/todo/state.d.ts.map +1 -1
- package/dist/extensions/todo/state.js +1016 -134
- package/dist/extensions/todo/state.js.map +1 -1
- package/dist/extensions/todo/view.d.ts +16 -1
- package/dist/extensions/todo/view.d.ts.map +1 -1
- package/dist/extensions/todo/view.js +293 -7
- package/dist/extensions/todo/view.js.map +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts +6 -1
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-selector.js +14 -6
- package/dist/modes/interactive/components/extension-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +6 -0
- package/dist/modes/interactive/components/tool-execution.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 +41 -2
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +8 -1
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/utils/coalescing-terminal.d.ts +71 -17
- package/dist/utils/coalescing-terminal.d.ts.map +1 -1
- package/dist/utils/coalescing-terminal.js +136 -31
- package/dist/utils/coalescing-terminal.js.map +1 -1
- package/docs/bundled/extensions/plan.md +6 -4
- package/docs/bundled/extensions/question.md +9 -7
- package/docs/bundled/extensions/subagent.md +4 -4
- package/docs/bundled/extensions/todo.md +9 -5
- package/docs/bundled/tool-presentation.md +1 -1
- package/docs/extensions.md +14 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/dist/utils/output-decoder.d.ts +0 -52
- package/dist/utils/output-decoder.d.ts.map +0 -1
- package/dist/utils/output-decoder.js +0 -134
- package/dist/utils/output-decoder.js.map +0 -1
|
@@ -164,6 +164,8 @@ function formatLoginProviderCompletionDescription(provider) {
|
|
|
164
164
|
export class InteractiveMode {
|
|
165
165
|
runtimeHost;
|
|
166
166
|
ui;
|
|
167
|
+
coalescingTerminal;
|
|
168
|
+
agentRunActive = false;
|
|
167
169
|
loadedResourcesContainer;
|
|
168
170
|
chatContainer;
|
|
169
171
|
pendingMessagesContainer;
|
|
@@ -273,7 +275,25 @@ export class InteractiveMode {
|
|
|
273
275
|
await this.rebindCurrentSession({ renderBeforeBind: true });
|
|
274
276
|
});
|
|
275
277
|
this.version = VERSION;
|
|
276
|
-
|
|
278
|
+
const terminal = new CoalescingTerminal();
|
|
279
|
+
this.coalescingTerminal = terminal;
|
|
280
|
+
this.ui = new TUI(terminal, this.settingsManager.getShowHardwareCursor(), getAgentDir());
|
|
281
|
+
// Lets full-redraw rewrites scroll grown content into scrollback
|
|
282
|
+
// instead of dropping the lines pushed above the screen.
|
|
283
|
+
// previousViewportTop is TS-private but a plain runtime field, and
|
|
284
|
+
// pi-tui writes each full-redraw frame before updating it, so the
|
|
285
|
+
// wrapper observes the pre-frame value; if either assumption breaks,
|
|
286
|
+
// readViewportTop falls back to the bottom-anchored repaint.
|
|
287
|
+
terminal.setViewportTopProvider(() => this.ui.previousViewportTop);
|
|
288
|
+
// Scrollback preservation stays on from agent_start until the user's
|
|
289
|
+
// next input after the run settles: post-run reflow frames must not
|
|
290
|
+
// yank a reader who is still scrolled up, but once the user acts they
|
|
291
|
+
// are back at the bottom and upstream's clean wipe-and-replay wins.
|
|
292
|
+
this.ui.addInputListener(() => {
|
|
293
|
+
if (!this.agentRunActive)
|
|
294
|
+
this.coalescingTerminal.setScrollbackPreservation(false);
|
|
295
|
+
return undefined;
|
|
296
|
+
});
|
|
277
297
|
this.ui.setClearOnShrink(this.settingsManager.getClearOnShrink());
|
|
278
298
|
this.headerContainer = new Container();
|
|
279
299
|
this.loadedResourcesContainer = new Container();
|
|
@@ -1747,7 +1767,13 @@ export class InteractiveMode {
|
|
|
1747
1767
|
opts?.signal?.removeEventListener("abort", onAbort);
|
|
1748
1768
|
this.hideExtensionSelector();
|
|
1749
1769
|
resolve(undefined);
|
|
1750
|
-
}, {
|
|
1770
|
+
}, {
|
|
1771
|
+
tui: this.ui,
|
|
1772
|
+
timeout: opts?.timeout,
|
|
1773
|
+
subtitle: opts?.subtitle,
|
|
1774
|
+
cancelHint: opts?.cancelHint,
|
|
1775
|
+
onToggleToolsExpanded: () => this.toggleToolOutputExpansion(),
|
|
1776
|
+
});
|
|
1751
1777
|
this.editorContainer.clear();
|
|
1752
1778
|
this.editorContainer.addChild(this.extensionSelector);
|
|
1753
1779
|
this.ui.setFocus(this.extensionSelector);
|
|
@@ -2298,6 +2324,8 @@ export class InteractiveMode {
|
|
|
2298
2324
|
this.footer.invalidate();
|
|
2299
2325
|
switch (event.type) {
|
|
2300
2326
|
case "agent_start":
|
|
2327
|
+
this.agentRunActive = true;
|
|
2328
|
+
this.coalescingTerminal.setScrollbackPreservation(true);
|
|
2301
2329
|
this.pendingTools.clear();
|
|
2302
2330
|
if (this.settingsManager.getShowTerminalProgress()) {
|
|
2303
2331
|
this.ui.terminal.setProgress(true);
|
|
@@ -2471,6 +2499,10 @@ export class InteractiveMode {
|
|
|
2471
2499
|
this.ui.requestRender();
|
|
2472
2500
|
break;
|
|
2473
2501
|
case "agent_settled":
|
|
2502
|
+
// Preservation itself stays on until the next user input; the
|
|
2503
|
+
// run's trailing reflow frames may land after this event while
|
|
2504
|
+
// the reader is still scrolled up.
|
|
2505
|
+
this.agentRunActive = false;
|
|
2474
2506
|
await this.checkShutdownRequested();
|
|
2475
2507
|
break;
|
|
2476
2508
|
case "compaction_start": {
|
|
@@ -3118,6 +3150,11 @@ export class InteractiveMode {
|
|
|
3118
3150
|
}
|
|
3119
3151
|
setToolsExpanded(expanded) {
|
|
3120
3152
|
this.toolOutputExpanded = expanded;
|
|
3153
|
+
// An explicit toggle prefers upstream's clean wipe-and-replay even
|
|
3154
|
+
// mid-run: the user just pressed the key, so they are interacting at
|
|
3155
|
+
// the bottom, and a full replay leaves scrollback as the exact new
|
|
3156
|
+
// transcript instead of preservation's stale seams.
|
|
3157
|
+
this.coalescingTerminal.passNextFullRedraw();
|
|
3121
3158
|
const activeHeader = this.customHeader ?? this.builtInHeader;
|
|
3122
3159
|
if (isExpandable(activeHeader)) {
|
|
3123
3160
|
activeHeader.setExpanded(expanded);
|
|
@@ -3134,6 +3171,8 @@ export class InteractiveMode {
|
|
|
3134
3171
|
toggleThinkingBlockVisibility() {
|
|
3135
3172
|
this.hideThinkingBlock = !this.hideThinkingBlock;
|
|
3136
3173
|
this.settingsManager.setHideThinkingBlock(this.hideThinkingBlock);
|
|
3174
|
+
// Same reasoning as setToolsExpanded.
|
|
3175
|
+
this.coalescingTerminal.passNextFullRedraw();
|
|
3137
3176
|
// Rebuild chat from session messages
|
|
3138
3177
|
this.chatContainer.clear();
|
|
3139
3178
|
this.rebuildChatFromMessages();
|