zidane 5.5.4 → 5.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/README.md +7 -1
  2. package/dist/{agent-CMAklak7.d.ts → agent-B26FuGew.d.ts} +90 -2
  3. package/dist/agent-B26FuGew.d.ts.map +1 -0
  4. package/dist/chat.d.ts +133 -22
  5. package/dist/chat.d.ts.map +1 -1
  6. package/dist/chat.js +3 -3
  7. package/dist/{errors-C5VSakmT.js → errors-DdZXnyXE.js} +38 -2
  8. package/dist/errors-DdZXnyXE.js.map +1 -0
  9. package/dist/{index-CF5QwBiz.d.ts → index-CE7z_11T.d.ts} +2 -2
  10. package/dist/{index-CF5QwBiz.d.ts.map → index-CE7z_11T.d.ts.map} +1 -1
  11. package/dist/{index-kroGomhj.d.ts → index-CROWxXo9.d.ts} +23 -2
  12. package/dist/index-CROWxXo9.d.ts.map +1 -0
  13. package/dist/index.d.ts +4 -4
  14. package/dist/index.js +10 -10
  15. package/dist/{interpolate-Cvjy8gpk.js → interpolate-j5V-wcAQ.js} +2 -2
  16. package/dist/{interpolate-Cvjy8gpk.js.map → interpolate-j5V-wcAQ.js.map} +1 -1
  17. package/dist/{login-B_kfoGMP.js → login-D5lQWoFx.js} +3 -3
  18. package/dist/{login-B_kfoGMP.js.map → login-D5lQWoFx.js.map} +1 -1
  19. package/dist/{mcp-BE43Viwi.js → mcp-ngMS0S6N.js} +2 -2
  20. package/dist/{mcp-BE43Viwi.js.map → mcp-ngMS0S6N.js.map} +1 -1
  21. package/dist/mcp.d.ts +1 -1
  22. package/dist/mcp.js +1 -1
  23. package/dist/{messages-BBWakTN6.js → messages-B5k4DAXy.js} +2 -2
  24. package/dist/{messages-BBWakTN6.js.map → messages-B5k4DAXy.js.map} +1 -1
  25. package/dist/{presets-BDvBZuYI.js → presets-BDCthpyD.js} +2 -2
  26. package/dist/{presets-BDvBZuYI.js.map → presets-BDCthpyD.js.map} +1 -1
  27. package/dist/presets.d.ts +2 -2
  28. package/dist/presets.js +1 -1
  29. package/dist/{providers-CsUyN_FJ.js → providers-CaJE2ToS.js} +3 -3
  30. package/dist/{providers-CsUyN_FJ.js.map → providers-CaJE2ToS.js.map} +1 -1
  31. package/dist/providers.d.ts +1 -1
  32. package/dist/providers.js +2 -2
  33. package/dist/restate.d.ts +1 -1
  34. package/dist/session/sqlite.d.ts +1 -1
  35. package/dist/session/sqlite.d.ts.map +1 -1
  36. package/dist/session/sqlite.js +226 -51
  37. package/dist/session/sqlite.js.map +1 -1
  38. package/dist/{session-DzfRacU_.js → session-BoEW_wCR.js} +2 -2
  39. package/dist/{session-DzfRacU_.js.map → session-BoEW_wCR.js.map} +1 -1
  40. package/dist/session.d.ts +1 -1
  41. package/dist/session.js +2 -2
  42. package/dist/skills.d.ts +2 -2
  43. package/dist/skills.js +1 -1
  44. package/dist/{tools-Bbd0Ivwn.js → tools-Co3VYhgM.js} +154 -15
  45. package/dist/tools-Co3VYhgM.js.map +1 -0
  46. package/dist/tools.d.ts +2 -2
  47. package/dist/tools.js +1 -1
  48. package/dist/{transcript-anchors-C79AszkC.d.ts → transcript-anchors-CTTeQJzy.d.ts} +12 -4
  49. package/dist/{transcript-anchors-C79AszkC.d.ts.map → transcript-anchors-CTTeQJzy.d.ts.map} +1 -1
  50. package/dist/tui.d.ts +2 -2
  51. package/dist/tui.d.ts.map +1 -1
  52. package/dist/tui.js +432 -83
  53. package/dist/tui.js.map +1 -1
  54. package/dist/{turn-operations-CGf7wWF0.js → turn-operations-fhinWY4m.js} +134 -18
  55. package/dist/turn-operations-fhinWY4m.js.map +1 -0
  56. package/dist/types-oKPBdCmL.js.map +1 -1
  57. package/dist/types.d.ts +3 -3
  58. package/dist/types.js +2 -2
  59. package/docs/ARCHITECTURE.md +5 -2
  60. package/docs/CHAT.md +10 -3
  61. package/docs/RESTATE.md +190 -0
  62. package/docs/SKILL.md +27 -2
  63. package/docs/TUI.md +3 -3
  64. package/package.json +1 -1
  65. package/dist/agent-CMAklak7.d.ts.map +0 -1
  66. package/dist/errors-C5VSakmT.js.map +0 -1
  67. package/dist/index-kroGomhj.d.ts.map +0 -1
  68. package/dist/tools-Bbd0Ivwn.js.map +0 -1
  69. package/dist/turn-operations-CGf7wWF0.js.map +0 -1
