zidane 5.6.14 → 5.7.4

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.
Files changed (119) hide show
  1. package/README.md +3 -1
  2. package/dist/{agent-ClkpElCZ.d.ts → agent-BNS2nx_T.d.ts} +535 -15
  3. package/dist/agent-BNS2nx_T.d.ts.map +1 -0
  4. package/dist/chat/pure.d.ts +4 -0
  5. package/dist/chat/pure.js +3 -0
  6. package/dist/chat.d.ts +31 -661
  7. package/dist/chat.d.ts.map +1 -1
  8. package/dist/chat.js +5 -3
  9. package/dist/chat.js.map +1 -1
  10. package/dist/contexts/docker.d.ts +1 -1
  11. package/dist/contexts/docker.d.ts.map +1 -1
  12. package/dist/contexts/docker.js.map +1 -1
  13. package/dist/{contexts-BOtMvzli.js → contexts-BD2U_xpi.js} +2 -2
  14. package/dist/{contexts-BOtMvzli.js.map → contexts-BD2U_xpi.js.map} +1 -1
  15. package/dist/contexts.d.ts +3 -3
  16. package/dist/contexts.js +1 -1
  17. package/dist/edit-utils-DnfNoj16.js +574 -0
  18. package/dist/edit-utils-DnfNoj16.js.map +1 -0
  19. package/dist/{errors-DdZXnyXE.js → errors-CoQnKRf1.js} +32 -2
  20. package/dist/{errors-DdZXnyXE.js.map → errors-CoQnKRf1.js.map} +1 -1
  21. package/dist/fetch-url-CPxfiXDa.js +518 -0
  22. package/dist/fetch-url-CPxfiXDa.js.map +1 -0
  23. package/dist/image-sniff-B7uFSNO1.js +90 -0
  24. package/dist/image-sniff-B7uFSNO1.js.map +1 -0
  25. package/dist/{index-CbS75MD3.d.ts → index-CZOwAJIX.d.ts} +2 -2
  26. package/dist/index-CZOwAJIX.d.ts.map +1 -0
  27. package/dist/{index-CTDMMdIy.d.ts → index-Ck_AWt8P.d.ts} +3 -4
  28. package/dist/index-Ck_AWt8P.d.ts.map +1 -0
  29. package/dist/{index-v3Tzobqr.d.ts → index-KiS7w0dC.d.ts} +3 -3
  30. package/dist/index-KiS7w0dC.d.ts.map +1 -0
  31. package/dist/index.d.ts +6 -6
  32. package/dist/index.js +13 -12
  33. package/dist/index.js.map +1 -1
  34. package/dist/{interpolate-DM1UcKeQ.js → interpolate-TySiqKzc.js} +23 -23
  35. package/dist/{interpolate-DM1UcKeQ.js.map → interpolate-TySiqKzc.js.map} +1 -1
  36. package/dist/{login-7tHcckmX.js → login-BDeqENSe.js} +7 -58
  37. package/dist/login-BDeqENSe.js.map +1 -0
  38. package/dist/{mcp-DGeB7-3D.js → mcp-Kqzz-Rs_.js} +8 -6
  39. package/dist/mcp-Kqzz-Rs_.js.map +1 -0
  40. package/dist/mcp.d.ts +2 -2
  41. package/dist/mcp.js +1 -1
  42. package/dist/{messages-Dym8S_YH.js → messages-CvRQTdbR.js} +118 -39
  43. package/dist/messages-CvRQTdbR.js.map +1 -0
  44. package/dist/{presets-w9Px_aAm.js → presets-JuOnSI-i.js} +2 -2
  45. package/dist/{presets-w9Px_aAm.js.map → presets-JuOnSI-i.js.map} +1 -1
  46. package/dist/presets.d.ts +3 -3
  47. package/dist/presets.js +1 -1
  48. package/dist/{providers-beXyD9W9.js → providers-h4HJPbbv.js} +485 -31
  49. package/dist/providers-h4HJPbbv.js.map +1 -0
  50. package/dist/providers.d.ts +2 -2
  51. package/dist/providers.js +3 -3
  52. package/dist/restate.d.ts +1 -1
  53. package/dist/restate.d.ts.map +1 -1
  54. package/dist/restate.js.map +1 -1
  55. package/dist/session/sqlite.d.ts +1 -1
  56. package/dist/session/sqlite.d.ts.map +1 -1
  57. package/dist/session/sqlite.js +1 -1
  58. package/dist/session/sqlite.js.map +1 -1
  59. package/dist/{session-BRIsmBSY.js → session-BzLou2_-.js} +2 -2
  60. package/dist/{session-BRIsmBSY.js.map → session-BzLou2_-.js.map} +1 -1
  61. package/dist/session.d.ts +2 -2
  62. package/dist/session.js +2 -2
  63. package/dist/skills.d.ts +3 -3
  64. package/dist/skills.js +1 -1
  65. package/dist/skills.js.map +1 -1
  66. package/dist/{stats-Lc3zL3RM.js → stats-DAKBEKjc.js} +12 -2
  67. package/dist/stats-DAKBEKjc.js.map +1 -0
  68. package/dist/{stdio-loader-EVAF5KlU.js → stdio-loader-Ce68wUmM.js} +4 -4
  69. package/dist/stdio-loader-Ce68wUmM.js.map +1 -0
  70. package/dist/tool-formatters-CU-j3a3e.d.ts +1471 -0
  71. package/dist/tool-formatters-CU-j3a3e.d.ts.map +1 -0
  72. package/dist/tools/fetch-url.d.ts +70 -0
  73. package/dist/tools/fetch-url.d.ts.map +1 -0
  74. package/dist/tools/fetch-url.js +2 -0
  75. package/dist/tools/web-search.d.ts +7 -0
  76. package/dist/tools/web-search.d.ts.map +1 -0
  77. package/dist/tools/web-search.js +190 -0
  78. package/dist/tools/web-search.js.map +1 -0
  79. package/dist/{tools-DhrLrOEr.js → tools-BGtJK0vo.js} +1368 -421
  80. package/dist/tools-BGtJK0vo.js.map +1 -0
  81. package/dist/tools.d.ts +3 -3
  82. package/dist/tools.js +1 -1
  83. package/dist/{turn-operations-UAkOjO-u.js → transcript-anchors-BTSZAPVc.js} +147 -2713
  84. package/dist/transcript-anchors-BTSZAPVc.js.map +1 -0
  85. package/dist/{transcript-anchors-D0TR6djV.d.ts → transcript-anchors-DX90kXc4.d.ts} +13 -1299
  86. package/dist/transcript-anchors-DX90kXc4.d.ts.map +1 -0
  87. package/dist/tui.d.ts +58 -28
  88. package/dist/tui.d.ts.map +1 -1
  89. package/dist/tui.js +1349 -422
  90. package/dist/tui.js.map +1 -1
  91. package/dist/turn-operations-CCHfR9eC.js +1938 -0
  92. package/dist/turn-operations-CCHfR9eC.js.map +1 -0
  93. package/dist/turn-operations-DDIl4YVk.d.ts +658 -0
  94. package/dist/turn-operations-DDIl4YVk.d.ts.map +1 -0
  95. package/dist/{types-oKPBdCmL.js → types-BPw_i5vb.js} +1 -1
  96. package/dist/types-BPw_i5vb.js.map +1 -0
  97. package/dist/{types-KukEp-mi.d.ts → types-CEAMIUXw.d.ts} +1 -1
  98. package/dist/types-CEAMIUXw.d.ts.map +1 -0
  99. package/dist/types.d.ts +4 -4
  100. package/dist/types.js +3 -3
  101. package/docs/CHAT.md +53 -6
  102. package/docs/SKILL.md +3 -0
  103. package/docs/TUI.md +7 -0
  104. package/package.json +18 -2
  105. package/dist/agent-ClkpElCZ.d.ts.map +0 -1
  106. package/dist/index-CTDMMdIy.d.ts.map +0 -1
  107. package/dist/index-CbS75MD3.d.ts.map +0 -1
  108. package/dist/index-v3Tzobqr.d.ts.map +0 -1
  109. package/dist/login-7tHcckmX.js.map +0 -1
  110. package/dist/mcp-DGeB7-3D.js.map +0 -1
  111. package/dist/messages-Dym8S_YH.js.map +0 -1
  112. package/dist/providers-beXyD9W9.js.map +0 -1
  113. package/dist/stats-Lc3zL3RM.js.map +0 -1
  114. package/dist/stdio-loader-EVAF5KlU.js.map +0 -1
  115. package/dist/tools-DhrLrOEr.js.map +0 -1
  116. package/dist/transcript-anchors-D0TR6djV.d.ts.map +0 -1
  117. package/dist/turn-operations-UAkOjO-u.js.map +0 -1
  118. package/dist/types-KukEp-mi.d.ts.map +0 -1
  119. package/dist/types-oKPBdCmL.js.map +0 -1
