@design.estate/dees-catalog 11.0.0 → 11.2.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 (22) hide show
  1. package/dist_bundle/bundle.js +114 -17
  2. package/dist_bundle/bundle.js.map +1 -1
  3. package/dist_ts_web/00_commitinfo_data.js +1 -1
  4. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.js +46 -1
  5. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.js +19 -2
  6. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.js +9 -7
  7. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +14 -5
  8. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.js +19 -1
  9. package/dist_ts_web/elements/00group-harness/harness.helpers.js +4 -2
  10. package/dist_ts_web/elements/00group-harness/interfaces.d.ts +4 -0
  11. package/dist_ts_web/elements/00group-harness/toolregistry.js +10 -6
  12. package/package.json +1 -1
  13. package/readme.md +4 -4
  14. package/ts_web/00_commitinfo_data.ts +1 -1
  15. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.ts +45 -0
  16. package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.ts +18 -1
  17. package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.ts +8 -6
  18. package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.ts +15 -4
  19. package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.ts +18 -0
  20. package/ts_web/elements/00group-harness/harness.helpers.ts +3 -1
  21. package/ts_web/elements/00group-harness/interfaces.ts +4 -0
  22. package/ts_web/elements/00group-harness/toolregistry.ts +9 -5
@@ -168881,7 +168881,7 @@ var harnessTerminalResultSummary = /* @__PURE__ */ __name((callArg) => {
168881
168881
  const combined = `${stdout}${stdout && stderr ? "\n" : ""}${stderr}`;
168882
168882
  const lineCount = combined ? harnessStripAnsi(combined).split("\n").filter((line) => line.trim()).length : 0;
168883
168883
  if (lineCount > 0) parts.push(`${lineCount} ${lineCount === 1 ? "line" : "lines"}`);
168884
- else if (exitCode3 !== void 0) parts.push("no output");
168884
+ else parts.push("no output");
168885
168885
  const lastLine = harnessLastMeaningfulLine(stderr) || harnessLastMeaningfulLine(stdout);
168886
168886
  const prefix = parts.join(" \xB7 ");
168887
168887
  if (!lastLine) return prefix;
@@ -168925,12 +168925,16 @@ var defaultDescriptors = [
168925
168925
  defaultExpanded: true,
168926
168926
  layout: "full-row",
168927
168927
  /*
168928
- * Only a command that can be PROVEN to have succeeded collapses. An absent exit code is not
168929
- * evidence of success: a producer that reports a failed command as completed and encodes the
168930
- * failure in its output would otherwise have that failure hidden behind a one-line summary.
168931
- * Such a card stays open, and the producer reporting an exit code is the real fix.
168928
+ * A finished command collapses unless it reports a failure. A missing exit code is not a
168929
+ * failure — most harnesses never send one — so requiring proof of success kept nearly every
168930
+ * terminal card open and left whole transcripts expanded. A non-zero exit keeps its output on
168931
+ * screen; an error or a stopped command never reaches this rule, because the card keeps those
168932
+ * open on status alone. The user's own expand or collapse still wins over all of it.
168932
168933
  */
168933
- collapseWhenFinished: /* @__PURE__ */ __name((call) => harnessTerminalOutcome(call).exitCode === 0, "collapseWhenFinished"),
168934
+ collapseWhenFinished: /* @__PURE__ */ __name((call) => {
168935
+ const { exitCode: exitCode3 } = harnessTerminalOutcome(call);
168936
+ return exitCode3 === void 0 || exitCode3 === 0;
168937
+ }, "collapseWhenFinished"),
168934
168938
  summary: harnessTerminalResultSummary
168935
168939
  },
168936
168940
  {
@@ -169790,6 +169794,51 @@ var toolShowcase = /* @__PURE__ */ __name(() => {
169790
169794
  startedAt: now3 - 155e3,
169791
169795
  finishedAt: now3 - 152e3
169792
169796
  }
169797
+ },
169798
+ {
169799
+ id: "demo-t4",
169800
+ role: "assistant",
169801
+ text: "Re-ran the suite to confirm the cache key fix.",
169802
+ createdAt: now3 - 14e4
169803
+ },
169804
+ // A finished command that never reported an exit code: it collapses like any other clean
169805
+ // finish, alone in its row, so it shows the collapsed reading measure.
169806
+ {
169807
+ id: "demo-t5",
169808
+ role: "tool",
169809
+ text: "",
169810
+ createdAt: now3 - 13e4,
169811
+ toolCall: {
169812
+ id: "call-5",
169813
+ name: "run_command",
169814
+ status: "completed",
169815
+ input: { command: "pnpm test --filter sitemap", cwd: "/srv/app" },
169816
+ output: "14 tests passed\n0 failed",
169817
+ startedAt: now3 - 136e3,
169818
+ finishedAt: now3 - 131e3
169819
+ }
169820
+ },
169821
+ {
169822
+ id: "demo-t6",
169823
+ role: "assistant",
169824
+ text: "The lint run is still failing though.",
169825
+ createdAt: now3 - 12e4
169826
+ },
169827
+ // The other half of the rule: a non-zero exit keeps its output on screen and the pane with it.
169828
+ {
169829
+ id: "demo-t7",
169830
+ role: "tool",
169831
+ text: "",
169832
+ createdAt: now3 - 11e4,
169833
+ toolCall: {
169834
+ id: "call-7",
169835
+ name: "run_command",
169836
+ status: "completed",
169837
+ input: { command: "pnpm lint", cwd: "/srv/app" },
169838
+ output: { exitCode: 1, stdout: "", stderr: "sitemap.job.ts:12:3 error Unexpected any" },
169839
+ startedAt: now3 - 116e3,
169840
+ finishedAt: now3 - 111e3
169841
+ }
169793
169842
  }
169794
169843
  ];
169795
169844
  }, "toolShowcase");
