@design.estate/dees-catalog 4.0.2 → 4.1.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.
@@ -173230,12 +173230,16 @@ var renderFileRead = /* @__PURE__ */ __name((call, helpers) => {
173230
173230
  var renderFileWrite = /* @__PURE__ */ __name((call, helpers) => {
173231
173231
  const input = inputRecord(call);
173232
173232
  const path2 = filePathOf2(call);
173233
- const newContent = String(input.content ?? input.newContent ?? "");
173234
- const previousContent = String(input.oldContent ?? input.originalContent ?? input.before ?? "");
173233
+ const newContent = String(
173234
+ input.content ?? input.newContent ?? input.newString ?? input.new_string ?? ""
173235
+ );
173236
+ const previousContent = String(
173237
+ input.oldContent ?? input.originalContent ?? input.before ?? input.oldString ?? input.old_string ?? ""
173238
+ );
173235
173239
  const filename = path2.split("/").pop() || void 0;
173236
173240
  const language = harnessLanguageForPath(path2);
173237
173241
  if (previousContent) {
173238
- return helpers.diffBlock(previousContent, newContent, { language, filename });
173242
+ return helpers.diffBlock(previousContent, newContent, { language, filename, view: "split" });
173239
173243
  }
173240
173244
  if (newContent) {
173241
173245
  return helpers.codeBlock(newContent, language, filename);
@@ -173547,15 +173551,40 @@ var DeesHarnessContentBlocks = _DeesHarnessContentBlocks;
173547
173551
  init_dist_ts25();
173548
173552
  init_theme();
173549
173553
  init_dees_icon();
173550
- var _outputExpanded_dec, _expanded_dec2, _toolRegistry_dec, _call_dec, _a79, _DeesHarnessToolCard_decorators, _init80, _call, _toolRegistry, _expanded2, _outputExpanded;
173554
+ var _returnFlash_dec, _maximized_dec, _bodyOverflowing_dec, _bodyCapPx_dec, _outputExpanded_dec, _expanded_dec2, _toolRegistry_dec, _call_dec, _a79, _DeesHarnessToolCard_decorators, _init80, _call, _toolRegistry, _expanded2, _outputExpanded, _bodyCapPx, _bodyOverflowing, _maximized, _returnFlash;
173551
173555
  _DeesHarnessToolCard_decorators = [customElement("dees-harness-tool-card")];
173552
- var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a79 = DeesElement, _call_dec = [n5({ attribute: false })], _toolRegistry_dec = [n5({ attribute: false })], _expanded_dec2 = [r5()], _outputExpanded_dec = [r5()], _a79) {
173556
+ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a79 = DeesElement, _call_dec = [n5({ attribute: false })], _toolRegistry_dec = [n5({ attribute: false })], _expanded_dec2 = [r5()], _outputExpanded_dec = [r5()], _bodyCapPx_dec = [n5({ type: Number })], _bodyOverflowing_dec = [r5()], _maximized_dec = [r5()], _returnFlash_dec = [r5()], _a79) {
173553
173557
  constructor() {
173554
173558
  super(...arguments);
173555
173559
  __privateAdd(this, _call, __runInitializers(_init80, 8, this, { id: "", name: "", status: "pending" })), __runInitializers(_init80, 11, this);
173556
173560
  __privateAdd(this, _toolRegistry, __runInitializers(_init80, 12, this, DeesHarnessToolRegistry.default)), __runInitializers(_init80, 15, this);
173557
173561
  __privateAdd(this, _expanded2, __runInitializers(_init80, 16, this)), __runInitializers(_init80, 19, this);
173558
173562
  __privateAdd(this, _outputExpanded, __runInitializers(_init80, 20, this, false)), __runInitializers(_init80, 23, this);
173563
+ __privateAdd(this, _bodyCapPx, __runInitializers(_init80, 24, this, 360)), __runInitializers(_init80, 27, this);
173564
+ __privateAdd(this, _bodyOverflowing, __runInitializers(_init80, 28, this, false)), __runInitializers(_init80, 31, this);
173565
+ __privateAdd(this, _maximized, __runInitializers(_init80, 32, this, false)), __runInitializers(_init80, 35, this);
173566
+ __privateAdd(this, _returnFlash, __runInitializers(_init80, 36, this, false)), __runInitializers(_init80, 39, this);
173567
+ __publicField(this, "bodyResizeObserver", null);
173568
+ __publicField(this, "observedBodyInner", null);
173569
+ __publicField(this, "openFullscreen", /* @__PURE__ */ __name(() => {
173570
+ this.maximized = true;
173571
+ window.addEventListener("keydown", this.handleFullscreenKeydown);
173572
+ }, "openFullscreen"));
173573
+ __publicField(this, "closeFullscreen", /* @__PURE__ */ __name(() => {
173574
+ window.removeEventListener("keydown", this.handleFullscreenKeydown);
173575
+ if (!this.maximized) return;
173576
+ this.maximized = false;
173577
+ this.returnFlash = true;
173578
+ requestAnimationFrame(() => {
173579
+ this.scrollIntoView({ block: "center", behavior: "smooth" });
173580
+ });
173581
+ }, "closeFullscreen"));
173582
+ __publicField(this, "handleFullscreenKeydown", /* @__PURE__ */ __name((event) => {
173583
+ if (event.key === "Escape") {
173584
+ event.preventDefault();
173585
+ this.closeFullscreen();
173586
+ }
173587
+ }, "handleFullscreenKeydown"));
173559
173588
  }
173560
173589
  get descriptor() {
173561
173590
  return this.toolRegistry.resolve(this.enrichedCall);
@@ -173581,7 +173610,13 @@ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a79 = DeesElemen
173581
173610
  const statusTone = call.isError ? "error" : call.status === "completed" ? "success" : call.status;
173582
173611
  const duration = harnessFormatDuration(call.startedAt, call.finishedAt);
173583
173612
  return b2`
173584
- <div class="harness-card status-${call.isError ? "error" : call.status} ${descriptor.destructive ? "destructive" : ""}">
173613
+ <div class="harness-card status-${call.isError ? "error" : call.status} ${descriptor.destructive ? "destructive" : ""} ${this.returnFlash ? "returnFlash" : ""}"
173614
+ @animationend=${(event) => {
173615
+ if (event.animationName === "harness-card-return-flash") {
173616
+ this.returnFlash = false;
173617
+ }
173618
+ }}
173619
+ >
173585
173620
  <button
173586
173621
  class="header"
173587
173622
  type="button"
@@ -173605,10 +173640,63 @@ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a79 = DeesElemen
173605
173640
  </span>
173606
173641
  </span>
173607
173642
  </button>
173608
- ${this.isOpen ? b2`<div class="body">${this.renderBody(call)}</div>` : ""}
173643
+ ${this.isOpen && !this.maximized ? b2`
173644
+ <div
173645
+ class="bodyClipFrame ${this.bodyOverflowing ? "capped" : ""}"
173646
+ style=${`max-height: ${this.bodyCapPx}px;`}
173647
+ >
173648
+ <div class="body bodyInner">${this.renderBody(call)}</div>
173649
+ </div>
173650
+ ${this.bodyOverflowing ? b2`
173651
+ <button class="maximizeBar" type="button" @click=${this.openFullscreen}>
173652
+ <dees-icon icon="lucide:Maximize2" iconSize="12"></dees-icon>
173653
+ Show everything
173654
+ </button>
173655
+ ` : ""}
173656
+ ` : ""}
173609
173657
  </div>
173658
+ ${this.maximized ? b2`
173659
+ <div class="fullscreenLayer" @click=${(event) => {
173660
+ if (event.target === event.currentTarget) this.closeFullscreen();
173661
+ }}>
173662
+ <div class="fullscreenPanel">
173663
+ <header class="fullscreenHeader">
173664
+ <dees-icon .icon=${descriptor.icon} iconSize="15"></dees-icon>
173665
+ <span class="fullscreenTitle">${label}${subtitle ? ` \xB7 ${subtitle}` : ""}</span>
173666
+ <button class="fullscreenClose" type="button" @click=${this.closeFullscreen}>
173667
+ <dees-icon icon="lucide:Minimize2" iconSize="15"></dees-icon>
173668
+ </button>
173669
+ </header>
173670
+ <div class="fullscreenBody">${this.renderBody(call)}</div>
173671
+ </div>
173672
+ </div>
173673
+ ` : ""}
173610
173674
  `;
173611
173675
  }
173676
+ updated(changedProperties) {
173677
+ super.updated(changedProperties);
173678
+ const bodyInner = this.shadowRoot?.querySelector(".bodyInner") ?? null;
173679
+ if (bodyInner === this.observedBodyInner) return;
173680
+ this.bodyResizeObserver?.disconnect();
173681
+ this.observedBodyInner = bodyInner;
173682
+ if (!bodyInner) {
173683
+ this.bodyOverflowing = false;
173684
+ return;
173685
+ }
173686
+ this.bodyResizeObserver ??= new ResizeObserver(() => {
173687
+ const inner = this.observedBodyInner;
173688
+ if (!inner) return;
173689
+ this.bodyOverflowing = inner.scrollHeight > this.bodyCapPx + 24;
173690
+ });
173691
+ this.bodyResizeObserver.observe(bodyInner);
173692
+ }
173693
+ async disconnectedCallback() {
173694
+ window.removeEventListener("keydown", this.handleFullscreenKeydown);
173695
+ this.bodyResizeObserver?.disconnect();
173696
+ this.bodyResizeObserver = null;
173697
+ this.observedBodyInner = null;
173698
+ await super.disconnectedCallback();
173699
+ }
173612
173700
  renderMcpBadges(call) {
173613
173701
  if (!call.mcp) return b2``;
173614
173702
  const annotations = call.mcp.annotations;
@@ -173687,10 +173775,18 @@ _call = new WeakMap();
173687
173775
  _toolRegistry = new WeakMap();
173688
173776
  _expanded2 = new WeakMap();
173689
173777
  _outputExpanded = new WeakMap();
173778
+ _bodyCapPx = new WeakMap();
173779
+ _bodyOverflowing = new WeakMap();
173780
+ _maximized = new WeakMap();
173781
+ _returnFlash = new WeakMap();
173690
173782
  __decorateElement(_init80, 4, "call", _call_dec, _DeesHarnessToolCard, _call);
173691
173783
  __decorateElement(_init80, 4, "toolRegistry", _toolRegistry_dec, _DeesHarnessToolCard, _toolRegistry);
173692
173784
  __decorateElement(_init80, 4, "expanded", _expanded_dec2, _DeesHarnessToolCard, _expanded2);
173693
173785
  __decorateElement(_init80, 4, "outputExpanded", _outputExpanded_dec, _DeesHarnessToolCard, _outputExpanded);
173786
+ __decorateElement(_init80, 4, "bodyCapPx", _bodyCapPx_dec, _DeesHarnessToolCard, _bodyCapPx);
173787
+ __decorateElement(_init80, 4, "bodyOverflowing", _bodyOverflowing_dec, _DeesHarnessToolCard, _bodyOverflowing);
173788
+ __decorateElement(_init80, 4, "maximized", _maximized_dec, _DeesHarnessToolCard, _maximized);
173789
+ __decorateElement(_init80, 4, "returnFlash", _returnFlash_dec, _DeesHarnessToolCard, _returnFlash);
173694
173790
  _DeesHarnessToolCard = __decorateElement(_init80, 0, "DeesHarnessToolCard", _DeesHarnessToolCard_decorators, _DeesHarnessToolCard);
173695
173791
  __name(_DeesHarnessToolCard, "DeesHarnessToolCard");
173696
173792
  __publicField(_DeesHarnessToolCard, "demo", demoFunc55);
@@ -173821,6 +173917,135 @@ __publicField(_DeesHarnessToolCard, "styles", [
173821
173917
  dees-dataview-codebox {
173822
173918
  font-family: var(--dees-font-family);
173823
173919
  }
173920
+
173921
+ /* Three body modes: collapsed (no body), normal (content fits the
173922
+ cap), capped (content taller than the cap clips behind a fade and
173923
+ offers fullscreen). */
173924
+ .bodyClipFrame {
173925
+ position: relative;
173926
+ overflow: hidden;
173927
+ }
173928
+
173929
+ .bodyClipFrame.capped::after {
173930
+ content: '';
173931
+ position: absolute;
173932
+ left: 0;
173933
+ right: 0;
173934
+ bottom: 0;
173935
+ height: 44px;
173936
+ background: linear-gradient(to bottom, transparent, var(--dees-color-bg-primary));
173937
+ pointer-events: none;
173938
+ }
173939
+
173940
+ .maximizeBar {
173941
+ display: flex;
173942
+ align-items: center;
173943
+ justify-content: center;
173944
+ gap: var(--dees-spacing-xs);
173945
+ width: 100%;
173946
+ padding: var(--dees-spacing-xs) var(--dees-spacing-md);
173947
+ border: 0;
173948
+ border-top: 1px solid var(--dees-color-border-subtle);
173949
+ background: transparent;
173950
+ color: var(--dees-color-link);
173951
+ cursor: pointer;
173952
+ font-family: inherit;
173953
+ font-size: var(--dees-font-control-size-sm, 12px);
173954
+ }
173955
+
173956
+ .maximizeBar:hover {
173957
+ background: var(--dees-color-hover);
173958
+ color: var(--dees-color-link-hover);
173959
+ }
173960
+
173961
+ .fullscreenLayer {
173962
+ position: fixed;
173963
+ inset: 0;
173964
+ z-index: 4000;
173965
+ display: grid;
173966
+ place-items: center;
173967
+ padding: 4vh 3vw;
173968
+ background: color-mix(in srgb, var(--dees-color-bg-primary) 55%, transparent);
173969
+ backdrop-filter: blur(6px);
173970
+ }
173971
+
173972
+ .fullscreenPanel {
173973
+ display: flex;
173974
+ flex-direction: column;
173975
+ width: min(1200px, 100%);
173976
+ height: 100%;
173977
+ min-height: 0;
173978
+ border: 1px solid var(--dees-color-border-default);
173979
+ border-radius: var(--dees-radius-lg);
173980
+ background: var(--dees-color-bg-primary);
173981
+ box-shadow: 0 24px 64px rgba(0, 0, 0, 0.4);
173982
+ overflow: hidden;
173983
+ }
173984
+
173985
+ .fullscreenHeader {
173986
+ display: flex;
173987
+ flex: 0 0 auto;
173988
+ align-items: center;
173989
+ gap: var(--dees-spacing-sm);
173990
+ padding: var(--dees-spacing-sm) var(--dees-spacing-md);
173991
+ border-bottom: 1px solid var(--dees-color-border-subtle);
173992
+ }
173993
+
173994
+ .fullscreenTitle {
173995
+ min-width: 0;
173996
+ overflow: hidden;
173997
+ text-overflow: ellipsis;
173998
+ white-space: nowrap;
173999
+ font-size: var(--dees-font-control-size-sm, 12px);
174000
+ font-weight: 650;
174001
+ }
174002
+
174003
+ .fullscreenClose {
174004
+ display: grid;
174005
+ place-items: center;
174006
+ margin-left: auto;
174007
+ padding: 6px;
174008
+ border: 0;
174009
+ border-radius: var(--dees-radius-md);
174010
+ background: transparent;
174011
+ color: var(--dees-color-text-secondary);
174012
+ cursor: pointer;
174013
+ }
174014
+
174015
+ .fullscreenClose:hover {
174016
+ background: var(--dees-color-hover);
174017
+ color: var(--dees-color-text-primary);
174018
+ }
174019
+
174020
+ .fullscreenBody {
174021
+ flex: 1;
174022
+ min-height: 0;
174023
+ overflow: auto;
174024
+ padding: var(--dees-spacing-md);
174025
+ scrollbar-width: thin;
174026
+ scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
174027
+ }
174028
+
174029
+ /* Locates the card after minimizing: a brief highlight pulse. */
174030
+ .harness-card.returnFlash {
174031
+ animation: harness-card-return-flash 1.4s var(--dees-ease-standard);
174032
+ }
174033
+
174034
+ @keyframes harness-card-return-flash {
174035
+ 0%, 55% {
174036
+ box-shadow: 0 0 0 2px var(--dees-color-accent-primary);
174037
+ }
174038
+ 100% {
174039
+ box-shadow: 0 0 0 0 transparent;
174040
+ }
174041
+ }
174042
+
174043
+ @media (prefers-reduced-motion: reduce) {
174044
+ .harness-card.returnFlash {
174045
+ animation: none;
174046
+ box-shadow: 0 0 0 2px var(--dees-color-accent-primary);
174047
+ }
174048
+ }
173824
174049
  `
173825
174050
  ]);
173826
174051
  __runInitializers(_init80, 1, _DeesHarnessToolCard);
@@ -174063,6 +174288,13 @@ __publicField(_DeesHarnessMessage, "styles", [
174063
174288
  boundary instead of widening the whole conversation; scrollable
174064
174289
  payload blocks inside keep their own horizontal scrollbars. */
174065
174290
  overflow-x: clip;
174291
+ /* Virtualized rendering: cards outside the viewport skip style,
174292
+ layout, and paint entirely and re-render when scrolled back —
174293
+ state and DOM stay, so expansion and selection survive. The
174294
+ 'auto' keyword keeps the last rendered size as the placeholder,
174295
+ holding the scrollbar steady. */
174296
+ content-visibility: auto;
174297
+ contain-intrinsic-size: auto 96px;
174066
174298
  font-family: var(--dees-font-family);
174067
174299
  /* entry: new boxes make space for themselves while fading in.
174068
174300
  A keyframes animation (not a transition) so the parent tree's
@@ -199041,7 +199273,7 @@ init_group_runtime();
199041
199273
  // ts_web/00_commitinfo_data.ts
199042
199274
  var commitinfo = {
199043
199275
  name: "@design.estate/dees-catalog",
199044
- version: "4.0.2",
199276
+ version: "4.1.0",
199045
199277
  description: "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript."
199046
199278
  };
199047
199279
 
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-catalog',
6
- version: '4.0.2',
6
+ version: '4.1.0',
7
7
  description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFdBQVcsRUFBRSxzSkFBc0o7Q0FDcEssQ0FBQSJ9
@@ -141,6 +141,13 @@ let DeesHarnessMessage = (() => {
141
141
  boundary instead of widening the whole conversation; scrollable
142
142
  payload blocks inside keep their own horizontal scrollbars. */
143
143
  overflow-x: clip;
144
+ /* Virtualized rendering: cards outside the viewport skip style,
145
+ layout, and paint entirely and re-render when scrolled back —
146
+ state and DOM stay, so expansion and selection survive. The
147
+ 'auto' keyword keeps the last rendered size as the placeholder,
148
+ holding the scrollbar steady. */
149
+ content-visibility: auto;
150
+ contain-intrinsic-size: auto 96px;
144
151
  font-family: var(--dees-font-family);
145
152
  /* entry: new boxes make space for themselves while fading in.
146
153
  A keyframes animation (not a transition) so the parent tree's
@@ -554,4 +561,4 @@ let DeesHarnessMessage = (() => {
554
561
  return DeesHarnessMessage = _classThis;
555
562
  })();
556
563
  export { DeesHarnessMessage };
557
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLW1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2RlZXMtaGFybmVzcy1tZXNzYWdlL2RlZXMtaGFybmVzcy1tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUczRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8scURBQXFELENBQUM7QUFDN0QsT0FBTyxxREFBcUQsQ0FBQztBQUM3RCxPQUFPLDhDQUE4QyxDQUFDO0FBUXRELE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFDO0FBRXBDOzs7OztHQUtHO0lBRVUsa0JBQWtCOzRCQUQ5QixhQUFhLENBQUMsc0JBQXNCLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQ0FBbkIsU0FBUSxXQUFXOzs7O21DQUloRCxR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
564
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLW1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2RlZXMtaGFybmVzcy1tZXNzYWdlL2RlZXMtaGFybmVzcy1tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUczRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8scURBQXFELENBQUM7QUFDN0QsT0FBTyxxREFBcUQsQ0FBQztBQUM3RCxPQUFPLDhDQUE4QyxDQUFDO0FBUXRELE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFDO0FBRXBDOzs7OztHQUtHO0lBRVUsa0JBQWtCOzRCQUQ5QixhQUFhLENBQUMsc0JBQXNCLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQ0FBbkIsU0FBUSxXQUFXOzs7O21DQUloRCxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7b0NBRzlCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQzt5Q0FHM0IsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO2tEQUkzQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7d0NBRzNCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzt5Q0FROUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO2dEQUc5QixLQUFLLEVBQUU7WUF2QlIsMEtBQVMsT0FBTyw2QkFBUCxPQUFPLHlGQUEwRTtZQUcxRiw2S0FBUyxRQUFRLDZCQUFSLFFBQVEsMkZBQWlCO1lBR2xDLDRMQUFTLGFBQWEsNkJBQWIsYUFBYSxxR0FBa0I7WUFJeEMsdU5BQVMsc0JBQXNCLDZCQUF0QixzQkFBc0IsdUhBQWlCO1lBR2hELHlMQUFTLFlBQVksNkJBQVosWUFBWSxtR0FBNEQ7WUFRakYsNExBQVMsYUFBYSw2QkFBYixhQUFhLHFHQUFrQjtZQUd4QyxpTkFBUyxvQkFBb0IsNkJBQXBCLG9CQUFvQixtSEFBYztZQTdCN0MsNktBcWRDOzs7O1FBcGRRLE1BQU0sQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUcxQywyRUFBb0MsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUM7UUFBMUYsSUFBUyxPQUFPLDZDQUEwRTtRQUExRixJQUFTLE9BQU8sbURBQTBFO1FBRzFGLG1JQUE2QixJQUFJLEdBQUM7UUFBbEMsSUFBUyxRQUFRLDhDQUFpQjtRQUFsQyxJQUFTLFFBQVEsb0RBQWlCO1FBR2xDLDhJQUFrQyxLQUFLLEdBQUM7UUFBeEMsSUFBUyxhQUFhLG1EQUFrQjtRQUF4QyxJQUFTLGFBQWEseURBQWtCO1FBSXhDLHFLQUEyQyxJQUFJLEdBQUM7UUFGaEQsd0VBQXdFO1FBRXhFLElBQVMsc0JBQXNCLDREQUFpQjtRQUFoRCxJQUFTLHNCQUFzQixrRUFBaUI7UUFHaEQsMEpBQWlELHVCQUF1QixDQUFDLE9BQU8sR0FBQztRQUFqRixJQUFTLFlBQVksa0RBQTREO1FBQWpGLElBQVMsWUFBWSx3REFBNEQ7UUFRakYsa0pBQWtDLEtBQUssR0FBQztRQU54Qzs7OztXQUlHO1FBRUgsSUFBUyxhQUFhLG1EQUFrQjtRQUF4QyxJQUFTLGFBQWEseURBQWtCO1FBR3hDLGlLQUF3QyxFQUFFLEdBQUM7UUFBM0MsSUFBUyxvQkFBb0IsMERBQWM7UUFBM0MsSUFBUyxvQkFBb0IsZ0VBQWM7UUFFcEMsTUFBTSxDQUFDLE1BQU0sR0FBRztZQUNyQixrQkFBa0I7WUFDbEIsVUFBVSxDQUFDLGFBQWE7WUFDeEIsY0FBYztZQUNkLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FxTUY7WUFDRCwrREFBK0Q7WUFDL0QsbUJBQW1CO1lBQ25CLGlCQUFpQjtTQUNsQixDQUFDO1FBRU0sa0JBQWtCLHNFQUFHLENBQUMsRUFBQztRQUN2QixjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLHVCQUF1QixHQUF5QyxJQUFJLENBQUM7UUFDckUsV0FBVyxHQUFtQixJQUFJLENBQUM7UUFFM0MsSUFBVyxjQUFjO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDO1FBQ3BFLENBQUM7UUFFRCw2RUFBNkU7UUFFN0UsZ0VBQWdFO1FBQ3pELGVBQWUsQ0FBQyxLQUFhO1lBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDOUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxzREFBc0Q7UUFDL0Msb0JBQW9CLENBQUMsTUFBYyxFQUFFLEtBQWEsRUFBRSxTQUFrQjtZQUMzRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsS0FBSyxFQUFFLENBQUM7WUFDOUIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDVixJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDcEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsd0VBQXdFO1lBQ3hFLEtBQUssTUFBTSxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ2pHLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDO1FBRUQsdUNBQXVDO1FBQ2hDLFlBQVksQ0FBQyxNQUFjLEVBQUUsT0FBZ0I7WUFDbEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQ2xGLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsS0FBSyxNQUFNLGdCQUFnQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDakcsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ25DLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELGlFQUFpRTtRQUMxRCxTQUFTLENBQUMsS0FBcUIsRUFBRSxLQUFjO1lBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLEtBQUs7Z0JBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ3RDLElBQUksS0FBSztnQkFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDO1FBRUQsNEVBQTRFO1FBRXJFLE1BQU07WUFDWCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzdCLHdFQUF3RTtZQUN4RSx1RUFBdUU7WUFDdkUsSUFDRSxPQUFPLENBQUMsSUFBSSxLQUFLLE1BQU07bUJBQ3BCLE9BQU8sQ0FBQyxRQUFRO21CQUNoQixDQUFDLE9BQU8sQ0FBQyxJQUFJO21CQUNiLENBQUMsT0FBTyxDQUFDLEtBQUs7bUJBQ2QsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU07bUJBQzFCLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQy9CLENBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUE7d0NBQ3VCLE9BQU8sQ0FBQyxRQUFRLGtCQUFrQixJQUFJLENBQUMsWUFBWTtPQUNwRixDQUFDO1lBQ0osQ0FBQztZQUNELE1BQU0sU0FBUyxHQUFHLFFBQVEsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pDLE9BQU8sSUFBSSxDQUFBOzRCQUNhLFNBQVMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7VUFDL0QsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYTtnQkFDbkMsQ0FBQyxDQUFDLElBQUksQ0FBQTs7a0JBRUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLDJCQUEyQixPQUFPLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7a0JBQ3pFLElBQUksQ0FBQyxhQUFhLElBQUksT0FBTyxDQUFDLFNBQVM7b0JBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUEsMkJBQTJCLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUztvQkFDdEYsQ0FBQyxDQUFDLEVBQUU7O2FBRVQ7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUU7VUFDSixPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU07Z0JBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUE7OzBEQUUwQyxPQUFPLENBQUMsU0FBUzs7YUFFOUQ7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUU7VUFDSixPQUFPLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtVQUM5RSxPQUFPLENBQUMsUUFBUTtnQkFDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQSxpQ0FBaUMsT0FBTyxDQUFDLFFBQVEsa0JBQWtCLElBQUksQ0FBQyxZQUFZLDRCQUE0QjtnQkFDdEgsQ0FBQyxDQUFDLEVBQUU7VUFDSixJQUFJLENBQUMsVUFBVSxFQUFFO1VBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSwwQkFBMEIsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO1VBQ3hFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsV0FBVztnQkFDMUIsQ0FBQyxDQUFDLElBQUksQ0FBQTs7d0JBRVEsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksQ0FBQyxTQUFTLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsVUFBVSxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVc7O2FBRXBIO2dCQUNILENBQUMsQ0FBQyxFQUFFOztLQUVULENBQUM7UUFDSixDQUFDO1FBRU8sVUFBVTtZQUNoQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2xCLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLDJEQUEyRCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsRUFBRSxDQUFDO1lBQ3RHLENBQUM7WUFDRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYzttQkFDcEMsSUFBSSxDQUFDLG9CQUFvQjttQkFDekIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDO21CQUNuRCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDcEMsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxJQUFJLENBQUE7cUNBQ29CLFVBQVUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7VUFDaEUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxFQUFFO09BQzlELENBQUM7WUFDSixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUE7K0JBQ2dCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxFQUFFO0tBQ3BHLENBQUM7UUFDSixDQUFDO1FBRU8saUJBQWlCLENBQUMsV0FBaUM7WUFDekQsT0FBTyxJQUFJLENBQUE7O1VBRUwsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUMvQixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxVQUFVLENBQUMsVUFBVTtvQkFDbkUsQ0FBQyxDQUFDLFFBQVEsVUFBVSxDQUFDLFNBQVMsV0FBVyxVQUFVLENBQUMsVUFBVSxFQUFFO29CQUNoRSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNQLE9BQU8sSUFBSSxDQUFBOztnQkFFTCxRQUFRO29CQUNSLENBQUMsQ0FBQyxJQUFJLENBQUEsb0NBQW9DLFFBQVEsUUFBUSxVQUFVLENBQUMsSUFBSSxLQUFLO29CQUM5RSxDQUFDLENBQUMsSUFBSSxDQUFBLGdHQUFnRzs7b0RBRWxFLFVBQVUsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLElBQUk7O29CQUVsRSxVQUFVLENBQUMsU0FBUyxJQUFJLE1BQU0sTUFBTSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFOzs7O1dBSTdILENBQUM7WUFDSixDQUFDLENBQUM7O0tBRUwsQ0FBQztRQUNKLENBQUM7UUFFRCw0RUFBNEU7UUFFckUsWUFBWSxDQUFDLGlCQUFtQztZQUNyRCxLQUFLLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDdEMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDSCxDQUFDO1FBRU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQkFBbUM7WUFDdEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO2dCQUFFLE9BQU87WUFDdkQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsY0FBYztnQkFBRSxPQUFPO1lBQ3RELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0I7b0JBQUUsT0FBTztnQkFDekMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQzlCLE9BQU87WUFDVCxDQUFDO1lBQ0QsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUVPLHNCQUFzQjtZQUM1QixJQUFJLElBQUksQ0FBQyx1QkFBdUI7Z0JBQUUsT0FBTztZQUN6QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDN0MsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztnQkFDcEMsS0FBSyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDNUIsQ0FBQyxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVPLEtBQUssQ0FBQyxhQUFhO1lBQ3pCLE1BQU0sS0FBSyxHQUFHLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ3hDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ3hDLE1BQU0sVUFBVSxHQUFHLE1BQU0sZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNuRixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsa0JBQWtCO2dCQUFFLE9BQU87WUFDOUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7WUFDcEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFVBQVUsQ0FBQztZQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDO2dCQUMxQixNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0gsQ0FBQztRQUVELDRFQUE0RTtRQUNwRSxLQUFLLENBQUMsbUJBQW1CLENBQUMsS0FBYTtZQUM3QyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUM3QixJQUFJLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFjLHlCQUF5QixDQUFDLElBQUksRUFBRSxDQUNoRixDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNoRixDQUFDO1lBQ0QsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLGtCQUFrQjtnQkFBRSxPQUFPO1lBQzlDLEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3RFLElBQUksQ0FBQztvQkFDSCxNQUFNLFdBQVcsR0FBRyxhQUFhO3dCQUMvQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUU7NEJBQ3hELFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDOzRCQUMxQixjQUFjLEVBQUUsSUFBSTt5QkFDckIsQ0FBQyxDQUFDLEtBQUs7d0JBQ1YsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO29CQUN4RSxXQUFXLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQztvQkFDcEMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO2dCQUMzQyxDQUFDO2dCQUFDLE1BQU0sQ0FBQztvQkFDUCxXQUFXLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7Z0JBQzNDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVNLEtBQUssQ0FBQyxvQkFBb0I7WUFDL0IsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztnQkFDakMsWUFBWSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO1lBQ3RDLENBQUM7WUFDRCxNQUFNLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3JDLENBQUM7O1lBcGRVLHVEQUFrQjs7Ozs7U0FBbEIsa0JBQWtCIn0=
@@ -23,12 +23,24 @@ export declare class DeesHarnessToolCard extends DeesElement {
23
23
  accessor toolRegistry: DeesHarnessToolRegistry;
24
24
  accessor expanded: boolean | undefined;
25
25
  accessor outputExpanded: boolean;
26
+ /** Body height cap; content beyond it clips and offers fullscreen. */
27
+ accessor bodyCapPx: number;
28
+ accessor bodyOverflowing: boolean;
29
+ accessor maximized: boolean;
30
+ accessor returnFlash: boolean;
31
+ private bodyResizeObserver;
32
+ private observedBodyInner;
26
33
  static styles: import("@design.estate/dees-element").CSSResult[];
27
34
  private get descriptor();
28
35
  /** call with mcp meta derived from the name when the adapter didn't set it */
29
36
  private get enrichedCall();
30
37
  get isOpen(): boolean;
31
38
  render(): TemplateResult;
39
+ private readonly openFullscreen;
40
+ private readonly closeFullscreen;
41
+ private readonly handleFullscreenKeydown;
42
+ updated(changedProperties: Map<PropertyKey, unknown>): void;
43
+ disconnectedCallback(): Promise<void>;
32
44
  private renderMcpBadges;
33
45
  private renderBody;
34
46
  private createHelpers;
@@ -67,6 +67,18 @@ let DeesHarnessToolCard = (() => {
67
67
  let _outputExpanded_decorators;
68
68
  let _outputExpanded_initializers = [];
69
69
  let _outputExpanded_extraInitializers = [];
70
+ let _bodyCapPx_decorators;
71
+ let _bodyCapPx_initializers = [];
72
+ let _bodyCapPx_extraInitializers = [];
73
+ let _bodyOverflowing_decorators;
74
+ let _bodyOverflowing_initializers = [];
75
+ let _bodyOverflowing_extraInitializers = [];
76
+ let _maximized_decorators;
77
+ let _maximized_initializers = [];
78
+ let _maximized_extraInitializers = [];
79
+ let _returnFlash_decorators;
80
+ let _returnFlash_initializers = [];
81
+ let _returnFlash_extraInitializers = [];
70
82
  var DeesHarnessToolCard = class extends _classSuper {
71
83
  static { _classThis = this; }
72
84
  static {
@@ -75,10 +87,18 @@ let DeesHarnessToolCard = (() => {
75
87
  _toolRegistry_decorators = [property({ attribute: false })];
76
88
  _expanded_decorators = [state()];
77
89
  _outputExpanded_decorators = [state()];
90
+ _bodyCapPx_decorators = [property({ type: Number })];
91
+ _bodyOverflowing_decorators = [state()];
92
+ _maximized_decorators = [state()];
93
+ _returnFlash_decorators = [state()];
78
94
  __esDecorate(this, null, _call_decorators, { kind: "accessor", name: "call", static: false, private: false, access: { has: obj => "call" in obj, get: obj => obj.call, set: (obj, value) => { obj.call = value; } }, metadata: _metadata }, _call_initializers, _call_extraInitializers);
79
95
  __esDecorate(this, null, _toolRegistry_decorators, { kind: "accessor", name: "toolRegistry", static: false, private: false, access: { has: obj => "toolRegistry" in obj, get: obj => obj.toolRegistry, set: (obj, value) => { obj.toolRegistry = value; } }, metadata: _metadata }, _toolRegistry_initializers, _toolRegistry_extraInitializers);
80
96
  __esDecorate(this, null, _expanded_decorators, { kind: "accessor", name: "expanded", static: false, private: false, access: { has: obj => "expanded" in obj, get: obj => obj.expanded, set: (obj, value) => { obj.expanded = value; } }, metadata: _metadata }, _expanded_initializers, _expanded_extraInitializers);
81
97
  __esDecorate(this, null, _outputExpanded_decorators, { kind: "accessor", name: "outputExpanded", static: false, private: false, access: { has: obj => "outputExpanded" in obj, get: obj => obj.outputExpanded, set: (obj, value) => { obj.outputExpanded = value; } }, metadata: _metadata }, _outputExpanded_initializers, _outputExpanded_extraInitializers);
98
+ __esDecorate(this, null, _bodyCapPx_decorators, { kind: "accessor", name: "bodyCapPx", static: false, private: false, access: { has: obj => "bodyCapPx" in obj, get: obj => obj.bodyCapPx, set: (obj, value) => { obj.bodyCapPx = value; } }, metadata: _metadata }, _bodyCapPx_initializers, _bodyCapPx_extraInitializers);
99
+ __esDecorate(this, null, _bodyOverflowing_decorators, { kind: "accessor", name: "bodyOverflowing", static: false, private: false, access: { has: obj => "bodyOverflowing" in obj, get: obj => obj.bodyOverflowing, set: (obj, value) => { obj.bodyOverflowing = value; } }, metadata: _metadata }, _bodyOverflowing_initializers, _bodyOverflowing_extraInitializers);
100
+ __esDecorate(this, null, _maximized_decorators, { kind: "accessor", name: "maximized", static: false, private: false, access: { has: obj => "maximized" in obj, get: obj => obj.maximized, set: (obj, value) => { obj.maximized = value; } }, metadata: _metadata }, _maximized_initializers, _maximized_extraInitializers);
101
+ __esDecorate(this, null, _returnFlash_decorators, { kind: "accessor", name: "returnFlash", static: false, private: false, access: { has: obj => "returnFlash" in obj, get: obj => obj.returnFlash, set: (obj, value) => { obj.returnFlash = value; } }, metadata: _metadata }, _returnFlash_initializers, _returnFlash_extraInitializers);
82
102
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
83
103
  DeesHarnessToolCard = _classThis = _classDescriptor.value;
84
104
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
@@ -97,6 +117,21 @@ let DeesHarnessToolCard = (() => {
97
117
  #outputExpanded_accessor_storage = (__runInitializers(this, _expanded_extraInitializers), __runInitializers(this, _outputExpanded_initializers, false));
98
118
  get outputExpanded() { return this.#outputExpanded_accessor_storage; }
99
119
  set outputExpanded(value) { this.#outputExpanded_accessor_storage = value; }
120
+ #bodyCapPx_accessor_storage = (__runInitializers(this, _outputExpanded_extraInitializers), __runInitializers(this, _bodyCapPx_initializers, 360));
121
+ /** Body height cap; content beyond it clips and offers fullscreen. */
122
+ get bodyCapPx() { return this.#bodyCapPx_accessor_storage; }
123
+ set bodyCapPx(value) { this.#bodyCapPx_accessor_storage = value; }
124
+ #bodyOverflowing_accessor_storage = (__runInitializers(this, _bodyCapPx_extraInitializers), __runInitializers(this, _bodyOverflowing_initializers, false));
125
+ get bodyOverflowing() { return this.#bodyOverflowing_accessor_storage; }
126
+ set bodyOverflowing(value) { this.#bodyOverflowing_accessor_storage = value; }
127
+ #maximized_accessor_storage = (__runInitializers(this, _bodyOverflowing_extraInitializers), __runInitializers(this, _maximized_initializers, false));
128
+ get maximized() { return this.#maximized_accessor_storage; }
129
+ set maximized(value) { this.#maximized_accessor_storage = value; }
130
+ #returnFlash_accessor_storage = (__runInitializers(this, _maximized_extraInitializers), __runInitializers(this, _returnFlash_initializers, false));
131
+ get returnFlash() { return this.#returnFlash_accessor_storage; }
132
+ set returnFlash(value) { this.#returnFlash_accessor_storage = value; }
133
+ bodyResizeObserver = (__runInitializers(this, _returnFlash_extraInitializers), null);
134
+ observedBodyInner = null;
100
135
  static styles = [
101
136
  themeDefaultStyles,
102
137
  cssManager.defaultStyles,
@@ -223,6 +258,135 @@ let DeesHarnessToolCard = (() => {
223
258
  dees-dataview-codebox {
224
259
  font-family: var(--dees-font-family);
225
260
  }
261
+
262
+ /* Three body modes: collapsed (no body), normal (content fits the
263
+ cap), capped (content taller than the cap clips behind a fade and
264
+ offers fullscreen). */
265
+ .bodyClipFrame {
266
+ position: relative;
267
+ overflow: hidden;
268
+ }
269
+
270
+ .bodyClipFrame.capped::after {
271
+ content: '';
272
+ position: absolute;
273
+ left: 0;
274
+ right: 0;
275
+ bottom: 0;
276
+ height: 44px;
277
+ background: linear-gradient(to bottom, transparent, var(--dees-color-bg-primary));
278
+ pointer-events: none;
279
+ }
280
+
281
+ .maximizeBar {
282
+ display: flex;
283
+ align-items: center;
284
+ justify-content: center;
285
+ gap: var(--dees-spacing-xs);
286
+ width: 100%;
287
+ padding: var(--dees-spacing-xs) var(--dees-spacing-md);
288
+ border: 0;
289
+ border-top: 1px solid var(--dees-color-border-subtle);
290
+ background: transparent;
291
+ color: var(--dees-color-link);
292
+ cursor: pointer;
293
+ font-family: inherit;
294
+ font-size: var(--dees-font-control-size-sm, 12px);
295
+ }
296
+
297
+ .maximizeBar:hover {
298
+ background: var(--dees-color-hover);
299
+ color: var(--dees-color-link-hover);
300
+ }
301
+
302
+ .fullscreenLayer {
303
+ position: fixed;
304
+ inset: 0;
305
+ z-index: 4000;
306
+ display: grid;
307
+ place-items: center;
308
+ padding: 4vh 3vw;
309
+ background: color-mix(in srgb, var(--dees-color-bg-primary) 55%, transparent);
310
+ backdrop-filter: blur(6px);
311
+ }
312
+
313
+ .fullscreenPanel {
314
+ display: flex;
315
+ flex-direction: column;
316
+ width: min(1200px, 100%);
317
+ height: 100%;
318
+ min-height: 0;
319
+ border: 1px solid var(--dees-color-border-default);
320
+ border-radius: var(--dees-radius-lg);
321
+ background: var(--dees-color-bg-primary);
322
+ box-shadow: 0 24px 64px rgba(0, 0, 0, 0.4);
323
+ overflow: hidden;
324
+ }
325
+
326
+ .fullscreenHeader {
327
+ display: flex;
328
+ flex: 0 0 auto;
329
+ align-items: center;
330
+ gap: var(--dees-spacing-sm);
331
+ padding: var(--dees-spacing-sm) var(--dees-spacing-md);
332
+ border-bottom: 1px solid var(--dees-color-border-subtle);
333
+ }
334
+
335
+ .fullscreenTitle {
336
+ min-width: 0;
337
+ overflow: hidden;
338
+ text-overflow: ellipsis;
339
+ white-space: nowrap;
340
+ font-size: var(--dees-font-control-size-sm, 12px);
341
+ font-weight: 650;
342
+ }
343
+
344
+ .fullscreenClose {
345
+ display: grid;
346
+ place-items: center;
347
+ margin-left: auto;
348
+ padding: 6px;
349
+ border: 0;
350
+ border-radius: var(--dees-radius-md);
351
+ background: transparent;
352
+ color: var(--dees-color-text-secondary);
353
+ cursor: pointer;
354
+ }
355
+
356
+ .fullscreenClose:hover {
357
+ background: var(--dees-color-hover);
358
+ color: var(--dees-color-text-primary);
359
+ }
360
+
361
+ .fullscreenBody {
362
+ flex: 1;
363
+ min-height: 0;
364
+ overflow: auto;
365
+ padding: var(--dees-spacing-md);
366
+ scrollbar-width: thin;
367
+ scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
368
+ }
369
+
370
+ /* Locates the card after minimizing: a brief highlight pulse. */
371
+ .harness-card.returnFlash {
372
+ animation: harness-card-return-flash 1.4s var(--dees-ease-standard);
373
+ }
374
+
375
+ @keyframes harness-card-return-flash {
376
+ 0%, 55% {
377
+ box-shadow: 0 0 0 2px var(--dees-color-accent-primary);
378
+ }
379
+ 100% {
380
+ box-shadow: 0 0 0 0 transparent;
381
+ }
382
+ }
383
+
384
+ @media (prefers-reduced-motion: reduce) {
385
+ .harness-card.returnFlash {
386
+ animation: none;
387
+ box-shadow: 0 0 0 2px var(--dees-color-accent-primary);
388
+ }
389
+ }
226
390
  `,
227
391
  ];
228
392
  get descriptor() {
@@ -253,7 +417,13 @@ let DeesHarnessToolCard = (() => {
253
417
  const statusTone = call.isError ? 'error' : call.status === 'completed' ? 'success' : call.status;
254
418
  const duration = harnessFormatDuration(call.startedAt, call.finishedAt);
255
419
  return html `
256
- <div class="harness-card status-${call.isError ? 'error' : call.status} ${descriptor.destructive ? 'destructive' : ''}">
420
+ <div class="harness-card status-${call.isError ? 'error' : call.status} ${descriptor.destructive ? 'destructive' : ''} ${this.returnFlash ? 'returnFlash' : ''}"
421
+ @animationend=${(event) => {
422
+ if (event.animationName === 'harness-card-return-flash') {
423
+ this.returnFlash = false;
424
+ }
425
+ }}
426
+ >
257
427
  <button
258
428
  class="header"
259
429
  type="button"
@@ -277,10 +447,94 @@ let DeesHarnessToolCard = (() => {
277
447
  </span>
278
448
  </span>
279
449
  </button>
280
- ${this.isOpen ? html `<div class="body">${this.renderBody(call)}</div>` : ''}
450
+ ${this.isOpen && !this.maximized
451
+ ? html `
452
+ <div
453
+ class="bodyClipFrame ${this.bodyOverflowing ? 'capped' : ''}"
454
+ style=${`max-height: ${this.bodyCapPx}px;`}
455
+ >
456
+ <div class="body bodyInner">${this.renderBody(call)}</div>
457
+ </div>
458
+ ${this.bodyOverflowing
459
+ ? html `
460
+ <button class="maximizeBar" type="button" @click=${this.openFullscreen}>
461
+ <dees-icon icon="lucide:Maximize2" iconSize="12"></dees-icon>
462
+ Show everything
463
+ </button>
464
+ `
465
+ : ''}
466
+ `
467
+ : ''}
281
468
  </div>
469
+ ${this.maximized
470
+ ? html `
471
+ <div class="fullscreenLayer" @click=${(event) => {
472
+ if (event.target === event.currentTarget)
473
+ this.closeFullscreen();
474
+ }}>
475
+ <div class="fullscreenPanel">
476
+ <header class="fullscreenHeader">
477
+ <dees-icon .icon=${descriptor.icon} iconSize="15"></dees-icon>
478
+ <span class="fullscreenTitle">${label}${subtitle ? ` · ${subtitle}` : ''}</span>
479
+ <button class="fullscreenClose" type="button" @click=${this.closeFullscreen}>
480
+ <dees-icon icon="lucide:Minimize2" iconSize="15"></dees-icon>
481
+ </button>
482
+ </header>
483
+ <div class="fullscreenBody">${this.renderBody(call)}</div>
484
+ </div>
485
+ </div>
486
+ `
487
+ : ''}
282
488
  `;
283
489
  }
490
+ openFullscreen = () => {
491
+ this.maximized = true;
492
+ window.addEventListener('keydown', this.handleFullscreenKeydown);
493
+ };
494
+ closeFullscreen = () => {
495
+ window.removeEventListener('keydown', this.handleFullscreenKeydown);
496
+ if (!this.maximized)
497
+ return;
498
+ this.maximized = false;
499
+ // The flash locates the card the user was just reading in fullscreen.
500
+ this.returnFlash = true;
501
+ requestAnimationFrame(() => {
502
+ this.scrollIntoView({ block: 'center', behavior: 'smooth' });
503
+ });
504
+ };
505
+ handleFullscreenKeydown = (event) => {
506
+ if (event.key === 'Escape') {
507
+ event.preventDefault();
508
+ this.closeFullscreen();
509
+ }
510
+ };
511
+ updated(changedProperties) {
512
+ super.updated(changedProperties);
513
+ const bodyInner = this.shadowRoot?.querySelector('.bodyInner') ?? null;
514
+ if (bodyInner === this.observedBodyInner)
515
+ return;
516
+ this.bodyResizeObserver?.disconnect();
517
+ this.observedBodyInner = bodyInner;
518
+ if (!bodyInner) {
519
+ this.bodyOverflowing = false;
520
+ return;
521
+ }
522
+ this.bodyResizeObserver ??= new ResizeObserver(() => {
523
+ const inner = this.observedBodyInner;
524
+ if (!inner)
525
+ return;
526
+ // small slack so a few px never trigger the cap chrome
527
+ this.bodyOverflowing = inner.scrollHeight > this.bodyCapPx + 24;
528
+ });
529
+ this.bodyResizeObserver.observe(bodyInner);
530
+ }
531
+ async disconnectedCallback() {
532
+ window.removeEventListener('keydown', this.handleFullscreenKeydown);
533
+ this.bodyResizeObserver?.disconnect();
534
+ this.bodyResizeObserver = null;
535
+ this.observedBodyInner = null;
536
+ await super.disconnectedCallback();
537
+ }
284
538
  renderMcpBadges(call) {
285
539
  if (!call.mcp)
286
540
  return html ``;
@@ -357,10 +611,6 @@ let DeesHarnessToolCard = (() => {
357
611
  `,
358
612
  };
359
613
  }
360
- constructor() {
361
- super(...arguments);
362
- __runInitializers(this, _outputExpanded_extraInitializers);
363
- }
364
614
  static {
365
615
  __runInitializers(_classThis, _classExtraInitializers);
366
616
  }
@@ -368,4 +618,4 @@ let DeesHarnessToolCard = (() => {
368
618
  return DeesHarnessToolCard = _classThis;
369
619
  })();
370
620
  export { DeesHarnessToolCard };
371
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXRvb2wtY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLXRvb2wtY2FyZC9kZWVzLWhhcm5lc3MtdG9vbC1jYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDNUQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXRELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsWUFBWSxHQUdiLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9FLE9BQU8sK0RBQStELENBQUM7QUFDdkUsT0FBTyx1RUFBdUUsQ0FBQztBQUMvRSxPQUFPLGlEQUFpRCxDQUFDO0FBQ3pELE9BQU8sOENBQThDLENBQUM7QUFRdEQ7Ozs7O0dBS0c7SUFFVSxtQkFBbUI7NEJBRC9CLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQzs7OztzQkFDQyxXQUFXOzs7Ozs7Ozs7Ozs7O21DQUFuQixTQUFRLFdBQVc7Ozs7Z0NBSWpELFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzt3Q0FHOUIsUUFBUSxDQUFD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
621
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXRvb2wtY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLXRvb2wtY2FyZC9kZWVzLWhhcm5lc3MtdG9vbC1jYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDNUQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXRELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsWUFBWSxHQUdiLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9FLE9BQU8sK0RBQStELENBQUM7QUFDdkUsT0FBTyx1RUFBdUUsQ0FBQztBQUMvRSxPQUFPLGlEQUFpRCxDQUFDO0FBQ3pELE9BQU8sOENBQThDLENBQUM7QUFRdEQ7Ozs7O0dBS0c7SUFFVSxtQkFBbUI7NEJBRC9CLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQzs7OztzQkFDQyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DQUFuQixTQUFRLFdBQVc7Ozs7Z0NBSWpELFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzt3Q0FH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
@@ -51,12 +51,19 @@ const renderFileRead = (call, helpers) => {
51
51
  const renderFileWrite = (call, helpers) => {
52
52
  const input = inputRecord(call);
53
53
  const path = filePathOf(call);
54
- const newContent = String(input.content ?? input.newContent ?? '');
55
- const previousContent = String(input.oldContent ?? input.originalContent ?? input.before ?? '');
54
+ // Covers both conventions: whole-file writes (content/newContent) and
55
+ // string-replacement edits à la OpenCode/Claude (oldString/newString).
56
+ const newContent = String(input.content ?? input.newContent ?? input.newString ?? input.new_string ?? '');
57
+ const previousContent = String(input.oldContent
58
+ ?? input.originalContent
59
+ ?? input.before
60
+ ?? input.oldString
61
+ ?? input.old_string
62
+ ?? '');
56
63
  const filename = path.split('/').pop() || undefined;
57
64
  const language = harnessLanguageForPath(path);
58
65
  if (previousContent) {
59
- return helpers.diffBlock(previousContent, newContent, { language, filename });
66
+ return helpers.diffBlock(previousContent, newContent, { language, filename, view: 'split' });
60
67
  }
61
68
  if (newContent) {
62
69
  return helpers.codeBlock(newContent, language, filename);
@@ -180,4 +187,4 @@ export const builtinBodyRenderers = {
180
187
  'mcp': renderMcp,
181
188
  'unknown': renderUnknown,
182
189
  };
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtaGFybmVzcy9kZWVzLWhhcm5lc3MtdG9vbC1jYXJkL3JlbmRlcmVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUF1QixNQUFNLDZCQUE2QixDQUFDO0FBR3hFLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIscUJBQXFCLEdBQ3RCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyw2Q0FBNkMsQ0FBQztBQUVyRDs7OztHQUlHO0FBRUgsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFzQixFQUEyQixFQUFFLENBQ3RFLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUVoRCxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQXNCLEVBQVUsRUFBRTtJQUNwRCxJQUFJLElBQUksQ0FBQyxTQUFTO1FBQUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFDLE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBc0IsRUFBVSxFQUFFO0lBQ3BELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNsRSxDQUFDLENBQUM7QUFFRixNQUFNLGNBQWMsR0FBRyxDQUFDLElBQXNCLEVBQUUsT0FBa0MsRUFBa0IsRUFBRTtJQUNwRyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUMzQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDaEIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLElBQUksUUFBNEIsQ0FBQztJQUNqQyxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzVCLE1BQU0sR0FBRyxPQUFPLE1BQU0sQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3hHLE1BQU0sR0FBRyxPQUFPLE1BQU0sQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEUsUUFBUSxHQUFHLE9BQU8sTUFBTSxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMvRSxDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7TUFDUCxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO01BQ2hELE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtNQUN2QyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7TUFDMUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7TUFDMUUsUUFBUSxLQUFLLFNBQVM7UUFDdEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxFQUFFO0dBQ1AsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBc0IsRUFBRSxPQUFrQyxFQUFrQixFQUFFO0lBQ3BHLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxTQUFTLENBQUMsQ0FBQztBQUN0RyxDQUFDLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRyxDQUFDLElBQXNCLEVBQUUsT0FBa0MsRUFBa0IsRUFBRTtJQUNyRyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkUsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hHLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksU0FBUyxDQUFDO0lBQ3BELE1BQU0sUUFBUSxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLElBQUksZUFBZSxFQUFFLENBQUM7UUFDcEIsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBQ0QsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQTtNQUNQLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztNQUMxQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7R0FDOUQsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFzQixFQUFFLE9BQWtDLEVBQWtCLEVBQUU7SUFDdEcsT0FBTyxJQUFJLENBQUE7TUFDUCxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7TUFDdEQsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0dBQ3ZILENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLElBQXNCLEVBQUUsT0FBa0MsRUFBa0IsRUFBRTtJQUNuRyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzNCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQyxDQUFDO0FBRUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFzQixFQUFFLE9BQWtDLEVBQWtCLEVBQUU7SUFDbkcsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sS0FBSyxHQUE0QixDQUFDLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDNUQsSUFBSSxLQUFLLENBQUMsR0FBRztRQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsSUFBSSxLQUFLLENBQUMsUUFBUTtRQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUMzQixJQUFJLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUMxQixJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzVCLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFPLElBQUksQ0FBQTtNQUNQLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO01BQ3hCLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7TUFDckQsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7TUFDMUYsQ0FBQyxnQkFBZ0IsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7R0FDbkYsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBc0IsRUFBRSxPQUFrQyxFQUFrQixFQUFFO0lBQ2hHLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxNQUFNLEtBQUssR0FBNEIsRUFBRSxDQUFDO0lBQzFDLElBQUksS0FBSyxDQUFDLEdBQUc7UUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMvRSxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsT0FBTyxJQUFJLENBQUE7TUFDUCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO01BQzVDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7TUFDM0MsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtHQUN0RCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFzQixFQUFFLE9BQWtDLEVBQWtCLEVBQUU7SUFDaEcsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLE9BQU8sSUFBSSxDQUFBO01BQ1AsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtNQUMvQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtHQUN2SSxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFzQixFQUFFLE9BQWtDLEVBQWtCLEVBQUU7SUFDbEcsTUFBTSxPQUFPLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELE9BQU8sSUFBSSxDQUFBO01BQ1AsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO01BQ3pDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtHQUM5RCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFzQixFQUFFLE9BQWtDLEVBQWtCLEVBQUU7SUFDbkcsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0QsT0FBTyxJQUFJLENBQUE7TUFDUCxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7TUFDdkMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0dBQzlELENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRyxDQUFDLElBQXNCLEVBQUUsT0FBa0MsRUFBa0IsRUFBRTtJQUNoRyxNQUFNLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1FBQUUsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRyxPQUFPLElBQUksQ0FBQSxzQ0FBc0MsS0FBSyx3QkFBd0IsQ0FBQztBQUNqRixDQUFDLENBQUM7QUFFRixNQUFNLFNBQVMsR0FBRyxDQUFDLElBQXNCLEVBQUUsT0FBa0MsRUFBa0IsRUFBRTtJQUMvRixPQUFPLElBQUksQ0FBQTtNQUNQLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtNQUMzRSxJQUFJLENBQUMsaUJBQWlCLEtBQUssU0FBUztRQUNwQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDMUUsQ0FBQyxDQUFDLEVBQUU7TUFDSixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQztRQUN2RixDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNuRixDQUFDLENBQUMsRUFBRTtNQUNKLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDN0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxFQUFFO0dBQ1AsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBc0IsRUFBRSxPQUFrQyxFQUFrQixFQUFFO0lBQ25HLE1BQU0sWUFBWSxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RCxNQUFNLFNBQVMsR0FBRyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDckcsT0FBTyxJQUFJLENBQUE7TUFDUCxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7TUFDbkQsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtNQUNyRCxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7R0FDdkgsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUc3QjtJQUNGLFVBQVUsRUFBRSxjQUFjO0lBQzFCLFdBQVcsRUFBRSxjQUFjO0lBQzNCLFlBQVksRUFBRSxlQUFlO0lBQzdCLGFBQWEsRUFBRSxnQkFBZ0I7SUFDL0IsVUFBVSxFQUFFLGFBQWE7SUFDekIsU0FBUyxFQUFFLGFBQWE7SUFDeEIsTUFBTSxFQUFFLFVBQVU7SUFDbEIsTUFBTSxFQUFFLFVBQVU7SUFDbEIsUUFBUSxFQUFFLFlBQVk7SUFDdEIsU0FBUyxFQUFFLGFBQWE7SUFDeEIsTUFBTSxFQUFFLFVBQVU7SUFDbEIsS0FBSyxFQUFFLFNBQVM7SUFDaEIsU0FBUyxFQUFFLGFBQWE7Q0FDekIsQ0FBQyJ9
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtaGFybmVzcy9kZWVzLWhhcm5lc3MtdG9vbC1jYXJkL3JlbmRlcmVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUF1QixNQUFNLDZCQUE2QixDQUFDO0FBR3hFLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIscUJBQXFCLEdBQ3RCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyw2Q0FBNkMsQ0FBQztBQUVyRDs7OztHQUlHO0FBRUgsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFzQixFQUEyQixFQUFFLENBQ3RFLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUVoRCxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQXNCLEVBQVUsRUFBRTtJQUNwRCxJQUFJLElBQUksQ0FBQyxTQUFTO1FBQUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFDLE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBc0IsRUFBVSxFQUFFO0lBQ3BELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNsRSxDQUFDLENBQUM7QUFFRixNQUFNLGNBQWMsR0FBRyxDQUFDLElBQXNCLEVBQUUsT0FBa0MsRUFBa0IsRUFBRTtJQUNwRyxNQUFN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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@design.estate/dees-catalog",
3
- "version": "4.0.2",
3
+ "version": "4.1.0",
4
4
  "private": false,
5
5
  "description": "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.",
6
6
  "main": "dist_ts_web/index.js",
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-catalog',
6
- version: '4.0.2',
6
+ version: '4.1.0',
7
7
  description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
8
8
  }
@@ -81,6 +81,13 @@ export class DeesHarnessMessage extends DeesElement {
81
81
  boundary instead of widening the whole conversation; scrollable
82
82
  payload blocks inside keep their own horizontal scrollbars. */
83
83
  overflow-x: clip;
84
+ /* Virtualized rendering: cards outside the viewport skip style,
85
+ layout, and paint entirely and re-render when scrolled back —
86
+ state and DOM stay, so expansion and selection survive. The
87
+ 'auto' keyword keeps the last rendered size as the placeholder,
88
+ holding the scrollbar steady. */
89
+ content-visibility: auto;
90
+ contain-intrinsic-size: auto 96px;
84
91
  font-family: var(--dees-font-family);
85
92
  /* entry: new boxes make space for themselves while fading in.
86
93
  A keyframes animation (not a transition) so the parent tree's
@@ -54,6 +54,22 @@ export class DeesHarnessToolCard extends DeesElement {
54
54
  @state()
55
55
  accessor outputExpanded: boolean = false;
56
56
 
57
+ /** Body height cap; content beyond it clips and offers fullscreen. */
58
+ @property({ type: Number })
59
+ accessor bodyCapPx: number = 360;
60
+
61
+ @state()
62
+ accessor bodyOverflowing: boolean = false;
63
+
64
+ @state()
65
+ accessor maximized: boolean = false;
66
+
67
+ @state()
68
+ accessor returnFlash: boolean = false;
69
+
70
+ private bodyResizeObserver: ResizeObserver | null = null;
71
+ private observedBodyInner: Element | null = null;
72
+
57
73
  public static styles = [
58
74
  themeDefaultStyles,
59
75
  cssManager.defaultStyles,
@@ -180,6 +196,135 @@ export class DeesHarnessToolCard extends DeesElement {
180
196
  dees-dataview-codebox {
181
197
  font-family: var(--dees-font-family);
182
198
  }
199
+
200
+ /* Three body modes: collapsed (no body), normal (content fits the
201
+ cap), capped (content taller than the cap clips behind a fade and
202
+ offers fullscreen). */
203
+ .bodyClipFrame {
204
+ position: relative;
205
+ overflow: hidden;
206
+ }
207
+
208
+ .bodyClipFrame.capped::after {
209
+ content: '';
210
+ position: absolute;
211
+ left: 0;
212
+ right: 0;
213
+ bottom: 0;
214
+ height: 44px;
215
+ background: linear-gradient(to bottom, transparent, var(--dees-color-bg-primary));
216
+ pointer-events: none;
217
+ }
218
+
219
+ .maximizeBar {
220
+ display: flex;
221
+ align-items: center;
222
+ justify-content: center;
223
+ gap: var(--dees-spacing-xs);
224
+ width: 100%;
225
+ padding: var(--dees-spacing-xs) var(--dees-spacing-md);
226
+ border: 0;
227
+ border-top: 1px solid var(--dees-color-border-subtle);
228
+ background: transparent;
229
+ color: var(--dees-color-link);
230
+ cursor: pointer;
231
+ font-family: inherit;
232
+ font-size: var(--dees-font-control-size-sm, 12px);
233
+ }
234
+
235
+ .maximizeBar:hover {
236
+ background: var(--dees-color-hover);
237
+ color: var(--dees-color-link-hover);
238
+ }
239
+
240
+ .fullscreenLayer {
241
+ position: fixed;
242
+ inset: 0;
243
+ z-index: 4000;
244
+ display: grid;
245
+ place-items: center;
246
+ padding: 4vh 3vw;
247
+ background: color-mix(in srgb, var(--dees-color-bg-primary) 55%, transparent);
248
+ backdrop-filter: blur(6px);
249
+ }
250
+
251
+ .fullscreenPanel {
252
+ display: flex;
253
+ flex-direction: column;
254
+ width: min(1200px, 100%);
255
+ height: 100%;
256
+ min-height: 0;
257
+ border: 1px solid var(--dees-color-border-default);
258
+ border-radius: var(--dees-radius-lg);
259
+ background: var(--dees-color-bg-primary);
260
+ box-shadow: 0 24px 64px rgba(0, 0, 0, 0.4);
261
+ overflow: hidden;
262
+ }
263
+
264
+ .fullscreenHeader {
265
+ display: flex;
266
+ flex: 0 0 auto;
267
+ align-items: center;
268
+ gap: var(--dees-spacing-sm);
269
+ padding: var(--dees-spacing-sm) var(--dees-spacing-md);
270
+ border-bottom: 1px solid var(--dees-color-border-subtle);
271
+ }
272
+
273
+ .fullscreenTitle {
274
+ min-width: 0;
275
+ overflow: hidden;
276
+ text-overflow: ellipsis;
277
+ white-space: nowrap;
278
+ font-size: var(--dees-font-control-size-sm, 12px);
279
+ font-weight: 650;
280
+ }
281
+
282
+ .fullscreenClose {
283
+ display: grid;
284
+ place-items: center;
285
+ margin-left: auto;
286
+ padding: 6px;
287
+ border: 0;
288
+ border-radius: var(--dees-radius-md);
289
+ background: transparent;
290
+ color: var(--dees-color-text-secondary);
291
+ cursor: pointer;
292
+ }
293
+
294
+ .fullscreenClose:hover {
295
+ background: var(--dees-color-hover);
296
+ color: var(--dees-color-text-primary);
297
+ }
298
+
299
+ .fullscreenBody {
300
+ flex: 1;
301
+ min-height: 0;
302
+ overflow: auto;
303
+ padding: var(--dees-spacing-md);
304
+ scrollbar-width: thin;
305
+ scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
306
+ }
307
+
308
+ /* Locates the card after minimizing: a brief highlight pulse. */
309
+ .harness-card.returnFlash {
310
+ animation: harness-card-return-flash 1.4s var(--dees-ease-standard);
311
+ }
312
+
313
+ @keyframes harness-card-return-flash {
314
+ 0%, 55% {
315
+ box-shadow: 0 0 0 2px var(--dees-color-accent-primary);
316
+ }
317
+ 100% {
318
+ box-shadow: 0 0 0 0 transparent;
319
+ }
320
+ }
321
+
322
+ @media (prefers-reduced-motion: reduce) {
323
+ .harness-card.returnFlash {
324
+ animation: none;
325
+ box-shadow: 0 0 0 2px var(--dees-color-accent-primary);
326
+ }
327
+ }
183
328
  `,
184
329
  ];
185
330
 
@@ -210,7 +355,13 @@ export class DeesHarnessToolCard extends DeesElement {
210
355
  const statusTone = call.isError ? 'error' : call.status === 'completed' ? 'success' : call.status;
211
356
  const duration = harnessFormatDuration(call.startedAt, call.finishedAt);
212
357
  return html`
213
- <div class="harness-card status-${call.isError ? 'error' : call.status} ${descriptor.destructive ? 'destructive' : ''}">
358
+ <div class="harness-card status-${call.isError ? 'error' : call.status} ${descriptor.destructive ? 'destructive' : ''} ${this.returnFlash ? 'returnFlash' : ''}"
359
+ @animationend=${(event: AnimationEvent) => {
360
+ if (event.animationName === 'harness-card-return-flash') {
361
+ this.returnFlash = false;
362
+ }
363
+ }}
364
+ >
214
365
  <button
215
366
  class="header"
216
367
  type="button"
@@ -234,11 +385,96 @@ export class DeesHarnessToolCard extends DeesElement {
234
385
  </span>
235
386
  </span>
236
387
  </button>
237
- ${this.isOpen ? html`<div class="body">${this.renderBody(call)}</div>` : ''}
388
+ ${this.isOpen && !this.maximized
389
+ ? html`
390
+ <div
391
+ class="bodyClipFrame ${this.bodyOverflowing ? 'capped' : ''}"
392
+ style=${`max-height: ${this.bodyCapPx}px;`}
393
+ >
394
+ <div class="body bodyInner">${this.renderBody(call)}</div>
395
+ </div>
396
+ ${this.bodyOverflowing
397
+ ? html`
398
+ <button class="maximizeBar" type="button" @click=${this.openFullscreen}>
399
+ <dees-icon icon="lucide:Maximize2" iconSize="12"></dees-icon>
400
+ Show everything
401
+ </button>
402
+ `
403
+ : ''}
404
+ `
405
+ : ''}
238
406
  </div>
407
+ ${this.maximized
408
+ ? html`
409
+ <div class="fullscreenLayer" @click=${(event: Event) => {
410
+ if (event.target === event.currentTarget) this.closeFullscreen();
411
+ }}>
412
+ <div class="fullscreenPanel">
413
+ <header class="fullscreenHeader">
414
+ <dees-icon .icon=${descriptor.icon} iconSize="15"></dees-icon>
415
+ <span class="fullscreenTitle">${label}${subtitle ? ` · ${subtitle}` : ''}</span>
416
+ <button class="fullscreenClose" type="button" @click=${this.closeFullscreen}>
417
+ <dees-icon icon="lucide:Minimize2" iconSize="15"></dees-icon>
418
+ </button>
419
+ </header>
420
+ <div class="fullscreenBody">${this.renderBody(call)}</div>
421
+ </div>
422
+ </div>
423
+ `
424
+ : ''}
239
425
  `;
240
426
  }
241
427
 
428
+ private readonly openFullscreen = (): void => {
429
+ this.maximized = true;
430
+ window.addEventListener('keydown', this.handleFullscreenKeydown);
431
+ };
432
+
433
+ private readonly closeFullscreen = (): void => {
434
+ window.removeEventListener('keydown', this.handleFullscreenKeydown);
435
+ if (!this.maximized) return;
436
+ this.maximized = false;
437
+ // The flash locates the card the user was just reading in fullscreen.
438
+ this.returnFlash = true;
439
+ requestAnimationFrame(() => {
440
+ this.scrollIntoView({ block: 'center', behavior: 'smooth' });
441
+ });
442
+ };
443
+
444
+ private readonly handleFullscreenKeydown = (event: KeyboardEvent): void => {
445
+ if (event.key === 'Escape') {
446
+ event.preventDefault();
447
+ this.closeFullscreen();
448
+ }
449
+ };
450
+
451
+ public updated(changedProperties: Map<PropertyKey, unknown>): void {
452
+ super.updated(changedProperties);
453
+ const bodyInner = this.shadowRoot?.querySelector('.bodyInner') ?? null;
454
+ if (bodyInner === this.observedBodyInner) return;
455
+ this.bodyResizeObserver?.disconnect();
456
+ this.observedBodyInner = bodyInner;
457
+ if (!bodyInner) {
458
+ this.bodyOverflowing = false;
459
+ return;
460
+ }
461
+ this.bodyResizeObserver ??= new ResizeObserver(() => {
462
+ const inner = this.observedBodyInner;
463
+ if (!inner) return;
464
+ // small slack so a few px never trigger the cap chrome
465
+ this.bodyOverflowing = inner.scrollHeight > this.bodyCapPx + 24;
466
+ });
467
+ this.bodyResizeObserver.observe(bodyInner);
468
+ }
469
+
470
+ public async disconnectedCallback(): Promise<void> {
471
+ window.removeEventListener('keydown', this.handleFullscreenKeydown);
472
+ this.bodyResizeObserver?.disconnect();
473
+ this.bodyResizeObserver = null;
474
+ this.observedBodyInner = null;
475
+ await super.disconnectedCallback();
476
+ }
477
+
242
478
  private renderMcpBadges(call: IHarnessToolCall): TemplateResult {
243
479
  if (!call.mcp) return html``;
244
480
  const annotations = call.mcp.annotations;
@@ -64,12 +64,23 @@ const renderFileRead = (call: IHarnessToolCall, helpers: IHarnessToolRenderHelpe
64
64
  const renderFileWrite = (call: IHarnessToolCall, helpers: IHarnessToolRenderHelpers): TemplateResult => {
65
65
  const input = inputRecord(call);
66
66
  const path = filePathOf(call);
67
- const newContent = String(input.content ?? input.newContent ?? '');
68
- const previousContent = String(input.oldContent ?? input.originalContent ?? input.before ?? '');
67
+ // Covers both conventions: whole-file writes (content/newContent) and
68
+ // string-replacement edits à la OpenCode/Claude (oldString/newString).
69
+ const newContent = String(
70
+ input.content ?? input.newContent ?? input.newString ?? input.new_string ?? '',
71
+ );
72
+ const previousContent = String(
73
+ input.oldContent
74
+ ?? input.originalContent
75
+ ?? input.before
76
+ ?? input.oldString
77
+ ?? input.old_string
78
+ ?? '',
79
+ );
69
80
  const filename = path.split('/').pop() || undefined;
70
81
  const language = harnessLanguageForPath(path);
71
82
  if (previousContent) {
72
- return helpers.diffBlock(previousContent, newContent, { language, filename });
83
+ return helpers.diffBlock(previousContent, newContent, { language, filename, view: 'split' });
73
84
  }
74
85
  if (newContent) {
75
86
  return helpers.codeBlock(newContent, language, filename);