zidane 6.1.9 → 6.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/tui.js CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as useMcpAuthState, $n as buildPlanSystem, $t as restoreChainFallbacks, A as runOAuthLogin, Bt as createDiscoverySlot, Ct as SETTINGS_CHOICES, D as formatPathForCwd, Dt as clampFps, Et as SettingsProvider, G as buildVisibleMcpRows, Gt as useConfig, Ht as useDiscovery, J as createFileMcpCredentialStore, Jt as buildRunModel, K as indexOfServerRow, Kt as resolveConfig, L as loadMcpToolsCache, M as buildMcpServers, Mt as resolveTheme, O as fetchOAuthRedirect, Ot as useSettings, P as discoverProjectMcps, Q as useMcpAuthDispatch, Qn as buildBuildSystem, Qt as providerKeySetChanged, R as mcpToolsCachePath, St as SETTINGS_CATEGORIES, T as suggestSafelistEntries, Tn as accentColor, Tt as SETTINGS_TOGGLES, U as useMcpToolToggleMap, Ut as useDiscoveryOptional, V as subscribeMcpToolsCache, Vn as useActiveTodos, Vt as DiscoveryProvider, Wt as ConfigProvider, Xt as chainsEqual, Yt as chainPositionOf, Z as McpAuthProvider, Zt as filterChainFallbacks, _ as useSafeModeQueue, _n as discoverAgentsMd, _r as toolCallPreview, _t as buildHints, a as useSurfaces, an as bootTick, at as buildResumedToolResultsTurn, b as getSafelist, br as usageByModel, bt as useEnabledToggleSet, c as useStreamBuffer, cr as lastContextSizeFromTurns, ct as makeRequestInteraction, d as discoverProjectSkills, dr as marginTopFor, dt as useInteractionsActions, er as envSection, et as getMcpAuthStatus, ft as useInteractionsQueue, g as useSafeModeActions, gn as chatAutoCompactBehavior, gt as truncateTrailing, h as SafeModeProvider, hr as sumRunCosts, ht as hintsLength, i as useSelectStyle, ir as compactSummaryEvent, it as PRESENT_PLAN_TOOL, j as supportsOAuth, jn as TODO_STATUS_GLYPHS, jt as resolveChipColor, k as oauthUsesManualCodePaste, l as buildSkillsConfig, lr as listSessionMeta, lt as pendingInteractionsFromTurns, m as writeSessionExport, mr as stripSpawnTokensLine, mt as clipHintsToWidth, n as ThemeProvider, nn as useCompletion, nr as createChatTurnsReadTool, nt as ASK_USER_TOOL, on as buildUpdateHint, or as deriveSessionTitle, ot as createInteractionTools, pr as serverToolResultSummary, pt as EMPTY_HINTS, q as parentServerName, qt as resolveStoragePaths, r as useColors, rn as tryOpenBrowser, rt as InteractionsProvider, s as useTheme, sn as useUpdateCheck, sr as eventsFromTurns, t as computeTurnAnchors, tn as toggleChainEntry, tr as chatReferenceTokensForPrompt, u as defaultSkillScanPaths, ur as loadState, vr as toolResultText, wt as SETTINGS_INPUTS, x as isOnSafelist, xt as DEFAULT_SETTINGS, y as addToSafelist, yr as updateToolEventOutcomes, yt as listProjectFiles, z as refreshMcpToolsCatalog } from "./transcript-anchors-C8l8zDzs.js";
1
+ import { $ as useMcpAuthState, $n as buildPlanSystem, $t as restoreChainFallbacks, A as runOAuthLogin, Bt as createDiscoverySlot, Ct as SETTINGS_CHOICES, D as formatPathForCwd, Dt as clampFps, Et as SettingsProvider, G as buildVisibleMcpRows, Gt as useConfig, Ht as useDiscovery, J as createFileMcpCredentialStore, Jt as buildRunModel, K as indexOfServerRow, Kt as resolveConfig, L as loadMcpToolsCache, M as buildMcpServers, Mt as resolveTheme, O as fetchOAuthRedirect, Ot as useSettings, P as discoverProjectMcps, Q as useMcpAuthDispatch, Qn as buildBuildSystem, Qt as providerKeySetChanged, R as mcpToolsCachePath, St as SETTINGS_CATEGORIES, T as suggestSafelistEntries, Tn as accentColor, Tt as SETTINGS_TOGGLES, U as useMcpToolToggleMap, Ut as useDiscoveryOptional, V as subscribeMcpToolsCache, Vn as useActiveTodos, Vt as DiscoveryProvider, Wt as ConfigProvider, Xt as chainsEqual, Yt as chainPositionOf, Z as McpAuthProvider, Zt as filterChainFallbacks, _ as useSafeModeQueue, _n as discoverAgentsMd, _r as toolCallPreview, _t as buildHints, a as useSurfaces, an as bootTick, at as buildResumedToolResultsTurn, b as getSafelist, br as usageByModel, bt as useEnabledToggleSet, c as useStreamBuffer, cr as lastContextSizeFromTurns, ct as makeRequestInteraction, d as discoverProjectSkills, dr as marginTopFor, dt as useInteractionsActions, er as envSection, et as getMcpAuthStatus, ft as useInteractionsQueue, g as useSafeModeActions, gn as chatAutoCompactBehavior, gt as truncateTrailing, h as SafeModeProvider, hr as sumRunCosts, ht as hintsLength, i as useSelectStyle, ir as compactSummaryEvent, it as PRESENT_PLAN_TOOL, j as supportsOAuth, jn as TODO_STATUS_GLYPHS, jt as resolveChipColor, k as oauthUsesManualCodePaste, l as buildSkillsConfig, lr as listSessionMeta, lt as pendingInteractionsFromTurns, m as writeSessionExport, mr as stripSpawnTokensLine, mt as clipHintsToWidth, n as ThemeProvider, nn as useCompletion, nr as createChatTurnsReadTool, nt as ASK_USER_TOOL, on as buildUpdateHint, or as deriveSessionTitle, ot as createInteractionTools, pr as serverToolResultSummary, pt as EMPTY_HINTS, q as parentServerName, qt as resolveStoragePaths, r as useColors, rn as tryOpenBrowser, rt as InteractionsProvider, s as useTheme, sn as useUpdateCheck, sr as eventsFromTurns, t as computeTurnAnchors, tn as toggleChainEntry, tr as chatReferenceTokensForPrompt, u as defaultSkillScanPaths, ur as loadState, vr as toolResultText, wt as SETTINGS_INPUTS, x as isOnSafelist, xt as DEFAULT_SETTINGS, y as addToSafelist, yr as updateToolEventOutcomes, yt as listProjectFiles, z as refreshMcpToolsCatalog } from "./transcript-anchors-BE9FTv97.js";
2
2
  import { $ as composeExtensionPreset, B as ExtensionInstallError, Bt as ensureKeybindingsFile, Et as createModelSearchTool, H as installExtensionFromSpec, Ht as groupBindings, J as createExtensionHud, K as removeInstalledExtension, P as summaryToTurn, St as tailTruncate, Ut as keybindingsPath, Vt as formatBindingForDisplay, Wt as matchesBinding, X as discoverAndBuildExtensionRegistry, Y as registerExtensionHostModules, Yt as resolveExtensionKeybindings, _ as buildPostCompactAttachments, c as applyCompactSummaryCutoff, en as inlineLoadedExtension, et as disposeExtensionRegistry, f as cleanupPersistedSession, g as resolveTasksDir, h as resolvePersistDir, ht as isSpawnTool, it as createExtensionHostRuntimeBridge, lt as basic_default, m as resolveMcpWarningsDir, mn as effectiveContextWindow, nn as parseExtensionScanPathEnv, on as coerceExtensionConfigInput, pn as OUTPUT_RESERVE_TOKENS, q as updateInstalledExtension, rn as scanExtensionDirectories, rt as partitionExtensionCatalog, t as createAgent, tt as filterExtensionRegistry, un as resolveExtensionConfigValue, wt as looksBinary, x as compactConversation, y as selectFilesFromSession, z as createExtensionPromptBridge, zt as KEYBINDING_KEY_COL_WIDTH } from "./agent-BJ1NC1pA.js";