@@ -172543,6 +172592,7 @@ ${derivedSubtitle}` : subtitle;
172543
172592
  }
172544
172593
  updated(changedProperties) {
172545
172594
  super.updated(changedProperties);
172595
+ this.toggleAttribute("data-collapsed", !this.isOpen);
172546
172596
  if (!this.isConnected) return;
172547
172597
  this.terminalScrollHydrationFrame ??= requestAnimationFrame(() => {
172548
172598
  this.terminalScrollHydrationFrame = null;
@@ -172877,7 +172927,21 @@ __publicField(_DeesHarnessToolCard, "styles", [
172877
172927
  :host {
172878
172928
  display: block;
172879
172929
  container-type: inline-size;
172930
+ margin-inline: auto;
172931
+ max-width: 100%;
172880
172932
  font-family: var(--dees-font-family);
172933
+ transition: max-width var(--dees-transition-default) var(--dees-ease-standard);
172934
+ }
172935
+
172936
+ /*
172937
+ * A collapsed card may be held to a narrower measure than its row. The host — not the inner
172938
+ * surface — carries the constraint so the card's own inline-size container keeps measuring
172939
+ * what is actually rendered. The width comes from the context the card sits in: a transcript
172940
+ * row that holds this card alone sets it, a multi-card grid cell leaves it unset, and a
172941
+ * direct host falls back to the full row.
172942
+ */
172943
+ :host([data-collapsed]) {
172944
+ max-width: var(--dees-harness-collapsed-tool-width, 100%);
172881
172945
  }
172882
172946
 
172883
172947
  .harness-card.subtaskPreviewCard {
@@ -176477,6 +176541,18 @@ __publicField(_DeesHarnessMessageList, "styles", [
176477
176541
  width: 100%;
176478
176542
  }
176479
176543
 
176544
+ /*
176545
+ * The pane is what an open command or diff needs, not what its one-line collapsed header
176546
+ * needs, so a closed card returns to the reading measure inside its row. Only a row holding
176547
+ * a single card offers it: in a multi-card grid the cell width is the layout, and shrinking
176548
+ * one card would break the row. The card applies this itself — it alone knows whether it is
176549
+ * open — and the measure stays defined here, with the rest of the column rules.
176550
+ */
176551
+ .stack > [data-tool-layout='full-row'][data-tool-count='1'],
176552
+ .virtualItem[data-tool-layout='full-row'][data-tool-count='1'] {
176553
+ --dees-harness-collapsed-tool-width: min(var(--dees-harness-content-width, 820px), 100%);
176554
+ }
176555
+
176480
176556
  /*
176481
176557
  * One or two subagents are read like any other content, so they stay on the measure. The
176482
176558
  * pane is only worth taking once three or more cards have to sit side by side.
@@ -176534,8 +176610,13 @@ __publicField(_DeesHarnessMessageList, "styles", [
176534
176610
  }
176535
176611
  }
176536
176612
 
176613
+ /*
176614
+ * The activity line is the tail of the transcript, not chrome around it, so it sits on the
176615
+ * same measure as the prose rows and starts at their left edge instead of spanning the pane.
176616
+ */
176537
176617
  .statusRow {
176538
- padding: 0 var(--dees-spacing-xs);
176618
+ width: min(var(--dees-harness-content-width, 820px), 100%);
176619
+ margin-inline: auto;
176539
176620
  }
176540
176621
 
176541
176622
  .empty {
@@ -179398,13 +179479,13 @@ var stages = {
179398
179479
  paused: { state: "normal", label: "Paused", description: "Permission was declined. The requested action did not run." }
179399
179480
  };
179400
179481
  var demoSessions = /* @__PURE__ */ __name(() => [
179401
- { title: "Fix sitemap cache key", harness: { id: "codex", name: "Codex" }, stage: "approval" },
179402
- { title: "Investigate model rate limits", harness: { id: "opencode", name: "OpenCode" }, stage: "working" },
179403
- { title: "Refactor workbench layout", harness: { id: "flexharness", name: "FlexHarness" }, stage: "feedback" },
179404
- { title: "Add adaptive code diffs", harness: { id: "codex", name: "Codex" }, stage: "finished" },
179405
- { title: "Prepare the catalog release", harness: { id: "opencode", name: "OpenCode" }, stage: "error" },
179482
+ { title: "Fix sitemap cache key", harness: { id: "codex", name: "Codex" }, projectLabel: "storefront", stage: "approval" },
179483
+ { title: "Investigate model rate limits", harness: { id: "opencode", name: "OpenCode" }, projectLabel: "gateway", stage: "working" },
179484
+ { title: "Refactor workbench layout", harness: { id: "flexharness", name: "FlexHarness" }, projectLabel: "storefront", stage: "feedback" },
179485
+ { title: "Add adaptive code diffs", harness: { id: "codex", name: "Codex" }, projectLabel: "catalog", stage: "finished" },
179486
+ { title: "Prepare the catalog release", harness: { id: "opencode", name: "OpenCode" }, projectLabel: "catalog", stage: "error" },
179406
179487
  { title: "Improve agent onboarding", harness: { id: "flexharness", name: "FlexHarness" }, stage: "idle" },
179407
- { title: "Draft the migration guide", harness: { id: "codex", name: "Codex" }, stage: "starting" }
179488
+ { title: "Draft the migration guide", harness: { id: "codex", name: "Codex" }, projectLabel: "gateway", stage: "starting" }
179408
179489
  ].map((session, index3) => ({
179409
179490
  ...session,
179410
179491
  id: `session-${index3}`,
@@ -179445,6 +179526,7 @@ var demoResources = [
179445
179526
  title: "Build shell",
179446
179527
  icon: "lucide:Terminal",
179447
179528
  preview: "pnpm run build",
179529
+ projectLabel: "storefront",
179448
179530
  updatedAt: Date.now() - 9e4,
179449
179531
  state: "ready"
179450
179532
  },
@@ -179454,6 +179536,7 @@ var demoResources = [
179454
179536
  title: "Release notes",
179455
179537
  icon: "lucide:FileText",
179456
179538
  preview: "Catalog migration notes",
179539
+ projectLabel: "catalog",
179457
179540
  updatedAt: Date.now() - 18e4
179458
179541
  },
179459
179542
  {
@@ -180114,7 +180197,13 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a100 = Dee
180114
180197
  return [...pinned, ...ordered, ...unknown3];
180115
180198
  }
180116
180199
  resourceMatchesSearch(resourceArg, queryArg) {
180117
- return [resourceArg.id, resourceArg.kind, resourceArg.title, resourceArg.preview].filter(Boolean).join(" ").toLowerCase().includes(queryArg);
180200
+ return [
180201
+ resourceArg.id,
180202
+ resourceArg.kind,
180203
+ resourceArg.title,
180204
+ resourceArg.preview,
180205
+ resourceArg.projectLabel
180206
+ ].filter(Boolean).join(" ").toLowerCase().includes(queryArg);
180118
180207
  }
180119
180208
  sessionMatchesSearch(sessionArg, queryArg) {
180120
180209
  return [
@@ -180123,6 +180212,7 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a100 = Dee
180123
180212
  sessionArg.id,
180124
180213
  sessionArg.harness?.id,
180125
180214
  sessionArg.harness?.name,
180215
+ sessionArg.projectLabel,
180126
180216
  this.sessionStatusLabel(sessionArg),
180127
180217
  this.sessionStateLabel(sessionArg.state ?? "normal")
180128
180218
  ].filter(Boolean).join(" ").toLowerCase().includes(queryArg);
@@ -180454,6 +180544,7 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a100 = Dee
180454
180544
  const detailsId = `session-details-${session.id}`;
180455
180545
  const dropIndex = index3 < 0 ? 0 : index3;
180456
180546
  const title = session.title || session.id;
180547
+ const projectLabel = session.projectLabel?.trim() ?? "";
180457
180548
  return b2`
