@openclaw/diffs 2026.10.2 → 2026.10.5-beta.2

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 (134) hide show
  1. package/dist/.setup/{browser.runtime-B8JeyUXz.mjs → browser.runtime-BfvyJ76b.mjs} +7 -11
  2. package/dist/assets/viewer-runtime.js +97 -1316
  3. package/dist/index.js +19 -42
  4. package/node_modules/@pierre/diffs/dist/components/CodeView.d.ts +2 -4
  5. package/node_modules/@pierre/diffs/dist/components/CodeView.d.ts.map +1 -1
  6. package/node_modules/@pierre/diffs/dist/components/CodeView.js +23 -12
  7. package/node_modules/@pierre/diffs/dist/components/CodeView.js.map +1 -1
  8. package/node_modules/@pierre/diffs/dist/components/File.d.ts +2 -0
  9. package/node_modules/@pierre/diffs/dist/components/File.d.ts.map +1 -1
  10. package/node_modules/@pierre/diffs/dist/components/File.js +6 -0
  11. package/node_modules/@pierre/diffs/dist/components/File.js.map +1 -1
  12. package/node_modules/@pierre/diffs/dist/components/FileDiff.d.ts +18 -1
  13. package/node_modules/@pierre/diffs/dist/components/FileDiff.d.ts.map +1 -1
  14. package/node_modules/@pierre/diffs/dist/components/FileDiff.js +47 -15
  15. package/node_modules/@pierre/diffs/dist/components/FileDiff.js.map +1 -1
  16. package/node_modules/@pierre/diffs/dist/components/VirtualizedFile.d.ts.map +1 -1
  17. package/node_modules/@pierre/diffs/dist/components/VirtualizedFile.js +11 -11
  18. package/node_modules/@pierre/diffs/dist/components/VirtualizedFile.js.map +1 -1
  19. package/node_modules/@pierre/diffs/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
  20. package/node_modules/@pierre/diffs/dist/components/VirtualizedFileDiff.js +18 -17
  21. package/node_modules/@pierre/diffs/dist/components/VirtualizedFileDiff.js.map +1 -1
  22. package/node_modules/@pierre/diffs/dist/constants.d.ts +1 -3
  23. package/node_modules/@pierre/diffs/dist/constants.d.ts.map +1 -1
  24. package/node_modules/@pierre/diffs/dist/constants.js +1 -3
  25. package/node_modules/@pierre/diffs/dist/constants.js.map +1 -1
  26. package/node_modules/@pierre/diffs/dist/editor/editor.d.ts.map +1 -1
  27. package/node_modules/@pierre/diffs/dist/editor/editor.js +16 -3
  28. package/node_modules/@pierre/diffs/dist/editor/editor.js.map +1 -1
  29. package/node_modules/@pierre/diffs/dist/editor/editor2.js +1 -1
  30. package/node_modules/@pierre/diffs/dist/index.d.ts +2 -2
  31. package/node_modules/@pierre/diffs/dist/index.js +2 -2
  32. package/node_modules/@pierre/diffs/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
  33. package/node_modules/@pierre/diffs/dist/react/utils/useFileDiffInstance.js +47 -11
  34. package/node_modules/@pierre/diffs/dist/react/utils/useFileDiffInstance.js.map +1 -1
  35. package/node_modules/@pierre/diffs/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  36. package/node_modules/@pierre/diffs/dist/renderers/DiffHunksRenderer.js +20 -13
  37. package/node_modules/@pierre/diffs/dist/renderers/DiffHunksRenderer.js.map +1 -1
  38. package/node_modules/@pierre/diffs/dist/renderers/FileRenderer.d.ts.map +1 -1
  39. package/node_modules/@pierre/diffs/dist/renderers/FileRenderer.js +30 -11
  40. package/node_modules/@pierre/diffs/dist/renderers/FileRenderer.js.map +1 -1
  41. package/node_modules/@pierre/diffs/dist/sprite.d.ts +2 -2
  42. package/node_modules/@pierre/diffs/dist/sprite.d.ts.map +1 -1
  43. package/node_modules/@pierre/diffs/dist/sprite.js +57 -0
  44. package/node_modules/@pierre/diffs/dist/sprite.js.map +1 -1
  45. package/node_modules/@pierre/diffs/dist/style.js +1 -1
  46. package/node_modules/@pierre/diffs/dist/types.d.ts +1 -1
  47. package/node_modules/@pierre/diffs/dist/types.d.ts.map +1 -1
  48. package/node_modules/@pierre/diffs/dist/utils/editSessionHunks.d.ts +5 -4
  49. package/node_modules/@pierre/diffs/dist/utils/editSessionHunks.d.ts.map +1 -1
  50. package/node_modules/@pierre/diffs/dist/utils/editSessionHunks.js +32 -9
  51. package/node_modules/@pierre/diffs/dist/utils/editSessionHunks.js.map +1 -1
  52. package/node_modules/@pierre/diffs/dist/utils/parsePatchFiles.d.ts.map +1 -1
  53. package/node_modules/@pierre/diffs/dist/utils/parsePatchFiles.js +21 -13
  54. package/node_modules/@pierre/diffs/dist/utils/parsePatchFiles.js.map +1 -1
  55. package/node_modules/@pierre/diffs/dist/utils/parseQuotedDiffFileName.d.ts +8 -0
  56. package/node_modules/@pierre/diffs/dist/utils/parseQuotedDiffFileName.d.ts.map +1 -0
  57. package/node_modules/@pierre/diffs/dist/utils/parseQuotedDiffFileName.js +54 -0
  58. package/node_modules/@pierre/diffs/dist/utils/parseQuotedDiffFileName.js.map +1 -0
  59. package/node_modules/@pierre/diffs/dist/utils/realignChangeContent.d.ts +13 -10
  60. package/node_modules/@pierre/diffs/dist/utils/realignChangeContent.d.ts.map +1 -1
  61. package/node_modules/@pierre/diffs/dist/utils/realignChangeContent.js +23 -19
  62. package/node_modules/@pierre/diffs/dist/utils/realignChangeContent.js.map +1 -1
  63. package/node_modules/@pierre/diffs/dist/utils/renderDiffWithHighlighter.js +39 -0
  64. package/node_modules/@pierre/diffs/dist/utils/renderDiffWithHighlighter.js.map +1 -1
  65. package/node_modules/@pierre/diffs/dist/worker/worker-portable.js +39 -0
  66. package/node_modules/@pierre/diffs/dist/worker/worker-portable.js.map +1 -1
  67. package/node_modules/@pierre/diffs/dist/worker/worker.js +39 -0
  68. package/node_modules/@pierre/diffs/dist/worker/worker.js.map +1 -1
  69. package/node_modules/@pierre/diffs/node_modules/@shikijs/core/dist/index.d.mts +28 -28
  70. package/node_modules/@pierre/diffs/node_modules/@shikijs/core/dist/index.mjs +15 -12
  71. package/node_modules/@pierre/diffs/node_modules/@shikijs/core/package.json +4 -4
  72. package/node_modules/@pierre/diffs/node_modules/@shikijs/engine-javascript/dist/{engine-compile-Bdn9ihA2.d.mts → engine-compile-CtqiSkRk.d.mts} +5 -0
  73. package/node_modules/@pierre/diffs/node_modules/@shikijs/engine-javascript/dist/engine-compile.d.mts +1 -1
  74. package/node_modules/@pierre/diffs/node_modules/@shikijs/engine-javascript/dist/engine-compile.mjs +2 -4
  75. package/node_modules/@pierre/diffs/node_modules/@shikijs/engine-javascript/dist/engine-raw.d.mts +2 -3
  76. package/node_modules/@pierre/diffs/node_modules/@shikijs/engine-javascript/dist/engine-raw.mjs +2 -4
  77. package/node_modules/@pierre/diffs/node_modules/@shikijs/engine-javascript/dist/index.d.mts +1 -1
  78. package/node_modules/@pierre/diffs/node_modules/@shikijs/engine-javascript/dist/index.mjs +1 -1
  79. package/node_modules/@pierre/diffs/node_modules/@shikijs/engine-javascript/dist/string-TLTPtCPs.mjs +115 -0
  80. package/node_modules/@pierre/diffs/node_modules/@shikijs/engine-javascript/package.json +3 -3
  81. package/node_modules/@pierre/diffs/node_modules/@shikijs/engine-oniguruma/package.json +3 -3
  82. package/node_modules/@pierre/diffs/node_modules/@shikijs/primitive/dist/index.d.mts +31 -32
  83. package/node_modules/@pierre/diffs/node_modules/@shikijs/primitive/dist/index.mjs +2 -1
  84. package/node_modules/@pierre/diffs/node_modules/@shikijs/primitive/package.json +3 -3
  85. package/node_modules/@pierre/diffs/node_modules/@shikijs/themes/dist/monokai.mjs +1 -1
  86. package/node_modules/@pierre/diffs/node_modules/@shikijs/themes/dist/one-dark-pro.mjs +1 -1
  87. package/node_modules/@pierre/diffs/node_modules/@shikijs/themes/dist/red.mjs +1 -1
  88. package/node_modules/@pierre/diffs/node_modules/@shikijs/themes/dist/solarized-dark.mjs +1 -1
  89. package/node_modules/@pierre/diffs/node_modules/@shikijs/themes/dist/solarized-light.mjs +1 -1
  90. package/node_modules/@pierre/diffs/node_modules/@shikijs/themes/package.json +3 -3
  91. package/node_modules/@pierre/diffs/node_modules/@shikijs/transformers/dist/index.d.mts +58 -35
  92. package/node_modules/@pierre/diffs/node_modules/@shikijs/transformers/dist/index.mjs +35 -4
  93. package/node_modules/@pierre/diffs/node_modules/@shikijs/transformers/package.json +3 -3
  94. package/node_modules/@pierre/diffs/node_modules/@shikijs/types/dist/index.d.mts +76 -76
  95. package/node_modules/@pierre/diffs/node_modules/@shikijs/types/package.json +1 -1
  96. package/node_modules/@pierre/diffs/node_modules/micromark-util-types/index.d.ts +6 -3
  97. package/node_modules/@pierre/diffs/node_modules/micromark-util-types/package.json +2 -36
  98. package/node_modules/@pierre/diffs/node_modules/shiki/dist/bundle-full.d.mts +4 -4
  99. package/node_modules/@pierre/diffs/node_modules/shiki/dist/bundle-web.d.mts +9 -9
  100. package/node_modules/@pierre/diffs/node_modules/shiki/dist/types.d.mts +3 -3
  101. package/node_modules/@pierre/diffs/node_modules/shiki/package.json +10 -10
  102. package/node_modules/@pierre/diffs/package.json +1 -1
  103. package/node_modules/@shikijs/langs/dist/ada.mjs +1 -1
  104. package/node_modules/@shikijs/langs/dist/ahk.mjs +1 -1
  105. package/node_modules/@shikijs/langs/dist/beancount.mjs +1 -1
  106. package/node_modules/@shikijs/langs/dist/coq.mjs +1 -1
  107. package/node_modules/@shikijs/langs/dist/csharp.mjs +1 -1
  108. package/node_modules/@shikijs/langs/dist/css.mjs +1 -1
  109. package/node_modules/@shikijs/langs/dist/dart.mjs +1 -1
  110. package/node_modules/@shikijs/langs/dist/dotenv.mjs +1 -1
  111. package/node_modules/@shikijs/langs/dist/emacs-lisp.mjs +1 -1
  112. package/node_modules/@shikijs/langs/dist/gn.mjs +1 -1
  113. package/node_modules/@shikijs/langs/dist/handlebars.mjs +1 -1
  114. package/node_modules/@shikijs/langs/dist/julia.mjs +1 -1
  115. package/node_modules/@shikijs/langs/dist/latex.mjs +1 -1
  116. package/node_modules/@shikijs/langs/dist/luau.mjs +1 -1
  117. package/node_modules/@shikijs/langs/dist/marko.mjs +1 -1
  118. package/node_modules/@shikijs/langs/dist/moonbit.mjs +1 -1
  119. package/node_modules/@shikijs/langs/dist/nextflow-groovy.mjs +1 -1
  120. package/node_modules/@shikijs/langs/dist/nextflow.mjs +1 -1
  121. package/node_modules/@shikijs/langs/dist/nushell.mjs +1 -1
  122. package/node_modules/@shikijs/langs/dist/php.mjs +1 -1
  123. package/node_modules/@shikijs/langs/dist/powershell.mjs +1 -1
  124. package/node_modules/@shikijs/langs/dist/ruby.mjs +1 -1
  125. package/node_modules/@shikijs/langs/dist/rust.mjs +1 -1
  126. package/node_modules/@shikijs/langs/dist/sql.mjs +1 -1
  127. package/node_modules/@shikijs/langs/dist/svelte.mjs +1 -1
  128. package/node_modules/@shikijs/langs/dist/twig.mjs +3 -3
  129. package/node_modules/@shikijs/langs/dist/typespec.mjs +1 -1
  130. package/node_modules/@shikijs/langs/node_modules/@shikijs/types/dist/index.d.mts +76 -76
  131. package/node_modules/@shikijs/langs/node_modules/@shikijs/types/package.json +1 -1
  132. package/node_modules/@shikijs/langs/package.json +3 -3
  133. package/package.json +6 -6
  134. package/node_modules/@pierre/diffs/node_modules/@shikijs/engine-javascript/dist/scanner-DX8LRFGE.mjs +0 -77