@@ -1,11 +1,11 @@
1
- import { H as previewLine, R as fmtTokens, U as shortId, a as multiEdit, c as grep, d as resolveOldString, f as styleReplacementForVia, i as readFile$1, l as glob, n as createSpawnTool, o as listFiles, t as writeFile$1, u as edit, y as shell } from "./tools-Bbd0Ivwn.js";
2
- import { s as errorMessage } from "./errors-C5VSakmT.js";
1
+ import { H as previewLine, R as fmtTokens, U as shortId, a as multiEdit, c as grep, d as resolveOldString, f as styleReplacementForVia, i as readFile$1, l as glob, n as createSpawnTool, o as listFiles, t as writeFile$1, u as edit, y as shell } from "./tools-Co3VYhgM.js";
2
+ import { c as errorMessage } from "./errors-DdZXnyXE.js";
3
3
  import { r as toolResultToText } from "./types-oKPBdCmL.js";
4
- import { r as normalizeMcpServers } from "./mcp-BE43Viwi.js";
5
- import { a as discoverSkills } from "./interpolate-Cvjy8gpk.js";
4
+ import { r as normalizeMcpServers } from "./mcp-ngMS0S6N.js";
5
+ import { a as discoverSkills } from "./interpolate-j5V-wcAQ.js";
6
6
  import { n as formatTokenUsage } from "./stats-Lc3zL3RM.js";
7
- import { n as definePreset, t as composePresets } from "./presets-BDvBZuYI.js";
8
- import { a as writeFileAtomic, i as anthropic, n as openai, r as cerebras, t as openrouter } from "./providers-CsUyN_FJ.js";
7
+ import { n as definePreset, t as composePresets } from "./presets-BDCthpyD.js";
8
+ import { a as writeFileAtomic, i as anthropic, n as openai, r as cerebras, t as openrouter } from "./providers-CaJE2ToS.js";
9
9
  import { createRequire } from "node:module";
10
10
  import { dirname, isAbsolute, join, posix, relative, resolve, sep } from "node:path";
11
11
  import { homedir, tmpdir } from "node:os";
