zidane 5.0.6 → 5.1.0
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/README.md +37 -1
- package/dist/{agent-JhicgLOV.d.ts → agent-B0vrSTQ9.d.ts} +162 -4
- package/dist/agent-B0vrSTQ9.d.ts.map +1 -0
- package/dist/chat.d.ts +526 -81
- package/dist/chat.d.ts.map +1 -1
- package/dist/chat.js +2 -2
- package/dist/contexts/docker.d.ts +7 -0
- package/dist/contexts/docker.d.ts.map +1 -0
- package/dist/{contexts-3Arvn7yR.js → contexts/docker.js} +2 -128
- package/dist/contexts/docker.js.map +1 -0
- package/dist/contexts-BwiHIr2w.js +129 -0
- package/dist/contexts-BwiHIr2w.js.map +1 -0
- package/dist/contexts.d.ts +3 -2
- package/dist/contexts.js +2 -2
- package/dist/index-CFxhms_B.d.ts +1303 -0
- package/dist/index-CFxhms_B.d.ts.map +1 -0
- package/dist/index-DYcymRtr.d.ts +26 -0
- package/dist/index-DYcymRtr.d.ts.map +1 -0
- package/dist/{index-t_W9i7Ql.d.ts → index-X6Q9PN_A.d.ts} +3 -3
- package/dist/{index-t_W9i7Ql.d.ts.map → index-X6Q9PN_A.d.ts.map} +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.js +10 -9
- package/dist/index.js.map +1 -1
- package/dist/login-BiuHyuEh.js +1276 -0
- package/dist/login-BiuHyuEh.js.map +1 -0
- package/dist/{mcp-Dw-fRPVk.js → mcp-BgwK6ySj.js} +184 -9
- package/dist/mcp-BgwK6ySj.js.map +1 -0
- package/dist/mcp.d.ts +2 -2
- package/dist/mcp.js +1 -1
- package/dist/{messages-xaYMMFlb.js → messages-BAFLvH_z.js} +1 -1
- package/dist/{messages-xaYMMFlb.js.map → messages-BAFLvH_z.js.map} +1 -1
- package/dist/{presets-BRFH2qsQ.js → presets-CI8_fyvX.js} +2 -2
- package/dist/{presets-BRFH2qsQ.js.map → presets-CI8_fyvX.js.map} +1 -1
- package/dist/presets.d.ts +2 -2
- package/dist/presets.js +1 -1
- package/dist/{providers-BCbdv99U.js → providers-C6-vhaVu.js} +2 -2
- package/dist/{providers-BCbdv99U.js.map → providers-C6-vhaVu.js.map} +1 -1
- package/dist/providers.d.ts +1 -1
- package/dist/providers.js +2 -2
- package/dist/session/sqlite.d.ts +1 -1
- package/dist/{session-791hhrFa.js → session-pS4Vt4dl.js} +1 -1
- package/dist/{session-791hhrFa.js.map → session-pS4Vt4dl.js.map} +1 -1
- package/dist/session.d.ts +1 -1
- package/dist/session.js +2 -2
- package/dist/skills.d.ts +2 -2
- package/dist/{stats-DZIsGqzu.js → stats-DvCtBRwK.js} +1 -1
- package/dist/{stats-DZIsGqzu.js.map → stats-DvCtBRwK.js.map} +1 -1
- package/dist/{theme-C3JHZ5y9.d.ts → theme-CcGLMJrn.d.ts} +732 -20
- package/dist/theme-CcGLMJrn.d.ts.map +1 -0
- package/dist/{tools-CLazLRb4.js → tools-d1yeA6xK.js} +399 -13
- package/dist/tools-d1yeA6xK.js.map +1 -0
- package/dist/tools.d.ts +2 -2
- package/dist/tools.js +1 -1
- package/dist/tui.d.ts +421 -39
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +5755 -2367
- package/dist/tui.js.map +1 -1
- package/dist/{turn-operations-BfEh-GER.js → turn-operations-BzOIM6Of.js} +1984 -108
- package/dist/turn-operations-BzOIM6Of.js.map +1 -0
- package/dist/types-Bx_F8jet.js.map +1 -1
- package/dist/{index-CXVvqTQj.d.ts → types-OtrV6LJT.d.ts} +2 -27
- package/dist/types-OtrV6LJT.d.ts.map +1 -0
- package/dist/types.d.ts +4 -3
- package/dist/types.js +1 -1
- package/package.json +5 -1
- package/dist/agent-JhicgLOV.d.ts.map +0 -1
- package/dist/contexts-3Arvn7yR.js.map +0 -1
- package/dist/index-2yLUyTbc.d.ts +0 -430
- package/dist/index-2yLUyTbc.d.ts.map +0 -1
- package/dist/index-CXVvqTQj.d.ts.map +0 -1
- package/dist/mcp-Dw-fRPVk.js.map +0 -1
- package/dist/theme-C3JHZ5y9.d.ts.map +0 -1
- package/dist/tools-CLazLRb4.js.map +0 -1
- package/dist/turn-operations-BfEh-GER.js.map +0 -1
package/dist/tools.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { A as listFiles, C as SkillsRunScriptToolOptions, D as shell, E as createSkillsReadTool, F as edit, M as createInteractionTool, N as grep, O as readFile, P as glob, S as createSkillsUseTool, T as SkillsReadToolOptions, _ as ChildAgent, b as createSpawnTool, d as writeFile, f as ValidationResult, g as createToolSearchTool, h as ToolSearchToolOptions, j as InteractionToolOptions, k as multiEdit, m as LazyToolEntry, p as validateToolArgs, v as SpawnToolOptions, w as createSkillsRunScriptTool, x as SkillsUseToolOptions, y as SpawnToolState } from "./index-
|
|
1
|
+
import { b as ToolMap, v as ToolContext, y as ToolDef } from "./agent-B0vrSTQ9.js";
|
|
2
|
+
import { A as listFiles, C as SkillsRunScriptToolOptions, D as shell, E as createSkillsReadTool, F as edit, M as createInteractionTool, N as grep, O as readFile, P as glob, S as createSkillsUseTool, T as SkillsReadToolOptions, _ as ChildAgent, b as createSpawnTool, d as writeFile, f as ValidationResult, g as createToolSearchTool, h as ToolSearchToolOptions, j as InteractionToolOptions, k as multiEdit, m as LazyToolEntry, p as validateToolArgs, v as SpawnToolOptions, w as createSkillsRunScriptTool, x as SkillsUseToolOptions, y as SpawnToolState } from "./index-CFxhms_B.js";
|
|
3
3
|
export { ChildAgent, InteractionToolOptions, LazyToolEntry, SkillsReadToolOptions, SkillsRunScriptToolOptions, SkillsUseToolOptions, SpawnToolOptions, SpawnToolState, ToolContext, ToolDef, ToolMap, ToolSearchToolOptions, ValidationResult, createInteractionTool, createSkillsReadTool, createSkillsRunScriptTool, createSkillsUseTool, createSpawnTool, createToolSearchTool, edit, glob, grep, listFiles, multiEdit, readFile, shell, validateToolArgs, writeFile };
|
package/dist/tools.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as multiEdit, c as grep, f as createToolSearchTool, g as validateToolArgs, h as createSkillsReadTool, i as readFile, l as glob, m as createSkillsRunScriptTool, n as createSpawnTool, o as listFiles, p as createSkillsUseTool, r as shell, s as createInteractionTool, t as writeFile, u as edit } from "./tools-
|
|
1
|
+
import { a as multiEdit, c as grep, f as createToolSearchTool, g as validateToolArgs, h as createSkillsReadTool, i as readFile, l as glob, m as createSkillsRunScriptTool, n as createSpawnTool, o as listFiles, p as createSkillsUseTool, r as shell, s as createInteractionTool, t as writeFile, u as edit } from "./tools-d1yeA6xK.js";
|
|
2
2
|
export { createInteractionTool, createSkillsReadTool, createSkillsRunScriptTool, createSkillsUseTool, createSpawnTool, createToolSearchTool, edit, glob, grep, listFiles, multiEdit, readFile, shell, validateToolArgs, writeFile };
|
package/dist/tui.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { O as SessionData, Ot as SessionTurn, jt as ThinkingLevel, x as SkillConfig } from "./agent-B0vrSTQ9.js";
|
|
2
|
+
import { A as DiscoveryError, B as InteractionRequest, Bt as StreamEvent, D as PromptSegmentRef, E as PromptSegment, Kt as KeyBindings, Nn as AgentRegistry, O as splitPromptSegments, Rt as SessionMeta, V as InteractionResponse, _n as ModelInfo, an as CompletionReference, b as ApprovalRequest, c as ThemeColors, gt as ChatOptions, in as CompletionProvider, jn as AgentAccent, k as DiscoveredMcp, m as SessionExportFormat, mn as ProviderKey, on as CompletionState, pn as ProviderAuth, pt as EnabledAllowlistKey, s as Theme, vt as ResolvedConfig, y as ApprovalDecision, zt as Settings } from "./theme-CcGLMJrn.js";
|
|
3
3
|
import * as _$react from "react";
|
|
4
4
|
import { ReactNode } from "react";
|
|
5
5
|
import { SyntaxStyle } from "@opentui/core";
|
|
@@ -147,6 +147,91 @@ declare function Footer({
|
|
|
147
147
|
* `<text>` regardless of where the parent grabbed its palette.
|
|
148
148
|
*/
|
|
149
149
|
declare function renderHintSpans(hints: readonly Hint[], COLOR: ThemeColors): ReactNode;
|
|
150
|
+
/**
|
|
151
|
+
* One run of styled text in a {@link TitleOverlay} meta segment array.
|
|
152
|
+
* `color` defaults to `COLOR.dim` (the standard secondary tone for
|
|
153
|
+
* meta info); supply an explicit color to accent a value — typical use
|
|
154
|
+
* is a `warn` tint on a primary stat (turn count, session count) while
|
|
155
|
+
* surrounding separators stay `mute`.
|
|
156
|
+
*/
|
|
157
|
+
interface MetaSegment {
|
|
158
|
+
text: string;
|
|
159
|
+
/** Foreground color. Defaults to `COLOR.dim`. */
|
|
160
|
+
color?: string;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Colored title for a full-screen bordered surface. The `title` slot
|
|
164
|
+
* rides `titleColor` (defaults to `COLOR.brand` — the theme's primary
|
|
165
|
+
* anchor) on the LEFT of the top border; the optional `meta` slot
|
|
166
|
+
* rides on the RIGHT.
|
|
167
|
+
*
|
|
168
|
+
* `meta` accepts either:
|
|
169
|
+
* - a plain `string` → rendered entirely in `COLOR.dim` (the simple
|
|
170
|
+
* "single dim label" case, e.g. `"5 sessions"`).
|
|
171
|
+
* - a {@link MetaSegment} array → rendered concatenated with each
|
|
172
|
+
* segment's own color (lets a stat like turn count stand out from
|
|
173
|
+
* the surrounding separators).
|
|
174
|
+
*
|
|
175
|
+
* Responsive behavior (driven by `useTerminalDimensions`):
|
|
176
|
+
* - Both fit → render both with a 2-cell visual gap between them.
|
|
177
|
+
* - Meta doesn't fit → drop meta; title takes the full budget.
|
|
178
|
+
* - Title doesn't fit → truncate with a trailing `…`.
|
|
179
|
+
* - Terminal is degenerately narrow → render nothing.
|
|
180
|
+
*
|
|
181
|
+
* The width math assumes the immediate parent fills the screen's
|
|
182
|
+
* content area (the standard `flexGrow: 1` flex column). Hosts running
|
|
183
|
+
* the bordered box inside a narrower container should pass `parentWidth`
|
|
184
|
+
* to override the terminal-width assumption.
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```tsx
|
|
188
|
+
* <box style={{ flexDirection: 'column', flexGrow: 1 }}>
|
|
189
|
+
* <box style={{ border: true, flexGrow: 1 }}>...</box>
|
|
190
|
+
* <TitleOverlay
|
|
191
|
+
* title="my session"
|
|
192
|
+
* meta={[
|
|
193
|
+
* { text: '#abcd' },
|
|
194
|
+
* { text: ' · ', color: COLOR.mute },
|
|
195
|
+
* { text: '5 turns', color: COLOR.warn },
|
|
196
|
+
* ]}
|
|
197
|
+
* />
|
|
198
|
+
* </box>
|
|
199
|
+
* ```
|
|
200
|
+
*/
|
|
201
|
+
declare function TitleOverlay({
|
|
202
|
+
title,
|
|
203
|
+
meta,
|
|
204
|
+
titleColor,
|
|
205
|
+
parentWidth,
|
|
206
|
+
statusIcon
|
|
207
|
+
}: {
|
|
208
|
+
title: string; /** Optional right-aligned secondary segment. Dropped first when space runs out. */
|
|
209
|
+
meta?: string | readonly MetaSegment[] | null; /** Defaults to `COLOR.brand`. */
|
|
210
|
+
titleColor?: string;
|
|
211
|
+
/**
|
|
212
|
+
* Override for the parent container's width in columns. Defaults to
|
|
213
|
+
* `terminalWidth - 2` to match the standard screen layout that has
|
|
214
|
+
* 1-cell padding on each side.
|
|
215
|
+
*/
|
|
216
|
+
parentWidth?: number;
|
|
217
|
+
/**
|
|
218
|
+
* Optional single-cell glyph rendered immediately AFTER the title
|
|
219
|
+
* text. Used by the chat screen to surface a streaming / compacting
|
|
220
|
+
* indicator next to the session name — keeps the affordance close to
|
|
221
|
+
* what it qualifies (the conversation) without claiming a full row
|
|
222
|
+
* above the prompt input.
|
|
223
|
+
*
|
|
224
|
+
* Sized as one cell + one leading space when present, so the title
|
|
225
|
+
* budget reserves two extra columns. Pass a {@link StatusSpinner}
|
|
226
|
+
* or any other 1-cell `<span>`; `null` (the default) takes no space.
|
|
227
|
+
*
|
|
228
|
+
* Render order is `title <space> icon`. The leading title slot reads
|
|
229
|
+
* naturally — eye lands on the name first, then catches the activity
|
|
230
|
+
* indicator — and avoids the visual jitter that came with the icon
|
|
231
|
+
* pulsing on the leftmost position.
|
|
232
|
+
*/
|
|
233
|
+
statusIcon?: ReactNode;
|
|
234
|
+
}): ReactNode;
|
|
150
235
|
/**
|
|
151
236
|
* Plain-text width estimate for a list of {@link Hint}s rendered via
|
|
152
237
|
* `renderHintSpans` — `<key> <label> · <key> <label> · …`. Exported so
|
|
@@ -158,7 +243,18 @@ declare function hintsLength(hints: readonly Hint[]): number;
|
|
|
158
243
|
declare function Spinner({
|
|
159
244
|
label
|
|
160
245
|
}: {
|
|
161
|
-
label
|
|
246
|
+
label?: string;
|
|
247
|
+
}): ReactNode;
|
|
248
|
+
/**
|
|
249
|
+
* Glyph-only spinner painted in a caller-chosen color. Used as the
|
|
250
|
+
* status icon prefixed to the chat screen's session title — a single
|
|
251
|
+
* cell wide so it slots in front of the title text without disturbing
|
|
252
|
+
* the existing `TITLE_OVERLAY_WRAP` budget math.
|
|
253
|
+
*/
|
|
254
|
+
declare function StatusSpinner({
|
|
255
|
+
color
|
|
256
|
+
}: {
|
|
257
|
+
color: string;
|
|
162
258
|
}): ReactNode;
|
|
163
259
|
declare function Transcript({
|
|
164
260
|
events,
|
|
@@ -174,19 +270,6 @@ declare function Transcript({
|
|
|
174
270
|
*/
|
|
175
271
|
selectedTurnId?: string | null;
|
|
176
272
|
}): ReactNode;
|
|
177
|
-
/**
|
|
178
|
-
* Per-event visibility — filters honor user toggles and the
|
|
179
|
-
* `hideSubagentOutput` setting. When subagent output is hidden:
|
|
180
|
-
* - Child-agent events are filtered down to the `spawn-start` /
|
|
181
|
-
* `spawn-end` markers so the user still sees "🌱 working… 🌳 done".
|
|
182
|
-
* - The parent's `tool-result` for `spawn` is hidden too. Its body
|
|
183
|
-
* duplicates `spawn-end`'s stats line *and* the parent's next markdown
|
|
184
|
-
* turn ("Here's what the sub-agent found: …"). Showing it again
|
|
185
|
-
* produced an extra `┃ [sub-agent child-1] Completed …` block that
|
|
186
|
-
* the user just wanted gone.
|
|
187
|
-
*
|
|
188
|
-
* Exported so the visibility matrix can be unit-tested without rendering.
|
|
189
|
-
*/
|
|
190
273
|
declare function isVisible(event: StreamEvent, settings: Settings): boolean;
|
|
191
274
|
/**
|
|
192
275
|
* Resolve the top margin for an event given the one rendered just before it.
|
|
@@ -208,21 +291,86 @@ declare function isVisible(event: StreamEvent, settings: Settings): boolean;
|
|
|
208
291
|
*/
|
|
209
292
|
declare function marginTopFor(event: StreamEvent, previous: StreamEvent | undefined): number;
|
|
210
293
|
//#endregion
|
|
294
|
+
//#region src/tui/effort-picker.d.ts
|
|
295
|
+
declare function EffortPickerModal({
|
|
296
|
+
current,
|
|
297
|
+
supportsAdaptive,
|
|
298
|
+
onPick
|
|
299
|
+
}: {
|
|
300
|
+
current: ThinkingLevel | undefined;
|
|
301
|
+
supportsAdaptive: boolean;
|
|
302
|
+
onPick: (effort: ThinkingLevel) => void;
|
|
303
|
+
}): _$react.ReactNode;
|
|
304
|
+
//#endregion
|
|
305
|
+
//#region src/tui/interaction-block.d.ts
|
|
306
|
+
/**
|
|
307
|
+
* InteractionBlock — picker UI for `present_plan` and `ask_user` tool calls.
|
|
308
|
+
*
|
|
309
|
+
* Sits in the chat screen's prompt slot whenever the head of the
|
|
310
|
+
* interactions queue is non-empty (live or resumed — the App layer
|
|
311
|
+
* doesn't differentiate at this layer). Two surfaces driven off the
|
|
312
|
+
* request's discriminator:
|
|
313
|
+
*
|
|
314
|
+
* - `plan` → renders the title + markdown body + (optional) step list,
|
|
315
|
+
* then a 3-option decision picker. Reject and revise can flow into a
|
|
316
|
+
* comment textarea for free-text feedback before final submit.
|
|
317
|
+
*
|
|
318
|
+
* - `question` → renders the question text, then a choice picker
|
|
319
|
+
* (when the model provided choices) or a free-text answer textarea
|
|
320
|
+
* (otherwise).
|
|
321
|
+
*
|
|
322
|
+
* Esc aborts the entire run via the parent keyboard handler; per-call
|
|
323
|
+
* accept/deny only happens through the picker below — same convention
|
|
324
|
+
* as `ApprovalBlock`.
|
|
325
|
+
*/
|
|
326
|
+
declare function InteractionBlock({
|
|
327
|
+
request,
|
|
328
|
+
onResolve
|
|
329
|
+
}: {
|
|
330
|
+
request: InteractionRequest; /** Submit the user's response to the head of the queue. */
|
|
331
|
+
onResolve: (response: InteractionResponse) => void;
|
|
332
|
+
}): ReactNode;
|
|
333
|
+
//#endregion
|
|
211
334
|
//#region src/tui/mcps-settings.d.ts
|
|
212
335
|
/**
|
|
213
|
-
*
|
|
214
|
-
*
|
|
215
|
-
*
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
*
|
|
219
|
-
*
|
|
220
|
-
*
|
|
336
|
+
* MCP server picker. Shows discovered entries with three columns:
|
|
337
|
+
*
|
|
338
|
+
* [enabled?] <name> <transport · detail> <auth status>
|
|
339
|
+
*
|
|
340
|
+
* Keybindings:
|
|
341
|
+
*
|
|
342
|
+
* ↑ / ↓ / k / j navigate
|
|
343
|
+
* enter / space toggle enabled/disabled
|
|
344
|
+
* l login (needs-auth or error rows; opens browser)
|
|
345
|
+
* o logout (authed rows; wipes stored tokens)
|
|
346
|
+
* esc close — also cancels an in-flight `authorizing` row
|
|
347
|
+
*
|
|
348
|
+
* Status badge legend:
|
|
349
|
+
*
|
|
350
|
+
* ✓ authed tokens stored + bootstrap connected
|
|
351
|
+
* ⚠ needs login bootstrap needs OAuth, no tokens
|
|
352
|
+
* … authorizing interactive login in flight
|
|
353
|
+
* ✗ <error> login attempt failed
|
|
354
|
+
*
|
|
355
|
+
* The state behind the badges is read via `useMcpAuthState()` so updates
|
|
356
|
+
* propagate live while the modal is open — a `mcp:auth:url` arriving from
|
|
357
|
+
* an in-flight login flips the row to `authorizing` without re-opening.
|
|
358
|
+
*
|
|
359
|
+
* Errors (`DiscoveryError[]`) surface in a warn-colored preamble so a
|
|
360
|
+
* broken `mcps.json` is loud rather than invisible.
|
|
221
361
|
*/
|
|
222
362
|
declare function McpsSettingsModal({
|
|
223
|
-
catalog
|
|
363
|
+
catalog,
|
|
364
|
+
errors,
|
|
365
|
+
onLogin,
|
|
366
|
+
onLogout,
|
|
367
|
+
onCancelLogin
|
|
224
368
|
}: {
|
|
225
369
|
catalog: readonly DiscoveredMcp[];
|
|
370
|
+
errors?: readonly DiscoveryError[];
|
|
371
|
+
onLogin: (name: string) => Promise<void> | void;
|
|
372
|
+
onLogout: (name: string) => void;
|
|
373
|
+
onCancelLogin: (name: string) => void;
|
|
226
374
|
}): _$react.ReactNode;
|
|
227
375
|
//#endregion
|
|
228
376
|
//#region src/tui/modal.d.ts
|
|
@@ -381,11 +529,18 @@ declare function SessionsScreen({
|
|
|
381
529
|
declare function ChatScreen({
|
|
382
530
|
events,
|
|
383
531
|
busy,
|
|
532
|
+
compacting,
|
|
533
|
+
queuedMessages,
|
|
534
|
+
queueSelectionIndex,
|
|
535
|
+
queueShortcuts,
|
|
536
|
+
onEnterQueueFromEmptyPrompt,
|
|
384
537
|
settings,
|
|
385
538
|
onSubmit,
|
|
386
539
|
session,
|
|
387
540
|
pending,
|
|
388
541
|
onApproval,
|
|
542
|
+
pendingInteraction,
|
|
543
|
+
onInteraction,
|
|
389
544
|
completionProviders,
|
|
390
545
|
onPopupOpenChange,
|
|
391
546
|
selectedTurnId,
|
|
@@ -393,6 +548,42 @@ declare function ChatScreen({
|
|
|
393
548
|
}: {
|
|
394
549
|
events: StreamEvent[];
|
|
395
550
|
busy: boolean;
|
|
551
|
+
/**
|
|
552
|
+
* `true` while a background auto-compaction is in flight. Drives the
|
|
553
|
+
* same title-overlay spinner as {@link busy} but in a different color
|
|
554
|
+
* — the conversation is "active" without anything streaming visibly.
|
|
555
|
+
*/
|
|
556
|
+
compacting?: boolean;
|
|
557
|
+
/**
|
|
558
|
+
* User prompts submitted while a run was already in flight. Rendered
|
|
559
|
+
* stacked in a small box above the prompt input until the active
|
|
560
|
+
* `agent.run()` finishes; each entry is then popped (FIFO) and pushed
|
|
561
|
+
* into the transcript as a user message. Empty by default.
|
|
562
|
+
*/
|
|
563
|
+
queuedMessages?: readonly QueuedPreview[];
|
|
564
|
+
/**
|
|
565
|
+
* Highlighted index inside {@link queuedMessages}, or `null` when the
|
|
566
|
+
* prompt textarea has focus. When non-null, the textarea blurs (same
|
|
567
|
+
* pattern as `selectMode`) so up / down / push / drop keys reach the
|
|
568
|
+
* App's keyboard handler instead of being eaten by the input.
|
|
569
|
+
*/
|
|
570
|
+
queueSelectionIndex?: number | null;
|
|
571
|
+
/**
|
|
572
|
+
* Resolved keybinding specs (`"ctrl+return"`, `"backspace"` — and
|
|
573
|
+
* whatever the user has configured) threaded into the queue UI so
|
|
574
|
+
* the title hint + per-row action hints track `keybindings.json`
|
|
575
|
+
* overrides. Required when the queue is wired — the binding strings
|
|
576
|
+
* are only ever read here.
|
|
577
|
+
*/
|
|
578
|
+
queueShortcuts?: QueueShortcuts;
|
|
579
|
+
/**
|
|
580
|
+
* Called from `PromptBlock` when the user presses `↑` on an empty
|
|
581
|
+
* prompt. Returning `true` parks focus on the last queued message
|
|
582
|
+
* (the one closest to the prompt) and tells the caller to suppress
|
|
583
|
+
* the default history-cycle behavior; `false` means "no queue, do
|
|
584
|
+
* your normal thing" and history-cycling proceeds.
|
|
585
|
+
*/
|
|
586
|
+
onEnterQueueFromEmptyPrompt?: () => boolean;
|
|
396
587
|
settings: Settings;
|
|
397
588
|
/**
|
|
398
589
|
* Submit handler — receives the raw prompt text and the parsed references
|
|
@@ -403,6 +594,15 @@ declare function ChatScreen({
|
|
|
403
594
|
session: SessionMeta | null; /** Head of the safe-mode approval queue, or `null` when nothing is pending. */
|
|
404
595
|
pending: ApprovalRequest | null; /** Resolve the active prompt with the user's pick. */
|
|
405
596
|
onApproval: (decision: ApprovalDecision) => void;
|
|
597
|
+
/**
|
|
598
|
+
* Head of the interactions queue (plan approval / Q&A). When set, the
|
|
599
|
+
* prompt slot renders {@link InteractionBlock} instead of the textarea
|
|
600
|
+
* so the user resolves the request before continuing typing. Works the
|
|
601
|
+
* same for live tool calls and resumed-session pending interactions —
|
|
602
|
+
* the App layer only swaps the resolver behind {@link onInteraction}.
|
|
603
|
+
*/
|
|
604
|
+
pendingInteraction: InteractionRequest | null; /** Submit the user's response to the head of the interactions queue. */
|
|
605
|
+
onInteraction: (response: InteractionResponse) => void;
|
|
406
606
|
/**
|
|
407
607
|
* Optional autocomplete providers. When passed, `PromptBlock` shows a
|
|
408
608
|
* popup above the textarea and intercepts navigation keys while it's
|
|
@@ -432,30 +632,182 @@ declare function ChatScreen({
|
|
|
432
632
|
*/
|
|
433
633
|
promptTriggerHints?: readonly Hint[];
|
|
434
634
|
}): ReactNode;
|
|
635
|
+
/**
|
|
636
|
+
* One entry in the queued-messages preview list shown above the prompt
|
|
637
|
+
* input. Only the displayable text + the user-provided ref spans are
|
|
638
|
+
* surfaced — the `references` carry-through happens entirely in the
|
|
639
|
+
* App layer (see `messageQueueRef`); this view doesn't need to know
|
|
640
|
+
* about them.
|
|
641
|
+
*/
|
|
642
|
+
interface QueuedPreview {
|
|
643
|
+
/** Raw prompt text the user typed (no `❯` prefix). */
|
|
644
|
+
text: string;
|
|
645
|
+
/**
|
|
646
|
+
* Optional chip spans from the original prompt (`@files`, `/skills`)
|
|
647
|
+
* — passed through so the queued entry highlights skill / file names
|
|
648
|
+
* the same way the echoed user-prompt event does once it lands in
|
|
649
|
+
* the transcript.
|
|
650
|
+
*/
|
|
651
|
+
refs?: readonly {
|
|
652
|
+
start: number;
|
|
653
|
+
end: number;
|
|
654
|
+
providerId: string;
|
|
655
|
+
}[];
|
|
656
|
+
}
|
|
657
|
+
/**
|
|
658
|
+
* Resolved keybinding specs the queue UI surfaces to the user. Each
|
|
659
|
+
* field is the literal string from `keybindings.json` ("ctrl+return",
|
|
660
|
+
* "backspace" — or whatever the user has configured) formatted for
|
|
661
|
+
* display via {@link formatBindingForDisplay} at render time so any
|
|
662
|
+
* customization (e.g. `"cmd+up"`, `"delete"`) shows the actual key.
|
|
663
|
+
*/
|
|
664
|
+
interface QueueShortcuts {
|
|
665
|
+
enter: string;
|
|
666
|
+
push: string;
|
|
667
|
+
drop: string;
|
|
668
|
+
}
|
|
435
669
|
//#endregion
|
|
436
|
-
//#region src/tui/
|
|
437
|
-
|
|
670
|
+
//#region src/tui/session-details-modal.d.ts
|
|
671
|
+
/** Result handed back by the host's export handler — drives the success footer. */
|
|
672
|
+
interface SessionExportResult {
|
|
673
|
+
/** Absolute path of the written file. */
|
|
674
|
+
filepath: string;
|
|
675
|
+
/** Format that was written — used to label the success banner. */
|
|
676
|
+
format: SessionExportFormat;
|
|
677
|
+
}
|
|
678
|
+
interface SessionDetailsModalActions {
|
|
679
|
+
/** Delete the entire session from the store. Parent handles teardown / navigation. */
|
|
680
|
+
onDelete: (sessionId: string) => void | Promise<void>;
|
|
438
681
|
/**
|
|
439
|
-
*
|
|
440
|
-
*
|
|
441
|
-
*
|
|
682
|
+
* Generate a title for the session via the active provider/model.
|
|
683
|
+
* Resolves to the new title (already persisted by the parent); reject
|
|
684
|
+
* with an Error to surface a failure message in the modal footer.
|
|
685
|
+
*
|
|
686
|
+
* Omit when title generation isn't wired (no provider picked yet, or
|
|
687
|
+
* the host opted out) — the modal hides the `g` shortcut.
|
|
688
|
+
*
|
|
689
|
+
* `signal` is provided so a parent unmount (modal closed, session
|
|
690
|
+
* switched) can abort the in-flight provider stream. Implementations
|
|
691
|
+
* should forward it to whatever transport they use; an aborted
|
|
692
|
+
* generation should reject (e.g. with the signal's reason).
|
|
442
693
|
*/
|
|
443
|
-
|
|
694
|
+
onGenerateTitle?: (sessionId: string, signal: AbortSignal) => Promise<string>;
|
|
695
|
+
/**
|
|
696
|
+
* Export the session to disk in the requested format. The host
|
|
697
|
+
* decides where the file lands (typically `.{prefix}/sessions/`) and
|
|
698
|
+
* returns the absolute path so the modal can show a confirmation
|
|
699
|
+
* footer. Reject with an Error to surface a failure message.
|
|
700
|
+
*
|
|
701
|
+
* Omit when export isn't wired — the modal hides the `e` / `j`
|
|
702
|
+
* shortcuts.
|
|
703
|
+
*/
|
|
704
|
+
onExport?: (sessionId: string, format: SessionExportFormat) => Promise<SessionExportResult>;
|
|
705
|
+
/**
|
|
706
|
+
* Compact older turns via an LLM-generated summary. The host calls
|
|
707
|
+
* `compactConversation` and appends the synthetic `compact-summary`
|
|
708
|
+
* marker turn so older turns stop reaching the provider. The model
|
|
709
|
+
* sees everything from the marker forward verbatim; the user can
|
|
710
|
+
* still scroll back to see the original turns.
|
|
711
|
+
*
|
|
712
|
+
* Resolves to a result envelope used by the modal to flash the
|
|
713
|
+
* "compacted N turns" success banner. Reject with an Error to
|
|
714
|
+
* surface a failure message.
|
|
715
|
+
*
|
|
716
|
+
* `signal` is provided so a parent unmount (modal closed, session
|
|
717
|
+
* switched) can abort the in-flight summary call.
|
|
718
|
+
*
|
|
719
|
+
* Omit when compaction isn't wired (no provider picked yet, or the
|
|
720
|
+
* host opted out) — the modal hides the `k` shortcut.
|
|
721
|
+
*/
|
|
722
|
+
onCompact?: (sessionId: string, signal: AbortSignal) => Promise<SessionCompactResult>;
|
|
723
|
+
}
|
|
724
|
+
/** What `onCompact` returns. Drives the modal's success banner. */
|
|
725
|
+
interface SessionCompactResult {
|
|
726
|
+
/** Number of turns absorbed into the summary. */
|
|
727
|
+
replacedCount: number;
|
|
728
|
+
/**
|
|
729
|
+
* Number of turns the PTL-retry path had to drop without summarizing.
|
|
730
|
+
* Zero on first-try success. When non-zero, the modal warns the user
|
|
731
|
+
* that some context was lost — those turns stay in the conversation
|
|
732
|
+
* history but the new summary doesn't describe them.
|
|
733
|
+
*/
|
|
734
|
+
droppedCount: number;
|
|
444
735
|
/**
|
|
445
|
-
*
|
|
736
|
+
* Number of files re-injected as synthetic `read_file` results after
|
|
737
|
+
* the compaction marker. Zero when the session had no active reads or
|
|
738
|
+
* the host opted out of restoration.
|
|
446
739
|
*/
|
|
447
|
-
|
|
740
|
+
restoredFiles: number;
|
|
448
741
|
/**
|
|
449
|
-
*
|
|
450
|
-
*
|
|
742
|
+
* Number of skills re-injected as synthetic `skills_use` results
|
|
743
|
+
* after the compaction marker.
|
|
451
744
|
*/
|
|
452
|
-
|
|
745
|
+
restoredSkills: number;
|
|
746
|
+
/** Model used for the summary call. */
|
|
747
|
+
model: string;
|
|
748
|
+
/** Total input tokens billed (including cache reads + creations). */
|
|
749
|
+
inputTokens: number;
|
|
750
|
+
/** Output tokens of the summary itself. */
|
|
751
|
+
outputTokens: number;
|
|
752
|
+
/**
|
|
753
|
+
* Estimated wire-level context size the NEXT turn will start from.
|
|
754
|
+
* Sum of the summary's tokens plus the restoration content's
|
|
755
|
+
* byte-based estimate — captures what the model will actually see on
|
|
756
|
+
* its next call, modulo the system prompt and any preserved tail
|
|
757
|
+
* turns whose precise token count we don't know without re-asking
|
|
758
|
+
* the provider.
|
|
759
|
+
*
|
|
760
|
+
* Drives both the post-compact success banner ("→ N effective") and
|
|
761
|
+
* the chat footer's `ctx` indicator — `onCompactSession` writes this
|
|
762
|
+
* value into `lastInputTokens` so the user sees the drop immediately
|
|
763
|
+
* instead of waiting for the next real turn's `usage` update.
|
|
764
|
+
*/
|
|
765
|
+
effectiveTokens: number;
|
|
766
|
+
}
|
|
767
|
+
declare function SessionDetailsModal({
|
|
768
|
+
session,
|
|
769
|
+
title,
|
|
770
|
+
isCurrent,
|
|
771
|
+
actions,
|
|
772
|
+
keybindings
|
|
773
|
+
}: {
|
|
774
|
+
session: SessionData;
|
|
775
|
+
/**
|
|
776
|
+
* Display title for the session. Falls back to the first user turn's
|
|
777
|
+
* preview when omitted — the parent usually has a cached `SessionMeta`
|
|
778
|
+
* title and threads it through so the modal header matches what the
|
|
779
|
+
* sessions list / chat title bar are showing.
|
|
780
|
+
*/
|
|
781
|
+
title?: string; /** True when this is the actively-mounted session — gates the "active" tag in the header. */
|
|
782
|
+
isCurrent: boolean;
|
|
783
|
+
actions: SessionDetailsModalActions; /** Effective keybindings — the modal-internal letter actions resolve through this. */
|
|
784
|
+
keybindings: KeyBindings;
|
|
785
|
+
}): _$react.ReactNode;
|
|
786
|
+
//#endregion
|
|
787
|
+
//#region src/tui/settings-modal.d.ts
|
|
788
|
+
interface SettingsActions {
|
|
789
|
+
/** Re-open the auth screen so the user can switch providers. */
|
|
790
|
+
onReauth?: () => void;
|
|
791
|
+
/** Open `~/.zidane/keybindings.json` in `$EDITOR`. */
|
|
792
|
+
onOpenKeybindings?: () => void;
|
|
793
|
+
/** Start an MCP OAuth flow. Resolves once tokens land or the flow aborts. */
|
|
794
|
+
onLoginMcp?: (name: string) => Promise<void> | void;
|
|
795
|
+
/** Wipe stored MCP tokens. */
|
|
796
|
+
onLogoutMcp?: (name: string) => void;
|
|
797
|
+
/** Abort an in-flight MCP OAuth flow. */
|
|
798
|
+
onCancelLoginMcp?: (name: string) => void;
|
|
453
799
|
}
|
|
454
800
|
declare function SettingsModal({
|
|
801
|
+
skillsCatalog,
|
|
802
|
+
mcpsCatalog,
|
|
803
|
+
mcpsErrors,
|
|
455
804
|
actions
|
|
456
805
|
}?: {
|
|
806
|
+
/** Discovered skills — drives the Skills tab + persists through `enabledSkills`. */skillsCatalog?: readonly SkillConfig[]; /** Discovered MCP servers — drives the MCPs tab + persists through `enabledMcps`. */
|
|
807
|
+
mcpsCatalog?: readonly DiscoveredMcp[]; /** Non-fatal `mcps.json` parse errors — surface in a preamble on the MCP tab. */
|
|
808
|
+
mcpsErrors?: readonly DiscoveryError[];
|
|
457
809
|
actions?: SettingsActions;
|
|
458
|
-
}):
|
|
810
|
+
}): ReactNode;
|
|
459
811
|
//#endregion
|
|
460
812
|
//#region src/tui/skills-settings.d.ts
|
|
461
813
|
/**
|
|
@@ -512,7 +864,8 @@ declare function ToggleListModal<T>({
|
|
|
512
864
|
settingKey,
|
|
513
865
|
title,
|
|
514
866
|
renderDetail,
|
|
515
|
-
emptyState
|
|
867
|
+
emptyState,
|
|
868
|
+
preamble
|
|
516
869
|
}: {
|
|
517
870
|
catalog: readonly T[];
|
|
518
871
|
keyOf: (entry: T) => string;
|
|
@@ -520,8 +873,37 @@ declare function ToggleListModal<T>({
|
|
|
520
873
|
title: string; /** Mute-colored trailing copy for each row (description, transport, …). */
|
|
521
874
|
renderDetail?: (entry: T) => ReactNode; /** What to render when `catalog` is empty (hint about where to drop config). */
|
|
522
875
|
emptyState: ReactNode;
|
|
876
|
+
/**
|
|
877
|
+
* Optional content rendered ABOVE the list (or the empty state). Used to
|
|
878
|
+
* surface non-fatal warnings — e.g. discovered files that failed to parse,
|
|
879
|
+
* so the user can fix them without quitting the TUI. Distinct from
|
|
880
|
+
* `emptyState`, which only renders when there's nothing to show; this
|
|
881
|
+
* renders even when the catalog has entries.
|
|
882
|
+
*/
|
|
883
|
+
preamble?: ReactNode;
|
|
523
884
|
}): ReactNode;
|
|
524
885
|
//#endregion
|
|
886
|
+
//#region src/tui/turn-details-modal.d.ts
|
|
887
|
+
interface TurnDetailsModalActions {
|
|
888
|
+
/** Fork the session at this turn — new session keeps history up to here. */
|
|
889
|
+
onFork: (turnId: string) => void;
|
|
890
|
+
/** Delete this turn (with cleanup of orphan tool blocks in neighbors). */
|
|
891
|
+
onDelete: (turnId: string) => void;
|
|
892
|
+
}
|
|
893
|
+
declare function TurnDetailsModal({
|
|
894
|
+
turn,
|
|
895
|
+
index,
|
|
896
|
+
total,
|
|
897
|
+
actions,
|
|
898
|
+
keybindings
|
|
899
|
+
}: {
|
|
900
|
+
turn: SessionTurn; /** 1-based position of this turn in the session, for the header. */
|
|
901
|
+
index: number; /** Total turn count, for the `n / N` header. */
|
|
902
|
+
total: number;
|
|
903
|
+
actions: TurnDetailsModalActions; /** Effective keybindings — the modal-internal letter actions resolve through this. */
|
|
904
|
+
keybindings: KeyBindings;
|
|
905
|
+
}): _$react.ReactNode;
|
|
906
|
+
//#endregion
|
|
525
907
|
//#region src/tui/index.d.ts
|
|
526
908
|
/**
|
|
527
909
|
* Boot a full chat TUI with sensible defaults. **Does not return** under
|
|
@@ -565,5 +947,5 @@ declare function ToggleListModal<T>({
|
|
|
565
947
|
*/
|
|
566
948
|
declare function runTui(options?: Partial<ChatOptions>): Promise<never>;
|
|
567
949
|
//#endregion
|
|
568
|
-
export { AgentPickerModal, App, AuthScreen, ChatScreen, CompletionPopup, type ContextUsage, Footer, type Hint, McpsSettingsModal, Modal, type ModalProps, ModalRoot, ModelPickerModal, type PickedModel, type PromptSegment, type PromptSegmentRef, SessionsScreen, type SettingsActions, SettingsModal, SkillsSettingsModal, Spinner, ToggleListModal, Transcript, accentColor, buildMdStyle, hintsLength, isVisible, marginTopFor, onInputSubmit, renderHintSpans, runTui, splitPromptSegments, useMdStyle, useModal, useModalAwareFocus };
|
|
950
|
+
export { AgentPickerModal, App, AuthScreen, ChatScreen, CompletionPopup, type ContextUsage, EffortPickerModal, Footer, type Hint, InteractionBlock, McpsSettingsModal, type MetaSegment, Modal, type ModalProps, ModalRoot, ModelPickerModal, type PickedModel, type PromptSegment, type PromptSegmentRef, type QueueShortcuts, type QueuedPreview, type SessionCompactResult, SessionDetailsModal, type SessionDetailsModalActions, type SessionExportResult, SessionsScreen, type SettingsActions, SettingsModal, SkillsSettingsModal, Spinner, StatusSpinner, TitleOverlay, ToggleListModal, Transcript, TurnDetailsModal, type TurnDetailsModalActions, accentColor, buildMdStyle, hintsLength, isVisible, marginTopFor, onInputSubmit, renderHintSpans, runTui, splitPromptSegments, useMdStyle, useModal, useModalAwareFocus };
|
|
569
951
|
//# sourceMappingURL=tui.d.ts.map
|
package/dist/tui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.d.ts","names":[],"sources":["../src/tui/agent-picker.tsx","../src/tui/app.tsx","../src/tui/completion-popup.tsx","../src/tui/components.tsx","../src/tui/mcps-settings.tsx","../src/tui/modal.tsx","../src/tui/model-picker.tsx","../src/tui/screens.tsx","../src/tui/settings-modal.tsx","../src/tui/skills-settings.tsx","../src/tui/theme.ts","../src/tui/toggle-list-modal.tsx","../src/tui/index.tsx"],"mappings":";;;;;;;;;;;;;AAoBA;;;;;iBAAgB,gBAAA,CAAA;EACd,MAAA;EACA,cAAA;EACA;AAAA;EAEA,MAAA,EAAQ,aAAA;EACR,cAAA;EACA,MAAA,GAAS,EAAA;AAAA,IAFY,OAAA,CAGtB,SAAA;;;;;;iBAkFe,WAAA,CACd,MAAA,EAAQ,WAAA,cACR,KAAA;EAAS,KAAA;EAAe,MAAA;EAAgB,IAAA;EAAc,KAAA;AAAA;;;;;;;;;;AA5FxD;
|
|
1
|
+
{"version":3,"file":"tui.d.ts","names":[],"sources":["../src/tui/agent-picker.tsx","../src/tui/app.tsx","../src/tui/completion-popup.tsx","../src/tui/components.tsx","../src/tui/effort-picker.tsx","../src/tui/interaction-block.tsx","../src/tui/mcps-settings.tsx","../src/tui/modal.tsx","../src/tui/model-picker.tsx","../src/tui/screens.tsx","../src/tui/session-details-modal.tsx","../src/tui/settings-modal.tsx","../src/tui/skills-settings.tsx","../src/tui/theme.ts","../src/tui/toggle-list-modal.tsx","../src/tui/turn-details-modal.tsx","../src/tui/index.tsx"],"mappings":"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"}
|