180458
180549
  <article
180459
180550
  class="item state-${state4} ${active ? "active" : ""} ${expanded ? "expanded" : ""} ${session.id === this.selectedSessionId ? "selected" : ""} ${sameItem(this.draggingItem, { kind: "session", id: session.id }) ? "dragging" : ""}"
@@ -180513,6 +180604,10 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a100 = Dee
180513
180604
  <span class="harnessName" title=${session.harness.name}>${session.harness.name}</span>
180514
180605
  <span aria-hidden="true">·</span>
180515
180606
  ` : ""}
180607
+ ${projectLabel ? b2`
180608
+ <span class="projectName" title=${projectLabel}>${projectLabel}</span>
180609
+ <span aria-hidden="true">·</span>
180610
+ ` : ""}
180516
180611
  <span class="itemTime">${harnessFormatRelativeTime(session.updatedAt ?? session.createdAt)}</span>
180517
180612
  </span>
180518
180613
  </span>
@@ -180562,6 +180657,7 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a100 = Dee
180562
180657
  const contextOpen = resourceArg.id === this.resourceContextResourceId;
180563
180658
  const attachedTitle = attachedTarget ? this.itemTitleFor(attachedTarget) : "";
180564
180659
  const title = resourceArg.title || resourceArg.id;
180660
+ const projectLabel = resourceArg.projectLabel?.trim() ?? "";
180565
180661
  const dropIndex = indexArg < 0 ? 0 : indexArg;
180566
180662
  return b2`