3
3
  import { a as formatDuration, c as previewLine, i as fmtTokens, l as shortId, n as compactPath, o as formatTaskStatus, r as fmtCost, s as formatTaskSummary, t as ageString } from "./format-BF745pLL.js";
4
4
  import { n as appendCapped } from "./output-cap-kBUHBlnq.js";
@@ -19,7 +19,7 @@ import { i as ZIDANE_EXTENSION_SKILL_NAME, l as withZidaneExtensionSkill, o as e
19
19
  import { C as restoreModelOptions, S as piIdOf, _ as modelOptionsFor, m as getContextWindow, p as enabledModelOptions, s as setProviderCredential, t as detectAuth, v as modelSupportsReasoning } from "./auth-D5FfJtLf.js";
20
20
  import { createDockerContext } from "./contexts/docker.js";
21
21
  import { createTuiStore } from "./session/sqlite.js";
22
- import { $ as mergeApprovalAndBodyOutcomes, A as buildLinearRamp, D as createFilesCompletionProvider, F as isUserBashEvent, G as extractEditPayload, H as buildUnifiedDiff, I as isVisible, K as filetypeFromPath, L as promptHistoryFromEvents, M as EDIT_TOOL_NAMES, N as isEditErrorResult, P as isTurnHighlighted, R as selectableTurnIds, S as splitMarkdownCodeBlocks, T as uniqueSkillNamesFromReferences, V as buildContextualDiff, Y as summarizeEditPayload, Z as buildEditOutcomesAnnotation, _ as filterModelCatalog, a as TOOL_DISPLAY, b as chunkMarkdownForRender, d as finalizeStreamingMarkdown, et as parseEditOutcomesFromResult, f as finalizeStreamingMarkdownForOwner, g as buildModelCatalog, h as splitPromptSegments, i as turnAsText, it as summarizeOutcomes, j as BASH_CALL_ID_PREFIX, k as blendHsl, m as turnContextSize, n as deleteTurnSafely, nt as rewriteMultiEditHeader, o as displayNameFor, q as previewEditPayload, r as truncateTurnsAt, rt as stripEditOutcomesAnnotation, s as formatToolCall, st as createChatsCompletionProvider, tt as resolveApprovalForPayload, u as capTranscriptEvents, v as indexOfEntry, w as createSkillsCompletionProvider, x as normalizeMarkdownCodeFences, z as turnSelectionOwnership } from "./turn-operations-BWTB2So4.js";
22
+ import { A as buildLinearRamp, D as createFilesCompletionProvider, F as isUserBashEvent, H as buildUnifiedDiff, I as isVisible, J as previewEditPayload, K as extractEditPayload, L as promptHistoryFromEvents, M as EDIT_TOOL_NAMES, N as isEditErrorResult, P as isTurnHighlighted, Q as buildEditOutcomesAnnotation, R as selectableTurnIds, S as splitMarkdownCodeBlocks, T as uniqueSkillNamesFromReferences, U as clipDiffForRender, V as buildContextualDiff, X as summarizeEditPayload, _ as filterModelCatalog, a as TOOL_DISPLAY, at as summarizeOutcomes, b as chunkMarkdownForRender, ct as createChatsCompletionProvider, d as finalizeStreamingMarkdown, et as mergeApprovalAndBodyOutcomes, f as finalizeStreamingMarkdownForOwner, g as buildModelCatalog, h as splitPromptSegments, i as turnAsText, it as stripEditOutcomesAnnotation, j as BASH_CALL_ID_PREFIX, k as blendHsl, m as turnContextSize, n as deleteTurnSafely, nt as resolveApprovalForPayload, o as displayNameFor, q as filetypeFromPath, r as truncateTurnsAt, rt as rewriteMultiEditHeader, s as formatToolCall, tt as parseEditOutcomesFromResult, u as capTranscriptEvents, v as indexOfEntry, w as createSkillsCompletionProvider, x as normalizeMarkdownCodeFences, z as turnSelectionOwnership } from "./turn-operations-D4tK7AFc.js";
23
23
  import { basename, dirname, join, relative, resolve } from "node:path";
24
24
  import { Buffer } from "node:buffer";
25
25
  import * as fs from "node:fs";
@@ -3013,6 +3013,11 @@ function EditDiffBlock({ payload, dim }) {
3013
3013
  const editSummary = useMemo(() => summarizeEditPayload(payload), [payload]);
3014
3014
  const perHunkMode = hasMixedOutcomes;
3015
3015
  const compact = settings.editDiffDisplay === "compact";
3016
+ const fullDiff = useMemo(() => compact || perHunkMode ? null : clipDiffForRender(payload.priorContent !== void 0 ? buildContextualDiff(payload, payload.priorContent) : buildUnifiedDiff(payload)), [
3017
+ payload,
3018
+ compact,
3019
+ perHunkMode
3020
+ ]);
3016
3021
  return /* @__PURE__ */ jsxs("box", {
3017
3022
  style: {
3018
3023
  flexDirection: "column",
@@ -3116,22 +3121,31 @@ function EditDiffBlock({ payload, dim }) {
3116
3121
  SURFACE,
3117
3122
  dim
3118
3123
  }, i))
3119
- }) : /* @__PURE__ */ jsx$1("diff", {
3120
- diff: payload.priorContent !== void 0 ? buildContextualDiff(payload, payload.priorContent) : buildUnifiedDiff(payload),
3121
- view: "unified",
3122
- wrapMode: "word",
3123
- showLineNumbers: true,
3124
- ...filetype ? { filetype } : {},
3125
- syntaxStyle: mdStyle,
3126
- addedBg: SURFACE.diff.addBg,
3127
- removedBg: SURFACE.diff.removeBg,
3128
- ...SURFACE.diff.addContentBg ? { addedContentBg: SURFACE.diff.addContentBg } : {},
3129
- ...SURFACE.diff.removeContentBg ? { removedContentBg: SURFACE.diff.removeContentBg } : {},
3130
- ...SURFACE.diff.contextBg ? { contextBg: SURFACE.diff.contextBg } : {},
3131
- addedSignColor: SURFACE.diff.addFg,
3132
- removedSignColor: SURFACE.diff.removeFg,
3133
- treeSitterClient: getTreeSitterClient(),
3134
- ...dim ? { fg: COLOR.dim } : {}
3124
+ }) : fullDiff && /* @__PURE__ */ jsxs("box", {
3125
+ style: {
3126
+ flexDirection: "column",
3127
+ flexShrink: 0
3128
+ },
3129
+ children: [/* @__PURE__ */ jsx$1("diff", {
3130
+ diff: fullDiff.text,
3131
+ view: "unified",
3132
+ wrapMode: "word",
3133
+ showLineNumbers: true,
3134
+ ...filetype ? { filetype } : {},
3135
+ syntaxStyle: mdStyle,
3136
+ addedBg: SURFACE.diff.addBg,
3137
+ removedBg: SURFACE.diff.removeBg,
3138
+ ...SURFACE.diff.addContentBg ? { addedContentBg: SURFACE.diff.addContentBg } : {},
3139
+ ...SURFACE.diff.removeContentBg ? { removedContentBg: SURFACE.diff.removeContentBg } : {},
3140
+ ...SURFACE.diff.contextBg ? { contextBg: SURFACE.diff.contextBg } : {},
3141
+ addedSignColor: SURFACE.diff.addFg,
3142
+ removedSignColor: SURFACE.diff.removeFg,
3143
+ treeSitterClient: getTreeSitterClient(),
3144
+ ...dim ? { fg: COLOR.dim } : {}
3145
+ }), fullDiff.hiddenLines > 0 && /* @__PURE__ */ jsx$1("text", {
3146
+ fg: COLOR.mute,
3147
+ children: ` … diff clipped — showing ${fullDiff.totalLines - fullDiff.hiddenLines} of ${fullDiff.totalLines} lines (the change applies in full)`
3148
+ })]
3135
3149
  })]
