@esso0428/pi-subagents 0.17.12 → 0.17.13
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 +7 -0
- package/dist/ui/agent-widget.d.ts +100 -94
- package/dist/ui/agent-widget.d.ts.map +1 -1
- package/dist/ui/agent-widget.js +573 -368
- package/dist/ui/agent-widget.js.map +1 -1
- package/package.json +1 -1
- package/src/ui/agent-widget.ts +603 -362
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.17.13] - 2026-10-01
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **Repaired the Agents widget lifecycle and interaction model**: runtime agent updates are cached and rendered without stale rows, modal history selectors suspend background widget input, and nested agents remain visible under their owning parent.
|
|
14
|
+
- **Preserved durable transcript-backed agents after runtime cleanup**, including model and accumulated-cost details for completed and historical rows.
|
|
15
|
+
- **Improved widget layout resilience** with correct scrollbar bounds and restoration of the v0.17.6 selector foundation across short and long terminal layouts.
|
|
16
|
+
|
|
10
17
|
## [0.17.12] - 2026-09-30
|
|
11
18
|
|
|
12
19
|
### Fixed
|
|
@@ -4,19 +4,17 @@
|
|
|
4
4
|
* Displays a tree of agents with animated spinners, live stats, and activity descriptions.
|
|
5
5
|
* Uses the callback form of setWidget for themed rendering.
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
8
|
-
import type { AgentInvocation, SubagentType, WidgetMode } from "../types.js";
|
|
7
|
+
import type { AgentManager } from "../agent-manager.js";
|
|
8
|
+
import type { AgentInvocation, AgentRecord, SubagentType, WidgetMode } from "../types.js";
|
|
9
9
|
import { type LifetimeUsage, type SessionLike } from "../usage.js";
|
|
10
10
|
/** Maximum number of rendered lines before overflow collapse kicks in. */
|
|
11
11
|
export declare const MAX_WIDGET_LINES = 12;
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
showCost?: () => boolean;
|
|
19
|
-
}
|
|
12
|
+
/**
|
|
13
|
+
* Derive the widget ceiling from the terminal height while retaining the
|
|
14
|
+
* historical MAX_WIDGET_LINES ceiling. Very short terminals may have no room
|
|
15
|
+
* for the widget; that is preferable to consuming the editor/input area.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getWidgetLineBudget(rows: number): number;
|
|
20
18
|
/** Braille spinner frames for animated running indicator. */
|
|
21
19
|
export declare const SPINNER: string[];
|
|
22
20
|
/** Statuses that indicate an error/non-success outcome (used for linger behavior and icon rendering). */
|
|
@@ -25,6 +23,19 @@ export type Theme = {
|
|
|
25
23
|
fg(color: string, text: string): string;
|
|
26
24
|
bold(text: string): string;
|
|
27
25
|
};
|
|
26
|
+
export type AgentWidgetOpenMode = "live" | "history";
|
|
27
|
+
export type AgentWidgetOpenCallback = (record: AgentRecord, mode: AgentWidgetOpenMode) => void | Promise<void>;
|
|
28
|
+
export interface AgentWidgetOptions {
|
|
29
|
+
canOpenHistory?: (record: AgentRecord) => boolean;
|
|
30
|
+
onOpen?: AgentWidgetOpenCallback;
|
|
31
|
+
showCost?: () => boolean;
|
|
32
|
+
}
|
|
33
|
+
/** @deprecated Use AgentWidgetOpenMode. */
|
|
34
|
+
export type AgentOpenMode = AgentWidgetOpenMode;
|
|
35
|
+
/** @deprecated Use AgentWidgetOpenCallback. */
|
|
36
|
+
export type AgentOpenCallback = AgentWidgetOpenCallback;
|
|
37
|
+
/** @deprecated Use AgentWidgetOptions.canOpenHistory. */
|
|
38
|
+
export type AgentHistoryCapability = AgentWidgetOptions["canOpenHistory"];
|
|
28
39
|
export type UICtx = {
|
|
29
40
|
setStatus(key: string, text: string | undefined): void;
|
|
30
41
|
setWidget(key: string, content: undefined | ((tui: any, theme: Theme) => {
|
|
@@ -49,7 +60,7 @@ export interface AgentActivity {
|
|
|
49
60
|
turnCount: number;
|
|
50
61
|
/** Effective max turns for this agent (undefined = unlimited). */
|
|
51
62
|
maxTurns?: number;
|
|
52
|
-
/** Lifetime
|
|
63
|
+
/** Lifetime usage breakdown — see LifetimeUsage docs. */
|
|
53
64
|
lifetimeUsage: LifetimeUsage;
|
|
54
65
|
}
|
|
55
66
|
/** Metadata attached to Agent tool results for custom rendering. */
|
|
@@ -65,7 +76,7 @@ export interface AgentDetails {
|
|
|
65
76
|
activity?: string;
|
|
66
77
|
/** Current spinner frame index (for animated running indicator). */
|
|
67
78
|
spinnerFrame?: number;
|
|
68
|
-
/** Short
|
|
79
|
+
/** Short model name if different from parent (e.g. "haiku", "sonnet"). */
|
|
69
80
|
modelName?: string;
|
|
70
81
|
/** Notable config tags (e.g. ["thinking: high", "isolated"]). */
|
|
71
82
|
tags?: string[];
|
|
@@ -82,20 +93,6 @@ export interface AgentDetails {
|
|
|
82
93
|
export declare function fgPreservingNestedStyles(theme: Theme, color: string, text: string): string;
|
|
83
94
|
/** Format a token count compactly: "33.8k token", "1.2M token". */
|
|
84
95
|
export declare function formatTokens(count: number): string;
|
|
85
|
-
/**
|
|
86
|
-
* Format a cost as `~$0.0042`, or "" when there is nothing to show.
|
|
87
|
-
*
|
|
88
|
-
* The tilde is load-bearing: this is pi's own estimate from the model's listed
|
|
89
|
-
* rates, not a billed figure, and the surfaces that print it sit next to token
|
|
90
|
-
* counts that ARE exact.
|
|
91
|
-
*
|
|
92
|
-
* Nothing is printed for zero, which is also what a model with no pricing data
|
|
93
|
-
* reports: `$0.00` beside a local model's tokens would claim its cost was
|
|
94
|
-
* measured and found to be nothing, rather than never measured at all. For the
|
|
95
|
-
* same reason a real cost too small for four decimals reads `<$0.0001` — it was
|
|
96
|
-
* measured, and rounding it to `~$0.0000` would say the opposite.
|
|
97
|
-
*/
|
|
98
|
-
export declare function formatCost(cost: number): string;
|
|
99
96
|
/**
|
|
100
97
|
* Token count with optional context-fill % and compaction-count annotations.
|
|
101
98
|
* Thresholds for percent: <70% dim, 70–85% warning, ≥85% error.
|
|
@@ -113,17 +110,13 @@ export declare function formatTurns(turnCount: number, maxTurns?: number | null)
|
|
|
113
110
|
export declare function formatMs(ms: number): string;
|
|
114
111
|
/** Format duration from start/completed timestamps. */
|
|
115
112
|
export declare function formatDuration(startedAt: number, completedAt?: number): string;
|
|
113
|
+
/** Format an estimated model cost without implying billing precision. */
|
|
114
|
+
export declare function formatCost(cost: number): string;
|
|
116
115
|
/** Get display name for any agent type (built-in or custom). */
|
|
117
116
|
export declare function getDisplayName(type: SubagentType): string;
|
|
118
117
|
/** Short label for prompt mode: "twin" for append, nothing for replace (the default). */
|
|
119
118
|
export declare function getPromptModeLabel(type: SubagentType): string | undefined;
|
|
120
|
-
/**
|
|
121
|
-
* Mode label is not included — callers add it where they want it.
|
|
122
|
-
*
|
|
123
|
-
* Both model forms come back so each surface can pick by width; the
|
|
124
|
-
* "(asked X)" annotation is applied here rather than by callers, so a value the
|
|
125
|
-
* spawn did not honor cannot be rendered as though it had been (#182).
|
|
126
|
-
*/
|
|
119
|
+
/** Mode label is not included — callers add it where they want it. */
|
|
127
120
|
export declare function buildInvocationTags(invocation: AgentInvocation | undefined): {
|
|
128
121
|
modelName?: string;
|
|
129
122
|
modelId?: string;
|
|
@@ -134,55 +127,43 @@ export declare function describeActivity(activeTools: Map<string, string>, respo
|
|
|
134
127
|
export declare class AgentWidget {
|
|
135
128
|
private manager;
|
|
136
129
|
private agentActivity;
|
|
137
|
-
/**
|
|
138
|
-
* Read live at render time. Selects which agents the widget shows — see
|
|
139
|
-
* `WidgetMode`. Defaults to `"all"` when a caller supplies no policy; the
|
|
140
|
-
* extension supplies one defaulting to `"background"`.
|
|
141
|
-
*/
|
|
130
|
+
/** Read live at render time. Selects which agents the widget shows. */
|
|
142
131
|
private mode;
|
|
143
132
|
private uiCtx;
|
|
144
133
|
private widgetFrame;
|
|
145
134
|
private widgetInterval;
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
135
|
+
private inputUnsub;
|
|
136
|
+
/** Whether arrow keys currently navigate the agent roster. */
|
|
137
|
+
private navigationActive;
|
|
138
|
+
/** Number of modal surfaces currently owning this listener's input suspension. */
|
|
139
|
+
private navigationSuspensionDepth;
|
|
140
|
+
/** Stable identity of the selected row, so roster changes do not jump selection. */
|
|
141
|
+
private selectedAgentId;
|
|
142
|
+
/** Last logical roster index of the selected row, used when it disappears. */
|
|
143
|
+
private selectedRosterIndex;
|
|
144
|
+
/** First logical row currently represented by the bounded viewport. */
|
|
145
|
+
private viewportStart;
|
|
146
|
+
/** Cached records and roster. Rebuilt by update(), never by an arrow press. */
|
|
147
|
+
private cachedAgents;
|
|
148
|
+
private cachedRoster;
|
|
149
|
+
private rosterCacheKey;
|
|
150
|
+
private rosterCacheInitialized;
|
|
151
|
+
/** Terminal history capability is a potentially filesystem-backed lookup. */
|
|
152
|
+
private historyOpenabilityCache;
|
|
150
153
|
/** Whether the widget callback is currently registered with the TUI. */
|
|
151
154
|
private widgetRegistered;
|
|
152
155
|
/** Cached TUI reference from widget factory callback, used for requestRender(). */
|
|
153
156
|
private tui;
|
|
154
157
|
/** Last status bar text, used to avoid redundant setStatus calls. */
|
|
155
158
|
private lastStatusText;
|
|
156
|
-
|
|
157
|
-
private
|
|
158
|
-
private
|
|
159
|
-
private
|
|
160
|
-
private
|
|
161
|
-
private viewportStart;
|
|
162
|
-
private selectedRosterIndex;
|
|
163
|
-
private openOptions;
|
|
164
|
-
private showCost;
|
|
165
|
-
private showModel;
|
|
159
|
+
/** Snapshot of the state used for the last widget registration/render request. */
|
|
160
|
+
private lastRenderKey;
|
|
161
|
+
private readonly openOptions;
|
|
162
|
+
private readonly showCost;
|
|
163
|
+
private readonly showModel;
|
|
166
164
|
constructor(manager: AgentManager, agentActivity: Map<string, AgentActivity>,
|
|
167
|
-
/**
|
|
168
|
-
|
|
169
|
-
* `WidgetMode`. Defaults to `"all"` when a caller supplies no policy; the
|
|
170
|
-
* extension supplies one defaulting to `"background"`.
|
|
171
|
-
*/
|
|
172
|
-
mode?: () => WidgetMode,
|
|
173
|
-
/**
|
|
174
|
-
* Read live at render time, like `mode`. Whether running agents show an
|
|
175
|
-
* estimated cost beside their token count. Defaults to off — the extension
|
|
176
|
-
* supplies the user's `showCost` setting.
|
|
177
|
-
*/
|
|
178
|
-
/**
|
|
179
|
-
* Read live at render time, like `mode`. Whether running agents name the
|
|
180
|
-
* model driving them and the thinking level it is running at. Defaults to
|
|
181
|
-
* off — the extension supplies the user's `showModel` setting — because the
|
|
182
|
-
* row is already dense and the same pair is on the tool result and in the
|
|
183
|
-
* conversation viewer unconditionally.
|
|
184
|
-
*/
|
|
185
|
-
showCostOrOptions?: (() => boolean) | AgentWidgetOptions, showModel?: () => boolean);
|
|
165
|
+
/** Read live at render time. Selects which agents the widget shows. */
|
|
166
|
+
mode?: () => WidgetMode, showCostOrOptions?: (() => boolean) | AgentWidgetOptions, showModel?: () => boolean);
|
|
186
167
|
/**
|
|
187
168
|
* Agents eligible for the widget, per the current `WidgetMode`:
|
|
188
169
|
* - `off`: none (the widget's existing empty-state path hides it entirely).
|
|
@@ -194,39 +175,62 @@ export declare class AgentWidget {
|
|
|
194
175
|
* only proven-foreground runs drop out — nothing else silently vanishes.
|
|
195
176
|
* - `all`: every agent.
|
|
196
177
|
*/
|
|
178
|
+
private widgetAgentsFromManager;
|
|
179
|
+
/** Records currently visible to the widget; safe for render and input paths. */
|
|
197
180
|
private widgetAgents;
|
|
198
|
-
|
|
181
|
+
private canOpenHistory;
|
|
182
|
+
private historyOpenabilityKey;
|
|
183
|
+
/**
|
|
184
|
+
* Cache terminal history capability by the record state that can affect it.
|
|
185
|
+
* The supplied predicate may call `existsSync`, so it must not run from a
|
|
186
|
+
* timer refresh, render-key calculation, or arrow-navigation path more than
|
|
187
|
+
* once for the same terminal record state.
|
|
188
|
+
*/
|
|
189
|
+
private cachedCanOpenHistory;
|
|
190
|
+
/** Refresh the manager snapshot and openability cache at lifecycle/update time. */
|
|
191
|
+
private refreshRoster;
|
|
192
|
+
/** Suspend only this listener's keyboard ownership; never alter the widget. */
|
|
199
193
|
suspendNavigation(): void;
|
|
200
|
-
/**
|
|
194
|
+
/** Restore one layer of this listener's keyboard ownership. */
|
|
201
195
|
resumeNavigation(): void;
|
|
202
196
|
/** Set the UI context (grabbed from first tool execution). */
|
|
203
197
|
setUICtx(ctx: UICtx): boolean;
|
|
204
|
-
/**
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
*/
|
|
198
|
+
/** Request a render on the currently registered TUI without touching input. */
|
|
199
|
+
requestUiRefresh(force?: boolean): boolean;
|
|
200
|
+
/** Called on each new turn (tool_execution_start). */
|
|
208
201
|
onTurnStart(): void;
|
|
209
|
-
/**
|
|
202
|
+
/** Keep the spinner/elapsed-time timer alive only while a visible agent runs. */
|
|
210
203
|
ensureTimer(): void;
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
204
|
+
private syncTimer;
|
|
205
|
+
/**
|
|
206
|
+
* Retained for the lifecycle call sites. Terminal visibility is determined
|
|
207
|
+
* by the manager record and the history capability, not a one-turn timer.
|
|
208
|
+
*/
|
|
209
|
+
markFinished(_agentId: string): void;
|
|
210
|
+
/** Retained for lifecycle call sites; terminal rows are record-driven now. */
|
|
211
|
+
markRunning(_agentId: string): void;
|
|
215
212
|
/**
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
*
|
|
219
|
-
*
|
|
220
|
-
*
|
|
213
|
+
* Records represented by selectable rows in the above-editor widget.
|
|
214
|
+
*
|
|
215
|
+
* Keep this order as the single source of truth for both rendering and key
|
|
216
|
+
* navigation. `listAgents()` is newest-first; active rows come first so the
|
|
217
|
+
* panel exposes currently useful work before terminal history.
|
|
221
218
|
*/
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
private updateViewport;
|
|
219
|
+
private roster;
|
|
220
|
+
/** True when pi's prompt editor owns the keyboard. */
|
|
225
221
|
private editorHasFocus;
|
|
222
|
+
private selectedIndexOf;
|
|
226
223
|
private deactivate;
|
|
227
|
-
|
|
228
|
-
private
|
|
229
|
-
|
|
224
|
+
/** Resume navigation from the retained row, or select the first row. */
|
|
225
|
+
private activate;
|
|
226
|
+
/** Move the selected row, activating only from an empty focused editor. */
|
|
227
|
+
private moveSelection;
|
|
228
|
+
private openSelected;
|
|
229
|
+
/** Handle terminal input before it reaches the focused prompt editor. */
|
|
230
|
+
handleKey(data: string): {
|
|
231
|
+
consume?: boolean;
|
|
232
|
+
data?: string;
|
|
233
|
+
} | undefined;
|
|
230
234
|
/** Render a finished agent line. */
|
|
231
235
|
private renderFinishedLine;
|
|
232
236
|
/**
|
|
@@ -234,7 +238,9 @@ export declare class AgentWidget {
|
|
|
234
238
|
* reading live state each time instead of capturing it in a closure.
|
|
235
239
|
*/
|
|
236
240
|
private renderWidget;
|
|
237
|
-
/**
|
|
241
|
+
/** Build a render-relevant snapshot without capturing mutable records. */
|
|
242
|
+
private renderKey;
|
|
243
|
+
/** Force an immediate widget update. `advanceSpinner` is reserved for the timer. */
|
|
238
244
|
update(advanceSpinner?: boolean): void;
|
|
239
245
|
dispose(): void;
|
|
240
246
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-widget.d.ts","sourceRoot":"","sources":["../../src/ui/agent-widget.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"agent-widget.d.ts","sourceRoot":"","sources":["../../src/ui/agent-widget.ts"],"names":[],"mappings":"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"}
|