@@ -1416,6 +1416,19 @@ function detectAuth(dataDir, registry, env = process.env) {
1416
1416
  * No state. Same inputs → same answer.
1417
1417
  */
1418
1418
  /**
1419
+ * Default hysteresis floor for {@link shouldAutoCompact}. After a successful
1420
+ * compaction lands, the next compaction is suppressed until input usage
1421
+ * grows by at least this fraction of the effective context window beyond
1422
+ * the post-compact baseline.
1423
+ *
1424
+ * `0.1` = 10% of the window. Picked so the immediate post-compact bounce
1425
+ * (summary turn + restored attachments + re-emitted system prefix) never
1426
+ * re-fires the trigger by itself, but a meaningful chunk of new work
1427
+ * (one or two large tool reads) does. Tune via the predicate's
1428
+ * `minGrowthFraction` input if a host needs different ergonomics.
1429
+ */
1430
+ const AUTO_COMPACT_MIN_GROWTH_FRACTION = .1;
1431
+ /**
1419
1432
  * Decide whether auto-compaction should fire for the latest turn.
1420
1433
  *
1421
1434
  * Order of checks is deliberate: cheapest / most common skips first
@@ -1448,6 +1461,12 @@ function shouldAutoCompact(input) {
1448
1461
  kind: "skip",
1449
1462
  reason: "under-threshold"
1450
1463
  };
1464
+ if (typeof input.lastCompactedInputTokens === "number" && Number.isFinite(input.lastCompactedInputTokens) && input.lastCompactedInputTokens >= 0 && typeof input.minGrowthFraction === "number" && Number.isFinite(input.minGrowthFraction) && input.minGrowthFraction > 0) {
1465
+ if ((input.inputTokens - input.lastCompactedInputTokens) / effectiveWindow < input.minGrowthFraction) return {
1466
+ kind: "skip",
1467
+ reason: "cooldown"
1468
+ };
1469
+ }
1451
1470
  if (input.alreadyCompacting) return {
1452
1471
  kind: "skip",
1453
1472
  reason: "already-compacting"
@@ -1577,7 +1596,7 @@ async function checkForUpdate(options) {
1577
1596
  if (!options.force && isOptedOut()) return skipped(options.currentVersion, channel);
1578
1597
  const cachePath = options.cacheDir ? cacheFilePath(options.cacheDir, options.packageName, channel) : null;
1579
1598
  const cached = cachePath ? readCache(cachePath) : null;
1580
- if (cached && cached.packageName === options.packageName && cached.channel === channel) {
1599
+ if (!options.force && cached && cached.packageName === options.packageName && cached.channel === channel) {
1581
1600
  if (ttl > 0 && now() - cached.checkedAt < ttl) {
1582
1601
  const hasUpdate = compareSemver(cached.latest, options.currentVersion) > 0;
1583
1602
  return {
@@ -2199,10 +2218,15 @@ function detectLibc() {
2199
2218
  //#endregion
2200
2219
  //#region src/chat/auto-update-hook.ts
2201
2220
  /**
2202
- * Returns the current update status, refreshed once per mount (subject to
2203
- * the on-disk TTL). `null` while the first check is in flight; the
2204
- * `source: 'cached' | 'fresh'` distinction lets the caller decide whether
2205
- * to show a discreet chip vs a more prominent banner.
2221
+ * Returns the current update status. The check fires:
2222
+ * - Once per mount (every TUI launch).
2223
+ * - Every time `enabled` flips from `false` `true` (user re-enabling
2224
+ * the setting expects an immediate refresh).
2225
+ *
2226
+ * The check is async and deferred by `delayMs` so it never competes with
2227
+ * first paint. Result is `null` until the first check resolves; flipping
2228
+ * `enabled` to `false` resets to `null` so any chip rendered against
2229
+ * `hasUpdate` disappears immediately.
2206
2230
  *
2207
2231
  * The hook owns its own AbortController so an unmount cancels any in-flight
2208
2232
  * registry request cleanly.
@@ -2212,7 +2236,10 @@ function useUpdateCheck(options) {
2212
2236
  const optsRef = useRef(options);
2213
2237
  optsRef.current = options;
2214
2238
  useEffect(() => {
2215
- if (!options.enabled || !options.currentVersion) return;
2239
+ if (!options.enabled || !options.currentVersion) {
2240
+ setStatus(null);
2241
+ return;
2242
+ }
2216
2243
  const controller = new AbortController();
2217
2244
  const timer = setTimeout(() => {
2218
2245
  checkForUpdate({
@@ -2221,7 +2248,7 @@ function useUpdateCheck(options) {
2221
2248
  cacheDir: optsRef.current.cacheDir,
2222
2249
  registry: optsRef.current.registry,
2223
2250
  channel: optsRef.current.channel,
2224
- cacheTtlMs: optsRef.current.cacheTtlMs,
2251
+ cacheTtlMs: optsRef.current.cacheTtlMs ?? 0,
2225
2252
  signal: controller.signal,
2226
2253
  now: optsRef.current.now,
2227
2254
  fetcher: optsRef.current.fetcher
@@ -7558,6 +7585,10 @@ function buildSearchCorpus(provider, model) {
7558
7585
  function supportsOAuth(descriptor) {
7559
7586
  return descriptor.oauthProvider !== void 0;
7560
7587
  }
7588
+ /** True when the provider's OAuth flow needs the user to paste a code back into the TUI (no loopback callback). */
7589
+ function oauthUsesManualCodePaste(descriptor) {
7590
+ return descriptor.oauthProvider?.usesCallbackServer === false;
7591
+ }
7561
7592
  /**
7562
7593
  * Run the OAuth login flow for a provider.
7563
7594
  *
@@ -7572,9 +7603,9 @@ async function runOAuthLogin(descriptor, options) {
7572
7603
  options.onUrl(info.url, info.instructions);
7573
7604
  tryOpenBrowser(info.url);
7574
7605
  },
7575
- onPrompt: async () => {
7576
- if (!options.onCodeRequest) throw new Error("OAuth flow requires manual code input but no handler is wired.");
7577
- return options.onCodeRequest();
7606
+ onPrompt: async (prompt) => {
7607
+ if (!options.onPrompt) throw new Error(`OAuth provider "${descriptor.label}" requested user input ("${prompt.message}") but no onPrompt handler is wired.`);
7608
+ return options.onPrompt(prompt);
7578
7609
  },
7579
7610
  onProgress: options.onProgress,
7580
7611
  signal: options.signal
@@ -7582,6 +7613,91 @@ async function runOAuthLogin(descriptor, options) {
7582
7613
  return descriptor.oauthProvider.login(callbacks);
7583
7614
  }
7584
7615
  //#endregion
7616
+ //#region src/chat/oauth-redirect.ts
7617
+ /**
7618
+ * Manual OAuth redirect-URL handoff.
7619
+ *
7620
+ * Users who run zidane over SSH (or behind a proxy / firewall that blocks
7621
+ * loopback) can't have the local browser hit the in-process callback server.
7622
+ * They CAN, however, copy the URL their browser was redirected to —
7623
+ * `http://127.0.0.1:<port>/callback?code=...&state=...` — and paste it back
7624
+ * into the TUI.
7625
+ *
7626
+ * The trick: that URL IS the callback our local server is listening on. We
7627
+ * just `fetch()` it ourselves. The server runs in the same process; the
7628
+ * request hits its handler exactly as if a real browser had arrived, the
7629
+ * OAuth promise (`waitForCode` for pi-ai providers, `startOAuthCallback` for
7630
+ * MCP) resolves through the normal happy path, and the upstream flow
7631
+ * continues uninterrupted. No new code path inside the OAuth state machine.
7632
+ *
7633
+ * Defense in depth: we reject anything that isn't a loopback URL — fetching
7634
+ * an arbitrary user-pasted URL from inside the agent process would be a
7635
+ * trivial SSRF.
7636
+ */
7637
+ const LOOPBACK_HOSTS = new Set([
7638
+ "127.0.0.1",
7639
+ "localhost",
7640
+ "::1",
7641
+ "[::1]"
7642
+ ]);
7643
+ /**
7644
+ * Treat `pasted` as a callback-URL paste. Validates it's a loopback URL,
7645
+ * fires a GET, returns the status.
7646
+ *
7647
+ * Throws when:
7648
+ * - `pasted` doesn't parse as a URL.
7649
+ * - The URL host isn't loopback (rejects SSRF).
7650
+ * - The fetch errors out (network, timeout).
7651
+ *
7652
+ * Returns success/failure for non-2xx responses; the caller decides whether
7653
+ * a 4xx is fatal (state mismatch is a 400 the user can retry from).
7654
+ */
7655
+ async function fetchOAuthRedirect(pasted, options = {}) {
7656
+ const trimmed = pasted.trim();
7657
+ if (!trimmed) throw new Error("Paste the redirect URL from your browser.");
7658
+ let url;
7659
+ try {
7660
+ url = new URL(trimmed);
7661
+ } catch {
7662
+ throw new Error("That doesn't look like a URL. Paste the full address from your browser.");
7663
+ }
7664
+ const host = url.hostname.replace(/^\[|\]$/g, "");
7665
+ if (!LOOPBACK_HOSTS.has(host)) throw new Error(`Expected a loopback URL (127.0.0.1 / localhost), got "${url.hostname}". The browser should have redirected to a localhost address.`);
7666
+ const timeoutMs = options.timeoutMs ?? 5e3;
7667
+ const ac = new AbortController();
7668
+ const timer = setTimeout(() => ac.abort(), timeoutMs);
7669
+ options.signal?.addEventListener("abort", () => ac.abort(), { once: true });
7670
+ let response;
7671
+ try {
7672
+ response = await fetch(url.toString(), { signal: ac.signal });
7673
+ } catch (err) {
7674
+ if (err.name === "AbortError") throw new Error("No response from the local callback server — was the login already cancelled?");
7675
+ throw new Error(`Could not reach the local callback server: ${err.message}`);
7676
+ } finally {
7677
+ clearTimeout(timer);
7678
+ }
7679
+ const bodyText = await response.text().catch(() => "");
7680
+ return {
7681
+ status: response.status,
7682
+ message: extractMessage(bodyText)
7683
+ };
7684
+ }
7685
+ /**
7686
+ * Pick the most useful one-line message out of the callback server's HTML
7687
+ * response. pi-ai uses `<h1>` for the heading; the MCP callback uses
7688
+ * a leading `<p>`. We try both, then fall back to a stripped snippet.
7689
+ */
7690
+ function extractMessage(html) {
7691
+ if (!html) return void 0;
7692
+ const h1 = /<h1[^>]*>([\s\S]*?)<\/h1>/i.exec(html)?.[1];
7693
+ if (h1) return stripTags(h1).trim() || void 0;
7694
+ const p = /<p[^>]*>([\s\S]*?)<\/p>/i.exec(html)?.[1];
7695
+ if (p) return stripTags(p).trim() || void 0;
7696
+ }
7697
+ function stripTags(s) {
7698
+ return s.replace(/<[^>]*>/g, "").replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, "\"").replace(/&#39;/g, "'");
7699
+ }
7700
+ //#endregion
7585
7701
  //#region src/chat/path-display.ts
7586
7702
  /**
7587
7703
  * @-completion path display formatter.
@@ -9180,6 +9296,6 @@ function countNeighbors(turnIds, turnId) {
9180
9296
  };
9181
9297
  }
9182
9298
  //#endregion
9183
- export { useMcpAuthDispatch as $, tryOpenBrowser as $n, pruneTodosByRun as $r, loadState as $t, getSafelist as A, DEFAULT_KEYBINDINGS as An, modelsForDescriptor as Ar, resolveChipColor as At, supportsOAuth as B, SKILLS_TRIGGER as Bn, accentColor as Br, useDiscoveryOptional as Bt, resolveSessionExportTarget as C, mergeApprovalAndBodyOutcomes as Cn, anthropicDescriptor as Cr, SETTINGS_CHOICES as Ct, useSafeModeQueue as D, stripEditOutcomesAnnotation as Dn, getContextWindow as Dr, useSettings as Dt, useSafeModeActions as E, rewriteMultiEditHeader as En, effectiveContextWindow as Er, clampFps as Et, suggestSafelistEntry as F, matchesBinding as Fn, BUILTIN_AGENTS as Fr, CATPPUCCIN_MACCHIATO as Ft, defaultMcpsConfigPaths as G, uniqueFilesFromReferences as Gn, TODOWRITE_TOOL as Gr, createStateStore as Gt, filterModelCatalog as H, uniqueSkillNamesFromReferences as Hn, singleAgentRegistry as Hr, useConfig as Ht, writeProjects as I, mergeKeybindings as In, DEFAULT_AGENT_ID as Ir, CATPPUCCIN_MOCHA as It, projectUserPaths as J, findActiveTrigger as Jn, createTodoTools as Jr, isEditErrorResult as Jt, discoverProjectMcps as K, applyInsert as Kn, TODO_STATUS_GLYPHS as Kr, deriveSessionTitle as Kt, splitPromptSegments as L, parseBindingSpec as Ln, DEFAULT_BUDGET_EXCLUDE_TOOLS as Lr, createDiscoverySlot as Lt, matchesSafelistEntry as M, KEYBINDING_DEF_BY_ACTION as Mn, openrouterDescriptor as Mr, VAPORWAVE_THEME as Mt, projectsFilePath as N, ensureKeybindingsFile as Nn, piIdOf as Nr, CATPPUCCIN_FRAPPE as Nt, IMPLICITLY_SAFE_TOOLS as O, summarizeOutcomes as On, getModelInfo as Or, BUILTIN_THEMES as Ot, readProjects as P, keybindingsPath as Pn, BUILD_AGENT as Pr, CATPPUCCIN_LATTE as Pt, McpAuthProvider as Q, buildLinearRamp as Qn, pickActiveRunId as Qr, listSessionMeta as Qt, formatPathForCwd as R, readKeybindings as Rn, DEFAULT_PERSIST_EXCLUDE_TOOLS as Rr, DiscoveryProvider as Rt, renderSession as S, maskToOutcomeKinds as Sn, OUTPUT_RESERVE_TOKENS as Sr, DEFAULT_SETTINGS as St, SafeModeProvider as T, resolveApprovalForPayload as Tn, credKeyOf as Tr, SettingsProvider as Tt, indexOfEntry as U, FILES_TRIGGER as Un, TODOREAD_TOOL as Ur, resolveConfig as Ut, buildModelCatalog as V, createSkillsCompletionProvider as Vn, resolveAgentId as Vr, ConfigProvider as Vt, buildMcpServers as W, createFilesCompletionProvider as Wn, TODOS_METADATA_KEY as Wr, EDIT_TOOL_NAMES as Wt, mcpCredentialsPath as X, useCompletion as Xn, getTodosForRun as Xr, isVisible as Xt, createFileMcpCredentialStore as Y, mergeReferences as Yn, getArchivedTodosForRun as Yr, isTurnHighlighted as Yt, patchMcpCredential as Z, blendHsl as Zn, isTodoTool as Zr, lastContextSizeFromTurns as Zt, turnContextSize as _, previewEditPayload as _n, readProviderCredential as _r, truncateTrailing as _t, computeTurnAnchors as a, DOING_TASKS_DOCTRINE as ai, titleFromTurns as an, compareSemver as ar, InteractionsProvider as at, defaultSkillScanPaths as b, tokenize as bn, writeCredentials as br, listProjectFiles as bt, formatToolCall as c, INTERACTION_GUIDANCE_NO_PROMPTS as ci, turnSelectionOwnership as cn, parseSemver as cr, createInteractionTools as ct, useSelectStyle as d, SUBAGENT_GUIDANCE as di, buildContextualDiff as dn, resolvePlatformPackage as dr, pendingInteractionsFromTurns as dt, selectActiveTodos as ei, marginTopFor as en, bootProfileEnabled as er, useMcpAuthState as et, useSurfaces as f, TOKEN_DISCIPLINE_DOCTRINE as fi, buildUnifiedDiff as fn, shouldAutoCompact as fr, serializeInteractionResponse as ft, finalizeStreamingMarkdownForOwner as g, filetypeFromPath as gn, readCredentials as gr, hintsLength as gt, finalizeStreamingMarkdown as h, envSection as hi, extractEditPayload as hn, credentialsPath as hr, clipHintsToWidth as ht, turnAsText as i, COMMUNICATION_DOCTRINE as ii, sumRunCosts as in, checkForUpdate as ir, ASK_USER_TOOL as it, isOnSafelist as j, KEYBINDING_DEFS as jn, openaiDescriptor as jr, resolveTheme as jt, addToSafelist as k, findGitRoot$1 as kn, modelSupportsReasoning as kr, DEFAULT_THEME as kt, ThemeProvider as l, PLAN_MODE_DOCTRINE as li, updateToolEventOutcomes as ln, performInPlaceSelfUpdate as lr, isInteractionTool as lt, useTheme as m, buildPlanSystem as mi, computeLineDiff as mn, applyApiKeyEnv as mr, useInteractionsQueue as mt, deleteTurnSafely as n, useActiveTodos as ni, selectableTurnIds as nn, buildUpdateHint as nr, reduceMcpAuth as nt, TOOL_DISPLAY as o, IDENTITY_PREFIX as oi, toolCallPreview as on, detectLibc as or, PRESENT_PLAN_TOOL as ot, useSyntaxStyles as p, buildBuildSystem as pi, computeInlineDiff as pn, detectAuth as pr, useInteractionsActions as pt, parseMcpsFile as q, collectReferences as qn, TODO_WRITE_COUNTS_METADATA_KEY as qr, eventsFromTurns as qt, truncateTurnsAt as r, ACTIONS_WITH_CARE_DOCTRINE as ri, stripSpawnTokensLine as rn, useUpdateCheck as rr, splitMarkdownCodeBlocks as rt, displayNameFor as s, INTERACTION_GUIDANCE as si, toolResultText as sn, detectPackageManager as sr, buildResumedToolResultsTurn as st, countNeighbors as t, setTodosForRun as ti, saveState as tn, bootTick as tr, getMcpAuthStatus as tt, useColors as u, PLAN_MODE_DOCTRINE_NO_PROMPTS as ui, applyEditPayload as un, performSelfUpdate as ur, makeRequestInteraction as ut, useStreamBuffer as v, splitLines as vn, removeProviderCredential as vr, cleanTitle as vt, writeSessionExport as w, parseEditOutcomesFromResult as wn, cerebrasDescriptor as wr, SETTINGS_TOGGLES as wt, discoverProjectSkills as x, buildEditOutcomesAnnotation as xn, BUILTIN_PROVIDERS as xr, useEnabledToggleSet as xt, buildSkillsConfig as y, summarizeEditPayload as yn, setProviderCredential as yr, generateSessionTitle as yt, runOAuthLogin as z, stripJsonComments as zn, PLAN_AGENT as zr, useDiscovery as zt };
9299
+ export { patchMcpCredential as $, blendHsl as $n, getTodosForRun as $r, lastContextSizeFromTurns as $t, getSafelist as A, summarizeOutcomes as An, getContextWindow as Ar, BUILTIN_THEMES as At, oauthUsesManualCodePaste as B, readKeybindings as Bn, DEFAULT_BUDGET_EXCLUDE_TOOLS as Br, DiscoveryProvider as Bt, resolveSessionExportTarget as C, buildEditOutcomesAnnotation as Cn, writeCredentials as Cr, useEnabledToggleSet as Ct, useSafeModeQueue as D, resolveApprovalForPayload as Dn, cerebrasDescriptor as Dr, SettingsProvider as Dt, useSafeModeActions as E, parseEditOutcomesFromResult as En, anthropicDescriptor as Er, SETTINGS_TOGGLES as Et, suggestSafelistEntry as F, ensureKeybindingsFile as Fn, openrouterDescriptor as Fr, CATPPUCCIN_FRAPPE as Ft, indexOfEntry as G, FILES_TRIGGER as Gn, singleAgentRegistry as Gr, resolveConfig as Gt, supportsOAuth as H, SKILLS_TRIGGER as Hn, PLAN_AGENT as Hr, useDiscoveryOptional as Ht, writeProjects as I, keybindingsPath as In, piIdOf as Ir, CATPPUCCIN_LATTE as It, discoverProjectMcps as J, applyInsert as Jn, TODOWRITE_TOOL as Jr, deriveSessionTitle as Jt, buildMcpServers as K, createFilesCompletionProvider as Kn, TODOREAD_TOOL as Kr, EDIT_TOOL_NAMES as Kt, splitPromptSegments as L, matchesBinding as Ln, BUILD_AGENT as Lr, CATPPUCCIN_MACCHIATO as Lt, matchesSafelistEntry as M, DEFAULT_KEYBINDINGS as Mn, modelSupportsReasoning as Mr, resolveChipColor as Mt, projectsFilePath as N, KEYBINDING_DEFS as Nn, modelsForDescriptor as Nr, resolveTheme as Nt, IMPLICITLY_SAFE_TOOLS as O, rewriteMultiEditHeader as On, credKeyOf as Or, clampFps as Ot, readProjects as P, KEYBINDING_DEF_BY_ACTION as Pn, openaiDescriptor as Pr, VAPORWAVE_THEME as Pt, mcpCredentialsPath as Q, useCompletion as Qn, getArchivedTodosForRun as Qr, isVisible as Qt, formatPathForCwd as R, mergeKeybindings as Rn, BUILTIN_AGENTS as Rr, CATPPUCCIN_MOCHA as Rt, renderSession as S, tokenize as Sn, setProviderCredential as Sr, listProjectFiles as St, SafeModeProvider as T, mergeApprovalAndBodyOutcomes as Tn, OUTPUT_RESERVE_TOKENS as Tr, SETTINGS_CHOICES as Tt, buildModelCatalog as U, createSkillsCompletionProvider as Un, accentColor as Ur, ConfigProvider as Ut, runOAuthLogin as V, stripJsonComments as Vn, DEFAULT_PERSIST_EXCLUDE_TOOLS as Vr, useDiscovery as Vt, filterModelCatalog as W, uniqueSkillNamesFromReferences as Wn, resolveAgentId as Wr, useConfig as Wt, projectUserPaths as X, findActiveTrigger as Xn, TODO_WRITE_COUNTS_METADATA_KEY as Xr, isEditErrorResult as Xt, parseMcpsFile as Y, collectReferences as Yn, TODO_STATUS_GLYPHS as Yr, eventsFromTurns as Yt, createFileMcpCredentialStore as Z, mergeReferences as Zn, createTodoTools as Zr, isTurnHighlighted as Zt, turnContextSize as _, buildPlanSystem as _i, extractEditPayload as _n, applyApiKeyEnv as _r, clipHintsToWidth as _t, computeTurnAnchors as a, useActiveTodos as ai, stripSpawnTokensLine as an, useUpdateCheck as ar, splitMarkdownCodeBlocks as at, defaultSkillScanPaths as b, splitLines as bn, readProviderCredential as br, cleanTitle as bt, formatToolCall as c, DOING_TASKS_DOCTRINE as ci, toolCallPreview as cn, detectLibc as cr, PRESENT_PLAN_TOOL as ct, useSelectStyle as d, INTERACTION_GUIDANCE_NO_PROMPTS as di, updateToolEventOutcomes as dn, performInPlaceSelfUpdate as dr, isInteractionTool as dt, isTodoTool as ei, listSessionMeta as en, buildLinearRamp as er, McpAuthProvider as et, useSurfaces as f, PLAN_MODE_DOCTRINE as fi, applyEditPayload as fn, performSelfUpdate as fr, makeRequestInteraction as ft, finalizeStreamingMarkdownForOwner as g, buildBuildSystem as gi, computeLineDiff as gn, detectAuth as gr, useInteractionsQueue as gt, finalizeStreamingMarkdown as h, TOKEN_DISCIPLINE_DOCTRINE as hi, computeInlineDiff as hn, shouldAutoCompact as hr, useInteractionsActions as ht, turnAsText as i, setTodosForRun as ii, selectableTurnIds as in, buildUpdateHint as ir, reduceMcpAuth as it, isOnSafelist as j, findGitRoot$1 as jn, getModelInfo as jr, DEFAULT_THEME as jt, addToSafelist as k, stripEditOutcomesAnnotation as kn, effectiveContextWindow as kr, useSettings as kt, ThemeProvider as l, IDENTITY_PREFIX as li, toolResultText as ln, detectPackageManager as lr, buildResumedToolResultsTurn as lt, useTheme as m, SUBAGENT_GUIDANCE as mi, buildUnifiedDiff as mn, AUTO_COMPACT_MIN_GROWTH_FRACTION as mr, serializeInteractionResponse as mt, deleteTurnSafely as n, pruneTodosByRun as ni, marginTopFor as nn, bootProfileEnabled as nr, useMcpAuthState as nt, TOOL_DISPLAY as o, ACTIONS_WITH_CARE_DOCTRINE as oi, sumRunCosts as on, checkForUpdate as or, ASK_USER_TOOL as ot, useSyntaxStyles as p, PLAN_MODE_DOCTRINE_NO_PROMPTS as pi, buildContextualDiff as pn, resolvePlatformPackage as pr, pendingInteractionsFromTurns as pt, defaultMcpsConfigPaths as q, uniqueFilesFromReferences as qn, TODOS_METADATA_KEY as qr, createStateStore as qt, truncateTurnsAt as r, selectActiveTodos as ri, saveState as rn, bootTick as rr, getMcpAuthStatus as rt, displayNameFor as s, COMMUNICATION_DOCTRINE as si, titleFromTurns as sn, compareSemver as sr, InteractionsProvider as st, countNeighbors as t, pickActiveRunId as ti, loadState as tn, tryOpenBrowser as tr, useMcpAuthDispatch as tt, useColors as u, INTERACTION_GUIDANCE as ui, turnSelectionOwnership as un, parseSemver as ur, createInteractionTools as ut, useStreamBuffer as v, envSection as vi, filetypeFromPath as vn, credentialsPath as vr, hintsLength as vt, writeSessionExport as w, maskToOutcomeKinds as wn, BUILTIN_PROVIDERS as wr, DEFAULT_SETTINGS as wt, discoverProjectSkills as x, summarizeEditPayload as xn, removeProviderCredential as xr, generateSessionTitle as xt, buildSkillsConfig as y, previewEditPayload as yn, readCredentials as yr, truncateTrailing as yt, fetchOAuthRedirect as z, parseBindingSpec as zn, DEFAULT_AGENT_ID as zr, createDiscoverySlot as zt };
9184
9300
 
9185
- //# sourceMappingURL=turn-operations-CGf7wWF0.js.map
9301
+ //# sourceMappingURL=turn-operations-fhinWY4m.js.map