3136
3150
  });
3137
3151
  }
@@ -3233,11 +3247,11 @@ function HunkBlock({ index, hunk, outcome, tool, path, filetype, mdStyle, COLOR,
3233
3247
  const reason = outcome?.reason;
3234
3248
  const dimmed = dim || kind !== "applied";
3235
3249
  const compact = settings.editDiffDisplay === "compact";
3236
- const diffText = useMemo(() => buildUnifiedDiff({
3250
+ const diffText = useMemo(() => clipDiffForRender(buildUnifiedDiff({
3237
3251
  tool,
3238
3252
  path,
3239
3253
  hunks: [hunk]
3240
- }), [
3254
+ })), [
3241
3255
  hunk,
3242
3256
  tool,
3243
3257
  path
@@ -3311,22 +3325,31 @@ function HunkBlock({ index, hunk, outcome, tool, path, filetype, mdStyle, COLOR,
3311
3325
  children: reason
3312
3326
  })] })
3313
3327
  ]
3314
- }), !compact && /* @__PURE__ */ jsx$1("diff", {
3315
- diff: diffText,
3316
- view: "unified",
3317
- wrapMode: "word",
3318
- showLineNumbers: true,
3319
- ...filetype ? { filetype } : {},
3320
- syntaxStyle: mdStyle,
3321
- addedBg: SURFACE.diff.addBg,
3322
- removedBg: SURFACE.diff.removeBg,
3323
- ...SURFACE.diff.addContentBg ? { addedContentBg: SURFACE.diff.addContentBg } : {},
3324
- ...SURFACE.diff.removeContentBg ? { removedContentBg: SURFACE.diff.removeContentBg } : {},
3325
- ...SURFACE.diff.contextBg ? { contextBg: SURFACE.diff.contextBg } : {},
3326
- addedSignColor: SURFACE.diff.addFg,
3327
- removedSignColor: SURFACE.diff.removeFg,
3328
- treeSitterClient: getTreeSitterClient(),
3329
- ...dimmed ? { fg: COLOR.dim } : {}
3328
+ }), !compact && /* @__PURE__ */ jsxs("box", {
3329
+ style: {
3330
+ flexDirection: "column",
3331
+ flexShrink: 0
3332
+ },
3333
+ children: [/* @__PURE__ */ jsx$1("diff", {
3334
+ diff: diffText.text,
3335
+ view: "unified",
3336
+ wrapMode: "word",
3337
+ showLineNumbers: true,
3338
+ ...filetype ? { filetype } : {},
3339
+ syntaxStyle: mdStyle,
3340
+ addedBg: SURFACE.diff.addBg,
3341
+ removedBg: SURFACE.diff.removeBg,
3342
+ ...SURFACE.diff.addContentBg ? { addedContentBg: SURFACE.diff.addContentBg } : {},
3343
+ ...SURFACE.diff.removeContentBg ? { removedContentBg: SURFACE.diff.removeContentBg } : {},
3344
+ ...SURFACE.diff.contextBg ? { contextBg: SURFACE.diff.contextBg } : {},
3345
+ addedSignColor: SURFACE.diff.addFg,
3346
+ removedSignColor: SURFACE.diff.removeFg,
3347
+ treeSitterClient: getTreeSitterClient(),
3348
+ ...dimmed ? { fg: COLOR.dim } : {}
3349
+ }), diffText.hiddenLines > 0 && /* @__PURE__ */ jsx$1("text", {
3350
+ fg: COLOR.mute,
3351
+ children: ` … diff clipped — showing ${diffText.totalLines - diffText.hiddenLines} of ${diffText.totalLines} lines`
3352
+ })]
3330
3353
  })]