package/dist/chat.d.ts CHANGED
@@ -1,12 +1,13 @@
1
- import { D as SkillConfig, Jt as McpToolSchema, Kt as McpServerConfig, N as Session, dn as ToolResultContent, hn as TurnUsage, j as SkillsConfig, lt as Provider, on as SessionTurn, r as AgentHooks } from "./agent-ClkpElCZ.js";
2
- import { Ot as McpCredentialEntry, kt as McpCredentialStore, t as Preset } from "./index-CTDMMdIy.js";
3
- import { m as SourcedScanPath } from "./index-v3Tzobqr.js";
4
- import { $ as TextQuestion, $n as detectAuth, $t as titleFromTurns, A as splitMarkdownCodeBlocks, An as mergeKeybindings, At as resolveConfig, B as PendingInteractionEntry, Bn as applyInsert, Bt as deriveSessionTitle, C as renderSession, Cn as KeyBindings, Cr as PLAN_AGENT, Ct as discoverProjectMcps, D as PromptSegmentRef, Dn as groupBindings, Dt as ProviderRegistry, E as PromptSegment, En as formatBindingForDisplay, Er as singleAgentRegistry, Et as ChatOptions, F as InteractionRequest, Fn as CompletionContext, Ft as StorageSlot, G as PlanStep, Gn as EMPTY_HINTS, Gt as lastContextSizeFromTurns, H as PlanPayload, Hn as findActiveTrigger, Ht as isEditErrorResult, I as InteractionResponse, In as CompletionItem, It as resolveStorageDirs, J as QuestionPayload, Jn as hintsLength, Jt as marginTopFor, K as Question, Kn as Hint, Kt as listSessionMeta, L as InteractionsActions, Ln as CompletionProvider, Lt as StateStoreApi, M as AnswerValue, Mn as readKeybindings, Mt as ResolveStorageDirsOptions, N as ConfirmQuestion, Nn as stripJsonComments, Nt as StorageDirs, O as splitPromptSegments, On as keybindingsPath, Ot as ResolvedConfig, P as CreateInteractionToolsOptions, Pn as ActiveTrigger, Pt as StorageMode, Q as SelectQuestion, Qn as ProviderKey, Qt as sumRunCosts, R as InteractionsProvider, Rn as CompletionReference, Rt as TuiState, S as SessionExportTarget, Sn as KeyBindingSection, Sr as DEFAULT_PERSIST_EXCLUDE_TOOLS, St as defaultMcpsConfigPaths, T as writeSessionExport, Tn as ensureKeybindingsFile, Tr as resolveAgentId, Tt as AutoUpdateConfig, U as PlanRequest, Un as mergeReferences, Ut as isTurnHighlighted, V as PlanDecision, Vn as collectReferences, Vt as eventsFromTurns, W as PlanResponse, Wn as useCompletion, Wt as isVisible, X as QuestionResponse, Xn as AuthMethod, Xt as selectableTurnIds, Y as QuestionRequest, Yn as truncateTrailing, Yt as saveState, Z as QuestionType, Zn as ProviderAuth, Zt as stripSpawnTokensLine, _ as ThemeSurfaces, _n as KEYBINDING_DEFS, _r as AgentRegistry, _t as useSafeModeQueue, a as ToolFormatLine, an as EditHunk, ar as cerebrasDescriptor, at as serializeInteractionResponse, b as SessionExportAnchor, bn as KeyAction, br as DEFAULT_AGENT_ID, bt as DiscoveryResult, c as BUILTIN_THEMES, cn as EditPayload, cr as getContextWindow, ct as EnabledAllowlistKey, d as DEFAULT_THEME, dn as Screen, dr as modelsForDescriptor, dt as ApprovalDecision, en as toolCallPreview, er as BUILTIN_PROVIDERS, et as buildResumedToolResultsTurn, f as SyntaxStyles, fn as SessionMeta, fr as openaiDescriptor, ft as ApprovalRequest, g as ThemeSelect, gn as DEFAULT_KEYBINDINGS, gr as AgentProfile, gt as useSafeModeActions, h as ThemeColors, hn as ToolCallDisplay, hr as AgentAccent, ht as SafeModeProvider, i as ToolDisplayMeta, in as EditDiffDisplay, ir as anthropicDescriptor, it as pendingInteractionsFromTurns, j as ASK_USER_TOOL, jn as parseBindingSpec, jt as resolveStoragePaths, k as MarkdownSegment, kn as matchesBinding, kt as ResolvedPaths, l as ChipColor, ln as Owner, lr as getModelInfo, lt as EnabledToggleSet, m as Theme, mn as StreamEvent, mr as piIdOf, mt as SafeModeActions, n as computeTurnAnchors, nn as turnSelectionOwnership, nr as OUTPUT_RESERVE_TOKENS, nt as isInteractionTool, o as displayNameFor, on as EditOutcome, or as credKeyOf, ot as useInteractionsActions, p as SyntaxTokenStyle, pn as Settings, pr as openrouterDescriptor, pt as RequestApproval, q as QuestionChoice, qn as clipHintsToWidth, qt as loadState, r as TOOL_DISPLAY, rn as updateToolEventOutcomes, rr as ProviderDescriptor, rt as makeRequestInteraction, s as formatToolCall, sn as EditOutcomeKind, sr as effectiveContextWindow, st as useInteractionsQueue, t as TranscriptItem, tn as toolResultText, tr as ModelInfo, tt as createInteractionTools, u as ChipColorMap, un as Picked, ur as modelSupportsReasoning, ut as useEnabledToggleSet, v as resolveChipColor, vn as KEYBINDING_DEF_BY_ACTION, vr as BUILD_AGENT, vt as DiscoveredMcp, w as resolveSessionExportTarget, wn as ParsedBinding, wr as accentColor, wt as parseMcpsFile, x as SessionExportFormat, xn as KeyBindingDef, xr as DEFAULT_BUDGET_EXCLUDE_TOOLS, xt as buildMcpServers, y as resolveTheme, yn as KEYBINDING_KEY_COL_WIDTH, yr as BUILTIN_AGENTS, yt as DiscoveryError, z as PRESENT_PLAN_TOOL, zn as CompletionState, zt as createStateStore } from "./transcript-anchors-D0TR6djV.js";
1
+ import { $t as McpToolSchema, Bn as ContextItem, D as SkillConfig, Fn as ContextBreakdown, Hn as ContextSnapshot, In as ContextBreakdownOptions, Ln as ContextCategory, N as Session, Rn as ContextCategoryId, Un as ContextUsageSplit, Vn as ContextMcpGroup, Wn as buildContextBreakdown, Zt as McpServerConfig, dn as SessionTurn, j as SkillsConfig, lt as Provider, r as AgentHooks, zn as ContextExactCounts } from "./agent-BNS2nx_T.js";
2
+ import { Ot as McpCredentialEntry, kt as McpCredentialStore, t as Preset } from "./index-Ck_AWt8P.js";
3
+ import { m as SourcedScanPath } from "./index-KiS7w0dC.js";
4
+ import { $ as useInteractionsQueue, $t as parseBindingSpec, A as InteractionsProvider, At as marginTopFor, B as QuestionPayload, Bt as KEYBINDING_DEF_BY_ACTION, C as ASK_USER_TOOL, Ct as TuiState, D as InteractionRequest, Dt as lastContextSizeFromTurns, E as CreateInteractionToolsOptions, Et as eventsFromTurns, F as PlanRequest, Ft as toolCallPreview, G as TextQuestion, Gt as KeyBindings, H as QuestionResponse, Ht as KeyAction, I as PlanResponse, It as toolResultText, J as isInteractionTool, Jt as formatBindingForDisplay, K as buildResumedToolResultsTurn, Kt as ParsedBinding, L as PlanStep, Lt as updateToolEventOutcomes, M as PendingInteractionEntry, Mt as stripSpawnTokensLine, N as PlanDecision, Nt as sumRunCosts, O as InteractionResponse, Ot as listSessionMeta, P as PlanPayload, Pt as titleFromTurns, Q as useInteractionsActions, Qt as mergeKeybindings, R as Question, Rt as DEFAULT_KEYBINDINGS, S as splitMarkdownCodeBlocks, St as StateStoreApi, T as ConfirmQuestion, Tt as deriveSessionTitle, U as QuestionType, Ut as KeyBindingDef, V as QuestionRequest, Vt as KEYBINDING_KEY_COL_WIDTH, W as SelectQuestion, Wt as KeyBindingSection, X as pendingInteractionsFromTurns, Xt as keybindingsPath, Y as makeRequestInteraction, Yt as groupBindings, Z as serializeInteractionResponse, Zt as matchesBinding, _ as SessionExportTarget, _n as PLAN_AGENT, _t as ResolveStorageDirsOptions, a as ChipColorMap, an as Hint, at as DiscoveryResult, b as writeSessionExport, bn as singleAgentRegistry, bt as StorageSlot, c as SyntaxTokenStyle, cn as truncateTrailing, ct as discoverProjectMcps, d as ThemeSelect, dn as AgentRegistry, dt as ChatOptions, en as readKeybindings, et as EnabledAllowlistKey, f as ThemeSurfaces, fn as BUILD_AGENT, ft as ProviderRegistry, g as SessionExportFormat, gn as DEFAULT_PERSIST_EXCLUDE_TOOLS, gt as resolveStoragePaths, h as SessionExportAnchor, hn as DEFAULT_BUDGET_EXCLUDE_TOOLS, ht as resolveConfig, i as ChipColor, in as EMPTY_HINTS, it as DiscoveryError, j as PRESENT_PLAN_TOOL, jt as saveState, k as InteractionsActions, kt as loadState, l as Theme, ln as AgentAccent, lt as parseMcpsFile, m as resolveTheme, mn as DEFAULT_AGENT_ID, mt as ResolvedPaths, n as computeTurnAnchors, nn as CompletionState, nt as useEnabledToggleSet, o as DEFAULT_THEME, on as clipHintsToWidth, ot as buildMcpServers, p as resolveChipColor, pn as BUILTIN_AGENTS, pt as ResolvedConfig, q as createInteractionTools, qt as ensureKeybindingsFile, r as BUILTIN_THEMES, rn as useCompletion, rt as DiscoveredMcp, s as SyntaxStyles, sn as hintsLength, st as defaultMcpsConfigPaths, t as TranscriptItem, tn as stripJsonComments, tt as EnabledToggleSet, u as ThemeColors, un as AgentProfile, ut as AutoUpdateConfig, v as renderSession, vn as accentColor, vt as StorageDirs, w as AnswerValue, wt as createStateStore, x as MarkdownSegment, xt as resolveStorageDirs, y as resolveSessionExportTarget, yn as resolveAgentId, yt as StorageMode, z as QuestionChoice, zt as KEYBINDING_DEFS } from "./transcript-anchors-DX90kXc4.js";
5
+ import { $ as anthropicDescriptor, A as SessionMeta, B as collectReferences, C as EditHunk, D as Owner, E as EditPayload, F as CompletionContext, G as ProviderKey, H as mergeReferences, I as CompletionItem, J as CustomField, K as detectAuth, L as CompletionProvider, M as StreamEvent, N as ToolCallDisplay, O as Picked, P as ActiveTrigger, Q as ProviderDescriptor, R as CompletionReference, S as EditDiffDisplay, T as EditOutcomeKind, U as AuthMethod, V as findActiveTrigger, W as ProviderAuth, X as ModelOption, Y as ModelInfo, Z as OUTPUT_RESERVE_TOKENS, _ as isEditErrorResult, a as formatToolCall, at as getModelInfo, b as selectableTurnIds, c as splitPromptSegments, ct as modelSupportsReasoning, d as RequestApproval, dt as openrouterDescriptor, et as cerebrasDescriptor, f as SafeModeActions, ft as piIdOf, h as useSafeModeQueue, i as displayNameFor, it as getContextWindow, j as Settings, k as Screen, l as ApprovalDecision, lt as modelsForDescriptor, m as useSafeModeActions, n as ToolDisplayMeta, nt as effectiveContextWindow, o as PromptSegment, ot as localDescriptor, p as SafeModeProvider, pt as restoreModelOptions, q as BUILTIN_PROVIDERS, r as ToolFormatLine, rt as enabledModelOptions, s as PromptSegmentRef, st as modelOptionsFor, t as TOOL_DISPLAY, tt as credKeyOf, u as ApprovalRequest, ut as openaiDescriptor, v as isTurnHighlighted, w as EditOutcome, x as turnSelectionOwnership, y as isVisible, z as applyInsert } from "./tool-formatters-CU-j3a3e.js";
6
+ import { $ as uniqueFilesFromReferences, A as buildUnifiedDiff, B as buildEditOutcomesAnnotation, C as EditSummary, D as PreviewResult, E as InlineSegment, F as previewEditPayload, G as rewriteMultiEditHeader, H as mergeApprovalAndBodyOutcomes, I as splitLines, J as SKILLS_TRIGGER, K as stripEditOutcomesAnnotation, L as summarizeEditPayload, M as computeLineDiff, N as extractEditPayload, O as applyEditPayload, P as filetypeFromPath, Q as createFilesCompletionProvider, R as tokenize, S as EditHunkSummary, T as InlineDiff, U as parseEditOutcomesFromResult, V as maskToOutcomeKinds, W as resolveApprovalForPayload, X as uniqueSkillNamesFromReferences, Y as createSkillsCompletionProvider, Z as FILES_TRIGGER, _ as formatTaskSummary, a as finalizeStreamingMarkdown, b as DiffLine, c as CatalogEntry, d as indexOfEntry, et as FileEntry, f as ageString, g as formatTaskStatus, h as formatDuration, i as turnAsText, it as buildLinearRamp, j as computeInlineDiff, k as buildContextualDiff, l as buildModelCatalog, m as fmtTokens, n as deleteTurnSafely, nt as listProjectFiles, o as finalizeStreamingMarkdownForOwner, p as compactPath, q as summarizeOutcomes, r as truncateTurnsAt, rt as blendHsl, s as turnContextSize, t as countNeighbors, tt as ListProjectFilesOptions, u as filterModelCatalog, v as previewLine, w as HunkResolution, x as DiffOp, y as shortId, z as ResolvedApproval } from "./turn-operations-DDIl4YVk.js";
5
7
  import { Hookable } from "hookable";
