@design.estate/dees-catalog 6.7.0 → 6.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist_bundle/bundle.js +1153 -193
  2. package/dist_ts_web/00_commitinfo_data.js +1 -1
  3. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.d.ts +2 -1
  4. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.js +57 -17
  5. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.d.ts +92 -6
  6. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.js +921 -49
  7. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.d.ts +5 -1
  8. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.js +42 -7
  9. package/dist_ts_web/elements/00group-harness/dees-harness-question-card/dees-harness-question-card.d.ts +6 -1
  10. package/dist_ts_web/elements/00group-harness/dees-harness-question-card/dees-harness-question-card.js +53 -14
  11. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.d.ts +2 -1
  12. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.js +13 -3
  13. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +31 -13
  14. package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.js +9 -3
  15. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.d.ts +6 -1
  16. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.js +135 -13
  17. package/dist_ts_web/elements/00group-harness/harness.styles.js +16 -13
  18. package/dist_ts_web/elements/00group-harness/interfaces.d.ts +30 -0
  19. package/dist_ts_web/elements/00group-harness/toolregistry.d.ts +2 -0
  20. package/dist_ts_web/elements/00group-harness/toolregistry.js +7 -1
  21. package/package.json +2 -2
  22. package/readme.md +4 -2
  23. package/ts_web/00_commitinfo_data.ts +1 -1
  24. package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.ts +53 -15
  25. package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.ts +943 -51
  26. package/ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.ts +37 -8
  27. package/ts_web/elements/00group-harness/dees-harness-question-card/dees-harness-question-card.ts +40 -12
  28. package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.ts +6 -2
  29. package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.ts +30 -12
  30. package/ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.ts +8 -2
  31. package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.ts +119 -11
  32. package/ts_web/elements/00group-harness/harness.styles.ts +15 -12
  33. package/ts_web/elements/00group-harness/interfaces.ts +34 -0
  34. package/ts_web/elements/00group-harness/toolregistry.ts +7 -0
@@ -510,7 +510,7 @@ var init_reactive_element = __esm({
510
510
  }
511
511
  });
512
512
 