180567
180663
  <article
@@ -180614,7 +180710,7 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a100 = Dee
180614
180710
  <span class="resourceTitle">${title}</span>
180615
180711
  ${resourceArg.preview ? b2`<span class="resourcePreview">${resourceArg.preview}</span>` : ""}
180616
180712
  <span class="resourceMeta">
180617
- ${resourceArg.kind}${resourceArg.state ? ` \xB7 ${resourceArg.state}` : ""}${resourceArg.updatedAt || resourceArg.createdAt ? ` \xB7 ${harnessFormatRelativeTime(resourceArg.updatedAt ?? resourceArg.createdAt)}` : ""}
180713
+ ${resourceArg.kind}${projectLabel ? ` \xB7 ${projectLabel}` : ""}${resourceArg.state ? ` \xB7 ${resourceArg.state}` : ""}${resourceArg.updatedAt || resourceArg.createdAt ? ` \xB7 ${harnessFormatRelativeTime(resourceArg.updatedAt ?? resourceArg.createdAt)}` : ""}
180618
180714
  </span>
180619
180715
  ${attachedTarget ? b2`
180620
180716
  <span class="resourceAttachment" title=${`Attached to ${attachedTitle}`}>
@@ -181524,7 +181620,8 @@ __publicField(_DeesHarnessSessionList, "styles", [
181524
181620
  line-height: 14px;
181525
181621
  }
181526
181622
 
181527
- .harnessName {
181623
+ .harnessName,
181624
+ .projectName {
181528
181625
  min-width: 0;
181529
181626
  overflow: hidden;
181530
181627
  text-overflow: ellipsis;
@@ -223745,7 +223842,7 @@ init_group_runtime();
223745
223842
  // ts_web/00_commitinfo_data.ts
223746
223843
  var commitinfo = {
223747
223844
  name: "@design.estate/dees-catalog",
223748
- version: "11.0.0",
223845
+ version: "11.2.0",
223749
223846
  description: "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript."
223750
223847
  };
223751
223848