6
- import { spawn } from "node:child_process";
7
8
  import { OAuthCredentials, OAuthDeviceCodeInfo, OAuthPrompt, OAuthPrompt as OAuthPrompt$1, OAuthSelectPrompt } from "@earendil-works/pi-ai/oauth";
9
+ import { spawn } from "node:child_process";
8
10
  import { Dispatch, ReactNode, SetStateAction } from "react";
9
- import * as _$react_jsx_runtime0 from "react/jsx-runtime";
10
11
  import { OAuthClientProvider } from "@modelcontextprotocol/sdk/client/auth.js";
11
12
  //#region src/chat/agent-prompt.d.ts
12
13
  /**
@@ -786,147 +787,6 @@ declare function bootProfileEnabled(): boolean;
786
787
  */
787
788
  declare function tryOpenBrowser(url: string): void;
788
789
  //#endregion
789
- //#region src/chat/color-gradient.d.ts
790
- /**
791
- * Blend two hex colors in HSL space with shortest-path hue interpolation.
792
- * `t` ∈ [0, 1]; `t=0` returns `from`, `t=1` returns `to`.
793
- */
794
- declare function blendHsl(from: string, to: string, t: number): string;
795
- /**
796
- * Static gradient ramp of length `n` going from `from` (index 0) to
797
- * `to` (index n-1) in HSL space. For the cycling A→B→A→B ramp the
798
- * throbber uses, see `buildCycleRamp` in `src/tui/crush-throbber.tsx`.
799
- */
800
- declare function buildLinearRamp(from: string, to: string, n: number): string[];
801
- //#endregion
802
- //#region src/chat/files-discovery.d.ts
803
- /**
804
- * Project file discovery for the `@`-prefixed files completion provider.
805
- *
806
- * Primary strategy — `git ls-files --cached --others --exclude-standard`.
807
- * Git already understands `.gitignore`, `.git/info/exclude`, and global
808
- * excludes, so we get correctness for free + sub-second performance on
809
- * even huge monorepos. Falls back to a depth-limited filesystem walk when
810
- * git isn't available or the directory isn't a repo.
811
- *
812
- * Pure: callers cache the returned list (e.g. in App state) and pass it
813
- * into the provider's `getCatalog`. The list is a snapshot — refresh on
814
- * cwd change or via a user-driven action.
815
- */
816
- /** One row in the project file catalog. `path` is forward-slashed + relative to `cwd`. */
817
- interface FileEntry {
818
- /** Forward-slashed relative path from the discovery cwd. Stable across OSes. */
819
- path: string;
820
- /** Basename — used for prefix ranking in the completion provider. */
821
- name: string;
822
- /** Source — `git` when listed via `git ls-files`, `fs` from the walk fallback. */
823
- source: 'git' | 'fs';
824
- }
825
- /** Options for `listProjectFiles`. */
826
- interface ListProjectFilesOptions {
827
- /** Discovery root. Default: `process.cwd()`. */
828
- cwd?: string;
829
- /** Cap on returned entries. Default: 10,000. Bigger lists fall back to a truncated set. */
830
- maxFiles?: number;
831
- /** Aborts the scan early. Useful when re-running on rapid project switches. */
832
- signal?: AbortSignal;
833
- }
834
- /**
835
- * Discover every non-ignored file under `cwd`. Tries `git ls-files` first;
836
- * on failure (no git, not a repo, abort) walks the fs with a hand-rolled
837
- * skip list.
838
- *
839
- * Errors are not thrown — the function always returns an array (possibly
840
- * empty). Callers wanting failure diagnostics can opt into them via
841
- * `ZIDANE_DEBUG`.
842
- */
843
- declare function listProjectFiles(opts?: ListProjectFilesOptions): Promise<FileEntry[]>;
844
- //#endregion
845
- //#region src/chat/completion-files.d.ts
846
- /** Trigger character — `@` is the conventional file-mention prefix in chat UIs. */
847
- declare const FILES_TRIGGER = "@";
848
- /**
849
- * Build an `@`-prefixed files completion provider against a *live* catalog.
850
- *
851
- * The factory captures a getter so the catalog can be re-scanned (cwd
852
- * change, manual refresh) without re-instantiating the provider — the
853
- * App keeps one provider for the lifetime of the prompt block and just
854
- * mutates the underlying state.
855
- *
856
- * `limit` caps the result list so the popover stays bounded on huge
857
- * monorepos. Filtering is substring on `path` + `name`, case-insensitive;
858
- * ranking prefers (in order): exact name match, name prefix, name
859
- * substring, path substring, alphabetical.
860
- */
861
- declare function createFilesCompletionProvider(opts: {
862
- /** Live file catalog. Re-evaluated per call so refreshes take effect immediately. */getCatalog: () => readonly FileEntry[];
863
- /**
864
- * Optional hook called the first time the host needs the catalog —
865
- * e.g. when the user opens the `@` popover. Hosts wire this to a
866
- * lazy directory walk so boot doesn't pay for it in monorepos
867
- * where the popover may never open. Idempotent contract: callers
868
- * may invoke it on every `suggest`; the host caches internally.
869
- *
870
- * When provided, `suggest()` returns a Promise on the very first
871
- * invocation if the catalog is still empty — the popover's loading
872
- * state surfaces while the walk completes; subsequent calls are
873
- * sync because `getCatalog()` then returns the populated state.
874
- */
875
- ensureCatalog?: () => Promise<readonly FileEntry[]>; /** Max items returned to the popover. Default: 50. */
876
- limit?: number;
877
- /**
878
- * Rewrite the catalog's project-root-relative path into the form
879
- * inserted into the prompt + matched by `parseReferences`. Wire this
880
- * to `formatPathForCwd` so paths emitted into the buffer line up
881
- * with the agent's CWD-resolving tools when the TUI launches from a
882
- * project subdirectory. Default: identity.
883
- *
884
- * Stable identity expected — `parseReferences` calls it once per
885
- * catalog entry per keystroke for the highlight pass; pure
886
- * pure-function shape keeps the popover responsive on huge repos.
887
- */
888
- formatPath?: (entry: FileEntry) => string;
889
- }): CompletionProvider<FileEntry>;
890
- /**
891
- * Walk a reference list and return the deduplicated set of files in
892
- * first-mention order — input to "attach these files to the prompt"
893
- * downstream logic.
894
- */
895
- declare function uniqueFilesFromReferences(references: readonly CompletionReference<unknown>[]): FileEntry[];
896
- //#endregion
897
- //#region src/chat/completion-skills.d.ts
898
- /** Trigger character — slash-commands convention. */
899
- declare const SKILLS_TRIGGER = "/";
900
- /**
901
- * Build a slash-command completion provider against a *live* skills
902
- * catalog. The factory captures a getter so the catalog can change across
903
- * renders (toggles, reload) without re-instantiating the provider.
904
- *
905
- * Pass `getEnabled` to additionally hide skills the user has toggled off
906
- * — when undefined, every catalog entry is offered.
907
- */
908
- declare function createSkillsCompletionProvider(opts: {
909
- /** Live catalog. Re-evaluated per call so toggles take effect immediately. */getCatalog: () => readonly SkillConfig[]; /** Optional enable-set filter; when undefined every catalog skill is offered. */
910
- getEnabled?: () => readonly string[] | undefined;
911
- /**
912
- * Optional hook called the first time the host needs the catalog —
913
- * typically when the user opens the `/` popover. Mirror of the
914
- * files provider's `ensureCatalog`; same idempotent contract.
915
- *
916
- * Hosts wire this to a lazy SKILL.md scan so the boot path stays
917
- * free of disk reads in deeply-nested skill trees. Returns a Promise
918
- * on the very first `suggest()` call when the catalog is still
919
- * empty so the popover surfaces its loading state.
920
- */
921
- ensureCatalog?: () => Promise<readonly SkillConfig[]>;
922
- }): CompletionProvider<SkillConfig>;
923
- /**
924
- * Walk a parsed prompt for skill references and return the deduplicated
925
- * list of skill names — input to `agent.activateSkill(name)` calls on
926
- * submit.
927
- */
928
- declare function uniqueSkillNamesFromReferences(references: readonly CompletionReference<unknown>[]): string[];
929
- //#endregion
930
790
  //#region src/chat/config-context.d.ts
931
791
  declare function ConfigProvider({
932
792
  config,
@@ -934,13 +794,25 @@ declare function ConfigProvider({
934
794
  }: {
935
795
  config: ResolvedConfig;
936
796
  children: ReactNode;
937
- }): _$react_jsx_runtime0.JSX.Element;
797
+ }): import("react/jsx-runtime").JSX.Element;
938
798
  declare function useConfig(): ResolvedConfig;
939
799
  //#endregion
940
800
  //#region src/chat/credentials.d.ts