3331
3354
  });
3332
3355
  }
@@ -6218,6 +6241,14 @@ function ExtensionBanners() {
6218
6241
  }
6219
6242
  //#endregion
6220
6243
  //#region src/tui/file-edit-approval-modal.tsx
6244
+ /**
6245
+ * Approval-modal diff budgets — roomier than the transcript row defaults
6246
+ * (this is the review surface and it scrolls), but still hard-bounded:
6247
+ * the native <diff> materializes row buffers for every line regardless
6248
+ * of the scrollbox viewport.
6249
+ */
6250
+ const APPROVAL_DIFF_MAX_LINES = 2e3;
6251
+ const APPROVAL_DIFF_MAX_BYTES = 1024 * 1024;
6221
6252
  const FILE_EDIT_TOOLS = /* @__PURE__ */ new Set([
6222
6253
  "edit",
6223
6254
  "multi_edit",
@@ -6358,7 +6389,7 @@ function SingleEditApprovalModal({ request, payload, priorContent, priorError, t
6358
6389
  const { width: termWidth } = useTerminalDimensions();
6359
6390
  const modal = useModal();
6360
6391
  const preview = useMemo(() => payload ? previewEditPayload(payload, priorContent, 6) : null, [payload, priorContent]);
6361
- const diffText = preview?.diffText ?? "";
6392
+ const diffText = useMemo(() => clipDiffForRender(preview?.diffText ?? "", APPROVAL_DIFF_MAX_LINES, APPROVAL_DIFF_MAX_BYTES), [preview]);
6362
6393
  const focusedResolved = preview?.resolution[0]?.resolved ?? true;
6363
6394
  const [selected, setSelected] = useState(0);
6364
6395
  const filetype = useMemo(() => filetypeFromPath(targetPath), [targetPath]);
@@ -6431,7 +6462,7 @@ function SingleEditApprovalModal({ request, payload, priorContent, priorError, t
6431
6462
  hunk: payload.hunks[0],
6432
6463
  targetPath,
6433
6464
  width: diffWidth + 2
6434
- }) : /* @__PURE__ */ jsx$1("box", {
6465
+ }) : /* @__PURE__ */ jsxs("box", {
6435
6466
  style: {
6436
6467
  border: true,
6437
6468
  borderColor: COLOR.mute,
@@ -6441,7 +6472,7 @@ function SingleEditApprovalModal({ request, payload, priorContent, priorError, t
6441
6472
  overflow: "hidden",
6442
6473
  marginBottom: 1
6443
6474
  },
6444
- children: /* @__PURE__ */ jsx$1("scrollbox", {
6475
+ children: [/* @__PURE__ */ jsx$1("scrollbox", {
6445
6476
  focusable: false,
6446
6477
  stickyScroll: false,
6447
6478
  style: {
@@ -6449,7 +6480,7 @@ function SingleEditApprovalModal({ request, payload, priorContent, priorError, t
6449
6480
  flexShrink: 1
6450
6481
  },
6451
6482
  children: /* @__PURE__ */ jsx$1("diff", {
6452
- diff: diffText,
6483
+ diff: diffText.text,
6453
6484
  view: useSplit ? "split" : "unified",
6454
6485
  wrapMode: "word",
6455
6486
  showLineNumbers: true,
@@ -6467,7 +6498,11 @@ function SingleEditApprovalModal({ request, payload, priorContent, priorError, t
6467
6498
  flexShrink: 0
6468
6499
  }
6469
6500
  })
6470
- })
6501
+ }), diffText.hiddenLines > 0 && /* @__PURE__ */ jsx$1("text", {
6502
+ fg: COLOR.mute,
6503
+ style: { flexShrink: 0 },
6504
+ children: ` … diff clipped — showing ${diffText.totalLines - diffText.hiddenLines} of ${diffText.totalLines} lines (approval applies the full change)`
6505
+ })]
6471
6506
  }), /* @__PURE__ */ jsx$1(ActionBar, {
6472
6507
  actions: BULK_ACTIONS,
6473
6508
  selected
@@ -6620,7 +6655,7 @@ function MultiEditApprovalModal({ request, payload, priorContent, priorError, ta
6620
6655
  const panelWidth = Math.max(40, termWidth - 6);
6621
6656
  const diffWidth = panelWidth - 2;
6622
6657
  const preview = useMemo(() => previewEditPayload(payload, priorContent, 4), [payload, priorContent]);
6623
- const focusedDiffText = preview.perHunkDiff[cursor] ?? "";
6658
+ const focusedDiffText = useMemo(() => clipDiffForRender(preview.perHunkDiff[cursor] ?? "", APPROVAL_DIFF_MAX_LINES, APPROVAL_DIFF_MAX_BYTES), [preview, cursor]);
6624
6659
  const focusedResolved = preview.resolution[cursor]?.resolved ?? true;
6625
6660
  const focusedAmbiguous = preview.resolution[cursor]?.ambiguous === true;
6626
6661
  const listIdealRows = payload.hunks.length + 2;
@@ -6741,7 +6776,7 @@ function MultiEditApprovalModal({ request, payload, priorContent, priorError, ta
6741
6776
  })
6742
6777
  })
6743
6778
  }),
6744
- focusedResolved ? /* @__PURE__ */ jsx$1("box", {
6779
+ focusedResolved ? /* @__PURE__ */ jsxs("box", {
6745
6780
  style: {
6746
6781
  border: true,
6747
6782
  borderColor: COLOR.mute,
@@ -6751,7 +6786,7 @@ function MultiEditApprovalModal({ request, payload, priorContent, priorError, ta
6751
6786
  overflow: "hidden",
6752
6787
  marginBottom: 1
6753
6788
  },
6754
- children: /* @__PURE__ */ jsx$1("scrollbox", {
6789
+ children: [/* @__PURE__ */ jsx$1("scrollbox", {
6755
6790
  ref: diffScrollRef,
6756
6791
  focusable: false,
6757
6792
  stickyScroll: false,
@@ -6760,7 +6795,7 @@ function MultiEditApprovalModal({ request, payload, priorContent, priorError, ta
6760
6795
  flexShrink: 1
6761
6796
  },
6762
6797
  children: /* @__PURE__ */ jsx$1("diff", {
6763
- diff: focusedDiffText,
6798
+ diff: focusedDiffText.text,
6764
6799
  view: "unified",
6765
6800
  wrapMode: "word",
6766
6801
  showLineNumbers: true,
@@ -6778,7 +6813,11 @@ function MultiEditApprovalModal({ request, payload, priorContent, priorError, ta
6778
6813
  flexShrink: 0
6779
6814
  }
6780
6815
  })
6781
- })
6816
+ }), focusedDiffText.hiddenLines > 0 && /* @__PURE__ */ jsx$1("text", {
6817
+ fg: COLOR.mute,
6818
+ style: { flexShrink: 0 },
6819
+ children: ` … diff clipped — showing ${focusedDiffText.totalLines - focusedDiffText.hiddenLines} of ${focusedDiffText.totalLines} lines (approval applies the full change)`
6820
+ })]
6782
6821
  }) : /* @__PURE__ */ jsx$1(UnresolvedHunkPanel, {
6783
6822
  hunk: payload.hunks[cursor],
6784
6823
  targetPath,