513
- // node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/lit-html.js
513
+ // node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/lit-html.js
514
514
  function V(t8, i11) {
515
515
  if (!u2(t8) || !t8.hasOwnProperty("raw")) throw Error("invalid template strings array");
516
516
  return void 0 !== e3 ? e3.createHTML(i11) : i11;
@@ -523,7 +523,7 @@ function M(t8, i11, s9 = t8, e10) {
523
523
  }
524
524
  var t2, i3, s2, e3, h2, o3, n3, r3, l2, c3, a2, u2, d2, f2, v, _, m, p2, g, $, y2, x, b2, w, T, E, A, C, P, N, S2, R, k, H, I, L, z, Z, j, B, D;
525
525
  var init_lit_html = __esm({
526
- "node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/lit-html.js"() {
526
+ "node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/lit-html.js"() {
527
527
  t2 = globalThis, i3 = /* @__PURE__ */ __name((t8) => t8, "i"), s2 = t2.trustedTypes, e3 = s2 ? s2.createPolicy("lit-html", { createHTML: /* @__PURE__ */ __name((t8) => t8, "createHTML") }) : void 0, h2 = "$lit$", o3 = `lit$${Math.random().toFixed(9).slice(2)}$`, n3 = "?" + o3, r3 = `<${n3}>`, l2 = document, c3 = /* @__PURE__ */ __name(() => l2.createComment(""), "c"), a2 = /* @__PURE__ */ __name((t8) => null === t8 || "object" != typeof t8 && "function" != typeof t8, "a"), u2 = Array.isArray, d2 = /* @__PURE__ */ __name((t8) => u2(t8) || "function" == typeof t8?.[Symbol.iterator], "d"), f2 = "[ \n\f\r]", v = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, _ = /-->/g, m = />/g, p2 = RegExp(`>|${f2}(?:([^\\s"'>=/]+)(${f2}*=${f2}*(?:[^
528
528
  \f\r"'\`<>=]|("|')|))|$)`, "g"), g = /'/g, $ = /"/g, y2 = /^(?:script|style|textarea|title)$/i, x = /* @__PURE__ */ __name((t8) => (i11, ...s9) => ({ _$litType$: t8, strings: i11, values: s9 }), "x"), b2 = x(1), w = x(2), T = x(3), E = /* @__PURE__ */ Symbol.for("lit-noChange"), A = /* @__PURE__ */ Symbol.for("lit-nothing"), C = /* @__PURE__ */ new WeakMap(), P = l2.createTreeWalker(l2, 129);
529
529
  __name(V, "V");
@@ -754,7 +754,7 @@ var init_lit_html = __esm({
754
754
  }
755
755
  };
756
756
  j = { M: h2, P: o3, A: n3, C: 1, L: N, R, D: d2, V: M, I: k, H, N: L, U: z, B: I, F: Z }, B = t2.litHtmlPolyfillSupport;
757
- B?.(S2, k), (t2.litHtmlVersions ??= []).push("3.3.2");
757
+ B?.(S2, k), (t2.litHtmlVersions ??= []).push("3.3.3");
758
758
  D = /* @__PURE__ */ __name((t8, i11, s9) => {
759
759
  const e10 = s9?.renderBefore ?? i11;
760
760
  let h7 = e10._$litPart$;
@@ -811,17 +811,17 @@ var init_lit_element = __esm({
811
811
  }
812
812
  });
813
813
 
814
- // node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/is-server.js
814
+ // node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/is-server.js
815
815
  var o5;
816
816
  var init_is_server = __esm({
817
- "node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/is-server.js"() {
817
+ "node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/is-server.js"() {
818
818
  o5 = false;
819
819
  }
820
820
  });
821
821
 
822
- // node_modules/.pnpm/lit@3.3.2/node_modules/lit/index.js
822
+ // node_modules/.pnpm/lit@3.3.3/node_modules/lit/index.js
823
823
  var init_lit = __esm({
824
- "node_modules/.pnpm/lit@3.3.2/node_modules/lit/index.js"() {
824
+ "node_modules/.pnpm/lit@3.3.3/node_modules/lit/index.js"() {
825
825
  init_reactive_element();
826
826
  init_lit_html();
827
827
  init_lit_element();
@@ -6674,9 +6674,9 @@ var init_property = __esm({
6674
6674
  }
6675
6675
  });
6676
6676
 
6677
- // node_modules/.pnpm/lit@3.3.2/node_modules/lit/decorators/property.js
6677
+ // node_modules/.pnpm/lit@3.3.3/node_modules/lit/decorators/property.js
6678
6678
  var init_property2 = __esm({
6679
- "node_modules/.pnpm/lit@3.3.2/node_modules/lit/decorators/property.js"() {
6679
+ "node_modules/.pnpm/lit@3.3.3/node_modules/lit/decorators/property.js"() {
6680
6680
  init_property();
6681
6681
  }
6682
6682
  });
@@ -59707,10 +59707,10 @@ var init_classes_cssmanager = __esm({
59707
59707
  }
59708
59708
  });
59709
59709
 
59710
- // node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/static.js
59710
+ // node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/static.js
59711
59711
  var a3, o7, s5, i5, l3, n6, u3, c4, $2;
59712
59712
  var init_static = __esm({
59713
- "node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/static.js"() {
59713
+ "node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/static.js"() {
59714
59714
  init_lit_html();
59715
59715
  a3 = /* @__PURE__ */ Symbol.for(""), o7 = /* @__PURE__ */ __name((t8) => {
59716
59716
  if (t8?.r === a3) return t8?._$litStatic$;
@@ -59736,17 +59736,17 @@ var init_static = __esm({
59736
59736
  }
59737
59737
  });
59738
59738
 
59739
- // node_modules/.pnpm/lit@3.3.2/node_modules/lit/static-html.js
59739
+ // node_modules/.pnpm/lit@3.3.3/node_modules/lit/static-html.js
59740
59740
  var init_static_html = __esm({
59741
- "node_modules/.pnpm/lit@3.3.2/node_modules/lit/static-html.js"() {
59741
+ "node_modules/.pnpm/lit@3.3.3/node_modules/lit/static-html.js"() {
59742
59742
  init_static();
59743
59743
  }
59744
59744
  });
59745
59745
 
59746
- // node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directive.js
59746
+ // node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directive.js
59747
59747
  var t3, e4, i6;
59748
59748
  var init_directive = __esm({
59749
- "node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directive.js"() {
59749
+ "node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directive.js"() {
59750
59750
  t3 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 }, e4 = /* @__PURE__ */ __name((t8) => (...e10) => ({ _$litDirective$: t8, values: e10 }), "e");
59751
59751
  i6 = class {
59752
59752
  static {
@@ -59770,10 +59770,10 @@ var init_directive = __esm({
59770
59770
  }
59771
59771
  });
59772
59772
 
59773
- // node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directives/unsafe-html.js
59773
+ // node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/unsafe-html.js
59774
59774
  var e5, o8;
59775
59775
  var init_unsafe_html = __esm({
59776
- "node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directives/unsafe-html.js"() {
59776
+ "node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/unsafe-html.js"() {
59777
59777
  init_lit_html();
59778
59778
  init_directive();
59779
59779
  e5 = class extends i6 {
@@ -59798,9 +59798,9 @@ var init_unsafe_html = __esm({
59798
59798
  }
59799
59799
  });
59800
59800
 
59801
- // node_modules/.pnpm/lit@3.3.2/node_modules/lit/directives/unsafe-html.js
59801
+ // node_modules/.pnpm/lit@3.3.3/node_modules/lit/directives/unsafe-html.js
59802
59802
  var init_unsafe_html2 = __esm({
59803
- "node_modules/.pnpm/lit@3.3.2/node_modules/lit/directives/unsafe-html.js"() {
59803
+ "node_modules/.pnpm/lit@3.3.3/node_modules/lit/directives/unsafe-html.js"() {
59804
59804
  init_unsafe_html();
59805
59805
  }
59806
59806
  });
@@ -59817,9 +59817,9 @@ var init_custom_element = __esm({
59817
59817
  }
59818
59818
  });
59819
59819
 
59820
- // node_modules/.pnpm/lit@3.3.2/node_modules/lit/decorators/custom-element.js
59820
+ // node_modules/.pnpm/lit@3.3.3/node_modules/lit/decorators/custom-element.js
59821
59821
  var init_custom_element2 = __esm({
59822
- "node_modules/.pnpm/lit@3.3.2/node_modules/lit/decorators/custom-element.js"() {
59822
+ "node_modules/.pnpm/lit@3.3.3/node_modules/lit/decorators/custom-element.js"() {
59823
59823
  init_custom_element();
59824
59824
  }
59825
59825
  });
@@ -59969,9 +59969,9 @@ var init_query_assigned_nodes = __esm({
59969
59969
  }
59970
59970
  });
59971
59971
 
59972
- // node_modules/.pnpm/lit@3.3.2/node_modules/lit/decorators.js
59972
+ // node_modules/.pnpm/lit@3.3.3/node_modules/lit/decorators.js
59973
59973
  var init_decorators = __esm({
59974
- "node_modules/.pnpm/lit@3.3.2/node_modules/lit/decorators.js"() {
59974
+ "node_modules/.pnpm/lit@3.3.3/node_modules/lit/decorators.js"() {
59975
59975
  init_custom_element();
59976
59976
  init_property();
59977
59977
  init_state2();
@@ -60177,10 +60177,10 @@ var init_decorators_containerresponsive = __esm({
60177
60177
  }
60178
60178
  });
60179
60179
 
60180
- // node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directive-helpers.js
60180
+ // node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directive-helpers.js
60181
60181
  var t6, i7, n8, e9, l4, d3, c5, f4, r8, s6, v3, u4, m3, p5, M2, h3, j2;
60182
60182
  var init_directive_helpers = __esm({
60183
- "node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directive-helpers.js"() {
60183
+ "node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directive-helpers.js"() {
60184
60184
  init_lit_html();
60185
60185
  ({ I: t6 } = j), i7 = /* @__PURE__ */ __name((o12) => o12, "i"), n8 = /* @__PURE__ */ __name((o12) => null === o12 || "object" != typeof o12 && "function" != typeof o12, "n"), e9 = { HTML: 1, SVG: 2, MATHML: 3 }, l4 = /* @__PURE__ */ __name((o12, t8) => void 0 === t8 ? void 0 !== o12?._$litType$ : o12?._$litType$ === t8, "l"), d3 = /* @__PURE__ */ __name((o12) => null != o12?._$litType$?.h, "d"), c5 = /* @__PURE__ */ __name((o12) => void 0 !== o12?._$litDirective$, "c"), f4 = /* @__PURE__ */ __name((o12) => o12?._$litDirective$, "f"), r8 = /* @__PURE__ */ __name((o12) => void 0 === o12.strings, "r"), s6 = /* @__PURE__ */ __name(() => document.createComment(""), "s"), v3 = /* @__PURE__ */ __name((o12, n11, e10) => {
60186
60186
  const l6 = o12._$AA.parentNode, d5 = void 0 === n11 ? o12._$AB : n11._$AA;
@@ -60210,7 +60210,7 @@ var init_directive_helpers = __esm({
60210
60210
  }
60211
60211
  });
60212
60212
 
60213
- // node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/async-directive.js
60213
+ // node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/async-directive.js
60214
60214
  function h4(i11) {
60215
60215
  void 0 !== this._$AN ? (o10(this), this._$AM = i11, r9(this)) : this._$AM = i11;
60216
60216
  }
@@ -60222,7 +60222,7 @@ function n9(i11, t8 = false, e10 = 0) {
60222
60222
  }
60223
60223
  var s7, o10, r9, c6, f5;
60224
60224
  var init_async_directive = __esm({
60225
- "node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/async-directive.js"() {
60225
+ "node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/async-directive.js"() {
60226
60226
  init_directive_helpers();
60227
60227
  init_directive();
60228
60228
  init_directive();
@@ -60278,9 +60278,9 @@ var init_async_directive = __esm({
60278
60278
  }
60279
60279
  });
60280
60280
 
60281
- // node_modules/.pnpm/lit@3.3.2/node_modules/lit/async-directive.js
60281
+ // node_modules/.pnpm/lit@3.3.3/node_modules/lit/async-directive.js
60282
60282
  var init_async_directive2 = __esm({
60283
- "node_modules/.pnpm/lit@3.3.2/node_modules/lit/async-directive.js"() {
60283
+ "node_modules/.pnpm/lit@3.3.3/node_modules/lit/async-directive.js"() {
60284
60284
  init_async_directive();
60285
60285
  }
60286
60286
  });
@@ -60418,10 +60418,10 @@ var init_classes_subscribewithtemplate = __esm({
60418
60418
  }
60419
60419
  });
60420
60420
 
60421
- // node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directives/private-async-helpers.js
60421
+ // node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/private-async-helpers.js
60422
60422
  var t7, s8, i8;
60423
60423
  var init_private_async_helpers = __esm({
60424
- "node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directives/private-async-helpers.js"() {
60424
+ "node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/private-async-helpers.js"() {
60425
60425
  t7 = /* @__PURE__ */ __name(async (t8, s9) => {
60426
60426
  for await (const i11 of t8) if (false === await s9(i11)) return;
60427
60427
  }, "t");
@@ -60462,10 +60462,10 @@ var init_private_async_helpers = __esm({
60462
60462
  }
60463
60463
  });
60464
60464
 
60465
- // node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directives/until.js
60465
+ // node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/until.js
60466
60466
  var n10, h5, c7, m4;
60467
60467
  var init_until = __esm({
60468
- "node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directives/until.js"() {
60468
+ "node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/until.js"() {
60469
60469
  init_lit_html();
60470
60470
  init_directive_helpers();
60471
60471
  init_async_directive();
@@ -60513,17 +60513,17 @@ var init_until = __esm({
60513
60513
  }
60514
60514
  });
60515
60515
 
60516
- // node_modules/.pnpm/lit@3.3.2/node_modules/lit/directives/until.js
60516
+ // node_modules/.pnpm/lit@3.3.3/node_modules/lit/directives/until.js
60517
60517
  var init_until2 = __esm({
60518
- "node_modules/.pnpm/lit@3.3.2/node_modules/lit/directives/until.js"() {
60518
+ "node_modules/.pnpm/lit@3.3.3/node_modules/lit/directives/until.js"() {
60519
60519
  init_until();
60520
60520
  }
60521
60521
  });
60522
60522
 
60523
- // node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directives/async-replace.js
60523
+ // node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/async-replace.js
60524
60524
  var o11, h6;
60525
60525
  var init_async_replace = __esm({
60526
- "node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directives/async-replace.js"() {
60526
+ "node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/async-replace.js"() {
60527
60527
  init_lit_html();
60528
60528
  init_async_directive();
60529
60529
  init_private_async_helpers();
@@ -60567,10 +60567,10 @@ var init_async_replace = __esm({
60567
60567
  }
60568
60568
  });
60569
60569
 
60570
- // node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directives/async-append.js
60570
+ // node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/async-append.js
60571
60571
  var c8;
60572
60572
  var init_async_append = __esm({
60573
- "node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directives/async-append.js"() {
60573
+ "node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/async-append.js"() {
60574
60574
  init_directive();
60575
60575
  init_async_replace();
60576
60576
  init_directive_helpers();
@@ -60590,17 +60590,17 @@ var init_async_append = __esm({
60590
60590
  }
60591
60591
  });
60592
60592
 
60593
- // node_modules/.pnpm/lit@3.3.2/node_modules/lit/directives/async-append.js
60593
+ // node_modules/.pnpm/lit@3.3.3/node_modules/lit/directives/async-append.js
60594
60594
  var init_async_append2 = __esm({
60595
- "node_modules/.pnpm/lit@3.3.2/node_modules/lit/directives/async-append.js"() {
60595
+ "node_modules/.pnpm/lit@3.3.3/node_modules/lit/directives/async-append.js"() {
60596
60596
  init_async_append();
60597
60597
  }
60598
60598
  });
60599
60599
 
60600
- // node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directives/keyed.js
60600
+ // node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/keyed.js
60601
60601
  var i9;
60602
60602
  var init_keyed = __esm({
60603
- "node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directives/keyed.js"() {
60603
+ "node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/keyed.js"() {
60604
60604
  init_lit_html();
60605
60605
  init_directive();
60606
60606
  init_directive_helpers();
@@ -60618,17 +60618,17 @@ var init_keyed = __esm({
60618
60618
  }
60619
60619
  });
60620
60620
 
60621
- // node_modules/.pnpm/lit@3.3.2/node_modules/lit/directives/keyed.js
60621
+ // node_modules/.pnpm/lit@3.3.3/node_modules/lit/directives/keyed.js
60622
60622
  var init_keyed2 = __esm({
60623
- "node_modules/.pnpm/lit@3.3.2/node_modules/lit/directives/keyed.js"() {
60623
+ "node_modules/.pnpm/lit@3.3.3/node_modules/lit/directives/keyed.js"() {
60624
60624
  init_keyed();
60625
60625
  }
60626
60626
  });
60627
60627
 
60628
- // node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directives/repeat.js
60628
+ // node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/repeat.js
60629
60629
  var u5, c9;
60630
60630
  var init_repeat2 = __esm({
60631
- "node_modules/.pnpm/lit-html@3.3.2/node_modules/lit-html/directives/repeat.js"() {
60631
+ "node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/repeat.js"() {
60632
60632
  init_lit_html();
60633
60633
  init_directive();
60634
60634
  init_directive_helpers();
@@ -60685,9 +60685,9 @@ var init_repeat2 = __esm({
60685
60685
  }
60686
60686
  });
60687
60687
 
60688
- // node_modules/.pnpm/lit@3.3.2/node_modules/lit/directives/repeat.js
60688
+ // node_modules/.pnpm/lit@3.3.3/node_modules/lit/directives/repeat.js
60689
60689
  var init_repeat3 = __esm({
60690
- "node_modules/.pnpm/lit@3.3.2/node_modules/lit/directives/repeat.js"() {
60690
+ "node_modules/.pnpm/lit@3.3.3/node_modules/lit/directives/repeat.js"() {
60691
60691
  init_repeat2();
60692
60692
  }
60693
60693
  });
@@ -173548,6 +173548,10 @@ var DeesHarnessToolRegistry = class _DeesHarnessToolRegistry {
173548
173548
  descriptors = [];
173549
173549
  byName = /* @__PURE__ */ new Map();
173550
173550
  byKind = /* @__PURE__ */ new Map();
173551
+ registryRevision = 0;
173552
+ get revision() {
173553
+ return this.registryRevision;
173554
+ }
173551
173555
  constructor(seedDescriptors = []) {
173552
173556
  for (const descriptor of seedDescriptors) {
173553
173557
  this.register(descriptor);
@@ -173567,6 +173571,7 @@ var DeesHarnessToolRegistry = class _DeesHarnessToolRegistry {
173567
173571
  for (const name of descriptor.names ?? []) {
173568
173572
  this.byName.set(name.toLowerCase(), descriptor);
173569
173573
  }
173574
+ this.registryRevision += 1;
173570
173575
  return this;
173571
173576
  }
173572
173577
  unregister(kind) {
@@ -173577,6 +173582,7 @@ var DeesHarnessToolRegistry = class _DeesHarnessToolRegistry {
173577
173582
  for (const [name, mapped] of this.byName) {
173578
173583
  if (mapped === existing) this.byName.delete(name);
173579
173584
  }
173585
+ this.registryRevision += 1;
173580
173586
  return this;
173581
173587
  }
173582
173588
  descriptorForKind(kind) {
@@ -173765,17 +173771,19 @@ var harnessCardStyles = i`
173765
173771
  .harness-card.outcomeScan::before {
173766
173772
  content: '';
173767
173773
  position: absolute;
173768
- inset: 0;
173774
+ inset: 0 auto 0 0;
173775
+ width: 250%;
173769
173776
  pointer-events: none;
173770
- background:
173771
- linear-gradient(
173772
- 105deg,
173773
- transparent 40%,
173774
- color-mix(in srgb, var(--dees-color-accent-primary) 6%, transparent) 45%,
173775
- color-mix(in srgb, var(--dees-color-accent-primary) 20%, transparent) 50%,
173776
- color-mix(in srgb, var(--dees-color-accent-primary) 6%, transparent) 55%,
173777
- transparent 60%
173778
- ) 100% 0 / 250% 100% no-repeat;
173777
+ background: linear-gradient(
173778
+ 105deg,
173779
+ transparent 40%,
173780
+ color-mix(in srgb, var(--dees-color-accent-primary) 6%, transparent) 45%,
173781
+ color-mix(in srgb, var(--dees-color-accent-primary) 20%, transparent) 50%,
173782
+ color-mix(in srgb, var(--dees-color-accent-primary) 6%, transparent) 55%,
173783
+ transparent 60%
173784
+ );
173785
+ transform: translate3d(-60%, 0, 0);
173786
+ will-change: transform;
173779
173787
  animation: harness-card-running-scan 2s linear infinite;
173780
173788
  opacity: 1;
173781
173789
  transition: opacity 0.18s var(--dees-ease-out);
@@ -173794,8 +173802,8 @@ var harnessCardStyles = i`
173794
173802
  }
173795
173803
 
173796
173804
  @keyframes harness-card-running-scan {
173797
- from { background-position: 100% 0; }
173798
- to { background-position: 0 0; }
173805
+ from { transform: translate3d(-60%, 0, 0); }
173806
+ to { transform: translate3d(0, 0, 0); }
173799
173807
  }
173800
173808
 
173801
173809
  @media (prefers-reduced-motion: reduce) {
@@ -173813,6 +173821,7 @@ var harnessCardStyles = i`
173813
173821
  animation: none;
173814
173822
  opacity: 0;
173815
173823
  transition: none;
173824
+ will-change: auto;
173816
173825
  }
173817
173826
  }
173818
173827
  `;
@@ -175475,19 +175484,20 @@ var demoFunc55 = /* @__PURE__ */ __name(() => b2`
175475
175484
  init_dist_ts26();
175476
175485
  init_theme();
175477
175486
  init_dees_icon();
175478
- var _expanded_dec, _reasoningParts_dec, _a77, _DeesHarnessReasoning_decorators, _init78, _reasoningParts, _expanded;
175487
+ var _expanded_dec, _viewState_dec, _reasoningParts_dec, _a77, _DeesHarnessReasoning_decorators, _init78, _reasoningParts, _viewState, _expanded;
175479
175488
  _DeesHarnessReasoning_decorators = [customElement("dees-harness-reasoning")];
175480
- var _DeesHarnessReasoning = class _DeesHarnessReasoning extends (_a77 = DeesElement, _reasoningParts_dec = [n5({ attribute: false })], _expanded_dec = [r5()], _a77) {
175489
+ var _DeesHarnessReasoning = class _DeesHarnessReasoning extends (_a77 = DeesElement, _reasoningParts_dec = [n5({ attribute: false })], _viewState_dec = [n5({ attribute: false })], _expanded_dec = [r5()], _a77) {
175481
175490
  constructor() {
175482
175491
  super(...arguments);
175483
175492
  __privateAdd(this, _reasoningParts, __runInitializers(_init78, 8, this, [])), __runInitializers(_init78, 11, this);
175484
- __privateAdd(this, _expanded, __runInitializers(_init78, 12, this)), __runInitializers(_init78, 15, this);
175493
+ __privateAdd(this, _viewState, __runInitializers(_init78, 12, this)), __runInitializers(_init78, 15, this);
175494
+ __privateAdd(this, _expanded, __runInitializers(_init78, 16, this)), __runInitializers(_init78, 19, this);
175485
175495
  }
175486
175496
  get isStreaming() {
175487
175497
  return this.reasoningParts.some((part) => Boolean(part.startedAt) && !part.endedAt);
175488
175498
  }
175489
175499
  get isOpen() {
175490
- return this.expanded ?? this.isStreaming;
175500
+ return this.expanded ?? this.viewState?.reasoningExpanded ?? this.isStreaming;
175491
175501
  }
175492
175502
  /** All parts joined into the one full trace the expanded body shows. */
175493
175503
  get fullText() {
@@ -175516,6 +175526,7 @@ var _DeesHarnessReasoning = class _DeesHarnessReasoning extends (_a77 = DeesElem
175516
175526
  aria-expanded=${this.isOpen ? "true" : "false"}
175517
175527
  @click=${() => {
175518
175528
  this.expanded = !this.isOpen;
175529
+ if (this.viewState) this.viewState.reasoningExpanded = this.expanded;
175519
175530
  }}
175520
175531
  >
175521
175532
  <span class="chevron ${this.isOpen ? "open" : ""}">
@@ -175538,8 +175549,10 @@ var _DeesHarnessReasoning = class _DeesHarnessReasoning extends (_a77 = DeesElem
175538
175549
  };
175539
175550
  _init78 = __decoratorStart(_a77);
175540
175551
  _reasoningParts = new WeakMap();
175552
+ _viewState = new WeakMap();
175541
175553
  _expanded = new WeakMap();
175542
175554
  __decorateElement(_init78, 4, "reasoningParts", _reasoningParts_dec, _DeesHarnessReasoning, _reasoningParts);
175555
+ __decorateElement(_init78, 4, "viewState", _viewState_dec, _DeesHarnessReasoning, _viewState);
175543
175556
  __decorateElement(_init78, 4, "expanded", _expanded_dec, _DeesHarnessReasoning, _expanded);
175544
175557
  _DeesHarnessReasoning = __decorateElement(_init78, 0, "DeesHarnessReasoning", _DeesHarnessReasoning_decorators, _DeesHarnessReasoning);
175545
175558
  __name(_DeesHarnessReasoning, "DeesHarnessReasoning");
@@ -176690,30 +176703,34 @@ var DeesHarnessToolFullscreen = _DeesHarnessToolFullscreen;
176690
176703
  init_dist_ts26();
176691
176704
  init_theme();
176692
176705
  init_dees_icon();
176693
- var _diffViewOverride_dec, _outcomeScanTone_dec, _returnFlash_dec, _bodyOverflowing_dec, _uncapped_dec, _bodyCapPx_dec, _bodyMounted_dec, _outputExpanded_dec, _expanded_dec2, _allowSubtaskStreams_dec, _toolRegistry_dec2, _call_dec2, _a81, _DeesHarnessToolCard_decorators, _init82, _call2, _toolRegistry2, _allowSubtaskStreams, _expanded2, _outputExpanded, _bodyMounted, _bodyCapPx, _uncapped, _bodyOverflowing, _returnFlash, _outcomeScanTone, _diffViewOverride;
176706
+ var _diffViewOverride_dec, _outcomeScanTone_dec, _returnFlash_dec, _bodyOverflowing_dec, _uncapped_dec, _bodyCapPx_dec, _bodyMounted_dec, _outputExpanded_dec, _expanded_dec2, _viewState_dec2, _allowSubtaskStreams_dec, _toolRegistry_dec2, _call_dec2, _a81, _DeesHarnessToolCard_decorators, _init82, _call2, _toolRegistry2, _allowSubtaskStreams, _viewState2, _expanded2, _outputExpanded, _bodyMounted, _bodyCapPx, _uncapped, _bodyOverflowing, _returnFlash, _outcomeScanTone, _diffViewOverride;
176694
176707
  _DeesHarnessToolCard_decorators = [customElement("dees-harness-tool-card")];
176695
- var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a81 = DeesElement, _call_dec2 = [n5({ attribute: false })], _toolRegistry_dec2 = [n5({ attribute: false })], _allowSubtaskStreams_dec = [n5({ type: Boolean })], _expanded_dec2 = [r5()], _outputExpanded_dec = [r5()], _bodyMounted_dec = [r5()], _bodyCapPx_dec = [n5({ type: Number })], _uncapped_dec = [n5({ type: Boolean })], _bodyOverflowing_dec = [r5()], _returnFlash_dec = [r5()], _outcomeScanTone_dec = [r5()], _diffViewOverride_dec = [r5()], _a81) {
176708
+ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a81 = DeesElement, _call_dec2 = [n5({ attribute: false })], _toolRegistry_dec2 = [n5({ attribute: false })], _allowSubtaskStreams_dec = [n5({ type: Boolean })], _viewState_dec2 = [n5({ attribute: false })], _expanded_dec2 = [r5()], _outputExpanded_dec = [r5()], _bodyMounted_dec = [r5()], _bodyCapPx_dec = [n5({ type: Number })], _uncapped_dec = [n5({ type: Boolean })], _bodyOverflowing_dec = [r5()], _returnFlash_dec = [r5()], _outcomeScanTone_dec = [r5()], _diffViewOverride_dec = [r5()], _a81) {
176696
176709
  constructor() {
176697
176710
  super(...arguments);
176698
176711
  __privateAdd(this, _call2, __runInitializers(_init82, 8, this, { id: "", name: "", status: "pending" })), __runInitializers(_init82, 11, this);
176699
176712
  __privateAdd(this, _toolRegistry2, __runInitializers(_init82, 12, this, DeesHarnessToolRegistry.default)), __runInitializers(_init82, 15, this);
176700
176713
  __privateAdd(this, _allowSubtaskStreams, __runInitializers(_init82, 16, this, true)), __runInitializers(_init82, 19, this);
176701
- __privateAdd(this, _expanded2, __runInitializers(_init82, 20, this)), __runInitializers(_init82, 23, this);
176702
- __privateAdd(this, _outputExpanded, __runInitializers(_init82, 24, this, false)), __runInitializers(_init82, 27, this);
176703
- __privateAdd(this, _bodyMounted, __runInitializers(_init82, 28, this, false)), __runInitializers(_init82, 31, this);
176704
- __privateAdd(this, _bodyCapPx, __runInitializers(_init82, 32, this, 360)), __runInitializers(_init82, 35, this);
176705
- __privateAdd(this, _uncapped, __runInitializers(_init82, 36, this, false)), __runInitializers(_init82, 39, this);
176706
- __privateAdd(this, _bodyOverflowing, __runInitializers(_init82, 40, this, false)), __runInitializers(_init82, 43, this);
176707
- __privateAdd(this, _returnFlash, __runInitializers(_init82, 44, this, false)), __runInitializers(_init82, 47, this);
176708
- __privateAdd(this, _outcomeScanTone, __runInitializers(_init82, 48, this, null)), __runInitializers(_init82, 51, this);
176709
- __privateAdd(this, _diffViewOverride, __runInitializers(_init82, 52, this, null)), __runInitializers(_init82, 55, this);
176714
+ __privateAdd(this, _viewState2, __runInitializers(_init82, 20, this)), __runInitializers(_init82, 23, this);
176715
+ __privateAdd(this, _expanded2, __runInitializers(_init82, 24, this)), __runInitializers(_init82, 27, this);
176716
+ __privateAdd(this, _outputExpanded, __runInitializers(_init82, 28, this, false)), __runInitializers(_init82, 31, this);
176717
+ __privateAdd(this, _bodyMounted, __runInitializers(_init82, 32, this, false)), __runInitializers(_init82, 35, this);
176718
+ __privateAdd(this, _bodyCapPx, __runInitializers(_init82, 36, this, 360)), __runInitializers(_init82, 39, this);
176719
+ __privateAdd(this, _uncapped, __runInitializers(_init82, 40, this, false)), __runInitializers(_init82, 43, this);
176720
+ __privateAdd(this, _bodyOverflowing, __runInitializers(_init82, 44, this, false)), __runInitializers(_init82, 47, this);
176721
+ __privateAdd(this, _returnFlash, __runInitializers(_init82, 48, this, false)), __runInitializers(_init82, 51, this);
176722
+ __privateAdd(this, _outcomeScanTone, __runInitializers(_init82, 52, this, null)), __runInitializers(_init82, 55, this);
176723
+ __privateAdd(this, _diffViewOverride, __runInitializers(_init82, 56, this, null)), __runInitializers(_init82, 59, this);
176710
176724
  __publicField(this, "bodyResizeObserver", null);
176711
176725
  __publicField(this, "observedBodyInner", null);
176712
176726
  __publicField(this, "fullscreenPortal", null);
176713
176727
  __publicField(this, "disclosureFrame", null);
176728
+ __publicField(this, "returnScrollFrame", null);
176714
176729
  __publicField(this, "subtaskResultElement", null);
176715
176730
  __publicField(this, "subtaskResultResizeObserver", null);
176716
176731
  __publicField(this, "terminalTailFollowing", true);
176732
+ __publicField(this, "terminalScrollHydrated", false);
176733
+ __publicField(this, "terminalScrollHydrationFrame", null);
176717
176734
  __publicField(this, "terminalTailReturnTimeout", null);
176718
176735
  __publicField(this, "terminalTailReturnDelayMs", 5e3);
176719
176736
  __publicField(this, "toggleDisclosure", /* @__PURE__ */ __name(() => {
@@ -176721,12 +176738,14 @@ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a81 = DeesElemen
176721
176738
  if (this.disclosureFrame !== null) cancelAnimationFrame(this.disclosureFrame);
176722
176739
  this.disclosureFrame = null;
176723
176740
  this.expanded = false;
176741
+ if (this.viewState) this.viewState.toolExpanded = false;
176724
176742
  return;
176725
176743
  }
176726
176744
  if (this.bodyMounted) {
176727
176745
  if (this.disclosureFrame !== null) cancelAnimationFrame(this.disclosureFrame);
176728
176746
  this.disclosureFrame = null;
176729
176747
  this.expanded = true;
176748
+ if (this.viewState) this.viewState.toolExpanded = true;
176730
176749
  return;
176731
176750
  }
176732
176751
  this.bodyMounted = true;
@@ -176738,11 +176757,17 @@ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a81 = DeesElemen
176738
176757
  if (!this.isConnected || this.expanded !== false) return;
176739
176758
  this.shadowRoot?.querySelector(".bodyDisclosure")?.getBoundingClientRect();
176740
176759
  this.expanded = true;
176760
+ if (this.viewState) this.viewState.toolExpanded = true;
176741
176761
  });
176742
176762
  });
176743
176763
  }, "toggleDisclosure"));
176744
176764
  __publicField(this, "openFullscreen", /* @__PURE__ */ __name(() => {
176745
176765
  if (this.fullscreenPortal || this.hasSubtaskPreview) return;
176766
+ this.dispatchEvent(new CustomEvent("harness-card-retention", {
176767
+ detail: { active: true },
176768
+ bubbles: true,
176769
+ composed: true
176770
+ }));
176746
176771
  const portal = document.createElement("dees-harness-tool-fullscreen");
176747
176772
  portal.call = this.enrichedCall;
176748
176773
  portal.toolRegistry = this.toolRegistry;
@@ -176765,14 +176790,22 @@ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a81 = DeesElemen
176765
176790
  }));
176766
176791
  if (this.flashFallbackTimeout) clearTimeout(this.flashFallbackTimeout);
176767
176792
  this.flashFallbackTimeout = setTimeout(() => this.endReturnFlash(), 900);
176768
- requestAnimationFrame(() => {
176793
+ if (this.returnScrollFrame !== null) cancelAnimationFrame(this.returnScrollFrame);
176794
+ this.returnScrollFrame = requestAnimationFrame(() => {
176795
+ this.returnScrollFrame = null;
176796
+ if (!this.isConnected) return;
176769
176797
  this.scrollIntoView({ block: "center", behavior: "smooth" });
176770
176798
  });
176771
176799
  }, "closeFullscreen"));
176772
176800
  __publicField(this, "handleBodyScroll", /* @__PURE__ */ __name((eventArg) => {
176773
176801
  if (this.descriptor.kind !== "terminal" || this.uncapped) return;
176802
+ if (!this.terminalScrollHydrated) return;
176774
176803
  const frame = eventArg.currentTarget;
176775
176804
  this.terminalTailFollowing = frame.scrollHeight - frame.scrollTop - frame.clientHeight <= 2;
176805
+ if (this.viewState) {
176806
+ this.viewState.toolTerminalTailFollowing = this.terminalTailFollowing;
176807
+ this.viewState.toolTerminalScrollTop = frame.scrollTop;
176808
+ }
176776
176809
  if (this.terminalTailFollowing) this.cancelTerminalTailReturn();
176777
176810
  }, "handleBodyScroll"));
176778
176811
  __publicField(this, "scheduleTerminalTailReturn", /* @__PURE__ */ __name(() => {
@@ -176781,7 +176814,12 @@ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a81 = DeesElemen
176781
176814
  this.terminalTailReturnTimeout = setTimeout(() => {
176782
176815
  this.terminalTailReturnTimeout = null;
176783
176816
  this.terminalTailFollowing = true;
176817
+ if (this.viewState) this.viewState.toolTerminalTailFollowing = true;
176784
176818
  this.scrollTerminalToTail();
176819
+ if (this.viewState) {
176820
+ const frame = this.shadowRoot?.querySelector(".bodyClipFrame");
176821
+ if (frame) this.viewState.toolTerminalScrollTop = frame.scrollTop;
176822
+ }
176785
176823
  }, this.terminalTailReturnDelayMs);
176786
176824
  }, "scheduleTerminalTailReturn"));
176787
176825
  __publicField(this, "cancelTerminalTailReturn", /* @__PURE__ */ __name(() => {
@@ -176791,6 +176829,7 @@ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a81 = DeesElemen
176791
176829
  }, "cancelTerminalTailReturn"));
176792
176830
  __publicField(this, "handleDiffViewChange", /* @__PURE__ */ __name((eventArg) => {
176793
176831
  this.diffViewOverride = eventArg.detail.diffView;
176832
+ if (this.viewState) this.viewState.toolDiffView = this.diffViewOverride;
176794
176833
  }, "handleDiffViewChange"));
176795
176834
  __publicField(this, "syncSubtaskResultScroll", /* @__PURE__ */ __name(() => {
176796
176835
  const result = this.subtaskResultElement;
@@ -176813,6 +176852,7 @@ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a81 = DeesElemen
176813
176852
  }
176814
176853
  get isOpen() {
176815
176854
  if (this.expanded !== void 0) return this.expanded;
176855
+ if (this.viewState?.toolExpanded !== void 0) return this.viewState.toolExpanded;
176816
176856
  const descriptor = this.descriptor;
176817
176857
  if (descriptor.kind === "subtask" && this.call.subtask) {
176818
176858
  return this.allowSubtaskStreams && (this.call.subtask.status.type === "busy" || this.call.subtask.status.type === "error");
@@ -176908,6 +176948,11 @@ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a81 = DeesElemen
176908
176948
  }
176909
176949
  if (!this.returnFlash) return;
176910
176950
  this.returnFlash = false;
176951
+ this.dispatchEvent(new CustomEvent("harness-card-retention", {
176952
+ detail: { active: false },
176953
+ bubbles: true,
176954
+ composed: true
176955
+ }));
176911
176956
  this.dispatchEvent(new CustomEvent("harness-card-flash", {
176912
176957
  detail: { active: false },
176913
176958
  bubbles: true,
@@ -176928,11 +176973,41 @@ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a81 = DeesElemen
176928
176973
  }
176929
176974
  willUpdate(changedProperties) {
176930
176975
  super.willUpdate(changedProperties);
176976
+ if (changedProperties.has("viewState") || changedProperties.has("call")) {
176977
+ this.terminalScrollHydrated = false;
176978
+ if (this.terminalScrollHydrationFrame !== null) {
176979
+ cancelAnimationFrame(this.terminalScrollHydrationFrame);
176980
+ this.terminalScrollHydrationFrame = null;
176981
+ }
176982
+ if (this.expanded === void 0 && this.viewState?.toolExpanded !== void 0) {
176983
+ this.expanded = this.viewState.toolExpanded;
176984
+ }
176985
+ if (!this.outputExpanded && this.viewState?.toolOutputExpanded === true) this.outputExpanded = true;
176986
+ if (this.diffViewOverride === null && this.viewState?.toolDiffView !== void 0) {
176987
+ this.diffViewOverride = this.viewState.toolDiffView;
176988
+ }
176989
+ if (this.viewState?.toolTerminalTailFollowing !== void 0) {
176990
+ this.terminalTailFollowing = this.viewState.toolTerminalTailFollowing;
176991
+ }
176992
+ if (this.viewState) {
176993
+ const subtask = this.call.subtask;
176994
+ const ownsLiveTranscript = Boolean(
176995
+ this.hasLiveSubtaskPreview && subtask?.previewState === "ready"
176996
+ );
176997
+ if (!subtask || !ownsLiveTranscript) {
176998
+ delete this.viewState.subtaskTranscript;
176999
+ delete this.viewState.subtaskTranscriptSessionId;
177000
+ } else if (this.viewState.subtaskTranscriptSessionId !== subtask.sessionId || !this.viewState.subtaskTranscript) {
177001
+ this.viewState.subtaskTranscriptSessionId = subtask.sessionId;
177002
+ this.viewState.subtaskTranscript = { messages: {}, permissions: {}, questions: {} };
177003
+ }
177004
+ }
177005
+ }
176931
177006
  const previousCall = changedProperties.get("call");
176932
177007
  if (!previousCall) return;
176933
177008
  if (previousCall.id !== this.call.id) {
176934
- this.diffViewOverride = null;
176935
- this.terminalTailFollowing = true;
177009
+ this.diffViewOverride = this.viewState?.toolDiffView ?? null;
177010
+ this.terminalTailFollowing = this.viewState?.toolTerminalTailFollowing ?? true;
176936
177011
  this.cancelTerminalTailReturn();
176937
177012
  return;
176938
177013
  }
@@ -176949,6 +177024,10 @@ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a81 = DeesElemen
176949
177024
  updated(changedProperties) {
176950
177025
  super.updated(changedProperties);
176951
177026
  if (!this.isConnected) return;
177027
+ this.terminalScrollHydrationFrame ??= requestAnimationFrame(() => {
177028
+ this.terminalScrollHydrationFrame = null;
177029
+ if (this.isConnected) this.terminalScrollHydrated = true;
177030
+ });
176952
177031
  if (this.isOpen && !this.bodyMounted) this.bodyMounted = true;
176953
177032
  if (changedProperties.has("call") && this.fullscreenPortal) {
176954
177033
  this.fullscreenPortal.call = this.enrichedCall;
@@ -176981,12 +177060,24 @@ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a81 = DeesElemen
176981
177060
  });
176982
177061
  this.bodyResizeObserver.observe(bodyInner);
176983
177062
  if (this.terminalTailFollowing) this.scrollTerminalToTail();
177063
+ else if (this.viewState?.toolTerminalScrollTop !== void 0) {
177064
+ const frame = this.shadowRoot?.querySelector(".bodyClipFrame");
177065
+ if (frame) this.setTerminalScrollTop(frame, this.viewState.toolTerminalScrollTop);
177066
+ }
176984
177067
  }
176985
177068
  scrollTerminalToTail() {
176986
177069
  if (this.descriptor.kind !== "terminal" || this.uncapped || !this.isOpen) return;
176987
177070
  const frame = this.shadowRoot?.querySelector(".bodyClipFrame");
176988
177071
  if (!frame) return;
176989
- frame.scrollTop = frame.scrollHeight;
177072
+ if (this.viewState?.toolTerminalTailFollowing === false) {
177073
+ this.terminalTailFollowing = false;
177074
+ this.setTerminalScrollTop(frame, this.viewState.toolTerminalScrollTop ?? frame.scrollTop);
177075
+ return;
177076
+ }
177077
+ this.setTerminalScrollTop(frame, frame.scrollHeight);
177078
+ }
177079
+ setTerminalScrollTop(frameArg, scrollTopArg) {
177080
+ frameArg.scrollTop = scrollTopArg;
176990
177081
  }
176991
177082
  connectSubtaskResultScroll() {
176992
177083
  const nextResult = this.shadowRoot?.querySelector(
@@ -177015,6 +177106,15 @@ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a81 = DeesElemen
177015
177106
  cancelAnimationFrame(this.disclosureFrame);
177016
177107
  this.disclosureFrame = null;
177017
177108
  }
177109
+ if (this.returnScrollFrame !== null) {
177110
+ cancelAnimationFrame(this.returnScrollFrame);
177111
+ this.returnScrollFrame = null;
177112
+ }
177113
+ if (this.terminalScrollHydrationFrame !== null) {
177114
+ cancelAnimationFrame(this.terminalScrollHydrationFrame);
177115
+ this.terminalScrollHydrationFrame = null;
177116
+ }
177117
+ this.terminalScrollHydrated = false;
177018
177118
  if (this.flashFallbackTimeout) {
177019
177119
  clearTimeout(this.flashFallbackTimeout);
177020
177120
  this.flashFallbackTimeout = null;
@@ -177024,8 +177124,16 @@ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a81 = DeesElemen
177024
177124
  this.outcomeScanFallbackTimeout = null;
177025
177125
  }
177026
177126
  this.cancelTerminalTailReturn();
177127
+ if (this.fullscreenPortal || this.returnFlash) {
177128
+ this.dispatchEvent(new CustomEvent("harness-card-retention", {
177129
+ detail: { active: false },
177130
+ bubbles: true,
177131
+ composed: true
177132
+ }));
177133
+ }
177027
177134
  this.fullscreenPortal?.remove();
177028
177135
  this.fullscreenPortal = null;
177136
+ this.returnFlash = false;
177029
177137
  this.bodyResizeObserver?.disconnect();
177030
177138
  this.bodyResizeObserver = null;
177031
177139
  this.observedBodyInner = null;
@@ -177070,6 +177178,7 @@ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a81 = DeesElemen
177070
177178
  .questions=${subtask.questions ?? []}
177071
177179
  .status=${subtask.status}
177072
177180
  .toolRegistry=${this.toolRegistry}
177181
+ .viewState=${this.viewState?.subtaskTranscript}
177073
177182
  .allowSubtaskStreams=${false}
177074
177183
  .autoFollow=${this.isOpen}
177075
177184
  .hideScrollbar=${true}
@@ -177155,6 +177264,7 @@ var _DeesHarnessToolCard = class _DeesHarnessToolCard extends (_a81 = DeesElemen
177155
177264
  type="button"
177156
177265
  @click=${() => {
177157
177266
  this.outputExpanded = true;
177267
+ if (this.viewState) this.viewState.toolOutputExpanded = true;
177158
177268
  }}
177159
177269
  >
177160
177270
  Show all
@@ -177183,6 +177293,7 @@ _init82 = __decoratorStart(_a81);
177183
177293
  _call2 = new WeakMap();
177184
177294
  _toolRegistry2 = new WeakMap();
177185
177295
  _allowSubtaskStreams = new WeakMap();
177296
+ _viewState2 = new WeakMap();
177186
177297
  _expanded2 = new WeakMap();
177187
177298
  _outputExpanded = new WeakMap();
177188
177299
  _bodyMounted = new WeakMap();
@@ -177195,6 +177306,7 @@ _diffViewOverride = new WeakMap();
177195
177306
  __decorateElement(_init82, 4, "call", _call_dec2, _DeesHarnessToolCard, _call2);
177196
177307
  __decorateElement(_init82, 4, "toolRegistry", _toolRegistry_dec2, _DeesHarnessToolCard, _toolRegistry2);
177197
177308
  __decorateElement(_init82, 4, "allowSubtaskStreams", _allowSubtaskStreams_dec, _DeesHarnessToolCard, _allowSubtaskStreams);
177309
+ __decorateElement(_init82, 4, "viewState", _viewState_dec2, _DeesHarnessToolCard, _viewState2);
177198
177310
  __decorateElement(_init82, 4, "expanded", _expanded_dec2, _DeesHarnessToolCard, _expanded2);
177199
177311
  __decorateElement(_init82, 4, "outputExpanded", _outputExpanded_dec, _DeesHarnessToolCard, _outputExpanded);
177200
177312
  __decorateElement(_init82, 4, "bodyMounted", _bodyMounted_dec, _DeesHarnessToolCard, _bodyMounted);
@@ -177308,18 +177420,18 @@ __publicField(_DeesHarnessToolCard, "styles", [
177308
177420
 
177309
177421
  @keyframes harness-card-open-chat-scan {
177310
177422
  0% {
177311
- background-position: 100% 0;
177423
+ transform: translate3d(-60%, 0, 0);
177312
177424
  opacity: 0;
177313
177425
  }
177314
177426
  1% {
177315
177427
  opacity: 0.35;
177316
177428
  }
177317
177429
  20% {
177318
- background-position: 0 0;
177430
+ transform: translate3d(0, 0, 0);
177319
177431
  opacity: 0.35;
177320
177432
  }
177321
177433
  24%, 100% {
177322
- background-position: 0 0;
177434
+ transform: translate3d(0, 0, 0);
177323
177435
  opacity: 0;
177324
177436
  }
177325
177437
  }
@@ -177708,7 +177820,8 @@ __publicField(_DeesHarnessToolCard, "styles", [
177708
177820
  .harness-card.outcomeScan::after {
177709
177821
  content: '';
177710
177822
  position: absolute;
177711
- inset: 0;
177823
+ inset: 0 auto 0 0;
177824
+ width: 250%;
177712
177825
  pointer-events: none;
177713
177826
  background: linear-gradient(
177714
177827
  105deg,
@@ -177717,7 +177830,9 @@ __publicField(_DeesHarnessToolCard, "styles", [
177717
177830
  color-mix(in srgb, var(--harness-outcome-scan-color) 14%, transparent) 50%,
177718
177831
  color-mix(in srgb, var(--harness-outcome-scan-color) 3%, transparent) 55%,
177719
177832
  transparent 60%
177720
- ) 100% 0 / 250% 100% no-repeat;
177833
+ );
177834
+ transform: translate3d(-60%, 0, 0);
177835
+ will-change: transform;
177721
177836
  animation: harness-tool-outcome-scan 0.48s linear 0.08s both;
177722
177837
  }
177723
177838
 
@@ -177731,8 +177846,8 @@ __publicField(_DeesHarnessToolCard, "styles", [
177731
177846
  }
177732
177847
 
177733
177848
  @keyframes harness-tool-outcome-scan {
177734
- from { background-position: 100% 0; }
177735
- to { background-position: 0 0; }
177849
+ from { transform: translate3d(-60%, 0, 0); }
177850
+ to { transform: translate3d(0, 0, 0); }
177736
177851
  }
177737
177852
 
177738
177853
  @media (prefers-reduced-motion: reduce) {
@@ -177747,6 +177862,7 @@ __publicField(_DeesHarnessToolCard, "styles", [
177747
177862
  .harness-card.outcomeScan::after {
177748
177863
  animation: none;
177749
177864
  opacity: 0;
177865
+ will-change: auto;
177750
177866
  }
177751
177867
  }
177752
177868
  `
@@ -177759,10 +177875,10 @@ init_dist_ts26();
177759
177875
  init_theme();
177760
177876
  init_services();
177761
177877
  init_dees_icon();
177762
- var _renderedMarkdownHtml_dec, _suppressEntry_dec, _allowSubtaskStreams_dec2, _toolRegistry_dec3, _markdownWhileStreaming_dec, _showTimestamp_dec, _showRole_dec, _message_dec2, _a82, _DeesHarnessMessage_decorators, _init83, _message2, _showRole, _showTimestamp, _markdownWhileStreaming, _toolRegistry3, _allowSubtaskStreams2, _suppressEntry, _renderedMarkdownHtml;
177878
+ var _renderedMarkdownHtml_dec, _viewState_dec3, _suppressEntry_dec, _allowSubtaskStreams_dec2, _toolRegistry_dec3, _markdownWhileStreaming_dec, _showTimestamp_dec, _showRole_dec, _message_dec2, _a82, _DeesHarnessMessage_decorators, _init83, _message2, _showRole, _showTimestamp, _markdownWhileStreaming, _toolRegistry3, _allowSubtaskStreams2, _suppressEntry, _viewState3, _renderedMarkdownHtml;
177763
177879
  var markdownParseThrottleMs = 150;
177764
177880
  _DeesHarnessMessage_decorators = [customElement("dees-harness-message")];
177765
- var _DeesHarnessMessage = class _DeesHarnessMessage extends (_a82 = DeesElement, _message_dec2 = [n5({ attribute: false })], _showRole_dec = [n5({ type: Boolean })], _showTimestamp_dec = [n5({ type: Boolean })], _markdownWhileStreaming_dec = [n5({ type: Boolean })], _toolRegistry_dec3 = [n5({ attribute: false })], _allowSubtaskStreams_dec2 = [n5({ type: Boolean })], _suppressEntry_dec = [n5({ attribute: false })], _renderedMarkdownHtml_dec = [r5()], _a82) {
177881
+ var _DeesHarnessMessage = class _DeesHarnessMessage extends (_a82 = DeesElement, _message_dec2 = [n5({ attribute: false })], _showRole_dec = [n5({ type: Boolean })], _showTimestamp_dec = [n5({ type: Boolean })], _markdownWhileStreaming_dec = [n5({ type: Boolean })], _toolRegistry_dec3 = [n5({ attribute: false })], _allowSubtaskStreams_dec2 = [n5({ type: Boolean })], _suppressEntry_dec = [n5({ attribute: false })], _viewState_dec3 = [n5({ attribute: false })], _renderedMarkdownHtml_dec = [r5()], _a82) {
177766
177882
  constructor() {
177767
177883
  super(...arguments);
177768
177884
  __privateAdd(this, _message2, __runInitializers(_init83, 8, this, { id: "", role: "assistant", text: "", createdAt: 0 })), __runInitializers(_init83, 11, this);
@@ -177772,7 +177888,8 @@ var _DeesHarnessMessage = class _DeesHarnessMessage extends (_a82 = DeesElement,
177772
177888
  __privateAdd(this, _toolRegistry3, __runInitializers(_init83, 24, this, DeesHarnessToolRegistry.default)), __runInitializers(_init83, 27, this);
177773
177889
  __privateAdd(this, _allowSubtaskStreams2, __runInitializers(_init83, 28, this, true)), __runInitializers(_init83, 31, this);
177774
177890
  __privateAdd(this, _suppressEntry, __runInitializers(_init83, 32, this, false)), __runInitializers(_init83, 35, this);
177775
- __privateAdd(this, _renderedMarkdownHtml, __runInitializers(_init83, 36, this, "")), __runInitializers(_init83, 39, this);
177891
+ __privateAdd(this, _viewState3, __runInitializers(_init83, 36, this)), __runInitializers(_init83, 39, this);
177892
+ __privateAdd(this, _renderedMarkdownHtml, __runInitializers(_init83, 40, this, "")), __runInitializers(_init83, 43, this);
177776
177893
  __publicField(this, "markdownParseToken", 0);
177777
177894
  __publicField(this, "lastParsedText", "");
177778
177895
  __publicField(this, "markdownThrottleTimeout", null);
@@ -177834,12 +177951,14 @@ var _DeesHarnessMessage = class _DeesHarnessMessage extends (_a82 = DeesElement,
177834
177951
  .call=${message2.toolCall}
177835
177952
  .toolRegistry=${this.toolRegistry}
177836
177953
  .allowSubtaskStreams=${this.allowSubtaskStreams}
177954
+ .viewState=${this.viewState}
177837
177955
  ></dees-harness-tool-card>
177838
177956
  `;
177839
177957
  }
177840
177958
  const roleClass = `role-${message2.role}`;
177841
177959
  return b2`
177842
177960
  <div class="message ${roleClass} ${message2.streaming ? "streaming" : ""} ${message2.error ? "has-error" : ""}">
177961
+ ${message2.role === "assistant" && message2.streaming ? b2`<span class="assistantActivityRail" aria-hidden="true"></span>` : ""}
177843
177962
  ${this.showRole || this.showTimestamp || message2.model ? b2`
177844
177963
  <div class="roleRow">
177845
177964
  ${this.showRole ? b2`<span class="roleLabel">${message2.role}</span>` : ""}
@@ -177854,7 +177973,10 @@ var _DeesHarnessMessage = class _DeesHarnessMessage extends (_a82 = DeesElement,
177854
177973
  ` : ""}
177855
177974
  ${message2.reasoning?.length ? b2`
177856
177975
  <div class="reasoningStack">
177857
- <dees-harness-reasoning .reasoningParts=${message2.reasoning}></dees-harness-reasoning>
177976
+ <dees-harness-reasoning
177977
+ .reasoningParts=${message2.reasoning}
177978
+ .viewState=${this.viewState}
177979
+ ></dees-harness-reasoning>
177858
177980
  </div>
177859
177981
  ` : ""}
177860
177982
  ${message2.attachments?.length ? this.renderAttachments(message2.attachments) : ""}
@@ -177862,6 +177984,7 @@ var _DeesHarnessMessage = class _DeesHarnessMessage extends (_a82 = DeesElement,
177862
177984
  .call=${message2.toolCall}
177863
177985
  .toolRegistry=${this.toolRegistry}
177864
177986
  .allowSubtaskStreams=${this.allowSubtaskStreams}
177987
+ .viewState=${this.viewState}
177865
177988
  ></dees-harness-tool-card>` : ""}
177866
177989
  ${this.renderText()}
177867
177990
  ${message2.error ? b2`<div class="errorText">${message2.error}</div>` : ""}
@@ -177923,6 +178046,15 @@ var _DeesHarnessMessage = class _DeesHarnessMessage extends (_a82 = DeesElement,
177923
178046
  async updated(changedProperties) {
177924
178047
  super.updated(changedProperties);
177925
178048
  if (!this.markdownActive || !this.message.text) return;
178049
+ if (this.viewState?.markdownText === this.message.text && this.viewState.markdownHtml && this.lastParsedText !== this.message.text) {
178050
+ this.lastParsedText = this.message.text;
178051
+ this.renderedMarkdownHtml = this.viewState.markdownHtml;
178052
+ if (!this.message.streaming) {
178053
+ await this.updateComplete;
178054
+ await this.highlightCodeFences(this.markdownParseToken);
178055
+ }
178056
+ return;
178057
+ }
177926
178058
  if (this.message.text === this.lastParsedText) return;
177927
178059
  if (this.message.streaming) {
177928
178060
  if (!this.markdownWhileStreaming) return;
@@ -177945,6 +178077,10 @@ var _DeesHarnessMessage = class _DeesHarnessMessage extends (_a82 = DeesElement,
177945
178077
  if (token !== this.markdownParseToken) return;
177946
178078
  this.lastParsedText = textAtRequest;
177947
178079
  this.renderedMarkdownHtml = htmlResult;
178080
+ if (this.viewState) {
178081
+ this.viewState.markdownText = textAtRequest;
178082
+ this.viewState.markdownHtml = htmlResult;
178083
+ }
177948
178084
  if (!this.message.streaming) {
177949
178085
  await this.updateComplete;
177950
178086
  await this.highlightCodeFences(token);
@@ -177975,6 +178111,7 @@ var _DeesHarnessMessage = class _DeesHarnessMessage extends (_a82 = DeesElement,
177975
178111
  }
177976
178112
  }
177977
178113
  async disconnectedCallback() {
178114
+ this.markdownParseToken += 1;
177978
178115
  if (this.markdownThrottleTimeout) {
177979
178116
  clearTimeout(this.markdownThrottleTimeout);
177980
178117
  this.markdownThrottleTimeout = null;
@@ -177990,6 +178127,7 @@ _markdownWhileStreaming = new WeakMap();
177990
178127
  _toolRegistry3 = new WeakMap();
177991
178128
  _allowSubtaskStreams2 = new WeakMap();
177992
178129
  _suppressEntry = new WeakMap();
178130
+ _viewState3 = new WeakMap();
177993
178131
  _renderedMarkdownHtml = new WeakMap();
177994
178132
  __decorateElement(_init83, 4, "message", _message_dec2, _DeesHarnessMessage, _message2);
177995
178133
  __decorateElement(_init83, 4, "showRole", _showRole_dec, _DeesHarnessMessage, _showRole);
@@ -177998,6 +178136,7 @@ __decorateElement(_init83, 4, "markdownWhileStreaming", _markdownWhileStreaming_
177998
178136
  __decorateElement(_init83, 4, "toolRegistry", _toolRegistry_dec3, _DeesHarnessMessage, _toolRegistry3);
177999
178137
  __decorateElement(_init83, 4, "allowSubtaskStreams", _allowSubtaskStreams_dec2, _DeesHarnessMessage, _allowSubtaskStreams2);
178000
178138
  __decorateElement(_init83, 4, "suppressEntry", _suppressEntry_dec, _DeesHarnessMessage, _suppressEntry);
178139
+ __decorateElement(_init83, 4, "viewState", _viewState_dec3, _DeesHarnessMessage, _viewState3);
178001
178140
  __decorateElement(_init83, 4, "renderedMarkdownHtml", _renderedMarkdownHtml_dec, _DeesHarnessMessage, _renderedMarkdownHtml);
178002
178141
  _DeesHarnessMessage = __decorateElement(_init83, 0, "DeesHarnessMessage", _DeesHarnessMessage_decorators, _DeesHarnessMessage);
178003
178142
  __name(_DeesHarnessMessage, "DeesHarnessMessage");
@@ -178079,35 +178218,43 @@ __publicField(_DeesHarnessMessage, "styles", [
178079
178218
  background: transparent;
178080
178219
  }
178081
178220
 
178082
- .message.role-assistant::before {
178083
- content: '';
178221
+ .assistantActivityRail {
178084
178222
  position: absolute;
178085
178223
  inset: 0 auto 0 0;
178086
178224
  width: 1px;
178087
- background: transparent;
178225
+ overflow: hidden;
178088
178226
  pointer-events: none;
178089
178227
  }
178090
178228
 
178091
- .message.role-assistant.streaming::before {
178092
- background:
178093
- linear-gradient(
178094
- to bottom,
178095
- transparent 40%,
178096
- color-mix(in srgb, var(--dees-color-accent-primary) 85%, transparent) 50%,
178097
- transparent 60%
178098
- ) 0 100% / 100% 250% no-repeat;
178229
+ .assistantActivityRail::before {
178230
+ content: '';
178231
+ position: absolute;
178232
+ inset: 0 auto auto 0;
178233
+ width: 100%;
178234
+ height: 250%;
178235
+ background: linear-gradient(
178236
+ to bottom,
178237
+ transparent 40%,
178238
+ color-mix(in srgb, var(--dees-color-accent-primary) 85%, transparent) 50%,
178239
+ transparent 60%
178240
+ );
178241
+ transform: translate3d(0, -60%, 0);
178242
+ will-change: transform;
178099
178243
  animation: assistantActivityScan 2s linear infinite;
178100
178244
  }
178101
178245
 
178102
178246
  @keyframes assistantActivityScan {
178103
- from { background-position: 0 100%; }
178104
- to { background-position: 0 0; }
178247
+ from { transform: translate3d(0, -60%, 0); }
178248
+ to { transform: translate3d(0, 0, 0); }
178105
178249
  }
178106
178250
 
178107
178251
  @media (prefers-reduced-motion: reduce) {
178108
- .message.role-assistant.streaming::before {
178252
+ .assistantActivityRail::before {
178109
178253
  animation: none;
178110
178254
  background: color-mix(in srgb, var(--dees-color-accent-primary) 65%, transparent);
178255
+ transform: none;
178256
+ height: 100%;
178257
+ will-change: auto;
178111
178258
  }
178112
178259
  }
178113
178260
 
@@ -178534,23 +178681,28 @@ var demoFunc60 = /* @__PURE__ */ __name(() => b2`
178534
178681
  init_dist_ts26();
178535
178682
  init_theme();
178536
178683
  init_dees_icon();
178537
- var _answered_dec, _remember_dec, _busy_dec, _request_dec, _a84, _DeesHarnessPermissionCard_decorators, _init85, _request, _busy, _remember, _answered;
178684
+ var _answered_dec, _remember_dec, _suppressEntry_dec2, _viewState_dec4, _busy_dec, _request_dec, _a84, _DeesHarnessPermissionCard_decorators, _init85, _request, _busy, _viewState4, _suppressEntry2, _remember, _answered;
178538
178685
  var badgeTypeForPermission = /* @__PURE__ */ __name((permissionType) => {
178539
178686
  if (permissionType === "delete" || permissionType === "shell") return "error";
178540
178687
  if (permissionType === "write" || permissionType === "browser") return "warning";
178541
178688
  return "default";
178542
178689
  }, "badgeTypeForPermission");
178543
178690
  _DeesHarnessPermissionCard_decorators = [customElement("dees-harness-permission-card")];
178544
- var _DeesHarnessPermissionCard = class _DeesHarnessPermissionCard extends (_a84 = DeesElement, _request_dec = [n5({ attribute: false })], _busy_dec = [n5({ type: Boolean })], _remember_dec = [r5()], _answered_dec = [r5()], _a84) {
178691
+ var _DeesHarnessPermissionCard = class _DeesHarnessPermissionCard extends (_a84 = DeesElement, _request_dec = [n5({ attribute: false })], _busy_dec = [n5({ type: Boolean })], _viewState_dec4 = [n5({ attribute: false })], _suppressEntry_dec2 = [n5({ type: Boolean })], _remember_dec = [r5()], _answered_dec = [r5()], _a84) {
178545
178692
  constructor() {
178546
178693
  super(...arguments);
178547
178694
  __privateAdd(this, _request, __runInitializers(_init85, 8, this, { id: "", title: "", type: "permission" })), __runInitializers(_init85, 11, this);
178548
178695
  __privateAdd(this, _busy, __runInitializers(_init85, 12, this, false)), __runInitializers(_init85, 15, this);
178549
- __privateAdd(this, _remember, __runInitializers(_init85, 16, this, false)), __runInitializers(_init85, 19, this);
178550
- __privateAdd(this, _answered, __runInitializers(_init85, 20, this)), __runInitializers(_init85, 23, this);
178696
+ __privateAdd(this, _viewState4, __runInitializers(_init85, 16, this)), __runInitializers(_init85, 19, this);
178697
+ __privateAdd(this, _suppressEntry2, __runInitializers(_init85, 20, this, false)), __runInitializers(_init85, 23, this);
178698
+ __privateAdd(this, _remember, __runInitializers(_init85, 24, this, false)), __runInitializers(_init85, 27, this);
178699
+ __privateAdd(this, _answered, __runInitializers(_init85, 28, this)), __runInitializers(_init85, 31, this);
178551
178700
  }
178552
178701
  get effectiveResponse() {
178553
- return this.request.response ?? this.answered;
178702
+ return this.request.response ?? this.answered ?? this.viewState?.answered;
178703
+ }
178704
+ get effectiveRemember() {
178705
+ return this.remember || this.viewState?.remember === true;
178554
178706
  }
178555
178707
  render() {
178556
178708
  const request = this.request;
@@ -178572,7 +178724,7 @@ var _DeesHarnessPermissionCard = class _DeesHarnessPermissionCard extends (_a84
178572
178724
  </div>
178573
178725
  ` : ""}
178574
178726
  <div class="actions">
178575
- ${this.effectiveResponse ? b2`<span class="answeredNote">Answered: ${this.effectiveResponse}${this.remember ? " (remembered)" : ""}</span>` : b2`
178727
+ ${this.effectiveResponse ? b2`<span class="answeredNote">Answered: ${this.effectiveResponse}${this.effectiveRemember ? " (remembered)" : ""}</span>` : b2`
178576
178728
  <dees-button type="accent" size="sm" ?disabled=${disabled} @clicked=${() => this.respond("once")}>
178577
178729
  Allow Once
178578
178730
  </dees-button>
@@ -178585,10 +178737,11 @@ var _DeesHarnessPermissionCard = class _DeesHarnessPermissionCard extends (_a84
178585
178737
  <label class="rememberLabel">
178586
178738
  <input
178587
178739
  type="checkbox"
178588
- .checked=${this.remember}
178740
+ .checked=${this.effectiveRemember}
178589
178741
  ?disabled=${disabled}
178590
- @change=${(event) => {
178742
+ @change=${(event) => {
178591
178743
  this.remember = event.currentTarget.checked;
178744
+ if (this.viewState) this.viewState.remember = this.remember;
178592
178745
  }}
178593
178746
  />
178594
178747
  remember for this session
@@ -178600,13 +178753,18 @@ var _DeesHarnessPermissionCard = class _DeesHarnessPermissionCard extends (_a84
178600
178753
  }
178601
178754
  respond(response) {
178602
178755
  if (this.busy || this.effectiveResponse !== void 0) return;
178756
+ const remember = this.effectiveRemember || response === "always";
178603
178757
  this.answered = response;
178758
+ if (this.viewState) {
178759
+ this.viewState.answered = response;
178760
+ this.viewState.remember = remember;
178761
+ }
178604
178762
  this.dispatchEvent(
178605
178763
  new CustomEvent("harness-permission-response", {
178606
178764
  detail: {
178607
178765
  requestId: this.request.id,
178608
178766
  response,
178609
- remember: this.remember || response === "always",
178767
+ remember,
178610
178768
  request: this.request
178611
178769
  },
178612
178770
  bubbles: true,
@@ -178614,14 +178772,22 @@ var _DeesHarnessPermissionCard = class _DeesHarnessPermissionCard extends (_a84
178614
178772
  })
178615
178773
  );
178616
178774
  }
178775
+ firstUpdated(changedPropertiesArg) {
178776
+ super.firstUpdated(changedPropertiesArg);
178777
+ if (this.suppressEntry) this.classList.add("no-entry");
178778
+ }
178617
178779
  };
178618
178780
  _init85 = __decoratorStart(_a84);
178619
178781
  _request = new WeakMap();
178620
178782
  _busy = new WeakMap();
178783
+ _viewState4 = new WeakMap();
178784
+ _suppressEntry2 = new WeakMap();
178621
178785
  _remember = new WeakMap();
178622
178786
  _answered = new WeakMap();
178623
178787
  __decorateElement(_init85, 4, "request", _request_dec, _DeesHarnessPermissionCard, _request);
178624
178788
  __decorateElement(_init85, 4, "busy", _busy_dec, _DeesHarnessPermissionCard, _busy);
178789
+ __decorateElement(_init85, 4, "viewState", _viewState_dec4, _DeesHarnessPermissionCard, _viewState4);
178790
+ __decorateElement(_init85, 4, "suppressEntry", _suppressEntry_dec2, _DeesHarnessPermissionCard, _suppressEntry2);
178625
178791
  __decorateElement(_init85, 4, "remember", _remember_dec, _DeesHarnessPermissionCard, _remember);
178626
178792
  __decorateElement(_init85, 4, "answered", _answered_dec, _DeesHarnessPermissionCard, _answered);
178627
178793
  _DeesHarnessPermissionCard = __decorateElement(_init85, 0, "DeesHarnessPermissionCard", _DeesHarnessPermissionCard_decorators, _DeesHarnessPermissionCard);
@@ -178654,6 +178820,10 @@ __publicField(_DeesHarnessPermissionCard, "styles", [
178654
178820
  }
178655
178821
  }
178656
178822
 
178823
+ :host(.no-entry) {
178824
+ animation: none;
178825
+ }
178826
+
178657
178827
  @media (prefers-reduced-motion: reduce) {
178658
178828
  :host {
178659
178829
  animation: none;
@@ -178808,19 +178978,27 @@ var demoFunc61 = /* @__PURE__ */ __name(() => b2`
178808
178978
  init_dist_ts26();
178809
178979
  init_theme();
178810
178980
  init_dees_icon();
178811
- var _customText_dec, _selected_dec2, _answered_dec2, _busy_dec2, _request_dec2, _a85, _DeesHarnessQuestionCard_decorators, _init86, _request2, _busy2, _answered2, _selected2, _customText;
178981
+ var _customText_dec, _selected_dec2, _answered_dec2, _suppressEntry_dec3, _viewState_dec5, _busy_dec2, _request_dec2, _a85, _DeesHarnessQuestionCard_decorators, _init86, _request2, _busy2, _viewState5, _suppressEntry3, _answered2, _selected2, _customText;
178812
178982
  _DeesHarnessQuestionCard_decorators = [customElement("dees-harness-question-card")];
178813
- var _DeesHarnessQuestionCard = class _DeesHarnessQuestionCard extends (_a85 = DeesElement, _request_dec2 = [n5({ attribute: false })], _busy_dec2 = [n5({ type: Boolean })], _answered_dec2 = [r5()], _selected_dec2 = [r5()], _customText_dec = [r5()], _a85) {
178983
+ var _DeesHarnessQuestionCard = class _DeesHarnessQuestionCard extends (_a85 = DeesElement, _request_dec2 = [n5({ attribute: false })], _busy_dec2 = [n5({ type: Boolean })], _viewState_dec5 = [n5({ attribute: false })], _suppressEntry_dec3 = [n5({ type: Boolean })], _answered_dec2 = [r5()], _selected_dec2 = [r5()], _customText_dec = [r5()], _a85) {
178814
178984
  constructor() {
178815
178985
  super(...arguments);
178816
178986
  __privateAdd(this, _request2, __runInitializers(_init86, 8, this, { id: "", question: "" })), __runInitializers(_init86, 11, this);
178817
178987
  __privateAdd(this, _busy2, __runInitializers(_init86, 12, this, false)), __runInitializers(_init86, 15, this);
178818
- __privateAdd(this, _answered2, __runInitializers(_init86, 16, this)), __runInitializers(_init86, 19, this);
178819
- __privateAdd(this, _selected2, __runInitializers(_init86, 20, this, /* @__PURE__ */ new Set())), __runInitializers(_init86, 23, this);
178820
- __privateAdd(this, _customText, __runInitializers(_init86, 24, this, "")), __runInitializers(_init86, 27, this);
178988
+ __privateAdd(this, _viewState5, __runInitializers(_init86, 16, this)), __runInitializers(_init86, 19, this);
178989
+ __privateAdd(this, _suppressEntry3, __runInitializers(_init86, 20, this, false)), __runInitializers(_init86, 23, this);
178990
+ __privateAdd(this, _answered2, __runInitializers(_init86, 24, this)), __runInitializers(_init86, 27, this);
178991
+ __privateAdd(this, _selected2, __runInitializers(_init86, 28, this, /* @__PURE__ */ new Set())), __runInitializers(_init86, 31, this);
178992
+ __privateAdd(this, _customText, __runInitializers(_init86, 32, this, "")), __runInitializers(_init86, 35, this);
178821
178993
  }
178822
178994
  get effectiveResponse() {
178823
- return this.request.response ?? this.answered;
178995
+ return this.request.response ?? this.answered ?? this.viewState?.answered;
178996
+ }
178997
+ get effectiveSelected() {
178998
+ return this.selected.size > 0 ? this.selected : new Set(this.viewState?.selected ?? []);
178999
+ }
179000
+ get effectiveCustomText() {
179001
+ return this.customText || this.viewState?.customText || "";
178824
179002
  }
178825
179003
  render() {
178826
179004
  const request = this.request;
@@ -178842,7 +179020,7 @@ var _DeesHarnessQuestionCard = class _DeesHarnessQuestionCard extends (_a85 = De
178842
179020
  <div class="options" role=${request.multiSelect ? "group" : "radiogroup"}>
178843
179021
  ${request.options.map((option2) => b2`
178844
179022
  <button
178845
- class="option ${this.selected.has(option2.label) ? "selected" : ""}"
179023
+ class="option ${this.effectiveSelected.has(option2.label) ? "selected" : ""}"
178846
179024
  type="button"
178847
179025
  ?disabled=${disabled}
178848
179026
  @click=${() => this.handleOptionClick(option2.label)}
@@ -178857,23 +179035,24 @@ var _DeesHarnessQuestionCard = class _DeesHarnessQuestionCard extends (_a85 = De
178857
179035
  <div class="customRow">
178858
179036
  <input
178859
179037
  placeholder="Answer in your own words…"
178860
- .value=${this.customText}
179038
+ .value=${this.effectiveCustomText}
178861
179039
  ?disabled=${disabled}
178862
179040
  @input=${(event) => {
178863
179041
  this.customText = event.currentTarget.value;
179042
+ if (this.viewState) this.viewState.customText = this.customText;
178864
179043
  }}
178865
179044
  @keydown=${(event) => {
178866
- if (event.key === "Enter" && this.customText.trim()) {
178867
- this.respond([...this.selected, this.customText.trim()]);
179045
+ if (event.key === "Enter" && this.effectiveCustomText.trim()) {
179046
+ this.respond([...this.effectiveSelected, this.effectiveCustomText.trim()]);
178868
179047
  }
178869
179048
  }}
178870
179049
  />
178871
179050
  <dees-button
178872
179051
  size="sm"
178873
- ?disabled=${disabled || !this.customText.trim() && !this.selected.size}
179052
+ ?disabled=${disabled || !this.effectiveCustomText.trim() && !this.effectiveSelected.size}
178874
179053
  @clicked=${() => {
178875
- const answers = [...this.selected];
178876
- if (this.customText.trim()) answers.push(this.customText.trim());
179054
+ const answers = [...this.effectiveSelected];
179055
+ if (this.effectiveCustomText.trim()) answers.push(this.effectiveCustomText.trim());
178877
179056
  this.respond(answers);
178878
179057
  }}
178879
179058
  >Send Answer</dees-button>
@@ -178884,8 +179063,8 @@ var _DeesHarnessQuestionCard = class _DeesHarnessQuestionCard extends (_a85 = De
178884
179063
  <dees-button
178885
179064
  type="accent"
178886
179065
  size="sm"
178887
- ?disabled=${disabled || !this.selected.size}
178888
- @clicked=${() => this.respond([...this.selected])}
179066
+ ?disabled=${disabled || !this.effectiveSelected.size}
179067
+ @clicked=${() => this.respond([...this.effectiveSelected])}
178889
179068
  >Confirm</dees-button>
178890
179069
  </div>
178891
179070
  ` : ""}
@@ -178896,10 +179075,11 @@ var _DeesHarnessQuestionCard = class _DeesHarnessQuestionCard extends (_a85 = De
178896
179075
  handleOptionClick(label) {
178897
179076
  if (this.busy || this.effectiveResponse !== void 0) return;
178898
179077
  if (this.request.multiSelect) {
178899
- const next2 = new Set(this.selected);
179078
+ const next2 = new Set(this.effectiveSelected);
178900
179079
  if (next2.has(label)) next2.delete(label);
178901
179080
  else next2.add(label);
178902
179081
  this.selected = next2;
179082
+ if (this.viewState) this.viewState.selected = [...next2];
178903
179083
  return;
178904
179084
  }
178905
179085
  this.respond([label]);
@@ -178907,6 +179087,7 @@ var _DeesHarnessQuestionCard = class _DeesHarnessQuestionCard extends (_a85 = De
178907
179087
  respond(answers) {
178908
179088
  if (this.busy || this.effectiveResponse !== void 0 || !answers.length) return;
178909
179089
  this.answered = answers;
179090
+ if (this.viewState) this.viewState.answered = answers;
178910
179091
  this.dispatchEvent(
178911
179092
  new CustomEvent("harness-question-response", {
178912
179093
  detail: {
@@ -178919,15 +179100,23 @@ var _DeesHarnessQuestionCard = class _DeesHarnessQuestionCard extends (_a85 = De
178919
179100
  })
178920
179101
  );
178921
179102
  }
179103
+ firstUpdated(changedPropertiesArg) {
179104
+ super.firstUpdated(changedPropertiesArg);
179105
+ if (this.suppressEntry) this.classList.add("no-entry");
179106
+ }
178922
179107
  };
178923
179108
  _init86 = __decoratorStart(_a85);
178924
179109
  _request2 = new WeakMap();
178925
179110
  _busy2 = new WeakMap();
179111
+ _viewState5 = new WeakMap();
179112
+ _suppressEntry3 = new WeakMap();
178926
179113
  _answered2 = new WeakMap();
178927
179114
  _selected2 = new WeakMap();
178928
179115
  _customText = new WeakMap();
178929
179116
  __decorateElement(_init86, 4, "request", _request_dec2, _DeesHarnessQuestionCard, _request2);
178930
179117
  __decorateElement(_init86, 4, "busy", _busy_dec2, _DeesHarnessQuestionCard, _busy2);
179118
+ __decorateElement(_init86, 4, "viewState", _viewState_dec5, _DeesHarnessQuestionCard, _viewState5);
179119
+ __decorateElement(_init86, 4, "suppressEntry", _suppressEntry_dec3, _DeesHarnessQuestionCard, _suppressEntry3);
178931
179120
  __decorateElement(_init86, 4, "answered", _answered_dec2, _DeesHarnessQuestionCard, _answered2);
178932
179121
  __decorateElement(_init86, 4, "selected", _selected_dec2, _DeesHarnessQuestionCard, _selected2);
178933
179122
  __decorateElement(_init86, 4, "customText", _customText_dec, _DeesHarnessQuestionCard, _customText);
@@ -178955,6 +179144,10 @@ __publicField(_DeesHarnessQuestionCard, "styles", [
178955
179144
  }
178956
179145
  }
178957
179146
 
179147
+ :host(.no-entry) {
179148
+ animation: none;
179149
+ }
179150
+
178958
179151
  @media (prefers-reduced-motion: reduce) {
178959
179152
  :host {
178960
179153
  animation: none;
@@ -179096,11 +179289,15 @@ var DeesHarnessQuestionCard = _DeesHarnessQuestionCard;
179096
179289
  init_dist_ts26();
179097
179290
  init_theme();
179098
179291
  init_dees_icon();
179099
- var _scrollFadeBottom_dec, _scrollFadeTop_dec, _entryAnimationsEnabled_dec, _showJumpChip_dec, _emptyText_dec, _emptyTitle_dec, _showTimestamps_dec, _showRoles_dec, _allowSubtaskStreams_dec3, _toolRegistry_dec4, _fadeScrollEdges_dec, _hideScrollbar_dec, _autoFollow_dec, _questions_dec, _permissionsBusy_dec, _permissions_dec, _status_dec5, _messages_dec, _a86, _DeesHarnessMessageList_decorators, _init87, _messages, _status5, _permissions, _permissionsBusy, _questions, _autoFollow, _hideScrollbar, _fadeScrollEdges, _toolRegistry4, _allowSubtaskStreams3, _showRoles, _showTimestamps, _emptyTitle, _emptyText, _showJumpChip, _entryAnimationsEnabled, _scrollFadeTop, _scrollFadeBottom;
179292
+ var _scrollFadeBottom_dec, _scrollFadeTop_dec, _entryAnimationsEnabled_dec, _showJumpChip_dec, _emptyText_dec, _emptyTitle_dec, _showTimestamps_dec, _showRoles_dec, _allowSubtaskStreams_dec3, _viewState_dec6, _toolRegistry_dec4, _fadeScrollEdges_dec, _hideScrollbar_dec, _autoFollow_dec, _questions_dec, _permissionsBusy_dec, _permissions_dec, _status_dec5, _messages_dec, _a86, _DeesHarnessMessageList_decorators, _init87, _messages, _status5, _permissions, _permissionsBusy, _questions, _autoFollow, _hideScrollbar, _fadeScrollEdges, _toolRegistry4, _viewState6, _allowSubtaskStreams3, _showRoles, _showTimestamps, _emptyTitle, _emptyText, _showJumpChip, _entryAnimationsEnabled, _scrollFadeTop, _scrollFadeBottom;
179100
179293
  var { repeat: repeat4 } = directives_exports;
179101
179294
  var pinThresholdPx = 48;
179295
+ var virtualizationThreshold = 40;
179296
+ var virtualOverscanPx = 800;
179297
+ var virtualGapPx = 8;
179298
+ var maximumToolMessagesPerGroup = 4;
179102
179299
  _DeesHarnessMessageList_decorators = [customElement("dees-harness-message-list")];
179103
- var _DeesHarnessMessageList = class _DeesHarnessMessageList extends (_a86 = DeesElement, _messages_dec = [n5({ attribute: false })], _status_dec5 = [n5({ attribute: false })], _permissions_dec = [n5({ attribute: false })], _permissionsBusy_dec = [n5({ type: Boolean })], _questions_dec = [n5({ attribute: false })], _autoFollow_dec = [n5({ type: Boolean })], _hideScrollbar_dec = [n5({ type: Boolean })], _fadeScrollEdges_dec = [n5({ type: Boolean })], _toolRegistry_dec4 = [n5({ attribute: false })], _allowSubtaskStreams_dec3 = [n5({ type: Boolean })], _showRoles_dec = [n5({ type: Boolean })], _showTimestamps_dec = [n5({ type: Boolean })], _emptyTitle_dec = [n5()], _emptyText_dec = [n5()], _showJumpChip_dec = [r5()], _entryAnimationsEnabled_dec = [r5()], _scrollFadeTop_dec = [r5()], _scrollFadeBottom_dec = [r5()], _a86) {
179300
+ var _DeesHarnessMessageList = class _DeesHarnessMessageList extends (_a86 = DeesElement, _messages_dec = [n5({ attribute: false })], _status_dec5 = [n5({ attribute: false })], _permissions_dec = [n5({ attribute: false })], _permissionsBusy_dec = [n5({ type: Boolean })], _questions_dec = [n5({ attribute: false })], _autoFollow_dec = [n5({ type: Boolean })], _hideScrollbar_dec = [n5({ type: Boolean })], _fadeScrollEdges_dec = [n5({ type: Boolean })], _toolRegistry_dec4 = [n5({ attribute: false })], _viewState_dec6 = [n5({ attribute: false })], _allowSubtaskStreams_dec3 = [n5({ type: Boolean })], _showRoles_dec = [n5({ type: Boolean })], _showTimestamps_dec = [n5({ type: Boolean })], _emptyTitle_dec = [n5()], _emptyText_dec = [n5()], _showJumpChip_dec = [r5()], _entryAnimationsEnabled_dec = [r5()], _scrollFadeTop_dec = [r5()], _scrollFadeBottom_dec = [r5()], _a86) {
179104
179301
  constructor() {
179105
179302
  super(...arguments);
179106
179303
  __privateAdd(this, _messages, __runInitializers(_init87, 8, this, [])), __runInitializers(_init87, 11, this);
@@ -179112,18 +179309,54 @@ var _DeesHarnessMessageList = class _DeesHarnessMessageList extends (_a86 = Dees
179112
179309
  __privateAdd(this, _hideScrollbar, __runInitializers(_init87, 32, this, false)), __runInitializers(_init87, 35, this);
179113
179310
  __privateAdd(this, _fadeScrollEdges, __runInitializers(_init87, 36, this, false)), __runInitializers(_init87, 39, this);
179114
179311
  __privateAdd(this, _toolRegistry4, __runInitializers(_init87, 40, this, DeesHarnessToolRegistry.default)), __runInitializers(_init87, 43, this);
179115
- __privateAdd(this, _allowSubtaskStreams3, __runInitializers(_init87, 44, this, true)), __runInitializers(_init87, 47, this);
179116
- __privateAdd(this, _showRoles, __runInitializers(_init87, 48, this, true)), __runInitializers(_init87, 51, this);
179117
- __privateAdd(this, _showTimestamps, __runInitializers(_init87, 52, this, false)), __runInitializers(_init87, 55, this);
179118
- __privateAdd(this, _emptyTitle, __runInitializers(_init87, 56, this, "No messages yet")), __runInitializers(_init87, 59, this);
179119
- __privateAdd(this, _emptyText, __runInitializers(_init87, 60, this, "Start a conversation to see it here.")), __runInitializers(_init87, 63, this);
179120
- __privateAdd(this, _showJumpChip, __runInitializers(_init87, 64, this, false)), __runInitializers(_init87, 67, this);
179121
- __privateAdd(this, _entryAnimationsEnabled, __runInitializers(_init87, 68, this, false)), __runInitializers(_init87, 71, this);
179122
- __privateAdd(this, _scrollFadeTop, __runInitializers(_init87, 72, this, false)), __runInitializers(_init87, 75, this);
179123
- __privateAdd(this, _scrollFadeBottom, __runInitializers(_init87, 76, this, false)), __runInitializers(_init87, 79, this);
179312
+ __privateAdd(this, _viewState6, __runInitializers(_init87, 44, this)), __runInitializers(_init87, 47, this);
179313
+ __privateAdd(this, _allowSubtaskStreams3, __runInitializers(_init87, 48, this, true)), __runInitializers(_init87, 51, this);
179314
+ __privateAdd(this, _showRoles, __runInitializers(_init87, 52, this, true)), __runInitializers(_init87, 55, this);
179315
+ __privateAdd(this, _showTimestamps, __runInitializers(_init87, 56, this, false)), __runInitializers(_init87, 59, this);
179316
+ __privateAdd(this, _emptyTitle, __runInitializers(_init87, 60, this, "No messages yet")), __runInitializers(_init87, 63, this);
179317
+ __privateAdd(this, _emptyText, __runInitializers(_init87, 64, this, "Start a conversation to see it here.")), __runInitializers(_init87, 67, this);
179318
+ __privateAdd(this, _showJumpChip, __runInitializers(_init87, 68, this, false)), __runInitializers(_init87, 71, this);
179319
+ __privateAdd(this, _entryAnimationsEnabled, __runInitializers(_init87, 72, this, false)), __runInitializers(_init87, 75, this);
179320
+ __privateAdd(this, _scrollFadeTop, __runInitializers(_init87, 76, this, false)), __runInitializers(_init87, 79, this);
179321
+ __privateAdd(this, _scrollFadeBottom, __runInitializers(_init87, 80, this, false)), __runInitializers(_init87, 83, this);
179124
179322
  __publicField(this, "toolGroupIdByMessageId", /* @__PURE__ */ new Map());
179125
179323
  __publicField(this, "nextToolGroupId", 1);
179126
179324
  __publicField(this, "timelineRenderItems", []);
179325
+ __publicField(this, "timelineRegistryRevision", -1);
179326
+ __publicField(this, "knownContentKeys", /* @__PURE__ */ new Set());
179327
+ __publicField(this, "currentNewContentKeys", /* @__PURE__ */ new Set());
179328
+ __publicField(this, "localViewState", {
179329
+ messages: {},
179330
+ permissions: {},
179331
+ questions: {}
179332
+ });
179333
+ __publicField(this, "measuredVirtualHeights", /* @__PURE__ */ new Map());
179334
+ __publicField(this, "timelineIndexByKey", /* @__PURE__ */ new Map());
179335
+ __publicField(this, "virtualOffsets", []);
179336
+ __publicField(this, "virtualTotalHeight", 0);
179337
+ __publicField(this, "virtualStartIndex", 0);
179338
+ __publicField(this, "virtualEndIndex", 0);
179339
+ __publicField(this, "retainedVirtualKeys", /* @__PURE__ */ new Set());
179340
+ __publicField(this, "selectionGestureKeys", /* @__PURE__ */ new Set());
179341
+ __publicField(this, "selectionGestureActive", false);
179342
+ __publicField(this, "selectionGestureStartOwner");
179343
+ __publicField(this, "selectionGestureCrossesOwners", false);
179344
+ __publicField(this, "selectionGestureSnapshot");
179345
+ __publicField(this, "explicitRetainedVirtualKey");
179346
+ __publicField(this, "virtualRowResizeObserver", null);
179347
+ __publicField(this, "virtualViewportResizeObserver", null);
179348
+ __publicField(this, "virtualMeasureFrame", null);
179349
+ __publicField(this, "virtualRangeFrame", null);
179350
+ __publicField(this, "lastVirtualViewportWidth", 0);
179351
+ __publicField(this, "pendingVirtualAnchor");
179352
+ __publicField(this, "pendingFullAnchor");
179353
+ __publicField(this, "measurementAnchor");
179354
+ __publicField(this, "pendingVirtualRepin", false);
179355
+ __publicField(this, "virtualizationEnabled", false);
179356
+ __publicField(this, "virtualizationEnablePending", false);
179357
+ __publicField(this, "virtualizationDisablePending", false);
179358
+ __publicField(this, "virtualizationActivationFrame", null);
179359
+ __publicField(this, "selectionChangeListening", false);
179127
179360
  __publicField(this, "contentResizeObserver", null);
179128
179361
  __publicField(this, "observedScrollContent", null);
179129
179362
  __publicField(this, "observedContentBlockSize", null);
@@ -179154,6 +179387,7 @@ var _DeesHarnessMessageList = class _DeesHarnessMessageList extends (_a86 = Dees
179154
179387
  if (event.type === "keydown" && !["ArrowUp", "PageUp", "Home"].includes(event.key)) return;
179155
179388
  if (event.type === "pointerdown" && event.target !== this.scrollContainer) return;
179156
179389
  this.userUnpinned = true;
179390
+ this.measurementAnchor = void 0;
179157
179391
  }, "handleUserScrollIntent"));
179158
179392
  __publicField(this, "handleScroll", /* @__PURE__ */ __name(() => {
179159
179393
  const container = this.scrollContainer;
@@ -179167,7 +179401,58 @@ var _DeesHarnessMessageList = class _DeesHarnessMessageList extends (_a86 = Dees
179167
179401
  }
179168
179402
  }
179169
179403
  this.lastObservedScrollTop = top;
179404
+ this.scheduleVirtualRangeUpdate();
179405
+ this.schedulePendingVirtualizationActivation();
179170
179406
  }, "handleScroll"));
179407
+ __publicField(this, "handleSelectionChange", /* @__PURE__ */ __name(() => {
179408
+ const selection = document.getSelection();
179409
+ if (!selection || selection.rangeCount === 0 || !this.selectionGestureActive && this.selectionGestureSnapshot && !this.selectionMatchesGestureSnapshot(selection) || !this.selectionGestureActive && selection.isCollapsed && !this.hasCrossShadowSelectionFallback) this.clearSelectionGesture();
179410
+ this.scheduleVirtualRangeUpdate();
179411
+ this.schedulePendingVirtualizationActivation();
179412
+ }, "handleSelectionChange"));
179413
+ __publicField(this, "handlePointerDown", /* @__PURE__ */ __name((eventArg) => {
179414
+ this.handleUserScrollIntent(eventArg);
179415
+ if (eventArg.button !== 0) return;
179416
+ this.clearSelectionGesture();
179417
+ this.selectionGestureActive = true;
179418
+ this.selectionGestureStartOwner = this.selectionOwnerForEvent(eventArg);
179419
+ const key2 = this.timelineKeyForEvent(eventArg);
179420
+ if (key2) this.selectionGestureKeys.add(key2);
179421
+ }, "handlePointerDown"));
179422
+ __publicField(this, "handlePointerUp", /* @__PURE__ */ __name((eventArg) => {
179423
+ if (eventArg.button !== 0) return;
179424
+ const key2 = this.timelineKeyForEvent(eventArg);
179425
+ if (key2) this.selectionGestureKeys.add(key2);
179426
+ const endOwner = this.selectionOwnerForEvent(eventArg);
179427
+ this.selectionGestureCrossesOwners = Boolean(
179428
+ this.selectionGestureStartOwner && endOwner && this.selectionGestureStartOwner !== endOwner
179429
+ );
179430
+ this.selectionGestureActive = false;
179431
+ this.selectionGestureSnapshot = this.captureSelectionSnapshot(document.getSelection());
179432
+ if (!this.hasCrossShadowSelectionFallback && document.getSelection()?.isCollapsed !== false) {
179433
+ this.clearSelectionGesture();
179434
+ }
179435
+ this.handleProtectedStateChange();
179436
+ }, "handlePointerUp"));
179437
+ __publicField(this, "handlePointerCancel", /* @__PURE__ */ __name(() => {
179438
+ this.clearSelectionGesture();
179439
+ this.handleProtectedStateChange();
179440
+ }, "handlePointerCancel"));
179441
+ __publicField(this, "handleProtectedStateChange", /* @__PURE__ */ __name(() => {
179442
+ this.scheduleVirtualRangeUpdate();
179443
+ this.schedulePendingVirtualizationActivation();
179444
+ }, "handleProtectedStateChange"));
179445
+ __publicField(this, "handleCardRetention", /* @__PURE__ */ __name((eventArg) => {
179446
+ const pathElements = eventArg.composedPath().filter((candidate) => candidate instanceof HTMLElement);
179447
+ const row = pathElements.map((candidate) => this.ownedVirtualRow(candidate)).find((candidate) => candidate !== void 0);
179448
+ const timelineElement = pathElements.map((candidate) => this.ownedTimelineElement(candidate)).find((candidate) => candidate !== void 0);
179449
+ const key2 = row?.dataset.virtualKey ?? timelineElement?.dataset.timelineKey;
179450
+ if (eventArg.detail?.active === true && key2) this.explicitRetainedVirtualKey = key2;
179451
+ else if (!key2 || this.explicitRetainedVirtualKey === key2) this.explicitRetainedVirtualKey = void 0;
179452
+ this.retainedVirtualKeys = new Set(this.activeVirtualKeys());
179453
+ this.scheduleVirtualRangeUpdate();
179454
+ this.schedulePendingVirtualizationActivation();
179455
+ }, "handleCardRetention"));
179171
179456
  }
179172
179457
  /** Messages and requests merged chronologically (stable ids as keys). */
179173
179458
  get timelineItems() {
@@ -179243,20 +179528,211 @@ var _DeesHarnessMessageList = class _DeesHarnessMessageList extends (_a86 = Dees
179243
179528
  }
179244
179529
  willUpdate(changedProperties) {
179245
179530
  super.willUpdate(changedProperties);
179246
- this.timelineRenderItems = this.buildTimelineRenderItems();
179531
+ if (changedProperties.has("viewState") && this.viewState) {
179532
+ this.clearTranscriptViewState(this.localViewState);
179533
+ }
179534
+ const registryChanged = this.timelineRegistryRevision !== this.toolRegistry.revision;
179535
+ if (this.timelineRegistryRevision < 0 || changedProperties.has("messages") || changedProperties.has("permissions") || changedProperties.has("questions") || changedProperties.has("toolRegistry") || changedProperties.has("viewState") || registryChanged) {
179536
+ this.rebuildTimeline();
179537
+ }
179247
179538
  }
179248
179539
  appendToolRun(targetArg, runArg, layoutArg, usedGroupIdsArg) {
179249
- const groupId = runArg.map((item) => this.toolGroupIdByMessageId.get(item.message.id)).find((candidate) => candidate !== void 0 && !usedGroupIdsArg.has(candidate)) ?? `tool-group-${this.nextToolGroupId++}`;
179250
- usedGroupIdsArg.add(groupId);
179251
- for (const item of runArg) {
179252
- this.toolGroupIdByMessageId.set(item.message.id, groupId);
179253
- }
179254
- targetArg.push({
179255
- kind: "tool-group",
179256
- key: groupId,
179257
- layout: layoutArg,
179258
- messages: runArg
179259
- });
179540
+ for (let offset = 0; offset < runArg.length; offset += maximumToolMessagesPerGroup) {
179541
+ const messages = runArg.slice(offset, offset + maximumToolMessagesPerGroup);
179542
+ const groupId = messages.map((item) => this.toolGroupIdByMessageId.get(item.message.id)).find((candidate) => candidate !== void 0 && !usedGroupIdsArg.has(candidate)) ?? `tool-group-${this.nextToolGroupId++}`;
179543
+ usedGroupIdsArg.add(groupId);
179544
+ for (const item of messages) {
179545
+ this.toolGroupIdByMessageId.set(item.message.id, groupId);
179546
+ }
179547
+ targetArg.push({
179548
+ kind: "tool-group",
179549
+ key: groupId,
179550
+ layout: layoutArg,
179551
+ messages
179552
+ });
179553
+ }
179554
+ }
179555
+ rebuildTimeline() {
179556
+ const container = this.scrollContainer;
179557
+ const preserveAnchor = this.userUnpinned || !this.autoFollow;
179558
+ const anchor = container && preserveAnchor ? this.captureCurrentAnchor(container) : void 0;
179559
+ const nextItems = this.buildTimelineRenderItems();
179560
+ const retainedKeys = new Set(nextItems.map((item) => item.key));
179561
+ const contentKeys = [
179562
+ ...this.messages.map((message2) => `message:${message2.id}`),
179563
+ ...this.permissions.map((request) => `permission:${request.id}`),
179564
+ ...this.questions.map((request) => `question:${request.id}`)
179565
+ ];
179566
+ this.currentNewContentKeys = new Set(
179567
+ contentKeys.filter((key2) => !this.knownContentKeys.has(key2))
179568
+ );
179569
+ this.knownContentKeys.clear();
179570
+ for (const key2 of contentKeys) this.knownContentKeys.add(key2);
179571
+ for (const key2 of this.measuredVirtualHeights.keys()) {
179572
+ if (!retainedKeys.has(key2)) this.measuredVirtualHeights.delete(key2);
179573
+ }
179574
+ if (this.explicitRetainedVirtualKey && !retainedKeys.has(this.explicitRetainedVirtualKey)) {
179575
+ this.explicitRetainedVirtualKey = void 0;
179576
+ }
179577
+ for (const key2 of this.retainedVirtualKeys) {
179578
+ if (!retainedKeys.has(key2)) this.retainedVirtualKeys.delete(key2);
179579
+ }
179580
+ const messageIds = new Set(this.messages.map((message2) => message2.id));
179581
+ const permissionIds = new Set(this.permissions.map((request) => request.id));
179582
+ const questionIds = new Set(this.questions.map((request) => request.id));
179583
+ const effectiveViewState = this.effectiveViewState;
179584
+ for (const key2 of Object.keys(effectiveViewState.messages)) {
179585
+ if (!messageIds.has(key2)) delete effectiveViewState.messages[key2];
179586
+ }
179587
+ for (const key2 of Object.keys(effectiveViewState.permissions)) {
179588
+ if (!permissionIds.has(key2)) delete effectiveViewState.permissions[key2];
179589
+ }
179590
+ for (const key2 of Object.keys(effectiveViewState.questions)) {
179591
+ if (!questionIds.has(key2)) delete effectiveViewState.questions[key2];
179592
+ }
179593
+ for (const message2 of this.messages) effectiveViewState.messages[message2.id] ??= {};
179594
+ for (const request of this.permissions) effectiveViewState.permissions[request.id] ??= {};
179595
+ for (const request of this.questions) effectiveViewState.questions[request.id] ??= {};
179596
+ for (const message2 of this.messages) this.syncSubtaskViewState(message2);
179597
+ this.timelineRenderItems = nextItems;
179598
+ this.timelineIndexByKey = new Map(nextItems.map((item, index3) => [item.key, index3]));
179599
+ this.timelineRegistryRevision = this.toolRegistry.revision;
179600
+ const shouldVirtualize = contentKeys.length > virtualizationThreshold;
179601
+ if (!this.virtualizationEnabled && shouldVirtualize) {
179602
+ this.virtualizationDisablePending = false;
179603
+ if (this.activeTimelineKey()) {
179604
+ this.virtualizationEnablePending = true;
179605
+ this.connectSelectionChangeListener();
179606
+ } else {
179607
+ this.captureFullTimelineMeasurements();
179608
+ this.virtualizationEnabled = true;
179609
+ this.virtualizationEnablePending = false;
179610
+ this.disconnectSelectionChangeListener();
179611
+ }
179612
+ } else if (this.virtualizationEnabled && !shouldVirtualize) {
179613
+ this.virtualizationEnablePending = false;
179614
+ if (this.activeTimelineKey()) {
179615
+ this.virtualizationDisablePending = true;
179616
+ this.connectSelectionChangeListener();
179617
+ } else {
179618
+ this.virtualizationEnabled = false;
179619
+ this.virtualizationDisablePending = false;
179620
+ this.retainedVirtualKeys.clear();
179621
+ this.disconnectSelectionChangeListener();
179622
+ }
179623
+ } else {
179624
+ this.virtualizationEnablePending = false;
179625
+ this.virtualizationDisablePending = false;
179626
+ if (this.activeSelectionKeys().length === 0) this.disconnectSelectionChangeListener();
179627
+ }
179628
+ this.recomputeVirtualOffsets();
179629
+ if (anchor && container) {
179630
+ if (this.virtualizationActive) {
179631
+ this.pendingVirtualAnchor = anchor;
179632
+ this.measurementAnchor = anchor;
179633
+ this.setVirtualRangeAround(anchor.key);
179634
+ } else {
179635
+ this.pendingVirtualAnchor = void 0;
179636
+ this.pendingFullAnchor = anchor;
179637
+ this.setInitialVirtualRange();
179638
+ }
179639
+ } else {
179640
+ this.measurementAnchor = void 0;
179641
+ this.setInitialVirtualRange();
179642
+ }
179643
+ }
179644
+ pruneViewState(stateArg, messageIdsArg, permissionIdsArg, questionIdsArg) {
179645
+ const messageIds = new Set(messageIdsArg);
179646
+ const permissionIds = new Set(permissionIdsArg);
179647
+ const questionIds = new Set(questionIdsArg);
179648
+ for (const key2 of Object.keys(stateArg.messages)) if (!messageIds.has(key2)) delete stateArg.messages[key2];
179649
+ for (const key2 of Object.keys(stateArg.permissions)) if (!permissionIds.has(key2)) delete stateArg.permissions[key2];
179650
+ for (const key2 of Object.keys(stateArg.questions)) if (!questionIds.has(key2)) delete stateArg.questions[key2];
179651
+ }
179652
+ clearTranscriptViewState(stateArg) {
179653
+ for (const key2 of Object.keys(stateArg.messages)) delete stateArg.messages[key2];
179654
+ for (const key2 of Object.keys(stateArg.permissions)) delete stateArg.permissions[key2];
179655
+ for (const key2 of Object.keys(stateArg.questions)) delete stateArg.questions[key2];
179656
+ }
179657
+ syncSubtaskViewState(messageArg) {
179658
+ const messageState = this.effectiveViewState.messages[messageArg.id];
179659
+ if (!messageState) return;
179660
+ const subtask = messageArg.toolCall?.subtask;
179661
+ if (!this.allowSubtaskStreams || !subtask || subtask.previewState !== "ready" || subtask.status.type !== "busy") {
179662
+ delete messageState.subtaskTranscript;
179663
+ delete messageState.subtaskTranscriptSessionId;
179664
+ return;
179665
+ }
179666
+ if (messageState.subtaskTranscriptSessionId !== subtask.sessionId || !messageState.subtaskTranscript) {
179667
+ messageState.subtaskTranscriptSessionId = subtask.sessionId;
179668
+ messageState.subtaskTranscript = { messages: {}, permissions: {}, questions: {} };
179669
+ }
179670
+ this.pruneViewState(
179671
+ messageState.subtaskTranscript,
179672
+ subtask.messages.map((entry) => entry.id),
179673
+ (subtask.permissions ?? []).map((entry) => entry.id),
179674
+ (subtask.questions ?? []).map((entry) => entry.id)
179675
+ );
179676
+ }
179677
+ get virtualizationActive() {
179678
+ return this.virtualizationEnabled;
179679
+ }
179680
+ estimatedVirtualHeight(itemArg) {
179681
+ if (itemArg.kind === "permission") return 150;
179682
+ if (itemArg.kind === "question") return 180;
179683
+ if (itemArg.kind === "tool-group") {
179684
+ if (itemArg.layout === "subtask") return 320;
179685
+ return itemArg.layout === "full-row" ? 120 * itemArg.messages.length : 110;
179686
+ }
179687
+ if (itemArg.message.reasoning?.some((part) => !part.endedAt)) return 220;
179688
+ return itemArg.message.text.length > 1e3 ? 180 : 96;
179689
+ }
179690
+ recomputeVirtualOffsets() {
179691
+ const offsets = [];
179692
+ let offset = 0;
179693
+ for (const item of this.timelineRenderItems) {
179694
+ offsets.push(offset);
179695
+ offset += this.measuredVirtualHeights.get(item.key) ?? this.estimatedVirtualHeight(item);
179696
+ offset += virtualGapPx;
179697
+ }
179698
+ this.virtualOffsets = offsets;
179699
+ this.virtualTotalHeight = Math.max(0, offset - virtualGapPx);
179700
+ }
179701
+ setInitialVirtualRange() {
179702
+ if (!this.virtualizationActive) {
179703
+ this.virtualStartIndex = 0;
179704
+ this.virtualEndIndex = this.timelineRenderItems.length;
179705
+ return;
179706
+ }
179707
+ const initialCount = Math.min(this.timelineRenderItems.length, 24);
179708
+ this.virtualEndIndex = this.autoFollow ? this.timelineRenderItems.length : initialCount;
179709
+ this.virtualStartIndex = this.autoFollow ? this.virtualEndIndex - initialCount : 0;
179710
+ }
179711
+ setVirtualRangeAround(keyArg) {
179712
+ const anchorIndex = this.timelineIndexByKey.get(keyArg);
179713
+ if (anchorIndex === void 0) {
179714
+ this.setInitialVirtualRange();
179715
+ return;
179716
+ }
179717
+ this.virtualStartIndex = Math.max(0, anchorIndex - 12);
179718
+ this.virtualEndIndex = Math.min(this.timelineRenderItems.length, anchorIndex + 13);
179719
+ }
179720
+ captureFullTimelineMeasurements() {
179721
+ for (const element4 of this.shadowRoot?.querySelectorAll(".stack > [data-timeline-key]") ?? []) {
179722
+ const key2 = element4.dataset.timelineKey;
179723
+ const height = element4?.getBoundingClientRect().height ?? 0;
179724
+ if (key2 && height > 0) this.measuredVirtualHeights.set(key2, height);
179725
+ }
179726
+ }
179727
+ captureCurrentAnchor(containerArg) {
179728
+ if (this.virtualizationActive) return this.captureVirtualAnchor(containerArg);
179729
+ const containerTop = containerArg.getBoundingClientRect().top;
179730
+ const itemElements = Array.from(
179731
+ this.shadowRoot?.querySelectorAll(".stack > [data-timeline-key]") ?? []
179732
+ );
179733
+ const element4 = itemElements.find((candidate) => candidate.getBoundingClientRect().bottom > containerTop);
179734
+ const key2 = element4?.dataset.timelineKey;
179735
+ return key2 ? { key: key2, offset: containerTop - element4.getBoundingClientRect().top } : void 0;
179260
179736
  }
179261
179737
  render() {
179262
179738
  const items = this.timelineRenderItems;
@@ -179266,30 +179742,17 @@ var _DeesHarnessMessageList = class _DeesHarnessMessageList extends (_a86 = Dees
179266
179742
  @scroll=${this.handleScroll}
179267
179743
  @wheel=${this.handleUserScrollIntent}
179268
179744
  @touchmove=${this.handleUserScrollIntent}
179269
- @pointerdown=${this.handleUserScrollIntent}
179745
+ @pointerdown=${this.handlePointerDown}
179746
+ @pointerup=${this.handlePointerUp}
179747
+ @pointercancel=${this.handlePointerCancel}
179270
179748
  @keydown=${this.handleUserScrollIntent}
179749
+ @keyup=${this.handleProtectedStateChange}
179750
+ @focusout=${this.handleProtectedStateChange}
179751
+ @harness-card-retention=${this.handleCardRetention}
179271
179752
  >
179272
179753
  <div class="scrollContent">
179273
179754
  <slot name="leading"></slot>
179274
- ${items.length ? b2`
179275
- <div class="stack">
179276
- ${repeat4(
179277
- items,
179278
- (item) => item.key,
179279
- (item) => item.kind === "tool-group" ? this.renderToolGroup(item) : item.kind === "message" ? this.renderMessage(item) : item.kind === "permission" ? b2`
179280
- <dees-harness-permission-card
179281
- .request=${item.request}
179282
- .busy=${this.permissionsBusy}
179283
- ></dees-harness-permission-card>
179284
- ` : b2`
179285
- <dees-harness-question-card
179286
- .request=${item.question}
179287
- .busy=${this.permissionsBusy}
179288
- ></dees-harness-question-card>
179289
- `
179290
- )}
179291
- </div>
179292
- ` : b2`
179755
+ ${items.length ? this.virtualizationActive ? this.renderVirtualTimeline() : this.renderFullTimeline(items) : b2`
179293
179756
  <div class="empty">
179294
179757
  <slot name="empty">
179295
179758
  <div class="emptyTitle">${this.emptyTitle}</div>
@@ -179310,9 +179773,90 @@ var _DeesHarnessMessageList = class _DeesHarnessMessageList extends (_a86 = Dees
179310
179773
  ` : ""}
179311
179774
  `;
179312
179775
  }
179313
- renderMessage(itemArg) {
179776
+ renderFullTimeline(itemsArg) {
179777
+ return b2`
179778
+ <div class="stack" role="log" aria-label="Conversation transcript">
179779
+ ${repeat4(
179780
+ itemsArg,
179781
+ (item) => item.key,
179782
+ (item, index3) => this.renderTimelineItem(item, index3)
179783
+ )}
179784
+ </div>
179785
+ `;
179786
+ }
179787
+ renderVirtualTimeline() {
179788
+ const indexedItems = this.virtualRenderedIndexes().map((index3) => ({
179789
+ index: index3,
179790
+ item: this.timelineRenderItems[index3]
179791
+ }));
179792
+ return b2`
179793
+ <div
179794
+ class="virtualStack"
179795
+ role="log"
179796
+ aria-label="Conversation transcript"
179797
+ style=${`height: ${this.virtualTotalHeight}px;`}
179798
+ >
179799
+ ${repeat4(
179800
+ indexedItems,
179801
+ (entry) => entry.item.key,
179802
+ (entry) => b2`
179803
+ <article
179804
+ class="virtualItem"
179805
+ data-virtual-key=${entry.item.key}
179806
+ aria-posinset=${entry.index + 1}
179807
+ aria-setsize=${this.timelineRenderItems.length}
179808
+ style=${`--harness-virtual-offset: ${this.virtualOffsets[entry.index] ?? 0}px;`}
179809
+ >
179810
+ ${this.renderTimelineItem(entry.item, entry.index)}
179811
+ </article>
179812
+ `
179813
+ )}
179814
+ </div>
179815
+ `;
179816
+ }
179817
+ virtualRenderedIndexes() {
179818
+ const indexes = [];
179819
+ for (let index3 = this.virtualStartIndex; index3 < this.virtualEndIndex; index3 += 1) {
179820
+ indexes.push(index3);
179821
+ }
179822
+ for (const retainedKey of this.retainedVirtualKeys) {
179823
+ const retainedIndex = this.timelineIndexByKey.get(retainedKey);
179824
+ if (retainedIndex !== void 0 && !indexes.includes(retainedIndex)) indexes.push(retainedIndex);
179825
+ }
179826
+ return indexes.sort((left, right) => left - right);
179827
+ }
179828
+ renderTimelineItem(itemArg, logicalIndexArg) {
179829
+ if (itemArg.kind === "tool-group") return this.renderToolGroup(itemArg);
179830
+ if (itemArg.kind === "message") return this.renderMessage(itemArg, itemArg.key);
179831
+ if (itemArg.kind === "permission") {
179832
+ return b2`
179833
+ <dees-harness-permission-card
179834
+ data-timeline-key=${itemArg.key}
179835
+ aria-posinset=${logicalIndexArg + 1}
179836
+ aria-setsize=${this.timelineRenderItems.length}
179837
+ .request=${itemArg.request}
179838
+ .busy=${this.permissionsBusy}
179839
+ .viewState=${this.permissionViewState(itemArg.request.id)}
179840
+ .suppressEntry=${!this.entryAnimationsEnabled || !this.currentNewContentKeys.has(itemArg.key)}
179841
+ ></dees-harness-permission-card>
179842
+ `;
179843
+ }
179844
+ return b2`
179845
+ <dees-harness-question-card
179846
+ data-timeline-key=${itemArg.key}
179847
+ aria-posinset=${logicalIndexArg + 1}
179848
+ aria-setsize=${this.timelineRenderItems.length}
179849
+ .request=${itemArg.question}
179850
+ .busy=${this.permissionsBusy}
179851
+ .viewState=${this.questionViewState(itemArg.question.id)}
179852
+ .suppressEntry=${!this.entryAnimationsEnabled || !this.currentNewContentKeys.has(itemArg.key)}
179853
+ ></dees-harness-question-card>
179854
+ `;
179855
+ }
179856
+ renderMessage(itemArg, timelineKeyArg) {
179314
179857
  return b2`
179315
179858
  <dees-harness-message
179859
+ data-timeline-key=${timelineKeyArg}
179316
179860
  data-message-id=${itemArg.message.id}
179317
179861
  data-tool-layout=${itemArg.toolLayout ?? "message"}
179318
179862
  .message=${itemArg.message}
@@ -179320,16 +179864,30 @@ var _DeesHarnessMessageList = class _DeesHarnessMessageList extends (_a86 = Dees
179320
179864
  .showTimestamp=${this.showTimestamps}
179321
179865
  .toolRegistry=${this.toolRegistry}
179322
179866
  .allowSubtaskStreams=${this.allowSubtaskStreams}
179323
- .suppressEntry=${!this.entryAnimationsEnabled}
179867
+ .viewState=${this.messageViewState(itemArg.message.id)}
179868
+ .suppressEntry=${!this.entryAnimationsEnabled || !this.currentNewContentKeys.has(itemArg.key)}
179324
179869
  ></dees-harness-message>
179325
179870
  `;
179326
179871
  }
179872
+ messageViewState(messageIdArg) {
179873
+ return this.effectiveViewState.messages[messageIdArg];
179874
+ }
179875
+ permissionViewState(requestIdArg) {
179876
+ return this.effectiveViewState.permissions[requestIdArg];
179877
+ }
179878
+ questionViewState(requestIdArg) {
179879
+ return this.effectiveViewState.questions[requestIdArg];
179880
+ }
179881
+ get effectiveViewState() {
179882
+ return this.viewState ?? this.localViewState;
179883
+ }
179327
179884
  renderToolGroup(groupArg) {
179328
179885
  const count2 = groupArg.messages.length;
179329
179886
  const countClass = count2 >= 4 ? "toolCount4" : `toolCount${count2}`;
179330
179887
  return b2`
179331
179888
  <section
179332
179889
  class="toolGroup"
179890
+ data-timeline-key=${groupArg.key}
179333
179891
  data-tool-group-id=${groupArg.key}
179334
179892
  data-tool-layout=${groupArg.layout}
179335
179893
  >
@@ -179337,7 +179895,7 @@ var _DeesHarnessMessageList = class _DeesHarnessMessageList extends (_a86 = Dees
179337
179895
  ${repeat4(
179338
179896
  groupArg.messages,
179339
179897
  (item) => item.key,
179340
- (item) => this.renderMessage(item)
179898
+ (item) => this.renderMessage(item, groupArg.key)
179341
179899
  )}
179342
179900
  </div>
179343
179901
  </section>
@@ -179387,9 +179945,15 @@ var _DeesHarnessMessageList = class _DeesHarnessMessageList extends (_a86 = Dees
179387
179945
  else harnessApplyMessageDelta(this.messages, delta);
179388
179946
  break;
179389
179947
  case "tool-update":
179948
+ const previousLayout = message2.toolCall ? this.toolRegistry.resolveLayout(message2.toolCall) : null;
179390
179949
  message2.toolCall = { ...message2.toolCall ?? { id: delta.tool.id, name: "", status: "pending" }, ...delta.tool };
179950
+ const nextLayout = this.toolRegistry.resolveLayout(message2.toolCall);
179951
+ this.syncSubtaskViewState(message2);
179391
179952
  element4?.requestUpdate();
179392
- this.requestUpdate();
179953
+ if (previousLayout !== nextLayout) {
179954
+ this.rebuildTimeline();
179955
+ this.requestUpdate();
179956
+ }
179393
179957
  break;
179394
179958
  case "message-end":
179395
179959
  if (element4) element4.endStream(delta.usage, delta.error);
@@ -179435,6 +179999,7 @@ var _DeesHarnessMessageList = class _DeesHarnessMessageList extends (_a86 = Dees
179435
179999
  if (!container) return;
179436
180000
  if (force) {
179437
180001
  this.userUnpinned = false;
180002
+ this.measurementAnchor = void 0;
179438
180003
  }
179439
180004
  if (force || this.isPinnedToBottom) {
179440
180005
  container.scrollTop = container.scrollHeight;
@@ -179443,6 +180008,45 @@ var _DeesHarnessMessageList = class _DeesHarnessMessageList extends (_a86 = Dees
179443
180008
  }
179444
180009
  this.syncScrollEdgeFades();
179445
180010
  }
180011
+ schedulePendingVirtualizationActivation() {
180012
+ if (!this.virtualizationEnablePending && !this.virtualizationDisablePending || this.virtualizationActivationFrame !== null) return;
180013
+ this.virtualizationActivationFrame = requestAnimationFrame(() => {
180014
+ this.virtualizationActivationFrame = null;
180015
+ if (!this.isConnected || this.activeTimelineKey()) return;
180016
+ const container = this.scrollContainer;
180017
+ const anchor = container ? this.captureCurrentAnchor(container) : void 0;
180018
+ if (this.virtualizationEnablePending) {
180019
+ this.captureFullTimelineMeasurements();
180020
+ this.virtualizationEnabled = true;
180021
+ this.virtualizationEnablePending = false;
180022
+ this.recomputeVirtualOffsets();
180023
+ if (anchor) {
180024
+ this.pendingVirtualAnchor = anchor;
180025
+ this.setVirtualRangeAround(anchor.key);
180026
+ } else {
180027
+ this.setInitialVirtualRange();
180028
+ }
180029
+ } else if (this.virtualizationDisablePending) {
180030
+ this.virtualizationEnabled = false;
180031
+ this.virtualizationDisablePending = false;
180032
+ this.retainedVirtualKeys.clear();
180033
+ if (anchor) this.pendingFullAnchor = anchor;
180034
+ this.setInitialVirtualRange();
180035
+ }
180036
+ this.disconnectSelectionChangeListener();
180037
+ this.requestUpdate();
180038
+ });
180039
+ }
180040
+ connectSelectionChangeListener() {
180041
+ if (this.selectionChangeListening) return;
180042
+ document.addEventListener("selectionchange", this.handleSelectionChange);
180043
+ this.selectionChangeListening = true;
180044
+ }
180045
+ disconnectSelectionChangeListener() {
180046
+ if (!this.selectionChangeListening) return;
180047
+ document.removeEventListener("selectionchange", this.handleSelectionChange);
180048
+ this.selectionChangeListening = false;
180049
+ }
179446
180050
  updated(changedProperties) {
179447
180051
  super.updated(changedProperties);
179448
180052
  if (changedProperties.has("messages") || changedProperties.has("status") || changedProperties.has("permissions") || changedProperties.has("questions")) {
@@ -179455,6 +180059,23 @@ var _DeesHarnessMessageList = class _DeesHarnessMessageList extends (_a86 = Dees
179455
180059
  } else this.disconnectContentResizeObserver();
179456
180060
  }
179457
180061
  if (changedProperties.has("fadeScrollEdges") || changedProperties.has("messages") || changedProperties.has("permissions") || changedProperties.has("questions")) this.syncScrollEdgeFades();
180062
+ if (this.virtualizationActive) {
180063
+ this.connectVirtualObservers();
180064
+ if (this.pendingVirtualAnchor) {
180065
+ this.restoreVirtualAnchor(this.scrollContainer, this.pendingVirtualAnchor);
180066
+ this.pendingVirtualAnchor = void 0;
180067
+ } else if (this.pendingVirtualRepin) {
180068
+ this.repinToBottom();
180069
+ this.pendingVirtualRepin = false;
180070
+ }
180071
+ this.scheduleVirtualRangeUpdate();
180072
+ } else {
180073
+ this.disconnectVirtualObservers();
180074
+ if (this.pendingFullAnchor) {
180075
+ this.restoreFullAnchor(this.scrollContainer, this.pendingFullAnchor);
180076
+ this.pendingFullAnchor = void 0;
180077
+ }
180078
+ }
179458
180079
  }
179459
180080
  firstUpdated(changedProperties) {
179460
180081
  super.firstUpdated(changedProperties);
@@ -179462,6 +180083,7 @@ var _DeesHarnessMessageList = class _DeesHarnessMessageList extends (_a86 = Dees
179462
180083
  this.connectContentResizeObserver();
179463
180084
  this.repinToBottom();
179464
180085
  this.syncScrollEdgeFades();
180086
+ if (this.virtualizationActive) this.connectVirtualObservers();
179465
180087
  this.entryFrame = requestAnimationFrame(() => {
179466
180088
  this.entryFrame = null;
179467
180089
  if (!this.isConnected) return;
@@ -179474,7 +180096,14 @@ var _DeesHarnessMessageList = class _DeesHarnessMessageList extends (_a86 = Dees
179474
180096
  }
179475
180097
  async connectedCallback() {
179476
180098
  const connected = super.connectedCallback();
179477
- if (this.hasUpdated) this.connectContentResizeObserver();
180099
+ if (this.virtualizationEnablePending || this.virtualizationDisablePending) {
180100
+ this.connectSelectionChangeListener();
180101
+ }
180102
+ if (this.hasUpdated) {
180103
+ this.connectContentResizeObserver();
180104
+ if (this.virtualizationActive) this.connectVirtualObservers();
180105
+ this.schedulePendingVirtualizationActivation();
180106
+ }
179478
180107
  await connected;
179479
180108
  }
179480
180109
  connectContentResizeObserver() {
@@ -179492,6 +180121,280 @@ var _DeesHarnessMessageList = class _DeesHarnessMessageList extends (_a86 = Dees
179492
180121
  this.contentResizeObserver.observe(content3);
179493
180122
  this.observedScrollContent = content3;
179494
180123
  }
180124
+ connectVirtualObservers() {
180125
+ const container = this.scrollContainer;
180126
+ if (!container) return;
180127
+ this.virtualViewportResizeObserver ??= new ResizeObserver((entries) => {
180128
+ const width = entries[0]?.contentRect.width ?? 0;
180129
+ if (width > 0 && Math.abs(width - this.lastVirtualViewportWidth) > 0.5) {
180130
+ const preserveAnchor = this.userUnpinned || !this.autoFollow;
180131
+ const anchor = preserveAnchor ? this.captureVirtualMetricAnchor(container) : void 0;
180132
+ this.lastVirtualViewportWidth = width;
180133
+ this.measuredVirtualHeights.clear();
180134
+ this.recomputeVirtualOffsets();
180135
+ if (anchor) this.pendingVirtualAnchor = anchor;
180136
+ else this.pendingVirtualRepin = true;
180137
+ this.requestUpdate();
180138
+ this.scheduleVirtualRangeUpdate(true);
180139
+ }
180140
+ });
180141
+ this.virtualViewportResizeObserver.disconnect();
180142
+ this.virtualViewportResizeObserver.observe(container);
180143
+ this.lastVirtualViewportWidth ||= container.getBoundingClientRect().width;
180144
+ this.virtualRowResizeObserver ??= new ResizeObserver(() => this.scheduleVirtualMeasurements());
180145
+ this.virtualRowResizeObserver.disconnect();
180146
+ for (const row of this.shadowRoot?.querySelectorAll(".virtualItem") ?? []) {
180147
+ this.virtualRowResizeObserver.observe(row);
180148
+ }
180149
+ }
180150
+ scheduleVirtualMeasurements() {
180151
+ if (this.virtualMeasureFrame !== null) return;
180152
+ this.virtualMeasureFrame = requestAnimationFrame(() => {
180153
+ this.virtualMeasureFrame = null;
180154
+ this.measureVirtualRows();
180155
+ });
180156
+ }
180157
+ measureVirtualRows() {
180158
+ const container = this.scrollContainer;
180159
+ if (!container || !this.virtualizationActive) return;
180160
+ const preserveAnchor = this.userUnpinned || !this.autoFollow;
180161
+ const anchor = preserveAnchor ? this.measurementAnchor ?? this.captureVirtualMetricAnchor(container) : void 0;
180162
+ let changed = false;
180163
+ for (const row of this.shadowRoot?.querySelectorAll(".virtualItem") ?? []) {
180164
+ const key2 = row.dataset.virtualKey;
180165
+ if (!key2) continue;
180166
+ const height = row.getBoundingClientRect().height;
180167
+ if (height <= 0 || Math.abs((this.measuredVirtualHeights.get(key2) ?? 0) - height) <= 0.5) continue;
180168
+ this.measuredVirtualHeights.set(key2, height);
180169
+ changed = true;
180170
+ }
180171
+ if (!changed) {
180172
+ this.measurementAnchor = void 0;
180173
+ return;
180174
+ }
180175
+ this.recomputeVirtualOffsets();
180176
+ if (anchor) this.pendingVirtualAnchor = anchor;
180177
+ else this.pendingVirtualRepin = true;
180178
+ this.requestUpdate();
180179
+ if (this.measurementAnchor) this.scheduleVirtualMeasurements();
180180
+ }
180181
+ captureVirtualAnchor(containerArg) {
180182
+ const containerTop = containerArg.getBoundingClientRect().top;
180183
+ const row = Array.from(this.shadowRoot?.querySelectorAll(".virtualItem") ?? []).find((candidate) => candidate.getBoundingClientRect().bottom > containerTop);
180184
+ const key2 = row?.dataset.virtualKey;
180185
+ if (row && key2) return { key: key2, offset: containerTop - row.getBoundingClientRect().top };
180186
+ const localTop = this.virtualLocalScrollTop(containerArg);
180187
+ return this.captureVirtualOffsetAnchorAt(localTop);
180188
+ }
180189
+ captureVirtualMetricAnchor(containerArg) {
180190
+ const localTop = this.virtualLocalScrollTop(containerArg);
180191
+ for (const row of this.shadowRoot?.querySelectorAll(".virtualItem") ?? []) {
180192
+ const key2 = row.dataset.virtualKey;
180193
+ const index3 = key2 ? this.timelineIndexByKey.get(key2) : void 0;
180194
+ if (index3 === void 0) continue;
180195
+ const item = this.timelineRenderItems[index3];
180196
+ const offset = this.virtualOffsets[index3] ?? 0;
180197
+ const height = this.measuredVirtualHeights.get(item.key) ?? this.estimatedVirtualHeight(item);
180198
+ if (offset + height > localTop) return { key: item.key, offset: localTop - offset };
180199
+ }
180200
+ return this.captureVirtualOffsetAnchorAt(localTop);
180201
+ }
180202
+ captureVirtualOffsetAnchorAt(localTopArg) {
180203
+ let index3 = this.virtualIndexAtOffset(localTopArg);
180204
+ const item = this.timelineRenderItems[index3];
180205
+ const itemHeight = item ? this.measuredVirtualHeights.get(item.key) ?? this.estimatedVirtualHeight(item) : 0;
180206
+ if (item && localTopArg > (this.virtualOffsets[index3] ?? 0) + itemHeight && index3 + 1 < this.timelineRenderItems.length) index3 += 1;
180207
+ const anchorItem = this.timelineRenderItems[index3];
180208
+ return anchorItem ? { key: anchorItem.key, offset: localTopArg - (this.virtualOffsets[index3] ?? 0) } : void 0;
180209
+ }
180210
+ restoreVirtualAnchor(containerArg, anchorArg) {
180211
+ const index3 = this.timelineIndexByKey.get(anchorArg.key);
180212
+ if (index3 === void 0) return;
180213
+ const stack = this.shadowRoot?.querySelector(".virtualStack");
180214
+ containerArg.scrollTop = (stack?.offsetTop ?? 0) + (this.virtualOffsets[index3] ?? 0) + anchorArg.offset;
180215
+ }
180216
+ restoreFullAnchor(containerArg, anchorArg) {
180217
+ const element4 = this.shadowRoot?.querySelector(
180218
+ `.stack > [data-timeline-key="${CSS.escape(anchorArg.key)}"]`
180219
+ );
180220
+ if (!element4) return;
180221
+ containerArg.scrollTop += element4.getBoundingClientRect().top - containerArg.getBoundingClientRect().top + anchorArg.offset;
180222
+ }
180223
+ virtualLocalScrollTop(containerArg) {
180224
+ const stack = this.shadowRoot?.querySelector(".virtualStack");
180225
+ return Math.max(0, containerArg.scrollTop - (stack?.offsetTop ?? 0));
180226
+ }
180227
+ virtualIndexAtOffset(offsetArg, offsetsArg = this.virtualOffsets) {
180228
+ if (offsetsArg.length === 0) return 0;
180229
+ let low = 0;
180230
+ let high = offsetsArg.length - 1;
180231
+ while (low < high) {
180232
+ const middle = Math.floor((low + high + 1) / 2);
180233
+ if ((offsetsArg[middle] ?? 0) <= offsetArg) low = middle;
180234
+ else high = middle - 1;
180235
+ }
180236
+ return low;
180237
+ }
180238
+ scheduleVirtualRangeUpdate(force = false) {
180239
+ if (!this.virtualizationActive) return;
180240
+ if (force && this.virtualRangeFrame !== null) {
180241
+ cancelAnimationFrame(this.virtualRangeFrame);
180242
+ this.virtualRangeFrame = null;
180243
+ }
180244
+ if (this.virtualRangeFrame !== null) return;
180245
+ this.virtualRangeFrame = requestAnimationFrame(() => {
180246
+ this.virtualRangeFrame = null;
180247
+ this.updateVirtualRange();
180248
+ });
180249
+ }
180250
+ updateVirtualRange() {
180251
+ const container = this.scrollContainer;
180252
+ if (!container || !this.virtualizationActive) return;
180253
+ const localTop = this.virtualLocalScrollTop(container);
180254
+ const startTarget = Math.max(0, localTop - virtualOverscanPx);
180255
+ const endTarget = localTop + container.clientHeight + virtualOverscanPx;
180256
+ const start = Math.max(0, this.virtualIndexAtOffset(startTarget) - 1);
180257
+ const end = Math.min(this.timelineRenderItems.length, this.virtualIndexAtOffset(endTarget) + 2);
180258
+ const retainedKeys = new Set(this.activeVirtualKeys());
180259
+ if (start === this.virtualStartIndex && end === this.virtualEndIndex && retainedKeys.size === this.retainedVirtualKeys.size && [...retainedKeys].every((key2) => this.retainedVirtualKeys.has(key2))) return;
180260
+ this.virtualStartIndex = start;
180261
+ this.virtualEndIndex = end;
180262
+ this.retainedVirtualKeys = retainedKeys;
180263
+ if (this.activeSelectionKeys().length > 0) this.connectSelectionChangeListener();
180264
+ else if (!this.virtualizationEnablePending && !this.virtualizationDisablePending) {
180265
+ this.disconnectSelectionChangeListener();
180266
+ }
180267
+ this.requestUpdate();
180268
+ }
180269
+ activeVirtualKeys() {
180270
+ const focusKey = this.activeFocusKey();
180271
+ return [
180272
+ ...this.explicitRetainedVirtualKey ? [this.explicitRetainedVirtualKey] : [],
180273
+ ...focusKey ? [focusKey] : [],
180274
+ ...this.activeSelectionKeys()
180275
+ ].filter((key2, index3, keys3) => keys3.indexOf(key2) === index3);
180276
+ }
180277
+ activeTimelineKey() {
180278
+ if (this.explicitRetainedVirtualKey) return this.explicitRetainedVirtualKey;
180279
+ return this.activeFocusKey() ?? this.activeSelectionKeys()[0];
180280
+ }
180281
+ activeFocusKey() {
180282
+ const activeElement = this.shadowRoot?.activeElement;
180283
+ if (activeElement instanceof Element) {
180284
+ const focusedKey = this.ownedTimelineElement(activeElement)?.dataset.timelineKey ?? this.ownedVirtualRow(activeElement)?.dataset.virtualKey;
180285
+ if (focusedKey) return focusedKey;
180286
+ }
180287
+ return void 0;
180288
+ }
180289
+ activeSelectionKeys() {
180290
+ if (this.selectionGestureActive) return [...this.selectionGestureKeys];
180291
+ const selection = document.getSelection();
180292
+ if (!selection || selection.rangeCount === 0) return [];
180293
+ if (selection.isCollapsed) {
180294
+ return this.hasCrossShadowSelectionFallback ? [...this.selectionGestureKeys] : [];
180295
+ }
180296
+ const range2 = selection.getRangeAt(0);
180297
+ const nodes = [
180298
+ selection.anchorNode,
180299
+ selection.focusNode,
180300
+ range2.startContainer,
180301
+ range2.endContainer
180302
+ ];
180303
+ if ("getComposedRanges" in selection && typeof selection.getComposedRanges === "function") {
180304
+ const composedRanges = selection.getComposedRanges({
180305
+ shadowRoots: this.mountedShadowRoots()
180306
+ });
180307
+ const composedRange = composedRanges[0];
180308
+ if (composedRange) nodes.push(composedRange.startContainer, composedRange.endContainer);
180309
+ }
180310
+ return [
180311
+ ...nodes.filter((node2) => node2 !== null).map((node2) => this.timelineKeyForNode(node2)).filter((key2) => key2 !== void 0),
180312
+ ...this.selectionGestureKeys
180313
+ ].filter((key2, index3, keys3) => keys3.indexOf(key2) === index3);
180314
+ }
180315
+ mountedShadowRoots() {
180316
+ const roots = [];
180317
+ const collect = /* @__PURE__ */ __name((rootArg) => {
180318
+ for (const element4 of rootArg.querySelectorAll("*")) {
180319
+ if (!element4.shadowRoot) continue;
180320
+ roots.push(element4.shadowRoot);
180321
+ collect(element4.shadowRoot);
180322
+ }
180323
+ }, "collect");
180324
+ if (this.shadowRoot) collect(this.shadowRoot);
180325
+ return roots;
180326
+ }
180327
+ timelineKeyForNode(nodeArg) {
180328
+ let node2 = nodeArg;
180329
+ while (node2) {
180330
+ if (node2 instanceof HTMLElement && node2.classList.contains("virtualItem")) {
180331
+ const ownedRow = this.ownedVirtualRow(node2);
180332
+ if (ownedRow) return ownedRow.dataset.virtualKey;
180333
+ }
180334
+ if (node2 instanceof HTMLElement) {
180335
+ const timelineElement = this.ownedTimelineElement(node2);
180336
+ if (timelineElement) return timelineElement.dataset.timelineKey;
180337
+ }
180338
+ const root6 = node2.getRootNode();
180339
+ node2 = node2.parentNode ?? (root6 instanceof ShadowRoot ? root6.host : null);
180340
+ }
180341
+ return void 0;
180342
+ }
180343
+ timelineKeyForEvent(eventArg) {
180344
+ for (const candidate of eventArg.composedPath()) {
180345
+ if (!(candidate instanceof Element)) continue;
180346
+ const rowKey = this.ownedVirtualRow(candidate)?.dataset.virtualKey;
180347
+ if (rowKey) return rowKey;
180348
+ const timelineKey = this.ownedTimelineElement(candidate)?.dataset.timelineKey;
180349
+ if (timelineKey) return timelineKey;
180350
+ }
180351
+ return void 0;
180352
+ }
180353
+ selectionOwnerForEvent(eventArg) {
180354
+ for (const candidate of eventArg.composedPath()) {
180355
+ if (!(candidate instanceof HTMLElement)) continue;
180356
+ if ((candidate.tagName === "DEES-HARNESS-MESSAGE" || candidate.tagName === "DEES-HARNESS-PERMISSION-CARD" || candidate.tagName === "DEES-HARNESS-QUESTION-CARD") && this.timelineKeyForNode(candidate)) return candidate;
180357
+ }
180358
+ return eventArg.composedPath().filter((candidate) => candidate instanceof Element).map((candidate) => this.ownedTimelineElement(candidate) ?? this.ownedVirtualRow(candidate)).find((candidate) => candidate !== void 0);
180359
+ }
180360
+ get hasCrossShadowSelectionFallback() {
180361
+ return this.selectionGestureKeys.size > 1 || this.selectionGestureCrossesOwners;
180362
+ }
180363
+ captureSelectionSnapshot(selectionArg) {
180364
+ if (!selectionArg) return void 0;
180365
+ return {
180366
+ anchorNode: selectionArg.anchorNode,
180367
+ anchorOffset: selectionArg.anchorOffset,
180368
+ focusNode: selectionArg.focusNode,
180369
+ focusOffset: selectionArg.focusOffset,
180370
+ rangeCount: selectionArg.rangeCount
180371
+ };
180372
+ }
180373
+ selectionMatchesGestureSnapshot(selectionArg) {
180374
+ const snapshot = this.selectionGestureSnapshot;
180375
+ return Boolean(
180376
+ snapshot && snapshot.anchorNode === selectionArg.anchorNode && snapshot.anchorOffset === selectionArg.anchorOffset && snapshot.focusNode === selectionArg.focusNode && snapshot.focusOffset === selectionArg.focusOffset && snapshot.rangeCount === selectionArg.rangeCount
180377
+ );
180378
+ }
180379
+ clearSelectionGesture() {
180380
+ this.selectionGestureKeys.clear();
180381
+ this.selectionGestureActive = false;
180382
+ this.selectionGestureStartOwner = void 0;
180383
+ this.selectionGestureCrossesOwners = false;
180384
+ this.selectionGestureSnapshot = void 0;
180385
+ }
180386
+ ownedVirtualRow(elementArg) {
180387
+ const row = elementArg.closest(".virtualItem");
180388
+ return row?.getRootNode() === this.shadowRoot ? row : void 0;
180389
+ }
180390
+ ownedTimelineElement(elementArg) {
180391
+ const timelineElement = elementArg.closest("[data-timeline-key]");
180392
+ return timelineElement?.getRootNode() === this.shadowRoot ? timelineElement : void 0;
180393
+ }
180394
+ disconnectVirtualObservers() {
180395
+ this.virtualRowResizeObserver?.disconnect();
180396
+ this.virtualViewportResizeObserver?.disconnect();
180397
+ }
179495
180398
  repinAfterContentGrowth() {
179496
180399
  const content3 = this.observedScrollContent;
179497
180400
  if (!content3) return;
@@ -179521,16 +180424,33 @@ var _DeesHarnessMessageList = class _DeesHarnessMessageList extends (_a86 = Dees
179521
180424
  this.observedContentBlockSize = null;
179522
180425
  }
179523
180426
  async disconnectedCallback() {
180427
+ this.disconnectSelectionChangeListener();
179524
180428
  if (this.followFrame !== null) cancelAnimationFrame(this.followFrame);
179525
180429
  if (this.followSecondFrame !== null) cancelAnimationFrame(this.followSecondFrame);
179526
180430
  if (this.entryFrame !== null) cancelAnimationFrame(this.entryFrame);
179527
180431
  if (this.entrySecondFrame !== null) cancelAnimationFrame(this.entrySecondFrame);
180432
+ if (this.virtualMeasureFrame !== null) cancelAnimationFrame(this.virtualMeasureFrame);
180433
+ if (this.virtualRangeFrame !== null) cancelAnimationFrame(this.virtualRangeFrame);
180434
+ if (this.virtualizationActivationFrame !== null) cancelAnimationFrame(this.virtualizationActivationFrame);
179528
180435
  this.followFrame = null;
179529
180436
  this.followSecondFrame = null;
179530
180437
  this.entryFrame = null;
179531
180438
  this.entrySecondFrame = null;
180439
+ this.virtualMeasureFrame = null;
180440
+ this.virtualRangeFrame = null;
180441
+ this.virtualizationActivationFrame = null;
180442
+ this.pendingVirtualAnchor = void 0;
180443
+ this.pendingFullAnchor = void 0;
180444
+ this.measurementAnchor = void 0;
180445
+ this.pendingVirtualRepin = false;
180446
+ this.explicitRetainedVirtualKey = void 0;
180447
+ this.retainedVirtualKeys.clear();
180448
+ this.clearSelectionGesture();
179532
180449
  this.entryAnimationsEnabled = true;
179533
180450
  this.disconnectContentResizeObserver();
180451
+ this.disconnectVirtualObservers();
180452
+ this.virtualRowResizeObserver = null;
180453
+ this.virtualViewportResizeObserver = null;
179534
180454
  await super.disconnectedCallback();
179535
180455
  }
179536
180456
  };
@@ -179544,6 +180464,7 @@ _autoFollow = new WeakMap();
179544
180464
  _hideScrollbar = new WeakMap();
179545
180465
  _fadeScrollEdges = new WeakMap();
179546
180466
  _toolRegistry4 = new WeakMap();
180467
+ _viewState6 = new WeakMap();
179547
180468
  _allowSubtaskStreams3 = new WeakMap();
179548
180469
  _showRoles = new WeakMap();
179549
180470
  _showTimestamps = new WeakMap();
@@ -179562,6 +180483,7 @@ __decorateElement(_init87, 4, "autoFollow", _autoFollow_dec, _DeesHarnessMessage
179562
180483
  __decorateElement(_init87, 4, "hideScrollbar", _hideScrollbar_dec, _DeesHarnessMessageList, _hideScrollbar);
179563
180484
  __decorateElement(_init87, 4, "fadeScrollEdges", _fadeScrollEdges_dec, _DeesHarnessMessageList, _fadeScrollEdges);
179564
180485
  __decorateElement(_init87, 4, "toolRegistry", _toolRegistry_dec4, _DeesHarnessMessageList, _toolRegistry4);
180486
+ __decorateElement(_init87, 4, "viewState", _viewState_dec6, _DeesHarnessMessageList, _viewState6);
179565
180487
  __decorateElement(_init87, 4, "allowSubtaskStreams", _allowSubtaskStreams_dec3, _DeesHarnessMessageList, _allowSubtaskStreams3);
179566
180488
  __decorateElement(_init87, 4, "showRoles", _showRoles_dec, _DeesHarnessMessageList, _showRoles);
179567
180489
  __decorateElement(_init87, 4, "showTimestamps", _showTimestamps_dec, _DeesHarnessMessageList, _showTimestamps);
@@ -179591,6 +180513,7 @@ __publicField(_DeesHarnessMessageList, "styles", [
179591
180513
  .scroll {
179592
180514
  height: 100%;
179593
180515
  overflow-y: auto;
180516
+ overflow-anchor: none;
179594
180517
  overscroll-behavior: contain;
179595
180518
  scrollbar-width: thin;
179596
180519
  scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
@@ -179659,6 +180582,19 @@ __publicField(_DeesHarnessMessageList, "styles", [
179659
180582
  grid-column: 1 / -1;
179660
180583
  }
179661
180584
 
180585
+ .virtualStack {
180586
+ position: relative;
180587
+ flex: 0 0 auto;
180588
+ min-width: 0;
180589
+ }
180590
+
180591
+ .virtualItem {
180592
+ position: absolute;
180593
+ inset: 0 0 auto;
180594
+ min-width: 0;
180595
+ transform: translate3d(0, var(--harness-virtual-offset), 0);
180596
+ }
180597
+
179662
180598
  .toolGroup {
179663
180599
  min-width: 0;
179664
180600
  }
@@ -180618,8 +181554,14 @@ var _DeesHarnessSessionSidebar = class _DeesHarnessSessionSidebar extends (_a88
180618
181554
  <span class="sectionHeadingText">${labelArg}</span>
180619
181555
  ${summaryArg ? b2`<span class="sectionSummary">${summaryArg}</span>` : ""}
180620
181556
  </button>
180621
- <div id=${contentId} class="sectionContent" ?hidden=${!expanded}>
180622
- ${contentArg}
181557
+ <div
181558
+ id=${contentId}
181559
+ class="sectionContent"
181560
+ role="region"
181561
+ aria-hidden=${String(!expanded)}
181562
+ ?hidden=${!expanded}
181563
+ >
181564
+ ${expanded ? contentArg : ""}
180623
181565
  </div>
180624
181566
  </section>
180625
181567
  `;
@@ -183813,6 +184755,8 @@ __publicField(_DeesHarnessSessionList, "styles", [
183813
184755
  }
183814
184756
 
183815
184757
  .itemInner {
184758
+ position: relative;
184759
+ isolation: isolate;
183816
184760
  min-width: 0;
183817
184761
  overflow: hidden;
183818
184762
  border: 1px solid var(--card-inner-border);
@@ -183845,24 +184789,34 @@ __publicField(_DeesHarnessSessionList, "styles", [
183845
184789
 
183846
184790
  @keyframes workingBackgroundScan {
183847
184791
  from {
183848
- background-position: 100% 0;
184792
+ transform: translate3d(-60%, 0, 0);
183849
184793
  }
183850
184794
  to {
183851
- background-position: 0 0;
184795
+ transform: translate3d(0, 0, 0);
183852
184796
  }
183853
184797
  }
183854
184798
 
183855
184799
  .item.state-working .itemInner {
183856
- background:
183857
- linear-gradient(
183858
- 105deg,
183859
- transparent 40%,
183860
- color-mix(in srgb, var(--session-working) 6%, transparent) 45%,
183861
- color-mix(in srgb, var(--session-working) 20%, transparent) 50%,
183862
- color-mix(in srgb, var(--session-working) 6%, transparent) 55%,
183863
- transparent 60%
183864
- ) 100% 0 / 250% 100% no-repeat,
183865
- var(--dees-color-bg-primary);
184800
+ background: var(--dees-color-bg-primary);
184801
+ }
184802
+
184803
+ .item.state-working .itemInner::before {
184804
+ content: '';
184805
+ position: absolute;
184806
+ z-index: -1;
184807
+ inset: 0 auto 0 0;
184808
+ width: 250%;
184809
+ pointer-events: none;
184810
+ background: linear-gradient(
184811
+ 105deg,
184812
+ transparent 40%,
184813
+ color-mix(in srgb, var(--session-working) 6%, transparent) 45%,
184814
+ color-mix(in srgb, var(--session-working) 20%, transparent) 50%,
184815
+ color-mix(in srgb, var(--session-working) 6%, transparent) 55%,
184816
+ transparent 60%
184817
+ );
184818
+ transform: translate3d(-60%, 0, 0);
184819
+ will-change: transform;
183866
184820
  animation: workingBackgroundScan 2s linear infinite;
183867
184821
  }
183868
184822
 
@@ -184369,12 +185323,18 @@ __publicField(_DeesHarnessSessionList, "styles", [
184369
185323
  .item,
184370
185324
  .itemInner,
184371
185325
  .item.state-attention .itemInner,
185326
+ .item.state-working .itemInner::before,
184372
185327
  .item.state-working .itemHeader .stateDot,
184373
185328
  .scrollShadow,
184374
185329
  .expandToggle dees-icon {
184375
185330
  animation: none;
184376
185331
  transition: none;
184377
185332
  }
185333
+
185334
+ .item.state-working .itemInner::before {
185335
+ transform: translate3d(-60%, 0, 0);
185336
+ will-change: auto;
185337
+ }
184378
185338
  }
184379
185339
 
184380
185340
  @media (pointer: coarse) {
@@ -206493,7 +207453,7 @@ init_group_runtime();
206493
207453
  // ts_web/00_commitinfo_data.ts
206494
207454
  var commitinfo = {
206495
207455
  name: "@design.estate/dees-catalog",
206496
- version: "6.7.0",
207456
+ version: "6.8.0",
206497
207457
  description: "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript."
206498
207458
  };
206499
207459