941
801
  interface ApiKeyCredential {
942
802
  kind: 'apikey';
803
+ /**
804
+ * Bearer API key. May be empty when the descriptor has no `envKey` and
805
+ * authenticates entirely via {@link customFields} (e.g. the `local`
806
+ * provider, where the auth signal is the configured base URL).
807
+ */
943
808
  value: string;
809
+ /**
810
+ * Free-form fields collected by the wizard from the descriptor's
811
+ * `customFields` definitions. Keys match the descriptor field's `key`.
812
+ * Mirrored into `process.env[field.envVar]` by `applyApiKeyEnv` so the
813
+ * provider's factory can read them via the existing env-var convention.
814
+ */
815
+ customFields?: Record<string, string>;
944
816
  }
945
817
  interface OAuthCredential {
946
818
  kind: 'oauth';
@@ -1049,7 +921,7 @@ declare function DiscoveryProvider({
1049
921
  }: {
1050
922
  value: DiscoveryContextValue;
1051
923
  children: ReactNode;
1052
- }): _$react_jsx_runtime0.JSX.Element;
924
+ }): import("react/jsx-runtime").JSX.Element;
1053
925
  /**
1054
926
  * Read live discovery state + actions. Throws if used outside a
1055
927
  * `<DiscoveryProvider>` — discovery is a load-bearing dependency for
@@ -1133,292 +1005,6 @@ interface DiscoverySlot<T> {
1133
1005
  }
1134
1006
  declare function createDiscoverySlot<T>(options: DiscoverySlotOptions<T>): DiscoverySlot<T>;
1135
1007
  //#endregion
1136
- //#region src/chat/edit-approval.d.ts
1137
- /**
1138
- * Convert a per-hunk approval mask into an `EditOutcome[]`. `true` →
1139
- * `applied`; `false` → `denied` with the supplied reason.
1140
- *
1141
- * Length is `Math.max(mask.length, fallbackLength)` so callers passing a
1142
- * shorter mask still get a fully-populated array — missing entries
1143
- * default to applied, matching the "no decision => keep" convention.
1144
- */
1145
- declare function maskToOutcomeKinds(mask: readonly boolean[], fallbackLength: number, deniedReason?: string): EditOutcome[];
1146
- /**
1147
- * Apply an `ApprovalDecision` to a payload, returning the resolved
1148
- * per-hunk outcomes + the gate-level verdict.
1149
- *
1150
- * Pure — does not mutate `input` or `payload`. The TUI's `applyGate`
1151
- * consumes the result: stashes `outcomes` in the pending-annotation map
1152
- * (keyed by callId) so `tool:transform` can append the
1153
- * `<edit-outcomes>` block to the tool result, rebinds `ctx.input.edits`
1154
- * to the approved subset for `partial`, and emits the `syntheticEvent`
1155
- * for fully-denied or fully-blocked calls.
1156
- */
1157
- interface ResolvedApproval {
1158
- /** Final state of every hunk after the decision (1:1 with payload.hunks). */
1159
- outcomes: EditOutcome[];
1160
- /** True when no hunk will be applied — gate should `block` the call. */
1161
- shouldBlock: boolean;
1162
- /**
1163
- * Synthetic `EditPayload` to render in the transcript. Identical to the
1164
- * incoming payload but with `outcomes` set so the renderer can badge
1165
- * each hunk. Only meaningful when at least one hunk was denied —
1166
- * an all-applied decision returns `null` here and the normal
1167
- * `tool:before` event suffices.
1168
- */
1169
- syntheticEvent: EditPayload | null;
1170
- }
1171
- declare function resolveApprovalForPayload(decision: ApprovalDecision, payload: EditPayload): ResolvedApproval;
1172
- /**
1173
- * Render an `EditOutcome[]` as the wire-format annotation block. Returns
1174
- * the body to APPEND to a tool result; callers join with a leading
1175
- * `\n\n` separator. Idempotent on missing reasons — bare `applied` lines
1176
- * stay terse.
1177
- */
1178
- declare function buildEditOutcomesAnnotation(outcomes: readonly EditOutcome[]): string;
1179
- /**
1180
- * Parse an `<edit-outcomes>…</edit-outcomes>` annotation block out of a
1181
- * tool result body. Returns the outcomes keyed by 1-based hunk index, or
1182
- * `null` when the block is missing / malformed.
1183
- *
1184
- * Anchored on the explicit tag pair so the parser doesn't false-positive
1185
- * on natural prose that happens to contain `#1 applied`.
1186
- */
1187
- declare function parseEditOutcomesFromResult(result: string | readonly ToolResultContent[]): EditOutcome[] | null;
1188
- /**
1189
- * Strip the first `<edit-outcomes>…</edit-outcomes>` block out of a tool
1190
- * result body, returning the surrounding text. Used by the
1191
- * `tool:transform` hook to peel a body-emitted annotation before
1192
- * re-appending the merged (approval ∪ body) version — otherwise the
1193
- * result would carry two annotation blocks and
1194
- * {@link parseEditOutcomesFromResult} would only see the first.
1195
- *
1196
- * Anchored on the same `\n<edit-outcomes>\n` / start-of-string newline
1197
- * shape the parser uses, so prose that incidentally mentions
1198
- * `<edit-outcomes>` (e.g. a model summarizing its own format) isn't
1199
- * mistakenly stripped. Trims a single leading `\n\n` separator when
1200
- * present so successive strips don't leave dangling blank lines.
1201
- * Idempotent on inputs that don't contain a properly-anchored block.
1202
- */
1203
- declare function stripEditOutcomesAnnotation(text: string): string;
1204
- /**
1205
- * Merge body-side outcomes (keyed against the approved subset the tool
1206
- * actually ran on, in subset-position order) into approval-side outcomes
1207
- * (1:1 with the model's ORIGINAL `edits` list, with `denied` entries for
1208
- * every hunk the user dropped).
1209
- *
1210
- * Algorithm: walk the approval array; every `applied` placeholder
1211
- * corresponds to one approved hunk that the body ran. Consume body's
1212
- * outcomes in order against those placeholders. Non-`applied` approval
1213
- * entries (`denied`, `skipped`) stay untouched — they describe gate-
1214
- * level decisions the body never saw.
1215
- *
1216
- * Pure. Returns a fresh array; never mutates either input.
1217
- *
1218
- * Edge cases:
1219
- * - `body` is empty / shorter than the approved count → remaining
1220
- * approval `applied` placeholders stay as `applied` (the body ran
1221
- * happily; absence of a body entry means nothing failed).
1222
- * - `body` longer than approved count → trailing body entries are
1223
- * ignored. Shouldn't happen in practice (body sees the rebound
1224
- * subset), but the guard keeps the merge total-pure.
1225
- */
1226
- declare function mergeApprovalAndBodyOutcomes(approval: readonly EditOutcome[], body: readonly EditOutcome[] | null): EditOutcome[];
1227
- /**
1228
- * Rewrite a `multi_edit` body header so the totals reflect the model's
1229
- * ORIGINAL edit list (the merged outcomes count) instead of the subset
1230
- * the body actually saw after gate rebinding. Without this, a partially
1231
- * approved call surfaces a misleading `applied 2 of 2 edits` (subset
1232
- * counts) on the wire even when the original was `applied 2 of 3`.
1233
- *
1234
- * Three body-side shapes are handled (matching `multi_edit`'s emit):
1235
- * 1. `Edited <path>: applied N edits (R replacements).`
1236
- * 2. `Edited <path>: applied N of M edits (R replacements).`
1237
- * 3. `multi_edit error: no edits applied to <path> (M attempted).`
1238
- *
1239
- * The replacements count is preserved verbatim — it's a body-side stat
1240
- * the chat layer can't recompute. When the first line doesn't look like
1241
- * any of the three shapes (e.g. an unrelated error preamble bubbled up),
1242
- * the text is returned unchanged.
1243
- */
1244
- declare function rewriteMultiEditHeader(text: string, merged: readonly EditOutcome[], path: string): string;
1245
- /**
1246
- * Aggregate counts for the transcript's summary badge (`3 applied · 1
1247
- * denied · 1 skipped`). Exported so renderers don't reimplement the
1248
- * tally. Pure / O(n).
1249
- */
1250
- declare function summarizeOutcomes(outcomes: readonly EditOutcome[] | undefined): {
1251
- applied: number;
1252
- denied: number;
1253
- skipped: number;
1254
- failed: number;
1255
- pending: number;
1256
- total: number;
1257
- };
1258
- //#endregion
1259
- //#region src/tools/edit-utils.d.ts
1260
- /**
1261
- * Locate the actual substring in `haystack` that corresponds to `needle`,
1262
- * recovering from typographical mismatch on six escalating fallbacks:
1263
- *
1264
- * 1. Exact substring match (the happy path — no transformation).
1265
- * 2. Curly-quote normalization on both sides — when the model emits straight
1266
- * quotes but the file has curly ones (or vice versa), the slice of the
1267
- * file at the matched position carries the file's actual typography.
1268
- * 3. Anthropic-sanitization undo on the needle — the model's `<n>` becomes
1269
- * the file's `<name>`, etc.
1270
- * 4. Combined: desanitize + quote normalization on the needle.
1271
- * 5. Line-number-prefix strip — when the model pasted a numbered `read_file`
1272
- * chunk verbatim into `old_string` and the file carries no such prefix.
1273
- * 6. Combined: line-number strip + quote normalization — paste-back of a
1274
- * numbered chunk against a file whose typography differs from the model's.
1275
- *
1276
- * Returns `{ actual, occurrences }` — `actual` is the string that exists in
1277
- * the file (use this to do the actual replace; preserves the file's
1278
- * typography). `occurrences` is the count of those matches in the file.
1279
- *
1280
- * Returns `null` when no recovery worked.
1281
- */
1282
- interface ResolvedMatch {
1283
- actual: string;
1284
- occurrences: number;
1285
- /** Recovery path — `'exact'` when no transformation was applied. */
1286
- via: 'exact' | 'quotes' | 'desanitize' | 'quotes+desanitize' | 'line-numbers' | 'quotes+line-numbers';
1287
- }
1288
- //#endregion
1289
- //#region src/chat/edit-diff.d.ts
1290
- declare function extractEditPayload(name: string, input: Record<string, unknown>, priorContent?: string): EditPayload | undefined;
1291
- type DiffOp = 'context' | 'add' | 'remove';
1292
- interface DiffLine {
1293
- op: DiffOp;
1294
- text: string;
1295
- }
1296
- declare function computeLineDiff(oldString: string, newString: string): DiffLine[];
1297
- /**
1298
- * Split a string into lines preserving empty lines but dropping the
1299
- * implicit trailing `""` produced by a final `\n`. Exported only for
1300
- * its tests — callers should use `computeLineDiff`.
1301
- */
1302
- declare function splitLines(s: string): string[];
1303
- interface InlineSegment {
1304
- text: string;
1305
- changed: boolean;
1306
- }
1307
- interface InlineDiff {
1308
- oldSegments: InlineSegment[];
1309
- newSegments: InlineSegment[];
1310
- }
1311
- declare function computeInlineDiff(oldLine: string, newLine: string): InlineDiff;
1312
- /**
1313
- * Tokenize on word / non-word boundaries. Each run of `\w+` is one
1314
- * token; each run of `\W+` (whitespace, punctuation) is another. This
1315
- * gives the right granularity for renames (`oldName` → `newName`) and
1316
- * for symbol swaps (`+ → -`) without exploding into per-char segments.
1317
- *
1318
- * Exported only for its tests.
1319
- */
1320
- declare function tokenize(s: string): string[];
1321
- /**
1322
- * Apply the payload's hunks against `priorContent` and return the
1323
- * resulting file body. Mirrors the agent's tool-side semantics:
1324
- * - `replaceAll === true` → `String.replaceAll`
1325
- * - otherwise → first-occurrence `String.replace`
1326
- *
1327
- * Hunks are applied in order — a `multi_edit` later hunk operates on
1328
- * the output of the earlier ones, just like the actual tool.
1329
- */
1330
- declare function applyEditPayload(payload: EditPayload, priorContent: string): string;
1331
- /**
1332
- * Like `buildUnifiedDiff` but operating against the full file content
1333
- * so the diff carries *real* file line numbers and configurable
1334
- * surrounding context.
1335
- *
1336
- * Strategy:
1337
- * 1. Apply the payload to `priorContent` → `newContent`.
1338
- * 2. Run `computeLineDiff` over the whole file.
1339
- * 3. Group non-context ops into hunks, padding each with up to
1340
- * `contextLines` of context above and below. Adjacent hunks
1341
- * whose context regions touch are merged so we don't emit two
1342
- * `@@` headers separated by zero context lines.
1343
- *
1344
- * The output line numbers in the `@@` header are 1-based and reflect
1345
- * the change's position in the actual file — what the user expects
1346
- * when reading a diff alongside their editor.
1347
- *
1348
- * For `write_file` creating a new file (priorContent === ''), this
1349
- * falls back to the same `--- /dev/null` convention as
1350
- * `buildUnifiedDiff`.
1351
- */
1352
- declare function buildContextualDiff(payload: EditPayload, priorContent: string, contextLines?: number): string;
1353
- interface EditHunkSummary {
1354
- /** 1-based line number in the new file where the change starts; undefined when unknown (no priorContent). */
1355
- line?: number;
1356
- /** Number of lines added in this hunk. */
1357
- added: number;
1358
- /** Number of lines removed in this hunk. */
1359
- removed: number;
1360
- /** First removed line preview (trimmed, may be empty for pure additions). */
1361
- firstOld?: string;
1362
- /** First added line preview (trimmed, may be empty for pure deletions). */
1363
- firstNew?: string;
1364
- }
1365
- interface EditSummary {
1366
- totalAdded: number;
1367
- totalRemoved: number;
1368
- hunks: EditHunkSummary[];
1369
- }
1370
- /**
1371
- * Build a per-hunk digest used by the compact diff view.
1372
- *
1373
- * Strategy:
1374
- * - When `priorContent` is present and the payload describes a real
1375
- * file transformation, compute the contextual diff once, then walk
1376
- * the LCS ops splitting at runs of `add` / `remove` to anchor each
1377
- * summary entry to the **real** file line. This guarantees the
1378
- * summary's `L<n>` matches what the user sees in their editor.
1379
- * - Otherwise, fall back to per-hunk LCS over the (oldString,
1380
- * newString) snippet pair. Line numbers are absent because the
1381
- * snippet has no file position.
1382
- */
1383
- declare function summarizeEditPayload(payload: EditPayload): EditSummary;
1384
- interface HunkResolution {
1385
- /**
1386
- * True when the tool body would find this hunk's `old_string` AND apply
1387
- * it without ambiguity. False when `resolveOldString` returned null OR
1388
- * the match was ambiguous (multiple occurrences and `replace_all` off).
1389
- */
1390
- resolved: boolean;
1391
- /** Path the resolver took — `'exact'` when no recovery was needed. */
1392
- via?: ResolvedMatch['via'];
1393
- /** Match count in the running content for the hunk. */
1394
- occurrences?: number;
1395
- /** True when the resolver found >1 match without `replace_all`. */
1396
- ambiguous?: boolean;
1397
- }
1398
- interface PreviewResult {
1399
- /** Full unified diff of the (resolvable) hunks against `priorContent`. */
1400
- diffText: string;
1401
- /** 1:1 with `payload.hunks`. */
1402
- resolution: HunkResolution[];
1403
- /**
1404
- * Per-hunk isolated diff text rendered against the cumulative content
1405
- * after applying all earlier resolved hunks. Useful for the modal's
1406
- * focused-hunk view so hunk #N's preview reflects the state hunks
1407
- * 1..N-1 will leave the file in (same as the tool's order).
1408
- */
1409
- perHunkDiff: string[];
1410
- /**
1411
- * Resolved hunks with `oldString` rewritten to the haystack's actual
1412
- * bytes and `newString` re-styled to preserve curly-quote typography
1413
- * / line-prefix conventions. Pass this to `buildContextualDiff` to
1414
- * paint the unified diff.
1415
- */
1416
- resolvedPayload: EditPayload;
1417
- }
1418
- declare function previewEditPayload(payload: EditPayload, priorContent: string, contextLines?: number): PreviewResult;
1419
- declare function buildUnifiedDiff(payload: EditPayload): string;
1420
- declare function filetypeFromPath(path: string): string | undefined;
1421
- //#endregion
1422
1008
  //#region src/chat/footer-hints.d.ts
