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
@@ -0,0 +1,658 @@
1
+ import { D as SkillConfig, bn as TurnUsage, dn as SessionTurn, gn as ToolResultContent } from "./agent-BNS2nx_T.js";
2
+ import { D as Owner, E as EditPayload, G as ProviderKey, L as CompletionProvider, M as StreamEvent, R as CompletionReference, W as ProviderAuth, Y as ModelInfo, l as ApprovalDecision, w as EditOutcome } from "./tool-formatters-CU-j3a3e.js";
3
+
4
+ //#region src/chat/color-gradient.d.ts
5
+ /**
6
+ * Blend two hex colors in HSL space with shortest-path hue interpolation.
7
+ * `t` ∈ [0, 1]; `t=0` returns `from`, `t=1` returns `to`.
8
+ */
9
+ declare function blendHsl(from: string, to: string, t: number): string;
10
+ /**
11
+ * Static gradient ramp of length `n` going from `from` (index 0) to
12
+ * `to` (index n-1) in HSL space. For the cycling A→B→A→B ramp the
13
+ * throbber uses, see `buildCycleRamp` in `src/tui/crush-throbber.tsx`.
14
+ */
15
+ declare function buildLinearRamp(from: string, to: string, n: number): string[];
16
+ //#endregion
17
+ //#region src/chat/files-discovery.d.ts
18
+ /**
19
+ * Project file discovery for the `@`-prefixed files completion provider.
20
+ *
21
+ * Primary strategy — `git ls-files --cached --others --exclude-standard`.
22
+ * Git already understands `.gitignore`, `.git/info/exclude`, and global
23
+ * excludes, so we get correctness for free + sub-second performance on
24
+ * even huge monorepos. Falls back to a depth-limited filesystem walk when
25
+ * git isn't available or the directory isn't a repo.
26
+ *
27
+ * Pure: callers cache the returned list (e.g. in App state) and pass it
28
+ * into the provider's `getCatalog`. The list is a snapshot — refresh on
29
+ * cwd change or via a user-driven action.
30
+ */
31
+ /** One row in the project file catalog. `path` is forward-slashed + relative to `cwd`. */
32
+ interface FileEntry {
33
+ /** Forward-slashed relative path from the discovery cwd. Stable across OSes. */
34
+ path: string;
35
+ /** Basename — used for prefix ranking in the completion provider. */
36
+ name: string;
37
+ /** Source — `git` when listed via `git ls-files`, `fs` from the walk fallback. */
38
+ source: 'git' | 'fs';
39
+ }
40
+ /** Options for `listProjectFiles`. */
41
+ interface ListProjectFilesOptions {
42
+ /** Discovery root. Default: `process.cwd()`. */
43
+ cwd?: string;
44
+ /** Cap on returned entries. Default: 10,000. Bigger lists fall back to a truncated set. */
45
+ maxFiles?: number;
46
+ /** Aborts the scan early. Useful when re-running on rapid project switches. */
47
+ signal?: AbortSignal;
48
+ }
49
+ /**
50
+ * Discover every non-ignored file under `cwd`. Tries `git ls-files` first;
51
+ * on failure (no git, not a repo, abort) walks the fs with a hand-rolled
52
+ * skip list.
53
+ *
54
+ * Errors are not thrown — the function always returns an array (possibly
55
+ * empty). Callers wanting failure diagnostics can opt into them via
56
+ * `ZIDANE_DEBUG`.
57
+ */
58
+ declare function listProjectFiles(opts?: ListProjectFilesOptions): Promise<FileEntry[]>;
59
+ //#endregion
60
+ //#region src/chat/completion-files.d.ts
61
+ /** Trigger character — `@` is the conventional file-mention prefix in chat UIs. */
62
+ declare const FILES_TRIGGER = "@";
63
+ /**
64
+ * Build an `@`-prefixed files completion provider against a *live* catalog.
65
+ *
66
+ * The factory captures a getter so the catalog can be re-scanned (cwd
67
+ * change, manual refresh) without re-instantiating the provider — the
68
+ * App keeps one provider for the lifetime of the prompt block and just
69
+ * mutates the underlying state.
70
+ *
71
+ * `limit` caps the result list so the popover stays bounded on huge
72
+ * monorepos. Filtering is substring on `path` + `name`, case-insensitive,
73
+ * with an fzf-scored basename fuzzy fallback so small typos / omissions
74
+ * (`lop.ts` → `loop.ts`) still surface results; ranking prefers (in
75
+ * order): exact name match, name prefix, name substring, path substring,
76
+ * basename fuzzy match, alphabetical.
77
+ */
78
+ declare function createFilesCompletionProvider(opts: {
79
+ /** Live file catalog. Re-evaluated per call so refreshes take effect immediately. */getCatalog: () => readonly FileEntry[];
80
+ /**
81
+ * Optional hook called the first time the host needs the catalog —
82
+ * e.g. when the user opens the `@` popover. Hosts wire this to a
83
+ * lazy directory walk so boot doesn't pay for it in monorepos
84
+ * where the popover may never open. Idempotent contract: callers
85
+ * may invoke it on every `suggest`; the host caches internally.
86
+ *
87
+ * When provided, `suggest()` returns a Promise on the very first
88
+ * invocation if the catalog is still empty — the popover's loading
89
+ * state surfaces while the walk completes; subsequent calls are
90
+ * sync because `getCatalog()` then returns the populated state.
91
+ */
92
+ ensureCatalog?: () => Promise<readonly FileEntry[]>; /** Max items returned to the popover. Default: 50. */
93
+ limit?: number;
94
+ /**
95
+ * Rewrite the catalog's project-root-relative path into the form
96
+ * inserted into the prompt + matched by `parseReferences`. Wire this
97
+ * to `formatPathForCwd` so paths emitted into the buffer line up
98
+ * with the agent's CWD-resolving tools when the TUI launches from a
99
+ * project subdirectory. Default: identity.
100
+ *
101
+ * Stable identity expected — `parseReferences` calls it once per
102
+ * catalog entry per keystroke for the highlight pass; pure
103
+ * pure-function shape keeps the popover responsive on huge repos.
104
+ */
105
+ formatPath?: (entry: FileEntry) => string;
106
+ }): CompletionProvider<FileEntry>;
107
+ /**
108
+ * Walk a reference list and return the deduplicated set of files in
109
+ * first-mention order — input to "attach these files to the prompt"
110
+ * downstream logic.
111
+ */
112
+ declare function uniqueFilesFromReferences(references: readonly CompletionReference<unknown>[]): FileEntry[];
113
+ //#endregion
114
+ //#region src/chat/completion-skills.d.ts
115
+ /** Trigger character — slash-commands convention. */
116
+ declare const SKILLS_TRIGGER = "/";
117
+ /**
118
+ * Build a slash-command completion provider against a *live* skills
119
+ * catalog. The factory captures a getter so the catalog can change across
120
+ * renders (toggles, reload) without re-instantiating the provider.
121
+ *
122
+ * Pass `getEnabled` to additionally hide skills the user has toggled off
123
+ * — when undefined, every catalog entry is offered.
124
+ */
125
+ declare function createSkillsCompletionProvider(opts: {
126
+ /** 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. */
127
+ getEnabled?: () => readonly string[] | undefined;
128
+ /**
129
+ * Optional hook called the first time the host needs the catalog —
130
+ * typically when the user opens the `/` popover. Mirror of the
131
+ * files provider's `ensureCatalog`; same idempotent contract.
132
+ *
133
+ * Hosts wire this to a lazy SKILL.md scan so the boot path stays
134
+ * free of disk reads in deeply-nested skill trees. Returns a Promise
135
+ * on the very first `suggest()` call when the catalog is still
136
+ * empty so the popover surfaces its loading state.
137
+ */
138
+ ensureCatalog?: () => Promise<readonly SkillConfig[]>;
139
+ }): CompletionProvider<SkillConfig>;
140
+ /**
141
+ * Walk a parsed prompt for skill references and return the deduplicated
142
+ * list of skill names — input to `agent.activateSkill(name)` calls on
143
+ * submit.
144
+ */
145
+ declare function uniqueSkillNamesFromReferences(references: readonly CompletionReference<unknown>[]): string[];
146
+ //#endregion
147
+ //#region src/chat/edit-approval.d.ts
148
+ /**
149
+ * Convert a per-hunk approval mask into an `EditOutcome[]`. `true` →
150
+ * `applied`; `false` → `denied` with the supplied reason.
151
+ *
152
+ * Length is `Math.max(mask.length, fallbackLength)` so callers passing a
153
+ * shorter mask still get a fully-populated array — missing entries
154
+ * default to applied, matching the "no decision => keep" convention.
155
+ */
156
+ declare function maskToOutcomeKinds(mask: readonly boolean[], fallbackLength: number, deniedReason?: string): EditOutcome[];
157
+ /**
158
+ * Apply an `ApprovalDecision` to a payload, returning the resolved
159
+ * per-hunk outcomes + the gate-level verdict.
160
+ *
161
+ * Pure — does not mutate `input` or `payload`. The TUI's `applyGate`
162
+ * consumes the result: stashes `outcomes` in the pending-annotation map
163
+ * (keyed by callId) so `tool:transform` can append the
164
+ * `<edit-outcomes>` block to the tool result, rebinds `ctx.input.edits`
165
+ * to the approved subset for `partial`, and emits the `syntheticEvent`
166
+ * for fully-denied or fully-blocked calls.
167
+ */
168
+ interface ResolvedApproval {
169
+ /** Final state of every hunk after the decision (1:1 with payload.hunks). */
170
+ outcomes: EditOutcome[];
171
+ /** True when no hunk will be applied — gate should `block` the call. */
172
+ shouldBlock: boolean;
173
+ /**
174
+ * Synthetic `EditPayload` to render in the transcript. Identical to the
175
+ * incoming payload but with `outcomes` set so the renderer can badge
176
+ * each hunk. Only meaningful when at least one hunk was denied —
177
+ * an all-applied decision returns `null` here and the normal
178
+ * `tool:before` event suffices.
179
+ */
180
+ syntheticEvent: EditPayload | null;
181
+ }
182
+ declare function resolveApprovalForPayload(decision: ApprovalDecision, payload: EditPayload): ResolvedApproval;
183
+ /**
184
+ * Render an `EditOutcome[]` as the wire-format annotation block. Returns
185
+ * the body to APPEND to a tool result; callers join with a leading
186
+ * `\n\n` separator. Idempotent on missing reasons — bare `applied` lines
187
+ * stay terse.
188
+ */
189
+ declare function buildEditOutcomesAnnotation(outcomes: readonly EditOutcome[]): string;
190
+ /**
191
+ * Parse an `<edit-outcomes>…</edit-outcomes>` annotation block out of a
192
+ * tool result body. Returns the outcomes keyed by 1-based hunk index, or
193
+ * `null` when the block is missing / malformed.
194
+ *
195
+ * Anchored on the explicit tag pair so the parser doesn't false-positive
196
+ * on natural prose that happens to contain `#1 applied`.
197
+ */
198
+ declare function parseEditOutcomesFromResult(result: string | readonly ToolResultContent[]): EditOutcome[] | null;
199
+ /**
200
+ * Strip the first `<edit-outcomes>…</edit-outcomes>` block out of a tool
201
+ * result body, returning the surrounding text. Used by the
202
+ * `tool:transform` hook to peel a body-emitted annotation before
203
+ * re-appending the merged (approval ∪ body) version — otherwise the
204
+ * result would carry two annotation blocks and
205
+ * {@link parseEditOutcomesFromResult} would only see the first.
206
+ *
207
+ * Anchored on the same `\n<edit-outcomes>\n` / start-of-string newline
208
+ * shape the parser uses, so prose that incidentally mentions
209
+ * `<edit-outcomes>` (e.g. a model summarizing its own format) isn't
210
+ * mistakenly stripped. Trims a single leading `\n\n` separator when
211
+ * present so successive strips don't leave dangling blank lines.
212
+ * Idempotent on inputs that don't contain a properly-anchored block.
213
+ */
214
+ declare function stripEditOutcomesAnnotation(text: string): string;
215
+ /**
216
+ * Merge body-side outcomes (keyed against the approved subset the tool
217
+ * actually ran on, in subset-position order) into approval-side outcomes
218
+ * (1:1 with the model's ORIGINAL `edits` list, with `denied` entries for
219
+ * every hunk the user dropped).
220
+ *
221
+ * Algorithm: walk the approval array; every `applied` placeholder
222
+ * corresponds to one approved hunk that the body ran. Consume body's
223
+ * outcomes in order against those placeholders. Non-`applied` approval
224
+ * entries (`denied`, `skipped`) stay untouched — they describe gate-
225
+ * level decisions the body never saw.
226
+ *
227
+ * Pure. Returns a fresh array; never mutates either input.
228
+ *
229
+ * Edge cases:
230
+ * - `body` is empty / shorter than the approved count → remaining
231
+ * approval `applied` placeholders stay as `applied` (the body ran
232
+ * happily; absence of a body entry means nothing failed).
233
+ * - `body` longer than approved count → trailing body entries are
234
+ * ignored. Shouldn't happen in practice (body sees the rebound
235
+ * subset), but the guard keeps the merge total-pure.
236
+ */
237
+ declare function mergeApprovalAndBodyOutcomes(approval: readonly EditOutcome[], body: readonly EditOutcome[] | null): EditOutcome[];
238
+ /**
239
+ * Rewrite a `multi_edit` body header so the totals reflect the model's
240
+ * ORIGINAL edit list (the merged outcomes count) instead of the subset
241
+ * the body actually saw after gate rebinding. Without this, a partially
242
+ * approved call surfaces a misleading `applied 2 of 2 edits` (subset
243
+ * counts) on the wire even when the original was `applied 2 of 3`.
244
+ *
245
+ * Three body-side shapes are handled (matching `multi_edit`'s emit):
246
+ * 1. `Edited <path>: applied N edits (R replacements).`
247
+ * 2. `Edited <path>: applied N of M edits (R replacements).`
248
+ * 3. `multi_edit error: no edits applied to <path> (M attempted).`
249
+ *
250
+ * The replacements count is preserved verbatim — it's a body-side stat
251
+ * the chat layer can't recompute. When the first line doesn't look like
252
+ * any of the three shapes (e.g. an unrelated error preamble bubbled up),
253
+ * the text is returned unchanged.
254
+ */
255
+ declare function rewriteMultiEditHeader(text: string, merged: readonly EditOutcome[], path: string): string;
256
+ /**
257
+ * Aggregate counts for the transcript's summary badge (`3 applied · 1
258
+ * denied · 1 skipped`). Exported so renderers don't reimplement the
259
+ * tally. Pure / O(n).
260
+ */
261
+ declare function summarizeOutcomes(outcomes: readonly EditOutcome[] | undefined): {
262
+ applied: number;
263
+ denied: number;
264
+ skipped: number;
265
+ failed: number;
266
+ pending: number;
267
+ total: number;
268
+ };
269
+ //#endregion
270
+ //#region src/tools/edit-utils.d.ts
271
+ /**
272
+ * Locate the actual substring in `haystack` that corresponds to `needle`,
273
+ * recovering from typographical mismatch on six escalating fallbacks:
274
+ *
275
+ * 1. Exact substring match (the happy path — no transformation).
276
+ * 2. Curly-quote normalization on both sides — when the model emits straight
277
+ * quotes but the file has curly ones (or vice versa), the slice of the
278
+ * file at the matched position carries the file's actual typography.
279
+ * 3. Anthropic-sanitization undo on the needle — the model's `<n>` becomes
280
+ * the file's `<name>`, etc.
281
+ * 4. Combined: desanitize + quote normalization on the needle.
282
+ * 5. Line-number-prefix strip — when the model pasted a numbered `read_file`
283
+ * chunk verbatim into `old_string` and the file carries no such prefix.
284
+ * 6. Combined: line-number strip + quote normalization — paste-back of a
285
+ * numbered chunk against a file whose typography differs from the model's.
286
+ *
287
+ * Returns `{ actual, occurrences }` — `actual` is the string that exists in
288
+ * the file (use this to do the actual replace; preserves the file's
289
+ * typography). `occurrences` is the count of those matches in the file.
290
+ *
291
+ * Returns `null` when no recovery worked.
292
+ */
293
+ interface ResolvedMatch {
294
+ actual: string;
295
+ occurrences: number;
296
+ /** Recovery path — `'exact'` when no transformation was applied. */
297
+ via: 'exact' | 'quotes' | 'desanitize' | 'quotes+desanitize' | 'line-numbers' | 'quotes+line-numbers';
298
+ }
299
+ //#endregion
300
+ //#region src/chat/edit-diff.d.ts
301
+ declare function extractEditPayload(name: string, input: Record<string, unknown>, priorContent?: string): EditPayload | undefined;
302
+ type DiffOp = 'context' | 'add' | 'remove';
303
+ interface DiffLine {
304
+ op: DiffOp;
305
+ text: string;
306
+ }
307
+ declare function computeLineDiff(oldString: string, newString: string): DiffLine[];
308
+ /**
309
+ * Split a string into lines preserving empty lines but dropping the
310
+ * implicit trailing `""` produced by a final `\n`. Exported only for
311
+ * its tests — callers should use `computeLineDiff`.
312
+ */
313
+ declare function splitLines(s: string): string[];
314
+ interface InlineSegment {
315
+ text: string;
316
+ changed: boolean;
317
+ }
318
+ interface InlineDiff {
319
+ oldSegments: InlineSegment[];
320
+ newSegments: InlineSegment[];
321
+ }
322
+ declare function computeInlineDiff(oldLine: string, newLine: string): InlineDiff;
323
+ /**
324
+ * Tokenize on word / non-word boundaries. Each run of `\w+` is one
325
+ * token; each run of `\W+` (whitespace, punctuation) is another. This
326
+ * gives the right granularity for renames (`oldName` → `newName`) and
327
+ * for symbol swaps (`+ → -`) without exploding into per-char segments.
328
+ *
329
+ * Exported only for its tests.
330
+ */
331
+ declare function tokenize(s: string): string[];
332
+ /**
333
+ * Apply the payload's hunks against `priorContent` and return the
334
+ * resulting file body. Mirrors the agent's tool-side semantics:
335
+ * - `replaceAll === true` → `String.replaceAll`
336
+ * - otherwise → first-occurrence `String.replace`
337
+ *
338
+ * Hunks are applied in order — a `multi_edit` later hunk operates on
339
+ * the output of the earlier ones, just like the actual tool.
340
+ */
341
+ declare function applyEditPayload(payload: EditPayload, priorContent: string): string;
342
+ /**
343
+ * Like `buildUnifiedDiff` but operating against the full file content
344
+ * so the diff carries *real* file line numbers and configurable
345
+ * surrounding context.
346
+ *
347
+ * Strategy:
348
+ * 1. Apply the payload to `priorContent` → `newContent`.
349
+ * 2. Run `computeLineDiff` over the whole file.
350
+ * 3. Group non-context ops into hunks, padding each with up to
351
+ * `contextLines` of context above and below. Adjacent hunks
352
+ * whose context regions touch are merged so we don't emit two
353
+ * `@@` headers separated by zero context lines.
354
+ *
355
+ * The output line numbers in the `@@` header are 1-based and reflect
356
+ * the change's position in the actual file — what the user expects
357
+ * when reading a diff alongside their editor.
358
+ *
359
+ * For `write_file` creating a new file (priorContent === ''), this
360
+ * falls back to the same `--- /dev/null` convention as
361
+ * `buildUnifiedDiff`.
362
+ */
363
+ declare function buildContextualDiff(payload: EditPayload, priorContent: string, contextLines?: number): string;
364
+ interface EditHunkSummary {
365
+ /** 1-based line number in the new file where the change starts; undefined when unknown (no priorContent). */
366
+ line?: number;
367
+ /** Number of lines added in this hunk. */
368
+ added: number;
369
+ /** Number of lines removed in this hunk. */
370
+ removed: number;
371
+ /** First removed line preview (trimmed, may be empty for pure additions). */
372
+ firstOld?: string;
373
+ /** First added line preview (trimmed, may be empty for pure deletions). */
374
+ firstNew?: string;
375
+ }
376
+ interface EditSummary {
377
+ totalAdded: number;
378
+ totalRemoved: number;
379
+ hunks: EditHunkSummary[];
380
+ }
381
+ /**
382
+ * Build a per-hunk digest used by the compact diff view.
383
+ *
384
+ * Strategy:
385
+ * - When `priorContent` is present and the payload describes a real
386
+ * file transformation, compute the contextual diff once, then walk
387
+ * the LCS ops splitting at runs of `add` / `remove` to anchor each
388
+ * summary entry to the **real** file line. This guarantees the
389
+ * summary's `L<n>` matches what the user sees in their editor.
390
+ * - Otherwise, fall back to per-hunk LCS over the (oldString,
391
+ * newString) snippet pair. Line numbers are absent because the
392
+ * snippet has no file position.
393
+ */
394
+ declare function summarizeEditPayload(payload: EditPayload): EditSummary;
395
+ interface HunkResolution {
396
+ /**
397
+ * True when the tool body would find this hunk's `old_string` AND apply
398
+ * it without ambiguity. False when `resolveOldString` returned null OR
399
+ * the match was ambiguous (multiple occurrences and `replace_all` off).
400
+ */
401
+ resolved: boolean;
402
+ /** Path the resolver took — `'exact'` when no recovery was needed. */
403
+ via?: ResolvedMatch['via'];
404
+ /** Match count in the running content for the hunk. */
405
+ occurrences?: number;
406
+ /** True when the resolver found >1 match without `replace_all`. */
407
+ ambiguous?: boolean;
408
+ }
409
+ interface PreviewResult {
410
+ /** Full unified diff of the (resolvable) hunks against `priorContent`. */
411
+ diffText: string;
412
+ /** 1:1 with `payload.hunks`. */
413
+ resolution: HunkResolution[];
414
+ /**
415
+ * Per-hunk isolated diff text rendered against the cumulative content
416
+ * after applying all earlier resolved hunks. Useful for the modal's
417
+ * focused-hunk view so hunk #N's preview reflects the state hunks
418
+ * 1..N-1 will leave the file in (same as the tool's order).
419
+ */
420
+ perHunkDiff: string[];
421
+ /**
422
+ * Resolved hunks with `oldString` rewritten to the haystack's actual
423
+ * bytes and `newString` re-styled to preserve curly-quote typography
424
+ * / line-prefix conventions. Pass this to `buildContextualDiff` to
425
+ * paint the unified diff.
426
+ */
427
+ resolvedPayload: EditPayload;
428
+ }
429
+ declare function previewEditPayload(payload: EditPayload, priorContent: string, contextLines?: number): PreviewResult;
430
+ declare function buildUnifiedDiff(payload: EditPayload): string;
431
+ declare function filetypeFromPath(path: string): string | undefined;
432
+ //#endregion
433
+ //#region src/chat/format.d.ts
434
+ /** Compact token formatter — 12_415 → "12.4k", 1_234_567 → "1.23M". */
435
+ declare function fmtTokens(n: number): string;
436
+ /** Compact relative-time formatter — "just now / 5m / 3h / 2d". */
437
+ declare function ageString(ts: number, now?: number): string;
438
+ /** Six-char short form of a session id for headers and lists. */
439
+ declare function shortId(id: string): string;
440
+ /**
441
+ * Single-line preview of a multi-line string, capped at `max` chars and
442
+ * ellipsis-terminated when truncated.
443
+ *
444
+ * Whitespace runs (newlines, tabs, multiple spaces) collapse into one
445
+ * space so the rendered output stays on a single visual row no matter
446
+ * how the input was shaped. Used by every transcript "preview" surface
447
+ * (spawn-start task, `tool: shell (background): <command>`,
448
+ * `<task-notification>` summary line, etc.) — without the whitespace
449
+ * collapse, a 60-char `slice` on a string with an inline `\n\n` paints
450
+ * the second paragraph below the first, producing the visible
451
+ * "preview text spills onto multiple lines" bug (and, downstream,
452
+ * misaligned spawn markers when the wrapped lines collide with
453
+ * other events).
454
+ *
455
+ * Reserves one slot for the `…` so the displayed width is exactly
456
+ * `max` when truncation kicks in.
457
+ */
458
+ declare function previewLine(s: string, max: number): string;
459
+ /**
460
+ * Compact human-readable duration formatter shared by background-task
461
+ * surfaces (the `<task-notification>` summary, the TUI banner, the
462
+ * `shell_kill` tool result, etc.).
463
+ *
464
+ * Format ladder:
465
+ * - `< 1s` → `"Nms"`
466
+ * - `< 10s` → `"N.Ns"` (one decimal)
467
+ * - `< 1m` → `"Ns"` (whole seconds)
468
+ * - `< 1h` → `"NmNs"` / `"Nm"` when seconds round to 0
469
+ * - `≥ 1h` → `"NhNm"` / `"Nh"` when minutes round to 0
470
+ *
471
+ * Single source of truth so a 60s task renders the same across the
472
+ * model-facing XML summary and the user-facing banner. Earlier
473
+ * separate formatters disagreed (XML said `"60.0s"`, banner said `"1m"`)
474
+ * which was confusing to the user reading both side by side.
475
+ */
476
+ declare function formatDuration(ms: number): string;
477
+ /**
478
+ * Status label for a terminated background task — `"exited <code>"`
479
+ * for natural exits, `"killed"` (with the signal name when known)
480
+ * for our-issued SIGTERMs.
481
+ *
482
+ * Pulled out as its own function so the `<task-notification>` XML
483
+ * summary, the TUI banner header, the `shell_kill` tool result, and
484
+ * future surfaces all read the same string.
485
+ */
486
+ declare function formatTaskStatus(info: {
487
+ status: 'exited' | 'killed';
488
+ exitCode: number;
489
+ signal?: NodeJS.Signals;
490
+ }): string;
491
+ /**
492
+ * One-line summary of a terminated background task — the shape used by
493
+ * the `<task-notification>` XML's `<summary>` tag AND the TUI banner's
494
+ * `event.text` fallback string. Three dot-separated segments:
495
+ *
496
+ * `<command preview · status · duration>`
497
+ *
498
+ * Centralizes the format so live + replay + wire all agree, and so a
499
+ * future cosmetic tweak (separator glyph, segment ordering) lands in
500
+ * exactly one place.
501
+ */
502
+ declare function formatTaskSummary(info: {
503
+ command: string;
504
+ status: 'exited' | 'killed';
505
+ exitCode: number;
506
+ signal?: NodeJS.Signals;
507
+ durationMs: number;
508
+ }, maxCommandChars?: number): string;
509
+ /**
510
+ * Compact an absolute path for display: replace the user's `$HOME`
511
+ * prefix with `~` (so `/Users/yael/Code/zidane` → `~/Code/zidane`),
512
+ * and optionally left-truncate with an ellipsis when the result
513
+ * still exceeds `maxWidth` (so the path's *tail* — the part the user
514
+ * recognizes — stays visible: `…/zidane` rather than `/Users/yaeluil…`).
515
+ *
516
+ * `maxWidth` is the maximum *display width* in cells. Omit to skip
517
+ * truncation. Paths outside `$HOME` are returned verbatim modulo
518
+ * truncation. The ellipsis (`…`) counts as one cell.
519
+ *
520
+ * `home` overrides `os.homedir()` for tests; production callers leave
521
+ * it undefined and pay the cheap one-syscall lookup per call.
522
+ */
523
+ declare function compactPath(path: string, maxWidth?: number, home?: string): string;
524
+ //#endregion
525
+ //#region src/chat/model-catalog.d.ts
526
+ /** A model entry as displayed in the cross-provider picker. */
527
+ interface CatalogEntry {
528
+ providerKey: ProviderKey;
529
+ providerLabel: string;
530
+ model: ModelInfo;
531
+ /**
532
+ * Pre-computed lowercase corpus for substring search across the
533
+ * provider key, label, model id, and display name. Built once at
534
+ * catalog-assembly time so filtering on every keystroke is
535
+ * O(catalogSize × queryLength), not O(catalogSize × fieldCount ×
536
+ * lowercase-overhead × queryLength).
537
+ */
538
+ searchCorpus: string;
539
+ }
540
+ /**
541
+ * Build the unified catalog from a list of available providers.
542
+ *
543
+ * Provider order is preserved (callers typically pass the picker order
544
+ * — alphabetical, auth-detection order, etc.); model order inside each
545
+ * provider matches whatever `modelsFor` returns. The current selection
546
+ * (when set) is bubbled to the top of its provider's section so it
547
+ * shows first without disturbing relative ordering elsewhere.
548
+ *
549
+ * `modelsFor` is injected (not imported from `./providers`) so the same
550
+ * helper works with hosts that supply their own model resolver via
551
+ * `ResolvedConfig.modelsFor`.
552
+ */
553
+ declare function buildModelCatalog(opts: {
554
+ providers: readonly ProviderAuth[];
555
+ modelsFor: (key: ProviderKey) => readonly ModelInfo[]; /** Optional currently-selected pair — promoted to the top of its provider group. */
556
+ current?: {
557
+ providerKey: ProviderKey;
558
+ modelId: string;
559
+ } | null;
560
+ }): CatalogEntry[];
561
+ /**
562
+ * Filter `catalog` by a user query. Empty / whitespace-only queries
563
+ * pass everything through unchanged (`O(1)` short-circuit). Multi-term
564
+ * queries (space-separated) require EVERY term to appear somewhere in
565
+ * the entry's search corpus — so `"claude opus"` matches `claude-opus-4`
566
+ * regardless of how the words are interleaved with provider names.
567
+ *
568
+ * Match is case-insensitive (the corpus is pre-lowercased; the query
569
+ * is lowercased once per call).
570
+ */
571
+ declare function filterModelCatalog(catalog: readonly CatalogEntry[], query: string): CatalogEntry[];
572
+ /**
573
+ * Find a catalog entry's index by its `{providerKey, modelId}` tuple.
574
+ * Returns `-1` when not present. Useful when re-rendering the picker
575
+ * (a query just narrowed the list, where did the selection land?).
576
+ */
577
+ declare function indexOfEntry(catalog: readonly CatalogEntry[], target: {
578
+ providerKey: ProviderKey;
579
+ modelId: string;
580
+ } | null | undefined): number;
581
+ //#endregion
582
+ //#region src/chat/streaming-pure.d.ts
583
+ /** Flip any trailing streaming markdown blocks (any owner) to finalized. */
584
+ declare function finalizeStreamingMarkdown(events: StreamEvent[]): StreamEvent[];
585
+ /** Flip the trailing streaming markdown block for one specific owner. */
586
+ declare function finalizeStreamingMarkdownForOwner(events: StreamEvent[], owner: Owner): StreamEvent[];
587
+ /**
588
+ * Effective context size for a single turn.
589
+ *
590
+ * `usage.input` is misleading on its own when prompt caching is active: providers
591
+ * (Anthropic, OpenRouter→Anthropic, Gemini) report `input` as the *new uncached*
592
+ * tokens only — the cached prefix shows up in `cacheRead`, and newly-cached
593
+ * tokens in `cacheCreation`. The model still saw all three buckets, so the real
594
+ * context-window utilization is their sum.
595
+ *
596
+ * Non-caching providers leave `cacheRead`/`cacheCreation` undefined, so this
597
+ * collapses to plain `input` for them.
598
+ */
599
+ declare function turnContextSize(usage: TurnUsage | undefined): number;
600
+ //#endregion
601
+ //#region src/chat/turn-operations.d.ts
602
+ /**
603
+ * Fork — keep every turn up to and including `turnId`, then strip any
604
+ * `tool_call` blocks left without a matching `tool_result` in the slice.
605
+ *
606
+ * Semantics:
607
+ * - Include the selected turn ("branch from HERE" mental model — the
608
+ * user wants the selected message to be the latest in the fork).
609
+ * - If the selected turn is an assistant turn with unresolved
610
+ * `tool_call` blocks (their `tool_result`s live in turns AFTER the
611
+ * slice), strip those calls. Otherwise the fork would post an
612
+ * assistant turn with no matching tool results, breaking the next
613
+ * provider call.
614
+ * - Drop turns that become empty (all blocks stripped).
615
+ *
616
+ * Returns `null` when `turnId` doesn't exist in `turns` — caller should
617
+ * surface a "turn not found" error rather than silently no-op.
618
+ */
619
+ declare function truncateTurnsAt(turns: readonly SessionTurn[], turnId: string): SessionTurn[] | null;
620
+ /**
621
+ * Delete — remove the turn with `turnId` and any tool blocks left
622
+ * orphaned by the removal. Returns `null` when `turnId` doesn't exist.
623
+ *
624
+ * Strategy:
625
+ * 1. Drop the target turn.
626
+ * 2. Scan the remaining turns for `tool_call`s without a matching
627
+ * `tool_result` (orphaned by removing the user turn that carried
628
+ * the result), and `tool_result`s without a matching `tool_call`
629
+ * (orphaned by removing the assistant turn that issued the call).
630
+ * Strip both sides.
631
+ * 3. Drop turns whose content is now empty.
632
+ *
633
+ * This guarantees the resulting history is protocol-clean — a follow-up
634
+ * `agent.run()` against the modified session can post turns without the
635
+ * provider rejecting the history.
636
+ */
637
+ declare function deleteTurnSafely(turns: readonly SessionTurn[], turnId: string): SessionTurn[] | null;
638
+ /**
639
+ * Serialize a turn's content to a clean text representation suited for
640
+ * the clipboard. Joins text + thinking blocks verbatim; tool calls and
641
+ * tool results get bracketed labels so the user can paste a readable
642
+ * record of what happened without losing structure.
643
+ *
644
+ * Empty turns return `''`.
645
+ */
646
+ declare function turnAsText(turn: SessionTurn): string;
647
+ /**
648
+ * Count turns before / after the one identified by `turnId` in the
649
+ * given list. Returns `null` when the id is missing. Used to label the
650
+ * turn-details modal with `N before · M after`.
651
+ */
652
+ declare function countNeighbors(turnIds: readonly string[], turnId: string): {
653
+ before: number;
654
+ after: number;
655
+ } | null;
656
+ //#endregion
657
+ export { uniqueFilesFromReferences as $, buildUnifiedDiff as A, buildEditOutcomesAnnotation as B, EditSummary as C, PreviewResult as D, InlineSegment as E, previewEditPayload as F, rewriteMultiEditHeader as G, mergeApprovalAndBodyOutcomes as H, splitLines as I, SKILLS_TRIGGER as J, stripEditOutcomesAnnotation as K, summarizeEditPayload as L, computeLineDiff as M, extractEditPayload as N, applyEditPayload as O, filetypeFromPath as P, createFilesCompletionProvider as Q, tokenize as R, EditHunkSummary as S, InlineDiff as T, parseEditOutcomesFromResult as U, maskToOutcomeKinds as V, resolveApprovalForPayload as W, uniqueSkillNamesFromReferences as X, createSkillsCompletionProvider as Y, FILES_TRIGGER as Z, formatTaskSummary as _, finalizeStreamingMarkdown as a, DiffLine as b, CatalogEntry as c, indexOfEntry as d, FileEntry as et, ageString as f, formatTaskStatus as g, formatDuration as h, turnAsText as i, buildLinearRamp as it, computeInlineDiff as j, buildContextualDiff as k, buildModelCatalog as l, fmtTokens as m, deleteTurnSafely as n, listProjectFiles as nt, finalizeStreamingMarkdownForOwner as o, compactPath as p, summarizeOutcomes as q, truncateTurnsAt as r, blendHsl as rt, turnContextSize as s, countNeighbors as t, ListProjectFilesOptions as tt, filterModelCatalog as u, previewLine as v, HunkResolution as w, DiffOp as x, shortId as y, ResolvedApproval as z };
658
+ //# sourceMappingURL=turn-operations-DDIl4YVk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-operations-DDIl4YVk.d.ts","names":[],"sources":["../src/chat/color-gradient.ts","../src/chat/files-discovery.ts","../src/chat/completion-files.ts","../src/chat/completion-skills.ts","../src/chat/edit-approval.ts","../src/tools/edit-utils.ts","../src/chat/edit-diff.ts","../src/chat/format.ts","../src/chat/model-catalog.ts","../src/chat/streaming-pure.ts","../src/chat/turn-operations.ts"],"mappings":";;;;;;;;iBAmFgB,QAAA,CAAS,IAAA,UAAc,EAAA,UAAY,CAAA;AAAnD;;;;;AAAA,iBAuBgB,eAAA,CAAgB,IAAA,UAAc,EAAA,UAAY,CAAA;;;;;;;;AAvB1D;;;;;;;;AAA4D;AAAA,UC9D3C,SAAA;EDqFc;ECnF7B,IAAA;EDmF6B;ECjF7B,IAAA;EDiF4C;EC/E5C,MAAA;AAAA;AD+EiE;AAAA,UClClD,uBAAA;;EAEf,GAAA;EArDe;EAuDf,QAAA;;EAEA,MAAA,GAAS,WAAW;AAAA;;;;AAnDd;AA6CR;;;;;iBAkBsB,gBAAA,CAAiB,IAAA,GAAM,uBAAA,GAA+B,OAAA,CAAQ,SAAA;;;;cCrEvE,aAAA;AFqFb;;;;;;;;AAAmE;;;;ACrFnE;;;ADqFA,iBE8BgB,6BAAA,CAA8B,IAAA;EDjH5C,qFCmHA,UAAA,iBAA2B,SAAA;ED/G3B;;AAAM;AA6CR;;;;;;;;;EC+EE,aAAA,SAAsB,OAAA,UAAiB,SAAA,KD7DnB;EC+DpB,KAAA;;;;;;;;;;;;EAYA,UAAA,IAAc,KAAA,EAAO,SAAA;AAAA,IACnB,kBAAA,CAAmB,SAAA;;;AAjJvB;;;iBA0OgB,yBAAA,CACd,UAAA,WAAqB,mBAAA,cACpB,SAAS;;;AF9KgD;AAAA,cG7D/C,cAAA;;;;;;;;AHoFsD;iBGVnD,8BAAA,CAA+B,IAAA;gFAE7C,UAAA,iBAA2B,WAAA,IF7EZ;EE+Ef,UAAA;;;;;;;AFzEM;AA6CR;;;EEuCE,aAAA,SAAsB,OAAA,UAAiB,WAAA;AAAA,IACrC,kBAAA,CAAmB,WAAA;;;;;AFlCD;iBEiGN,8BAAA,CACd,UAAmD,WAA9B,mBAAmB;;;;;AH7FkB;AAuB5D;;;;;iBIrFgB,kBAAA,CACd,IAAA,sBACA,cAAA,UACA,YAAA,YACC,WAAW;;;AJiFqD;;;;ACrFnE;;;;;UGyBiB,gBAAA;EHnBf;EGqBA,QAAA,EAAU,WAAA;EHrBJ;EGuBN,WAAA;EHsBsC;;;;;;;EGdtC,cAAA,EAAgB,WAAW;AAAA;AAAA,iBAGb,yBAAA,CACd,QAAA,EAAU,gBAAA,EACV,OAAA,EAAS,WAAA,GACR,gBAAA;;;;;;;iBAqEa,2BAAA,CAA4B,QAAgC,WAAb,WAAW;;;;;;AH3CmB;;;iBGgE7E,2BAAA,CACd,MAAA,oBAA0B,iBAAA,KACzB,WAAW;AFvId;;;;AAA0B;AAmH1B;;;;;;;;;;AAnHA,iBE2MgB,2BAAA,CAA4B,IAAY;;;;;;;;;;;;;;AF1DxB;AAyFhC;;;;;;;;iBEkBgB,4BAAA,CACd,QAAA,WAAmB,WAAA,IACnB,IAAA,WAAe,WAAA,YACd,WAAA;;;;AD9PH;;;;AAA2B;AA0E3B;;;;;;;;;iBCsNgB,sBAAA,CACd,IAAA,UACA,MAAA,WAAiB,WAAW,IAC5B,IAAA;;;;;;iBA8Cc,iBAAA,CAAkB,QAAA,WAAmB,WAAW;EAC9D,OAAA;EACA,MAAA;EACA,OAAA;EACA,MAAA;EACA,OAAA;EACA,KAAA;AAAA;;;AHxVF;;;;;;;;AAMQ;AA6CR;;;;;;;;;AAMsB;AAYtB;;;AArEA,UImHiB,aAAA;EACf,MAAA;EACA,WAAA;EJhDiF;EIkDjF,GAAA;AAAA;;;iBC7Gc,kBAAA,CACd,IAAA,UACA,KAAA,EAAO,MAAA,mBACP,YAAA,YACC,WAAW;AAAA,KA0EF,MAAA;AAAA,UAEK,QAAA;EACf,EAAA,EAAI,MAAM;EACV,IAAA;AAAA;AAAA,iBAGc,eAAA,CAAgB,SAAA,UAAmB,SAAA,WAAoB,QAAQ;;;;;ANjCnB;iBMkF5C,UAAA,CAAW,CAAS;AAAA,UAwBnB,aAAA;EACf,IAAA;EACA,OAAO;AAAA;AAAA,UAGQ,UAAA;EACf,WAAA,EAAa,aAAA;EACb,WAAA,EAAa,aAAa;AAAA;AAAA,iBAGZ,iBAAA,CAAkB,OAAA,UAAiB,OAAA,WAAkB,UAAU;;;ALlL/E;;;;;;iBKoPgB,QAAA,CAAS,CAAS;;AL9O1B;AA6CR;;;;;;;iBKwOgB,gBAAA,CAAiB,OAAA,EAAS,WAAW,EAAE,YAAA;;ALlOjC;AAYtB;;;;;;;;;;;;;AAA6F;;;;ACrE7F;;iBI0TgB,mBAAA,CACd,OAAA,EAAS,WAAW,EACpB,YAAA,UACA,YAAA;AAAA,UAmFe,eAAA;EJhZS;EIkZxB,IAAA;EJ/R2C;EIiS3C,KAAA;EJ/R2B;EIiS3B,OAAA;EJpRsB;EIsRtB,QAAA;EJvQqB;EIyQrB,QAAA;AAAA;AAAA,UAGe,WAAA;EACf,UAAA;EACA,YAAA;EACA,KAAA,EAAO,eAAe;AAAA;;;;;;;;;;AJ/QQ;AAyFhC;;;iBIsMgB,oBAAA,CAAqB,OAAA,EAAS,WAAA,GAAc,WAAW;AAAA,UA+GtD,cAAA;EJpTf;;;AACU;;EIyTV,QAAA;;EAEA,GAAA,GAAM,aAAa;EHtiBM;EGwiBzB,WAAA;EHxiByB;EG0iBzB,SAAA;AAAA;AAAA,UAGe,aAAA;;EAEf,QAAA;EHtduC;EGwdvC,UAAA,EAAY,cAAA;EHvdS;;;;;;EG8drB,WAAA;EH/dA;;;;;;EGseA,eAAA,EAAiB,WAAW;AAAA;AAAA,iBAGd,kBAAA,CACd,OAAA,EAAS,WAAA,EACT,YAAA,UACA,YAAA,YACC,aAAa;AAAA,iBA8EA,gBAAA,CAAiB,OAAoB,EAAX,WAAW;AAAA,iBA4DrC,gBAAA,CAAiB,IAAY;;;;iBCztB7B,SAAA,CAAU,CAAS;;iBASnB,SAAA,CAAU,EAAA,UAAY,GAAwB;;iBAa9C,OAAA,CAAQ,EAAU;;;;;;;;APgD0B;AAuB5D;;;;;;;;AAAmE;;iBOjDnD,WAAA,CAAY,CAAA,UAAW,GAAW;;ANpClD;;;;;;;;AAMQ;AA6CR;;;;;;;iBMSgB,cAAA,CAAe,EAAU;;ANHnB;AAYtB;;;;;;;iBMgBgB,gBAAA,CAAiB,IAAA;EAC/B,MAAA;EACA,QAAA;EACA,MAAA,GAAS,MAAA,CAAO,OAAO;AAAA;;ANnBoE;;;;ACrE7F;;;;AAA0B;AAmH1B;iBKTgB,iBAAA,CAAkB,IAAA;EAChC,OAAA;EACA,MAAA;EACA,QAAA;EACA,MAAA,GAAS,MAAA,CAAO,OAAO;EACvB,UAAA;AAAA,GACC,eAAA;;;;;;;;;;;;;;;iBAkBa,WAAA,CAAY,IAAA,UAAc,QAAA,WAAmB,IAAA;;;APpED;AAAA,UQnE3C,YAAA;EACf,WAAA,EAAa,WAAA;EACb,aAAA;EACA,KAAA,EAAO,SAAS;ERuFc;;;;AAAmC;;;EQ/EjE,YAAA;AAAA;;;;;;;;APAM;AA6CR;;;;;iBO7BgB,iBAAA,CAAkB,IAAA;EAChC,SAAA,WAAoB,YAAA;EACpB,SAAA,GAAY,GAAA,EAAK,WAAA,cAAyB,SAAA,IPiCtB;EO/BpB,OAAA;IAAY,WAAA,EAAa,WAAA;IAAa,OAAA;EAAA;AAAA,IACpC,YAAA;;;;;;;;;;AP0CyF;iBOD7E,kBAAA,CACd,OAAA,WAAkB,YAAA,IAClB,KAAA,WACC,YAAY;;;ANvEf;;;iBMoFgB,YAAA,CACd,OAAA,WAAkB,YAAA,IAClB,MAAA;EAAU,WAAA,EAAa,WAAW;EAAE,OAAA;AAAA;;;;iBCvFtB,yBAAA,CAA0B,MAAA,EAAQ,WAAA,KAAgB,WAAW;AT+DjB;AAAA,iBSlD5C,iCAAA,CAAkC,MAAA,EAAQ,WAAA,IAAe,KAAA,EAAO,KAAA,GAAQ,WAAA;;;;;;;;ATyErB;;;;ACrFnE;iBQwCgB,eAAA,CAAgB,KAA4B,EAArB,SAAS;;;AT6ChD;;;;;;;;AAAmE;;;;ACrFnE;;;;;ADqFA,iBUzEgB,eAAA,CAAgB,KAAA,WAAgB,WAAA,IAAe,MAAA,WAAiB,WAAW;;;ATNnF;AA6CR;;;;;;;;;AAMsB;AAYtB;;;;iBShCgB,gBAAA,CAAiB,KAAA,WAAgB,WAAA,IAAe,MAAA,WAAiB,WAAW;;;;;;;;;iBAwD5E,UAAA,CAAW,IAAiB,EAAX,WAAW;;;;AR7F5C;;iBQ4HgB,cAAA,CACd,OAAA,qBACA,MAAA;EACG,MAAA;EAAgB,KAAA;AAAA"}
@@ -48,4 +48,4 @@ function toolOutputByteLength(content) {
48
48
  //#endregion
49
49
  export { toolOutputByteLength as n, toolResultToText as r, DEFAULT_AGENT_CLOCK as t };
50
50
 
51
- //# sourceMappingURL=types-oKPBdCmL.js.map
51
+ //# sourceMappingURL=types-BPw_i5vb.js.map