@design.estate/dees-catalog 6.7.1 → 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 (30) hide show
  1. package/dist_bundle/bundle.js +1025 -99
  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 +32 -3
  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-sidebar/dees-harness-session-sidebar.js +9 -3
  14. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.d.ts +6 -1
  15. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.js +124 -6
  16. package/dist_ts_web/elements/00group-harness/interfaces.d.ts +30 -0
  17. package/dist_ts_web/elements/00group-harness/toolregistry.d.ts +2 -0
  18. package/dist_ts_web/elements/00group-harness/toolregistry.js +7 -1
  19. package/package.json +1 -1
  20. package/readme.md +4 -2
  21. package/ts_web/00_commitinfo_data.ts +1 -1
  22. package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.ts +28 -1
  23. package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.ts +943 -51
  24. package/ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.ts +37 -8
  25. package/ts_web/elements/00group-harness/dees-harness-question-card/dees-harness-question-card.ts +40 -12
  26. package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.ts +6 -2
  27. package/ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.ts +8 -2
  28. package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.ts +108 -4
  29. package/ts_web/elements/00group-harness/interfaces.ts +34 -0
  30. package/ts_web/elements/00group-harness/toolregistry.ts +7 -0
package/readme.md CHANGED
@@ -1805,11 +1805,13 @@ chat.applyDelta({
1805
1805
 
1806
1806
  Key props: `messages`, `permissions`, `questions`, `status`, `usage`, `todos`/`showTodosPanel`, `sessionMetrics`, `scratchpad`/`scratchpadBusy`/`scratchpadError`, `sessionIntelligenceEnabled`/`intelligenceExchanges`/`intelligenceBusy`/`intelligenceError`, `showSessionSidebar`, `heading`, `subheading`, `showToolbar`, `busy`, `queuedCount`, `disabled`, `account`/`accountOptions`, `model`/`modelOptions`, `reasoningEffort`/`effortOptions`, `mode`/`modeOptions`, `toolRegistry`. Account options use human-readable `label` values and opaque stable `value` identifiers. The status line renders inside the transcript column (it never pushes between the session panel and the composer), and both the toolbar and the docked composer cast a subtle shadow over the scrolling messages.
1807
1807
 
1808
- A **session side panel** shows Tasks, Tools & Subagents, Tokens, Session Scratchpad, and Session Intelligence next to the transcript. Its sections form a single-open accordion: opening one collapses the others, clicking the open heading collapses all, and each expanded section owns its scrolling while every heading remains visible. Tools & Subagents separates active calls from terminal history and derives both directly from top-level tool messages still present in the host's retained transcript window; evicted calls are not cached. Long activity labels and descriptions use a 40px right-edge fade instead of ellipses, reveal the full line on hover, and run through once after the two-second delay when their section has measurable width. Session Intelligence keeps its exchange history scrollable above a docked, chat-style question composer. Set `.todos` explicitly, or leave it empty and the chat derives tasks from the newest todo tool call in `messages`; `showTodosPanel={false}` hides only that section. Unknown token metrics remain absent. The toolbar controls the session panel; host-owned navigation controls belong outside the chat component. In narrow containers the session panel becomes an accessible overlay; when the toolbar is disabled, an inline Session details control keeps it reachable. `showSessionSidebar={false}` disables the complete panel. Methods: `applyDelta()`, `focusComposer()`, `clearComposer()`, `scrollToBottom()`. Events (also from children, all composed): `harness-send`, `harness-steer`, `harness-abort`, `harness-input`, `harness-attachments-change`, `harness-attachment-error`, `harness-account-change`, `harness-model-change`, `harness-mode-change`, `harness-permission-response`, `harness-question-response`, `harness-subtask-open`, `harness-scratchpad-save`, `harness-session-intelligence-ask`.
1808
+ A **session side panel** shows Tasks, Tools & Subagents, Tokens, Session Scratchpad, and Session Intelligence next to the transcript. Its sections form a single-open accordion: opening one collapses the others, clicking the open heading collapses all, and each expanded section owns its scrolling while every heading remains visible. Collapsed sections retain their region wrapper but omit the content subtree until expansion; sidebar-owned scratchpad and intelligence drafts survive that lazy remount. Tools & Subagents separates active calls from terminal history and derives both directly from top-level tool messages still present in the host's retained transcript window; evicted calls are not cached. Long activity labels and descriptions use a 40px right-edge fade instead of ellipses, reveal the full line on hover, and run through once after the two-second delay when their section has measurable width. Session Intelligence keeps its exchange history scrollable above a docked, chat-style question composer. Set `.todos` explicitly, or leave it empty and the chat derives tasks from the newest todo tool call in `messages`; `showTodosPanel={false}` hides only that section. Unknown token metrics remain absent. The toolbar controls the session panel; host-owned navigation controls belong outside the chat component. In narrow containers the session panel becomes an accessible overlay; when the toolbar is disabled, an inline Session details control keeps it reachable. `showSessionSidebar={false}` disables the complete panel. Methods: `applyDelta()`, `focusComposer()`, `clearComposer()`, `scrollToBottom()`. Events (also from children, all composed): `harness-send`, `harness-steer`, `harness-abort`, `harness-input`, `harness-attachments-change`, `harness-attachment-error`, `harness-account-change`, `harness-model-change`, `harness-mode-change`, `harness-permission-response`, `harness-question-response`, `harness-subtask-open`, `harness-scratchpad-save`, `harness-session-intelligence-ask`.
1809
1809
 
1810
1810
  #### `DeesHarnessMessageList`
1811
1811
 
1812
- Scrollable streaming-safe log. Keyed repeats keep DOM identity stable; `applyDelta()` routes content updates to the affected message element. Producers with authoritative source chronology can set `IHarnessMessage.order` to `{ messageIndex, partIndex }`; explicitly ordered messages retain that relative order while timestamps continue to place legacy messages and ancillary cards. Consecutive tool calls use one generic responsive-grid pipeline at their chronological position, partitioned by descriptor layout: compact tools share rows with compact tools, subagents share rows only with subagents, and terminal plus file-write cards span a whole row. Columns respond to transcript content width rather than the viewport, and status changes never regroup cards. Untouched projected subtask cards collapse individually on completion with the normal disclosure animation; other cards retain their descriptor or user-selected disclosure state. The grid adds no second summary or collapse layer. Group and card identity survive front-window eviction while any member remains. Auto-follow responds to streamed growth but does not repeatedly repin while a disclosure shrinks. Permission requests, questions, and nested-stream limits behave as before. Props: `messages`, `permissions`/`permissionsBusy`, `questions`, `status`, `autoFollow`, `hideScrollbar`, `fadeScrollEdges`, `showRoles`, `showTimestamps`, `allowSubtaskStreams`, `emptyTitle`/`emptyText` (+ `slot="empty"`).
1812
+ Scrollable streaming-safe log. Up to 40 canonical entries (`messages` + `permissions` + `questions`) keep keyed full-timeline DOM; larger inputs activate a measured variable-height window with 800px overscan and return to full rendering when they shrink. Rows outside that overscanned window are unmounted, except focused rows, both endpoints of an active selection, and fullscreen-owned cards, which remain mounted until the interaction ends; threshold-mode changes are likewise deferred while protected DOM is active. `applyDelta()` targets a mounted message or mutates its offscreen backing model. Markdown output, disclosures, reasoning expansion, question drafts, permission choices, diff layout, terminal scroll state, and live nested-transcript state restore from retained data after an actual eviction. Hosts may pass a stable mutable `IHarnessTranscriptViewState` through `viewState`; it must contain `messages`, `permissions`, and `questions` maps. The list creates entries for current canonical IDs, deletes records for removed IDs, and session-keys and prunes live nested-subtask records. Without that prop, equivalent state remains list-local.
1813
+
1814
+ Producers with authoritative source chronology can set `IHarnessMessage.order` to `{ messageIndex, partIndex }`; explicitly ordered messages retain that relative order while timestamps continue to place legacy messages and ancillary cards. Consecutive tool calls use one generic responsive-grid pipeline at their chronological position, partitioned by descriptor layout: compact tools share rows with compact tools, subagents share rows only with subagents, and terminal plus file-write cards span a whole row. Consecutive same-layout runs are always capped at four cards per group row, even when their tool kinds differ. Columns respond to transcript content width rather than the viewport, and status changes never regroup cards. Untouched projected subtask cards collapse individually on completion with the normal disclosure animation; other cards retain their descriptor or user-selected disclosure state. Auto-follow responds to streamed growth but does not repeatedly repin while a disclosure shrinks. Permission requests, questions, and nested-stream limits behave as before. Props: `messages`, `permissions`/`permissionsBusy`, `questions`, `status`, `viewState`, `autoFollow`, `hideScrollbar`, `fadeScrollEdges`, `showRoles`, `showTimestamps`, `allowSubtaskStreams`, `emptyTitle`/`emptyText` (+ `slot="empty"`). Native browser find and selection cover the mounted window; hosts that require complete-history search or copy should operate on their canonical `messages`, `permissions`, and `questions` models.
1813
1815
 
1814
1816
  #### `DeesHarnessMessage`
1815
1817
 
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-catalog',
6
- version: '6.7.1',
6
+ version: '6.8.0',
7
7
  description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
8
8
  }
@@ -16,6 +16,7 @@ import type { HLJSApi } from 'highlight.js';
16
16
  import type {
17
17
  IHarnessAttachment,
18
18
  IHarnessMessage,
19
+ IHarnessMessageViewState,
19
20
  IHarnessUsage,
20
21
  THarnessMessageStreamDelta,
21
22
  } from '../interfaces.js';
@@ -73,6 +74,9 @@ export class DeesHarnessMessage extends DeesElement {
73
74
  @property({ attribute: false })
74
75
  accessor suppressEntry: boolean = false;
75
76
 
77
+ @property({ attribute: false })
78
+ accessor viewState: IHarnessMessageViewState | undefined = undefined;
79
+
76
80
  @state()
77
81
  accessor renderedMarkdownHtml: string = '';
78
82
 
@@ -446,6 +450,7 @@ export class DeesHarnessMessage extends DeesElement {
446
450
  .call=${message.toolCall}
447
451
  .toolRegistry=${this.toolRegistry}
448
452
  .allowSubtaskStreams=${this.allowSubtaskStreams}
453
+ .viewState=${this.viewState}
449
454
  ></dees-harness-tool-card>
450
455
  `;
451
456
  }
@@ -478,7 +483,10 @@ export class DeesHarnessMessage extends DeesElement {
478
483
  ${message.reasoning?.length
479
484
  ? html`
480
485
  <div class="reasoningStack">
481
- <dees-harness-reasoning .reasoningParts=${message.reasoning}></dees-harness-reasoning>
486
+ <dees-harness-reasoning
487
+ .reasoningParts=${message.reasoning}
488
+ .viewState=${this.viewState}
489
+ ></dees-harness-reasoning>
482
490
  </div>
483
491
  `
484
492
  : ''}
@@ -488,6 +496,7 @@ export class DeesHarnessMessage extends DeesElement {
488
496
  .call=${message.toolCall}
489
497
  .toolRegistry=${this.toolRegistry}
490
498
  .allowSubtaskStreams=${this.allowSubtaskStreams}
499
+ .viewState=${this.viewState}
491
500
  ></dees-harness-tool-card>`
492
501
  : ''}
493
502
  ${this.renderText()}
@@ -566,6 +575,19 @@ export class DeesHarnessMessage extends DeesElement {
566
575
  public async updated(changedProperties: Map<string, any>): Promise<void> {
567
576
  super.updated(changedProperties);
568
577
  if (!this.markdownActive || !this.message.text) return;
578
+ if (
579
+ this.viewState?.markdownText === this.message.text
580
+ && this.viewState.markdownHtml
581
+ && this.lastParsedText !== this.message.text
582
+ ) {
583
+ this.lastParsedText = this.message.text;
584
+ this.renderedMarkdownHtml = this.viewState.markdownHtml;
585
+ if (!this.message.streaming) {
586
+ await this.updateComplete;
587
+ await this.highlightCodeFences(this.markdownParseToken);
588
+ }
589
+ return;
590
+ }
569
591
  if (this.message.text === this.lastParsedText) return;
570
592
  if (this.message.streaming) {
571
593
  if (!this.markdownWhileStreaming) return;
@@ -590,6 +612,10 @@ export class DeesHarnessMessage extends DeesElement {
590
612
  if (token !== this.markdownParseToken) return;
591
613
  this.lastParsedText = textAtRequest;
592
614
  this.renderedMarkdownHtml = htmlResult;
615
+ if (this.viewState) {
616
+ this.viewState.markdownText = textAtRequest;
617
+ this.viewState.markdownHtml = htmlResult;
618
+ }
593
619
  if (!this.message.streaming) {
594
620
  await this.updateComplete;
595
621
  await this.highlightCodeFences(token);
@@ -624,6 +650,7 @@ export class DeesHarnessMessage extends DeesElement {
624
650
  }
625
651
 
626
652
  public async disconnectedCallback(): Promise<void> {
653
+ this.markdownParseToken += 1;
627
654
  if (this.markdownThrottleTimeout) {
628
655
  clearTimeout(this.markdownThrottleTimeout);
629
656
  this.markdownThrottleTimeout = null;