1423
1009
  /**
1424
1010
  * Options bag for {@link buildHints}. Flat shape so call sites read as a
@@ -1458,6 +1044,12 @@ interface BuildHintsOptions {
1458
1044
  effortColor: string;
1459
1045
  /** Foreground for the `/n` chord that introduces the effort label. */
1460
1046
  effortKeyColor: string;
1047
+ /**
1048
+ * Comma-joined labels of the enabled model options (e.g. `'fast'`), or `null`
1049
+ * when none are on. Appended after the effort label in the model chord — when
1050
+ * the model has no reasoning knob, it rides the chord on its own.
1051
+ */
1052
+ modelOptionsLabel?: string | null;
1461
1053
  agentLabel: string;
1462
1054
  agentColor: string;
1463
1055
  /**
@@ -1510,98 +1102,6 @@ declare function buildHints(options: BuildHintsOptions): Hint[];
1510
1102
  */
1511
1103
  declare function shortChord(spec: string): string;
1512
1104
  //#endregion
1513
- //#region src/chat/format.d.ts
1514
- /** Compact token formatter — 12_415 → "12.4k", 1_234_567 → "1.23M". */
1515
- declare function fmtTokens(n: number): string;
1516
- /** Compact relative-time formatter — "just now / 5m / 3h / 2d". */
1517
- declare function ageString(ts: number, now?: number): string;
1518
- /** Six-char short form of a session id for headers and lists. */
1519
- declare function shortId(id: string): string;
1520
- /**
1521
- * Single-line preview of a multi-line string, capped at `max` chars and
1522
- * ellipsis-terminated when truncated.
1523
- *
1524
- * Whitespace runs (newlines, tabs, multiple spaces) collapse into one
1525
- * space so the rendered output stays on a single visual row no matter
1526
- * how the input was shaped. Used by every transcript "preview" surface
1527
- * (spawn-start task, `tool: shell (background): <command>`,
1528
- * `<task-notification>` summary line, etc.) — without the whitespace
1529
- * collapse, a 60-char `slice` on a string with an inline `\n\n` paints
1530
- * the second paragraph below the first, producing the visible
1531
- * "preview text spills onto multiple lines" bug (and, downstream,
1532
- * misaligned spawn markers when the wrapped lines collide with
1533
- * other events).
1534
- *
1535
- * Reserves one slot for the `…` so the displayed width is exactly
1536
- * `max` when truncation kicks in.
1537
- */
1538
- declare function previewLine(s: string, max: number): string;
1539
- /**
1540
- * Compact human-readable duration formatter shared by background-task
1541
- * surfaces (the `<task-notification>` summary, the TUI banner, the
1542
- * `shell_kill` tool result, etc.).
1543
- *
1544
- * Format ladder:
1545
- * - `< 1s` → `"Nms"`
1546
- * - `< 10s` → `"N.Ns"` (one decimal)
1547
- * - `< 1m` → `"Ns"` (whole seconds)
1548
- * - `< 1h` → `"NmNs"` / `"Nm"` when seconds round to 0
1549
- * - `≥ 1h` → `"NhNm"` / `"Nh"` when minutes round to 0
1550
- *
1551
- * Single source of truth so a 60s task renders the same across the
1552
- * model-facing XML summary and the user-facing banner. Earlier
1553
- * separate formatters disagreed (XML said `"60.0s"`, banner said `"1m"`)
1554
- * which was confusing to the user reading both side by side.
1555
- */
1556
- declare function formatDuration(ms: number): string;
1557
- /**
1558
- * Status label for a terminated background task — `"exited <code>"`
1559
- * for natural exits, `"killed"` (with the signal name when known)
1560
- * for our-issued SIGTERMs.
1561
- *
1562
- * Pulled out as its own function so the `<task-notification>` XML
1563
- * summary, the TUI banner header, the `shell_kill` tool result, and
1564
- * future surfaces all read the same string.
1565
- */
1566
- declare function formatTaskStatus(info: {
1567
- status: 'exited' | 'killed';
1568
- exitCode: number;
1569
- signal?: NodeJS.Signals;
1570
- }): string;
1571
- /**
1572
- * One-line summary of a terminated background task — the shape used by
1573
- * the `<task-notification>` XML's `<summary>` tag AND the TUI banner's
1574
- * `event.text` fallback string. Three dot-separated segments:
1575
- *
1576
- * `<command preview · status · duration>`
1577
- *
1578
- * Centralizes the format so live + replay + wire all agree, and so a
1579
- * future cosmetic tweak (separator glyph, segment ordering) lands in
1580
- * exactly one place.
1581
- */
1582
- declare function formatTaskSummary(info: {
1583
- command: string;
1584
- status: 'exited' | 'killed';
1585
- exitCode: number;
1586
- signal?: NodeJS.Signals;
1587
- durationMs: number;
1588
- }, maxCommandChars?: number): string;
1589
- /**
1590
- * Compact an absolute path for display: replace the user's `$HOME`
1591
- * prefix with `~` (so `/Users/yael/Code/zidane` → `~/Code/zidane`),
1592
- * and optionally left-truncate with an ellipsis when the result
1593
- * still exceeds `maxWidth` (so the path's *tail* — the part the user
1594
- * recognizes — stays visible: `…/zidane` rather than `/Users/yaeluil…`).
1595
- *
1596
- * `maxWidth` is the maximum *display width* in cells. Omit to skip
1597
- * truncation. Paths outside `$HOME` are returned verbatim modulo
1598
- * truncation. The ellipsis (`…`) counts as one cell.
1599
- *
1600
- * `home` overrides `os.homedir()` for tests; production callers leave
1601
- * it undefined and pay the cheap one-syscall lookup per call.
1602
- */
1603
- declare function compactPath(path: string, maxWidth?: number, home?: string): string;
1604
- //#endregion
1605
1105
  //#region src/chat/generate-title.d.ts