package/dist/index.js CHANGED
@@ -124,22 +124,15 @@ function normalizePathSeparators(pathname) {
124
124
  if (collapsed.length <= 1) return collapsed;
125
125
  return collapsed.replace(/\/+$/, "");
126
126
  }
127
- function resolveDotSegments(pathname) {
128
- try {
129
- return new URL(pathname, "http://localhost").pathname;
130
- } catch {
131
- return pathname;
132
- }
133
- }
134
127
  function normalizePathForSecurity(pathname) {
135
- return normalizePathSeparators(normalizeLowercaseStringOrEmpty$1(resolveDotSegments(pathname))) || "/";
128
+ return normalizePathSeparators(normalizeLowercaseStringOrEmpty$1(URL.parse(pathname, "http://localhost")?.pathname ?? pathname)) || "/";
136
129
  }
137
- function buildCanonicalPathCandidates(pathname, maxDecodePasses = MAX_PATH_DECODE_PASSES) {
130
+ function buildCanonicalPathCandidates(pathname) {
138
131
  const candidates = /* @__PURE__ */ new Set([normalizePathForSecurity(pathname)]);
139
132
  let decoded = pathname;
140
133
  let malformedEncoding = false;
141
134
  let decodePasses = 0;
142
- for (let pass = 0; pass < maxDecodePasses; pass++) {
135
+ for (let pass = 0; pass < MAX_PATH_DECODE_PASSES; pass++) {
143
136
  let nextDecoded;
144
137
  try {
145
138
  nextDecoded = decodeURIComponent(decoded);
@@ -458,11 +451,7 @@ function createDiffsHttpHandler(params) {
458
451
  if (!parsed) return false;
459
452
  if (parsed.pathname.startsWith("/plugins/diffs/assets/")) return await serveAsset(req, res, parsed.pathname, params.logger);
460
453
  if (!parsed.pathname.startsWith(VIEW_PREFIX)) return false;
461
- const accessConfig = params.resolveAccessConfig?.() ?? {
462
- allowRemoteViewer: params.allowRemoteViewer,
463
- trustedProxies: params.trustedProxies,
464
- allowRealIpFallback: params.allowRealIpFallback
465
- };
454
+ const accessConfig = params.resolveAccessConfig();
466
455
  const access = resolveViewerAccess(req, {
467
456
  trustedProxies: accessConfig.trustedProxies,
468
457
  allowRealIpFallback: accessConfig.allowRealIpFallback
@@ -588,7 +577,7 @@ const DIFFS_AGENT_GUIDANCE = [
588
577
  const DEFAULT_TTL_MS = 18e5;
589
578
  const MAX_TTL_MS = 216e5;
590
579
  const SWEEP_FALLBACK_AGE_MS = 864e5;
591
- const DEFAULT_CLEANUP_INTERVAL_MS = 3e5;
580
+ const CLEANUP_INTERVAL_MS = 3e5;
592
581
  const CLEANUP_CONCURRENCY = 4;
593
582
  const MAX_DECODED_HTML_BYTES = 67108864;
594
583
  const ARTIFACT_ID_ATTEMPTS = 8;
@@ -608,7 +597,6 @@ var DiffArtifactStore = class {
608
597
  this.rootDir = path.resolve(params.rootDir);
609
598
  this.blobStore = params.blobStore;
610
599
  this.logger = params.logger;
611
- this.cleanupIntervalMs = params.cleanupIntervalMs === void 0 ? DEFAULT_CLEANUP_INTERVAL_MS : Math.max(0, Math.floor(params.cleanupIntervalMs));
612
600
  }
613
601
  async createArtifact(params) {
614
602
  const html = Buffer.from(params.html, "utf8");
@@ -777,7 +765,7 @@ var DiffArtifactStore = class {
777
765
  scheduleCleanup() {
778
766
  const now = Date.now();
779
767
  if (this.cleanupStopped || this.cleanupInFlight || now < this.nextCleanupAt) return;
780
- this.nextCleanupAt = now + this.cleanupIntervalMs;
768
+ this.nextCleanupAt = now + CLEANUP_INTERVAL_MS;
781
769
  this.cleanupExpired().catch((error) => {
782
770
  this.nextCleanupAt = 0;
783
771
  this.logger?.warn(`Failed to clean expired diff artifacts: ${String(error)}`);
@@ -1588,25 +1576,18 @@ async function renderDiffDocument(input, options, target = "both") {
1588
1576
  const imageBodyHtml = imageSections.length ? [...lead, ...imageSections].join("\n") : void 0;
1589
1577
  const viewerRuntime = sections.some((section) => section.usesLanguagePack) ? "language-pack" : "base";
1590
1578
  const imageTypography = resolveDiffTypography(buildImageRenderOptions(options).presentation);
1579
+ const document = (bodyHtml, runtimeMode) => buildHtmlDocument({
1580
+ title,
1581
+ bodyHtml,
1582
+ theme: options.presentation.theme,
1583
+ imageMaxWidth: options.image.maxWidth,
1584
+ imageTypography,
1585
+ runtimeMode,
1586
+ viewerRuntime
1587
+ });
1591
1588
  return {
1592
- ...viewerBodyHtml ? { html: buildHtmlDocument({
1593
- title,
1594
- bodyHtml: viewerBodyHtml,
1595
- theme: options.presentation.theme,
1596
- imageMaxWidth: options.image.maxWidth,
1597
- imageTypography,
1598
- runtimeMode: "viewer",
1599
- viewerRuntime
1600
- }) } : {},
1601
- ...imageBodyHtml ? { imageHtml: buildHtmlDocument({
1602
- title,
1603
- bodyHtml: imageBodyHtml,
1604
- theme: options.presentation.theme,
1605
- imageMaxWidth: options.image.maxWidth,
1606
- imageTypography,
1607
- runtimeMode: "image",
1608
- viewerRuntime
1609
- }) } : {},
1589
+ ...viewerBodyHtml ? { html: document(viewerBodyHtml, "viewer") } : {},
1590
+ ...imageBodyHtml ? { imageHtml: document(imageBodyHtml, "image") } : {},
1610
1591
  title,
1611
1592
  fileCount: sections.length,
1612
1593
  inputKind: input.kind,
@@ -1629,7 +1610,7 @@ const MAX_TITLE_BYTES = 1024;
1629
1610
  const MAX_PATH_BYTES = 2048;
1630
1611
  const MAX_LANG_BYTES = 128;
1631
1612
  const MAX_DIFF_ARTIFACT_TTL_SECONDS = 21600;
1632
- const loadDiffsBrowserRuntime = createLazyRuntimeModule(() => import("./.setup/browser.runtime-B8JeyUXz.mjs"));
1613
+ const loadDiffsBrowserRuntime = createLazyRuntimeModule(() => import("./.setup/browser.runtime-BfvyJ76b.mjs"));
1633
1614
  const DiffsToolSchema = Type.Object({
1634
1615
  before: Type.Optional(Type.String({ description: "Original text content." })),
1635
1616
  after: Type.Optional(Type.String({ description: "Updated text content." })),
@@ -1745,7 +1726,7 @@ function createDiffsTool(params) {
1745
1726
  } : void 0;
1746
1727
  if (mode === "view") return textResult(`Diff viewer ready.\n${viewerUrl}`, viewerDetails);
1747
1728
  try {
1748
- const screenshotter = params.screenshotter ?? new (await (loadDiffsBrowserRuntime())).PlaywrightDiffScreenshotter({ config });
1729
+ const screenshotter = new (await (loadDiffsBrowserRuntime())).PlaywrightDiffScreenshotter({ config });
1749
1730
  const html = requireRenderedHtml(rendered.imageHtml, "image");
1750
1731
  const artifactFile = await params.store.createStandaloneFileArtifact({
1751
1732
  format: image.format,
@@ -1918,7 +1899,6 @@ function registerDiffsPlugin(api) {
1918
1899
  allowRealIpFallback: currentConfig.gateway?.allowRealIpFallback === true
1919
1900
  };
1920
1901
  };
1921
- const initialAccessConfig = resolveCurrentAccessConfig();
1922
1902
  api.registerTool((ctx) => {
1923
1903
  const pluginConfig = resolveCurrentPluginConfig();
1924
1904
  return createDiffsTool({
@@ -1937,9 +1917,6 @@ function registerDiffsPlugin(api) {
1937
1917
  handler: createDiffsHttpHandler({
1938
1918
  store,
1939
1919
  logger: api.logger,
1940
- allowRemoteViewer: initialAccessConfig.allowRemoteViewer,
1941
- trustedProxies: initialAccessConfig.trustedProxies,
1942
- allowRealIpFallback: initialAccessConfig.allowRealIpFallback,
1943
1920
  resolveAccessConfig: resolveCurrentAccessConfig
1944
1921
  })
1945
1922
  });
@@ -268,10 +268,8 @@ declare class CodeView<LAnnotation = undefined, Caret = undefined> {
268
268
  clearSelectedLines(options?: SelectionWriteOptions): void;
269
269
  getItem(itemId: string): CodeViewItem<LAnnotation> | undefined;
270
270
  /**
271
- * Get the live editor for an item currently in edit mode. Use this to drive
272
- * editor APIs CodeView does not wrap (applyEdits, undo, setMarkers, …).
273
- * Returns undefined once the item's session ends (edit off or removal); a
274
- * collapsed item keeps its suspended editor.
271
+ * Returns the editor while this item is being edited. Partial diffs get an
272
+ * editor after their files load; scrolling away or collapsing keeps it.
275
273
  */
276
274
  getEditor(itemId: string): CodeViewEditor<LAnnotation, Caret> | undefined;
277
275
  updateItem(input: CodeViewItem<LAnnotation>): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"CodeView.d.ts","names":[],"sources":["../../src/components/CodeView.ts"],"mappings":"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"}
1
+ {"version":3,"file":"CodeView.d.ts","names":[],"sources":["../../src/components/CodeView.ts"],"mappings":"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"}
@@ -405,25 +405,30 @@ var CodeView = class CodeView {
405
405
  this.clearReadySubscription();
406
406
  this.restoreScrollInteractions();
407
407
  this.cleanAllRenderedItems();
408
+ const { items: discardedItems } = this;
408
409
  const teardownSessions = [...this.itemEditors.values()].map((record) => {
409
410
  const item = this.idToItem.get(record.state.id);
410
411
  if (item != null) record.state.removedItem = item.item;
411
- return {
412
- record,
413
- instance: item?.instance
414
- };
412
+ return record;
415
413
  });
416
414
  this.itemEditors.clear();
417
415
  this.attachedEditors.clear();
418
416
  this.selectedLines = null;
419
- this.items.length = 0;
417
+ this.items = [];
420
418
  this.idToItem.clear();
421
419
  this.instanceToItem.clear();
422
420
  let failed = false;
423
421
  let failure;
424
- for (const { record, instance } of teardownSessions) try {
422
+ for (const record of teardownSessions) try {
425
423
  record.editor.cleanUp("discard");
426
- instance?.cleanUp();
424
+ } catch (error) {
425
+ if (!failed) {
426
+ failed = true;
427
+ failure = error;
428
+ }
429
+ }
430
+ for (const item of discardedItems) try {
431
+ item.instance.cleanUp();
427
432
  } catch (error) {
428
433
  if (!failed) {
429
434
  failed = true;
@@ -613,10 +618,8 @@ var CodeView = class CodeView {
613
618
  return this.idToItem.get(itemId)?.item;
614
619
  }
615
620
  /**
616
- * Get the live editor for an item currently in edit mode. Use this to drive
617
- * editor APIs CodeView does not wrap (applyEdits, undo, setMarkers, …).
618
- * Returns undefined once the item's session ends (edit off or removal); a
619
- * collapsed item keeps its suspended editor.
621
+ * Returns the editor while this item is being edited. Partial diffs get an
622
+ * editor after their files load; scrolling away or collapsing keeps it.
620
623
  */
621
624
  getEditor(itemId) {
622
625
  return this.itemEditors.get(itemId)?.editor;
@@ -691,7 +694,11 @@ var CodeView = class CodeView {
691
694
  let removedItemsById;
692
695
  if (this.items.length === 0) this.appendItemsInternal(items);
693
696
  else if (!this.tryAppendItems(items)) removedItemsById = this.reconcileItems(items);
694
- this.syncItemEditors(removedItemsById);
697
+ try {
698
+ this.syncItemEditors(removedItemsById);
699
+ } finally {
700
+ for (const removedItem of removedItemsById?.values() ?? []) removedItem.instance.cleanUp();
701
+ }
695
702
  this.syncSelection();
696
703
  }
697
704
  /**
@@ -966,6 +973,10 @@ var CodeView = class CodeView {
966
973
  const record = this.itemEditors.get(id);
967
974
  let createdEditor;
968
975
  try {
976
+ if (record == null && item.type === "diff" && !item.instance.__canAttachEditor()) {
977
+ item.instance.__prepareForEditing();
978
+ return;
979
+ }
969
980
  if (record == null) {
970
981
  assertEditorFactory(createEditor);
971
982
  const state = getItemOptionsState(item.instance.options);