1606
1106
  interface GenerateSessionTitleOptions {
1607
1107
  provider: Provider;
@@ -1753,7 +1253,7 @@ declare function McpAuthProvider({
1753
1253
  children
1754
1254
  }: {
1755
1255
  children: ReactNode;
1756
- }): _$react_jsx_runtime0.JSX.Element;
1256
+ }): import("react/jsx-runtime").JSX.Element;
1757
1257
  declare function useMcpAuthState(): McpAuthStateMap;
1758
1258
  declare function useMcpAuthDispatch(): (event: McpAuthEvent) => void;
1759
1259
  //#endregion
@@ -2025,63 +1525,6 @@ declare function refreshMcpToolsCatalog(opts: {
2025
1525
  buildAuthProvider?: (config: McpServerConfig) => OAuthClientProvider | undefined;
2026
1526
  }): Promise<void>;
2027
1527
  //#endregion
2028
- //#region src/chat/model-catalog.d.ts
2029
- /** A model entry as displayed in the cross-provider picker. */
2030
- interface CatalogEntry {
2031
- providerKey: ProviderKey;
2032
- providerLabel: string;
2033
- model: ModelInfo;
2034
- /**
2035
- * Pre-computed lowercase corpus for substring search across the
2036
- * provider key, label, model id, and display name. Built once at
2037
- * catalog-assembly time so filtering on every keystroke is
2038
- * O(catalogSize × queryLength), not O(catalogSize × fieldCount ×
2039
- * lowercase-overhead × queryLength).
2040
- */
2041
- searchCorpus: string;
2042
- }
2043
- /**
2044
- * Build the unified catalog from a list of available providers.
2045
- *
2046
- * Provider order is preserved (callers typically pass the picker order
2047
- * — alphabetical, auth-detection order, etc.); model order inside each
2048
- * provider matches whatever `modelsFor` returns. The current selection
2049
- * (when set) is bubbled to the top of its provider's section so it
2050
- * shows first without disturbing relative ordering elsewhere.
2051
- *
2052
- * `modelsFor` is injected (not imported from `./providers`) so the same
2053
- * helper works with hosts that supply their own model resolver via
2054
- * `ResolvedConfig.modelsFor`.
2055
- */
2056
- declare function buildModelCatalog(opts: {
2057
- providers: readonly ProviderAuth[];
2058
- modelsFor: (key: ProviderKey) => readonly ModelInfo[]; /** Optional currently-selected pair — promoted to the top of its provider group. */
2059
- current?: {
2060
- providerKey: ProviderKey;
2061
- modelId: string;
2062
- } | null;
2063
- }): CatalogEntry[];
2064
- /**
2065
- * Filter `catalog` by a user query. Empty / whitespace-only queries
2066
- * pass everything through unchanged (`O(1)` short-circuit). Multi-term
2067
- * queries (space-separated) require EVERY term to appear somewhere in
2068
- * the entry's search corpus — so `"claude opus"` matches `claude-opus-4`
2069
- * regardless of how the words are interleaved with provider names.
2070
- *
2071
- * Match is case-insensitive (the corpus is pre-lowercased; the query
2072
- * is lowercased once per call).
2073
- */
2074
- declare function filterModelCatalog(catalog: readonly CatalogEntry[], query: string): CatalogEntry[];
2075
- /**
2076
- * Find a catalog entry's index by its `{providerKey, modelId}` tuple.
2077
- * Returns `-1` when not present. Useful when re-rendering the picker
2078
- * (a query just narrowed the list, where did the selection land?).
2079
- */
2080
- declare function indexOfEntry(catalog: readonly CatalogEntry[], target: {
2081
- providerKey: ProviderKey;
2082
- modelId: string;
2083
- } | null | undefined): number;
2084
- //#endregion
2085
1528
  //#region src/chat/oauth.d.ts
2086
1529
  declare function supportsOAuth(descriptor: ProviderDescriptor): boolean;
2087
1530
  /** True when the provider's OAuth flow needs the user to paste a code back into the TUI (no loopback callback). */
@@ -2417,7 +1860,7 @@ declare function SettingsProvider({
2417
1860
  initial: Settings;
2418
1861
  onChange?: (settings: Settings) => void;
2419
1862
  children: ReactNode;
2420
- }): _$react_jsx_runtime0.JSX.Element;
1863
+ }): import("react/jsx-runtime").JSX.Element;
2421
1864
  declare function useSettings(): SettingsContextValue;
2422
1865
  /**
2423
1866
  * Keys of `Settings` whose value type is exactly `boolean`. Used to type
@@ -2544,23 +1987,6 @@ declare function buildSkillsConfig(opts: {
2544
1987
  }): SkillsConfig;
2545
1988
  //#endregion
2546
1989
  //#region src/chat/streaming.d.ts
2547
- /** Flip any trailing streaming markdown blocks (any owner) to finalized. */
2548
- declare function finalizeStreamingMarkdown(events: StreamEvent[]): StreamEvent[];
2549
- /** Flip the trailing streaming markdown block for one specific owner. */
2550
- declare function finalizeStreamingMarkdownForOwner(events: StreamEvent[], owner: Owner): StreamEvent[];
2551
- /**
2552
- * Effective context size for a single turn.
2553
- *
2554
- * `usage.input` is misleading on its own when prompt caching is active: providers
2555
- * (Anthropic, OpenRouter→Anthropic, Gemini) report `input` as the *new uncached*
2556
- * tokens only — the cached prefix shows up in `cacheRead`, and newly-cached
2557
- * tokens in `cacheCreation`. The model still saw all three buckets, so the real
2558
- * context-window utilization is their sum.
2559
- *
2560
- * Non-caching providers leave `cacheRead`/`cacheCreation` undefined, so this
2561
- * collapses to plain `input` for them.
2562
- */
2563
- declare function turnContextSize(usage: TurnUsage | undefined): number;
2564
1990
  interface StreamSource {
2565
1991
  /** Pass `undefined` / omit for parent-agent events. */
2566
1992
  childId?: string;
@@ -2604,7 +2030,7 @@ declare function ThemeProvider({
2604
2030
  }: {
2605
2031
  theme: Theme;
2606
2032
  children: ReactNode;
2607
- }): _$react_jsx_runtime0.JSX.Element;
2033
+ }): import("react/jsx-runtime").JSX.Element;
2608
2034
  declare function useTheme(): Theme;
2609
2035
  /** Color palette only — equivalent to `useTheme().colors`. */
2610
2036
  declare function useColors(): ThemeColors;
@@ -2926,61 +2352,5 @@ declare function selectActiveTodos(session: Session | null | undefined): ActiveT
2926
2352
  */
2927
2353
  declare function useActiveTodos(session: Session | null | undefined): ActiveTodosState;
2928
2354
  //#endregion
2929
- //#region src/chat/turn-operations.d.ts
2930
- /**
2931
- * Fork — keep every turn up to and including `turnId`, then strip any
2932
- * `tool_call` blocks left without a matching `tool_result` in the slice.
2933
- *
2934
- * Semantics:
2935
- * - Include the selected turn ("branch from HERE" mental model — the
2936
- * user wants the selected message to be the latest in the fork).
2937
- * - If the selected turn is an assistant turn with unresolved
2938
- * `tool_call` blocks (their `tool_result`s live in turns AFTER the
2939
- * slice), strip those calls. Otherwise the fork would post an
2940
- * assistant turn with no matching tool results, breaking the next
2941
- * provider call.
2942
- * - Drop turns that become empty (all blocks stripped).
2943
- *
2944
- * Returns `null` when `turnId` doesn't exist in `turns` — caller should
2945
- * surface a "turn not found" error rather than silently no-op.
2946
- */
2947
- declare function truncateTurnsAt(turns: readonly SessionTurn[], turnId: string): SessionTurn[] | null;
2948
- /**
2949
- * Delete — remove the turn with `turnId` and any tool blocks left
2950
- * orphaned by the removal. Returns `null` when `turnId` doesn't exist.
2951
- *
2952
- * Strategy:
2953
- * 1. Drop the target turn.
2954
- * 2. Scan the remaining turns for `tool_call`s without a matching
2955
- * `tool_result` (orphaned by removing the user turn that carried
2956
- * the result), and `tool_result`s without a matching `tool_call`
2957
- * (orphaned by removing the assistant turn that issued the call).
2958
- * Strip both sides.
2959
- * 3. Drop turns whose content is now empty.
2960
- *
2961
- * This guarantees the resulting history is protocol-clean — a follow-up
2962
- * `agent.run()` against the modified session can post turns without the
2963
- * provider rejecting the history.
2964
- */
2965
- declare function deleteTurnSafely(turns: readonly SessionTurn[], turnId: string): SessionTurn[] | null;
2966
- /**
2967
- * Serialize a turn's content to a clean text representation suited for
2968
- * the clipboard. Joins text + thinking blocks verbatim; tool calls and
2969
- * tool results get bracketed labels so the user can paste a readable
2970
- * record of what happened without losing structure.
2971
- *
2972
- * Empty turns return `''`.
2973
- */
2974
- declare function turnAsText(turn: SessionTurn): string;
2975
- /**
2976
- * Count turns before / after the one identified by `turnId` in the
2977
- * given list. Returns `null` when the id is missing. Used to label the
2978
- * turn-details modal with `N before · M after`.
2979
- */
2980
- declare function countNeighbors(turnIds: readonly string[], turnId: string): {
2981
- before: number;
2982
- after: number;
2983
- } | null;
2984
- //#endregion
2985
- export { ACTIONS_WITH_CARE_DOCTRINE, ASK_USER_TOOL, AUTO_COMPACT_MIN_GROWTH_FRACTION, type ActiveTodosState, type ActiveTrigger, type AgentAccent, type AgentProfile, type AgentRegistry, type AgentsMdFile, type AgentsMdResult, type AnswerValue, type ApiKeyCredential, type ApprovalDecision, type ApprovalRequest, type AuthMethod, type AutoCompactDecision, type AutoCompactInput, type AutoUpdateConfig, BUILD_AGENT, BUILTIN_AGENTS, BUILTIN_PROVIDERS, BUILTIN_THEMES, type BooleanSettingKey, type BuildHintsOptions, type BuildSystemOptions, type BuildUpdateHintOptions, CATPPUCCIN_FRAPPE, CATPPUCCIN_LATTE, CATPPUCCIN_MACCHIATO, CATPPUCCIN_MOCHA, COMMUNICATION_DOCTRINE, type CachedMcpToolList, type CatalogEntry, type ChatOptions, type CheckForUpdateOptions, type ChipColor, type ChipColorMap, type Commit, type CompletionContext, type CompletionItem, type CompletionProvider, type CompletionReference, type CompletionState, ConfigProvider, type ConfirmQuestion, type CreateInteractionToolsOptions, type CreateTodoToolsOptions, type CredentialsFile, DEFAULT_AGENT_ID, DEFAULT_BUDGET_EXCLUDE_TOOLS, DEFAULT_KEYBINDINGS, DEFAULT_PERSIST_EXCLUDE_TOOLS, DEFAULT_SETTINGS, DEFAULT_THEME, DOING_TASKS_DOCTRINE, type DetectPackageManagerOptions, type DiffLine, type DiffOp, type DiscoverAgentsMdOptions, type DiscoveredMcp, type DiscoveryContextValue, type DiscoveryError, DiscoveryProvider, type DiscoveryResult, type DiscoverySlot, type DiscoverySlotOptions, EMPTY_HINTS, type EditDiffDisplay, type EditHunk, type EditHunkSummary, type EditOutcome, type EditOutcomeKind, type EditPayload, type EditSummary, type EnabledAllowlistKey, type EnabledToggleSet, type EnvSectionOptions, FILES_TRIGGER, type FetchOAuthRedirectResult, type FileEntry, GRUVBOX_DARK, GRUVBOX_LIGHT, type GenerateSessionTitleOptions, type Hint, type HunkResolution, IDENTITY_PREFIX, IMPLICITLY_SAFE_TOOLS, INTERACTION_GUIDANCE, INTERACTION_GUIDANCE_NO_PROMPTS, type InPlaceUpdateResult, type InlineDiff, type InlineSegment, type InteractionRequest, type InteractionResponse, type InteractionsActions, InteractionsProvider, KEYBINDING_DEFS, KEYBINDING_DEF_BY_ACTION, KEYBINDING_KEY_COL_WIDTH, type KeyAction, type KeyBindingDef, type KeyBindingSection, type KeyBindings, type ListProjectFilesOptions, type MarkdownSegment, type McpAuthEvent, McpAuthProvider, type McpAuthStateMap, type McpAuthStatus, type McpToolToggleSet, type McpToolsCache, type ModelInfo, type OAuthCredential, type OAuthFlowOptions, type OAuthPrompt, OUTPUT_RESERVE_TOKENS, type Owner, PLAN_AGENT, PLAN_MODE_DOCTRINE, PLAN_MODE_DOCTRINE_NO_PROMPTS, PRESENT_PLAN_TOOL, type PackageManagerCommand, type PackageManagerId, type ParsedBinding, type PendingInteractionEntry, type PerformInPlaceUpdateOptions, type PerformSelfUpdateOptions, type Picked, type PlanDecision, type PlanPayload, type PlanRequest, type PlanResponse, type PlanStep, type PlatformTarballOptions, type PreviewResult, type ProjectEntry, type ProjectUserPath, type ProjectsFile, type PromptSegment, type PromptSegmentRef, type ProviderAuth, type ProviderCredential, type ProviderDescriptor, type ProviderKey, type ProviderRegistry, type Question, type QuestionChoice, type QuestionPayload, type QuestionRequest, type QuestionResponse, type QuestionType, type RequestApproval, type ResolveStorageDirsOptions, type ResolvedApproval, type ResolvedConfig, type ResolvedPaths, type RunUpdateCommandOptions, type RunUpdateCommandResult, SETTINGS_CATEGORIES, SETTINGS_CHOICES, SETTINGS_TOGGLES, SKILLS_TRIGGER, SUBAGENT_GUIDANCE, type SafeModeActions, SafeModeProvider, type Screen, type SelectQuestion, type SelfUpdateResult, type SessionExportAnchor, type SessionExportFormat, type SessionExportTarget, type SessionMeta, type Settings, type SettingsCategory, type SettingsCategoryDescriptor, type SettingsChoice, SettingsProvider, type SettingsToggle, type StateStoreApi, type StorageDirs, type StorageMode, type StorageSlot, type StreamBuffer, type StreamEvent, type StreamSource, type SyntaxStyles, type SyntaxTokenStyle, TODOREAD_TOOL, TODOS_METADATA_KEY, TODOWRITE_TOOL, TODO_STATUS_GLYPHS, TODO_WRITE_COUNTS_METADATA_KEY, TOKEN_DISCIPLINE_DOCTRINE, TOOL_DISPLAY, type TextQuestion, type Theme, type ThemeColors, ThemeProvider, type ThemeSelect, type ThemeSurfaces, type TodoItem, type TodoStatus, type TodoTally, type TodosBag, type ToolCallDisplay, type ToolDisplayMeta, type ToolFormatLine, type TranscriptItem, type TuiState, type UpdateStatus, type UseUpdateCheckOptions, VAPORWAVE_THEME, type VisibleMcpRow, type Walk, accentColor, addToSafelist, ageString, anthropicDescriptor, applyApiKeyEnv, applyEditPayload, applyInsert, blendHsl, bootProfileEnabled, bootTick, buildBuildSystem, buildContextualDiff, buildEditOutcomesAnnotation, buildHints, buildLinearRamp, buildMcpServers, buildModelCatalog, buildPlanSystem, buildResumedToolResultsTurn, buildSkillsConfig, buildToolToggle, buildUnifiedDiff, buildUpdateHint, buildVisibleMcpRows, cerebrasDescriptor, checkForUpdate, cleanTitle, clearMcpToolsCache, clipHintsToWidth, collectReferences, compactPath, compareSemver, computeInlineDiff, computeLineDiff, computeTurnAnchors, countNeighbors, createDiscoverySlot, createFileMcpCredentialStore, createFilesCompletionProvider, createInteractionTools, createSkillsCompletionProvider, createStateStore, createTodoTools, credKeyOf, credentialsPath, defaultMcpsConfigPaths, defaultSkillScanPaths, deleteTurnSafely, deriveSessionTitle, detectAuth, detectLibc, detectPackageManager, discoverAgentsMd, discoverProjectMcps, discoverProjectSkills, displayNameFor, effectiveContextWindow, ensureKeybindingsFile, envSection, eventsFromTurns, extractEditPayload, fetchOAuthRedirect, filetypeFromPath, filterModelCatalog, finalizeStreamingMarkdown, finalizeStreamingMarkdownForOwner, findActiveTrigger, findGitRoot, fmtTokens, formatBindingForDisplay, formatDuration, formatPathForCwd, formatTaskStatus, formatTaskSummary, formatToolCall, generateSessionTitle, getArchivedTodosForRun, getContextWindow, getMcpAuthStatus, getModelInfo, getSafelist, getTodosForRun, groupBindings, hintsLength, indexOfEntry, indexOfServerRow, isEditErrorResult, isInteractionTool, isOnSafelist, isTodoTool, isTurnHighlighted, isVisible, keybindingsPath, lastContextSizeFromTurns, listProjectFiles, listSessionMeta, loadMcpToolsCache, loadState, makeRequestInteraction, marginTopFor, maskToOutcomeKinds, matchesBinding, matchesSafelistEntry, mcpCredentialsPath, mcpToolsCachePath, mergeApprovalAndBodyOutcomes, mergeKeybindings, mergeReferences, modelSupportsReasoning, modelsForDescriptor, oauthUsesManualCodePaste, openaiDescriptor, openrouterDescriptor, parentServerName, parseBindingSpec, parseEditOutcomesFromResult, parseMcpsFile, parseSemver, patchMcpCredential, pendingInteractionsFromTurns, performInPlaceSelfUpdate, performSelfUpdate, piIdOf, pickActiveRunId, previewEditPayload, previewLine, projectUserPaths, projectsFilePath, pruneTodosByRun, readCredentials, readKeybindings, readProjects, readProviderCredential, reduceMcpAuth, refreshMcpToolsCatalog, removeProviderCredential, renderAgentsMdBlock, renderSession, resolveAgentId, resolveApprovalForPayload, resolveChipColor, resolveConfig, resolvePlatformPackage, resolveSessionExportTarget, resolveStorageDirs, resolveStoragePaths, resolveTheme, rewriteMultiEditHeader, runOAuthLogin, runUpdateCommand, saveMcpToolsCache, saveState, selectActiveTodos, selectableTurnIds, serializeInteractionResponse, setProviderCredential, setTodosForRun, shortChord, shortId, shouldAutoCompact, singleAgentRegistry, splitLines, splitMarkdownCodeBlocks, splitPromptSegments, stripEditOutcomesAnnotation, stripJsonComments, stripSpawnTokensLine, subscribeMcpToolsCache, suggestSafelistEntry, sumRunCosts, summarizeEditPayload, summarizeOutcomes, supportsOAuth, titleFromTurns, tokenize, toolCallPreview, toolResultText, truncateTrailing, truncateTurnsAt, tryOpenBrowser, turnAsText, turnContextSize, turnSelectionOwnership, uniqueFilesFromReferences, uniqueSkillNamesFromReferences, updateToolEventOutcomes, useActiveTodos, useColors, useCompletion, useConfig, useDiscovery, useDiscoveryOptional, useEnabledToggleSet, useInteractionsActions, useInteractionsQueue, useMcpAuthDispatch, useMcpAuthState, useMcpToolToggleMap, useMcpToolToggleSet, useSafeModeActions, useSafeModeQueue, useSelectStyle, useSettings, useStreamBuffer, useSurfaces, useSyntaxStyles, useTheme, useUpdateCheck, writeCredentials, writeProjects, writeSessionExport };
2355
+ export { ACTIONS_WITH_CARE_DOCTRINE, ASK_USER_TOOL, AUTO_COMPACT_MIN_GROWTH_FRACTION, type ActiveTodosState, type ActiveTrigger, type AgentAccent, type AgentProfile, type AgentRegistry, type AgentsMdFile, type AgentsMdResult, type AnswerValue, type ApiKeyCredential, type ApprovalDecision, type ApprovalRequest, type AuthMethod, type AutoCompactDecision, type AutoCompactInput, type AutoUpdateConfig, BUILD_AGENT, BUILTIN_AGENTS, BUILTIN_PROVIDERS, BUILTIN_THEMES, type BooleanSettingKey, type BuildHintsOptions, type BuildSystemOptions, type BuildUpdateHintOptions, CATPPUCCIN_FRAPPE, CATPPUCCIN_LATTE, CATPPUCCIN_MACCHIATO, CATPPUCCIN_MOCHA, COMMUNICATION_DOCTRINE, type CachedMcpToolList, type CatalogEntry, type ChatOptions, type CheckForUpdateOptions, type ChipColor, type ChipColorMap, type Commit, type CompletionContext, type CompletionItem, type CompletionProvider, type CompletionReference, type CompletionState, ConfigProvider, type ConfirmQuestion, type ContextBreakdown, type ContextBreakdownOptions, type ContextCategory, type ContextCategoryId, type ContextExactCounts, type ContextItem, type ContextMcpGroup, type ContextSnapshot, type ContextUsageSplit, type CreateInteractionToolsOptions, type CreateTodoToolsOptions, type CredentialsFile, type CustomField, DEFAULT_AGENT_ID, DEFAULT_BUDGET_EXCLUDE_TOOLS, DEFAULT_KEYBINDINGS, DEFAULT_PERSIST_EXCLUDE_TOOLS, DEFAULT_SETTINGS, DEFAULT_THEME, DOING_TASKS_DOCTRINE, type DetectPackageManagerOptions, type DiffLine, type DiffOp, type DiscoverAgentsMdOptions, type DiscoveredMcp, type DiscoveryContextValue, type DiscoveryError, DiscoveryProvider, type DiscoveryResult, type DiscoverySlot, type DiscoverySlotOptions, EMPTY_HINTS, type EditDiffDisplay, type EditHunk, type EditHunkSummary, type EditOutcome, type EditOutcomeKind, type EditPayload, type EditSummary, type EnabledAllowlistKey, type EnabledToggleSet, type EnvSectionOptions, FILES_TRIGGER, type FetchOAuthRedirectResult, type FileEntry, GRUVBOX_DARK, GRUVBOX_LIGHT, type GenerateSessionTitleOptions, type Hint, type HunkResolution, IDENTITY_PREFIX, IMPLICITLY_SAFE_TOOLS, INTERACTION_GUIDANCE, INTERACTION_GUIDANCE_NO_PROMPTS, type InPlaceUpdateResult, type InlineDiff, type InlineSegment, type InteractionRequest, type InteractionResponse, type InteractionsActions, InteractionsProvider, KEYBINDING_DEFS, KEYBINDING_DEF_BY_ACTION, KEYBINDING_KEY_COL_WIDTH, type KeyAction, type KeyBindingDef, type KeyBindingSection, type KeyBindings, type ListProjectFilesOptions, type MarkdownSegment, type McpAuthEvent, McpAuthProvider, type McpAuthStateMap, type McpAuthStatus, type McpToolToggleSet, type McpToolsCache, type ModelInfo, type ModelOption, type OAuthCredential, type OAuthFlowOptions, type OAuthPrompt, OUTPUT_RESERVE_TOKENS, type Owner, PLAN_AGENT, PLAN_MODE_DOCTRINE, PLAN_MODE_DOCTRINE_NO_PROMPTS, PRESENT_PLAN_TOOL, type PackageManagerCommand, type PackageManagerId, type ParsedBinding, type PendingInteractionEntry, type PerformInPlaceUpdateOptions, type PerformSelfUpdateOptions, type Picked, type PlanDecision, type PlanPayload, type PlanRequest, type PlanResponse, type PlanStep, type PlatformTarballOptions, type PreviewResult, type ProjectEntry, type ProjectUserPath, type ProjectsFile, type PromptSegment, type PromptSegmentRef, type ProviderAuth, type ProviderCredential, type ProviderDescriptor, type ProviderKey, type ProviderRegistry, type Question, type QuestionChoice, type QuestionPayload, type QuestionRequest, type QuestionResponse, type QuestionType, type RequestApproval, type ResolveStorageDirsOptions, type ResolvedApproval, type ResolvedConfig, type ResolvedPaths, type RunUpdateCommandOptions, type RunUpdateCommandResult, SETTINGS_CATEGORIES, SETTINGS_CHOICES, SETTINGS_TOGGLES, SKILLS_TRIGGER, SUBAGENT_GUIDANCE, type SafeModeActions, SafeModeProvider, type Screen, type SelectQuestion, type SelfUpdateResult, type SessionExportAnchor, type SessionExportFormat, type SessionExportTarget, type SessionMeta, type Settings, type SettingsCategory, type SettingsCategoryDescriptor, type SettingsChoice, SettingsProvider, type SettingsToggle, type StateStoreApi, type StorageDirs, type StorageMode, type StorageSlot, type StreamBuffer, type StreamEvent, type StreamSource, type SyntaxStyles, type SyntaxTokenStyle, TODOREAD_TOOL, TODOS_METADATA_KEY, TODOWRITE_TOOL, TODO_STATUS_GLYPHS, TODO_WRITE_COUNTS_METADATA_KEY, TOKEN_DISCIPLINE_DOCTRINE, TOOL_DISPLAY, type TextQuestion, type Theme, type ThemeColors, ThemeProvider, type ThemeSelect, type ThemeSurfaces, type TodoItem, type TodoStatus, type TodoTally, type TodosBag, type ToolCallDisplay, type ToolDisplayMeta, type ToolFormatLine, type TranscriptItem, type TuiState, type UpdateStatus, type UseUpdateCheckOptions, VAPORWAVE_THEME, type VisibleMcpRow, type Walk, accentColor, addToSafelist, ageString, anthropicDescriptor, applyApiKeyEnv, applyEditPayload, applyInsert, blendHsl, bootProfileEnabled, bootTick, buildBuildSystem, buildContextBreakdown, buildContextualDiff, buildEditOutcomesAnnotation, buildHints, buildLinearRamp, buildMcpServers, buildModelCatalog, buildPlanSystem, buildResumedToolResultsTurn, buildSkillsConfig, buildToolToggle, buildUnifiedDiff, buildUpdateHint, buildVisibleMcpRows, cerebrasDescriptor, checkForUpdate, cleanTitle, clearMcpToolsCache, clipHintsToWidth, collectReferences, compactPath, compareSemver, computeInlineDiff, computeLineDiff, computeTurnAnchors, countNeighbors, createDiscoverySlot, createFileMcpCredentialStore, createFilesCompletionProvider, createInteractionTools, createSkillsCompletionProvider, createStateStore, createTodoTools, credKeyOf, credentialsPath, defaultMcpsConfigPaths, defaultSkillScanPaths, deleteTurnSafely, deriveSessionTitle, detectAuth, detectLibc, detectPackageManager, discoverAgentsMd, discoverProjectMcps, discoverProjectSkills, displayNameFor, effectiveContextWindow, enabledModelOptions, ensureKeybindingsFile, envSection, eventsFromTurns, extractEditPayload, fetchOAuthRedirect, filetypeFromPath, filterModelCatalog, finalizeStreamingMarkdown, finalizeStreamingMarkdownForOwner, findActiveTrigger, findGitRoot, fmtTokens, formatBindingForDisplay, formatDuration, formatPathForCwd, formatTaskStatus, formatTaskSummary, formatToolCall, generateSessionTitle, getArchivedTodosForRun, getContextWindow, getMcpAuthStatus, getModelInfo, getSafelist, getTodosForRun, groupBindings, hintsLength, indexOfEntry, indexOfServerRow, isEditErrorResult, isInteractionTool, isOnSafelist, isTodoTool, isTurnHighlighted, isVisible, keybindingsPath, lastContextSizeFromTurns, listProjectFiles, listSessionMeta, loadMcpToolsCache, loadState, localDescriptor, makeRequestInteraction, marginTopFor, maskToOutcomeKinds, matchesBinding, matchesSafelistEntry, mcpCredentialsPath, mcpToolsCachePath, mergeApprovalAndBodyOutcomes, mergeKeybindings, mergeReferences, modelOptionsFor, modelSupportsReasoning, modelsForDescriptor, oauthUsesManualCodePaste, openaiDescriptor, openrouterDescriptor, parentServerName, parseBindingSpec, parseEditOutcomesFromResult, parseMcpsFile, parseSemver, patchMcpCredential, pendingInteractionsFromTurns, performInPlaceSelfUpdate, performSelfUpdate, piIdOf, pickActiveRunId, previewEditPayload, previewLine, projectUserPaths, projectsFilePath, pruneTodosByRun, readCredentials, readKeybindings, readProjects, readProviderCredential, reduceMcpAuth, refreshMcpToolsCatalog, removeProviderCredential, renderAgentsMdBlock, renderSession, resolveAgentId, resolveApprovalForPayload, resolveChipColor, resolveConfig, resolvePlatformPackage, resolveSessionExportTarget, resolveStorageDirs, resolveStoragePaths, resolveTheme, restoreModelOptions, rewriteMultiEditHeader, runOAuthLogin, runUpdateCommand, saveMcpToolsCache, saveState, selectActiveTodos, selectableTurnIds, serializeInteractionResponse, setProviderCredential, setTodosForRun, shortChord, shortId, shouldAutoCompact, singleAgentRegistry, splitLines, splitMarkdownCodeBlocks, splitPromptSegments, stripEditOutcomesAnnotation, stripJsonComments, stripSpawnTokensLine, subscribeMcpToolsCache, suggestSafelistEntry, sumRunCosts, summarizeEditPayload, summarizeOutcomes, supportsOAuth, titleFromTurns, tokenize, toolCallPreview, toolResultText, truncateTrailing, truncateTurnsAt, tryOpenBrowser, turnAsText, turnContextSize, turnSelectionOwnership, uniqueFilesFromReferences, uniqueSkillNamesFromReferences, updateToolEventOutcomes, useActiveTodos, useColors, useCompletion, useConfig, useDiscovery, useDiscoveryOptional, useEnabledToggleSet, useInteractionsActions, useInteractionsQueue, useMcpAuthDispatch, useMcpAuthState, useMcpToolToggleMap, useMcpToolToggleSet, useSafeModeActions, useSafeModeQueue, useSelectStyle, useSettings, useStreamBuffer, useSurfaces, useSyntaxStyles, useTheme, useUpdateCheck, writeCredentials, writeProjects, writeSessionExport };
2986
2356
  //# sourceMappingURL=chat.d.ts.map