@design.estate/dees-catalog 6.1.0 → 6.3.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 (50) hide show
  1. package/dist_bundle/bundle.js +3161 -1498
  2. package/dist_ts_web/00_commitinfo_data.js +1 -1
  3. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.d.ts +5 -1
  4. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.js +484 -8
  5. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.js +33 -2
  6. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.d.ts +6 -4
  7. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.js +7 -1
  8. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.js +67 -6
  9. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.d.ts +3 -1
  10. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.js +24 -4
  11. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.d.ts +26 -0
  12. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.js +398 -94
  13. package/dist_ts_web/elements/00group-harness/dees-harness-overflow-text.d.ts +32 -0
  14. package/dist_ts_web/elements/00group-harness/dees-harness-overflow-text.demo.d.ts +1 -0
  15. package/dist_ts_web/elements/00group-harness/dees-harness-overflow-text.demo.js +31 -0
  16. package/dist_ts_web/elements/00group-harness/dees-harness-overflow-text.js +297 -0
  17. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +1 -9
  18. package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.d.ts +10 -1
  19. package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.js +181 -2
  20. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.d.ts +17 -1
  21. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.js +476 -36
  22. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/renderers.js +23 -20
  23. package/dist_ts_web/elements/00group-harness/harness.helpers.d.ts +5 -1
  24. package/dist_ts_web/elements/00group-harness/harness.helpers.js +66 -1
  25. package/dist_ts_web/elements/00group-harness/index.d.ts +1 -0
  26. package/dist_ts_web/elements/00group-harness/index.js +2 -1
  27. package/dist_ts_web/elements/00group-harness/interfaces.d.ts +39 -2
  28. package/dist_ts_web/elements/00group-harness/toolregistry.d.ts +4 -0
  29. package/dist_ts_web/elements/00group-harness/toolregistry.js +8 -1
  30. package/package.json +2 -2
  31. package/readme.hints.md +16 -1
  32. package/readme.md +48 -11
  33. package/readme.playbook.md +8 -4
  34. package/ts_web/00_commitinfo_data.ts +1 -1
  35. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.ts +490 -7
  36. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.ts +22 -0
  37. package/ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.ts +6 -0
  38. package/ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.ts +64 -5
  39. package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.ts +24 -3
  40. package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.ts +397 -84
  41. package/ts_web/elements/00group-harness/dees-harness-overflow-text.demo.ts +31 -0
  42. package/ts_web/elements/00group-harness/dees-harness-overflow-text.ts +236 -0
  43. package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.ts +0 -8
  44. package/ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.ts +193 -1
  45. package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.ts +480 -34
  46. package/ts_web/elements/00group-harness/dees-harness-tool-card/renderers.ts +24 -21
  47. package/ts_web/elements/00group-harness/harness.helpers.ts +68 -1
  48. package/ts_web/elements/00group-harness/index.ts +1 -0
  49. package/ts_web/elements/00group-harness/interfaces.ts +46 -2
  50. package/ts_web/elements/00group-harness/toolregistry.ts +12 -0
@@ -9,7 +9,11 @@ import {
9
9
  cssManager,
10
10
  } from '@design.estate/dees-element';
11
11
  import { themeDefaultStyles } from '../../00theme.js';
12
- import type { IHarnessAttachment, IHarnessComposerSendDetail } from '../interfaces.js';
12
+ import type {
13
+ IHarnessAttachment,
14
+ IHarnessComposerOption,
15
+ IHarnessComposerSendDetail,
16
+ } from '../interfaces.js';
13
17
  import {
14
18
  harnessFileToBase64,
15
19
  harnessFormatBytes,
@@ -33,16 +37,19 @@ type TDropdownOption = { option: string; key: string };
33
37
  const toDropdownOptions = (values: string[]): TDropdownOption[] =>
34
38
  values.map((value) => ({ option: value, key: value }));
35
39
 
40
+ const toLabeledDropdownOptions = (values: IHarnessComposerOption[]): TDropdownOption[] =>
41
+ values.map((value) => ({ option: value.label, key: value.value }));
42
+
36
43
  /**
37
44
  * Prompt composer: autogrow textarea, attachments (picker / paste /
38
- * drag-drop with per-file and total size limits), optional model and
39
- * reasoning-effort dropdowns. Cmd/Ctrl+Enter sends. While busy, Stop is an
45
+ * drag-drop with per-file and total size limits), optional account, model,
46
+ * and reasoning-effort dropdowns. Cmd/Ctrl+Enter sends. While busy, Stop is an
40
47
  * additional button and Send stays available for queueing; an empty prompt
41
48
  * with queued messages offers "Steer now".
42
49
  *
43
50
  * Controlled component: `value` and `attachments` are owned by the host;
44
51
  * the composer emits `harness-input`, `harness-attachments-change`,
45
- * `harness-attachment-error`, `harness-model-change`, `harness-send`,
52
+ * `harness-attachment-error`, `harness-account-change`, `harness-model-change`, `harness-send`,
46
53
  * `harness-steer`, and `harness-abort` (all bubbling + composed).
47
54
  */
48
55
  @customElement('dees-harness-composer')
@@ -90,6 +97,12 @@ export class DeesHarnessComposer extends DeesElement {
90
97
  @property({ type: Number })
91
98
  accessor maxTotalAttachmentBytes: number = harnessMaxTotalAttachmentBytes;
92
99
 
100
+ @property()
101
+ accessor account: string = '';
102
+
103
+ @property({ attribute: false })
104
+ accessor accountOptions: IHarnessComposerOption[] = [];
105
+
93
106
  @property()
94
107
  accessor model: string = '';
95
108
 
@@ -122,6 +135,7 @@ export class DeesHarnessComposer extends DeesElement {
122
135
  :host {
123
136
  display: block;
124
137
  font-family: var(--dees-font-family);
138
+ container-type: inline-size;
125
139
  }
126
140
 
127
141
  .composer {
@@ -296,6 +310,12 @@ export class DeesHarnessComposer extends DeesElement {
296
310
  margin: 0;
297
311
  }
298
312
 
313
+ .accountSelect {
314
+ flex: 0 1 180px;
315
+ width: 180px;
316
+ min-width: 120px;
317
+ }
318
+
299
319
  /* Model identifiers are provider-qualified ("anthropic/claude-opus-5"),
300
320
  so the control grows into the free space instead of truncating,
301
321
  while still shrinking on narrow hosts. */
@@ -313,6 +333,25 @@ export class DeesHarnessComposer extends DeesElement {
313
333
  .spacer {
314
334
  flex: 1;
315
335
  }
336
+
337
+ @container (max-width: 760px) {
338
+ .controlsRow {
339
+ flex-wrap: wrap;
340
+ }
341
+
342
+ .modelControls {
343
+ order: 3;
344
+ flex: 1 0 100%;
345
+ flex-wrap: wrap;
346
+ }
347
+
348
+ .accountSelect,
349
+ .modelSelect {
350
+ flex: 1 1 140px;
351
+ width: auto;
352
+ min-width: 0;
353
+ }
354
+ }
316
355
  `,
317
356
  ];
318
357
 
@@ -386,9 +425,28 @@ export class DeesHarnessComposer extends DeesElement {
386
425
  </div>
387
426
  `
388
427
  : ''}
389
- ${this.showModelControls && (this.modelOptions.length || this.effortOptions.length)
428
+ ${this.showModelControls && (
429
+ this.accountOptions.length || this.modelOptions.length || this.effortOptions.length
430
+ )
390
431
  ? html`
391
432
  <div class="modelControls">
433
+ ${this.accountOptions.length
434
+ ? html`
435
+ <dees-input-dropdown
436
+ class="accountSelect"
437
+ .options=${toLabeledDropdownOptions(this.accountOptions)}
438
+ .selectedOption=${this.account
439
+ ? toLabeledDropdownOptions(this.accountOptions)
440
+ .find((option) => option.key === this.account) ?? null
441
+ : null}
442
+ .disabled=${this.disabled}
443
+ @selectedOption=${(event: CustomEvent<TDropdownOption>) => {
444
+ this.account = event.detail?.key ?? this.account;
445
+ this.emit('harness-account-change', { account: this.account });
446
+ }}
447
+ ></dees-input-dropdown>
448
+ `
449
+ : ''}
392
450
  ${this.modelOptions.length
393
451
  ? html`
394
452
  <dees-input-dropdown
@@ -589,6 +647,7 @@ export class DeesHarnessComposer extends DeesElement {
589
647
  const detail: IHarnessComposerSendDetail = {
590
648
  text: this.value,
591
649
  attachments: this.attachments,
650
+ account: this.account || undefined,
592
651
  model: this.model || undefined,
593
652
  reasoningEffort: this.reasoningEffort || undefined,
594
653
  };
@@ -13,7 +13,12 @@ import {
13
13
  import { themeDefaultStyles } from '../../00theme.js';
14
14
  import { syntaxPaletteStyles, syntaxScopeStyles } from '../../00syntax.js';
15
15
  import type { HLJSApi } from 'highlight.js';
16
- import type { IHarnessAttachment, IHarnessMessage, IHarnessUsage } from '../interfaces.js';
16
+ import type {
17
+ IHarnessAttachment,
18
+ IHarnessMessage,
19
+ IHarnessUsage,
20
+ THarnessMessageStreamDelta,
21
+ } from '../interfaces.js';
17
22
  import { DeesHarnessToolRegistry } from '../toolregistry.js';
18
23
  import { HarnessMarkdown, markdownStyles } from '../harness.markdown.js';
19
24
  import { harnessFormatBytes, harnessFormatClockTime } from '../harness.helpers.js';
@@ -57,6 +62,9 @@ export class DeesHarnessMessage extends DeesElement {
57
62
  @property({ attribute: false })
58
63
  accessor toolRegistry: DeesHarnessToolRegistry = DeesHarnessToolRegistry.default;
59
64
 
65
+ @property({ type: Boolean })
66
+ accessor allowSubtaskStreams: boolean = true;
67
+
60
68
  /**
61
69
  * When true at first render, the entry animation is skipped permanently
62
70
  * for this element (initial-batch rendering). Captured once in
@@ -406,6 +414,11 @@ export class DeesHarnessMessage extends DeesElement {
406
414
  this.requestUpdate();
407
415
  }
408
416
 
417
+ public applySubtaskDelta(delta: THarnessMessageStreamDelta): boolean {
418
+ const card = this.shadowRoot?.querySelector('dees-harness-tool-card');
419
+ return card?.applySubtaskDelta(delta) ?? false;
420
+ }
421
+
409
422
  // ------------------------------------------------------------------ render
410
423
 
411
424
  public render(): TemplateResult {
@@ -421,7 +434,11 @@ export class DeesHarnessMessage extends DeesElement {
421
434
  && !message.attachments?.length
422
435
  ) {
423
436
  return html`
424
- <dees-harness-tool-card .call=${message.toolCall} .toolRegistry=${this.toolRegistry}></dees-harness-tool-card>
437
+ <dees-harness-tool-card
438
+ .call=${message.toolCall}
439
+ .toolRegistry=${this.toolRegistry}
440
+ .allowSubtaskStreams=${this.allowSubtaskStreams}
441
+ ></dees-harness-tool-card>
425
442
  `;
426
443
  }
427
444
  const roleClass = `role-${message.role}`;
@@ -456,7 +473,11 @@ export class DeesHarnessMessage extends DeesElement {
456
473
  : ''}
457
474
  ${message.attachments?.length ? this.renderAttachments(message.attachments) : ''}
458
475
  ${message.toolCall
459
- ? html`<dees-harness-tool-card .call=${message.toolCall} .toolRegistry=${this.toolRegistry}></dees-harness-tool-card>`
476
+ ? html`<dees-harness-tool-card
477
+ .call=${message.toolCall}
478
+ .toolRegistry=${this.toolRegistry}
479
+ .allowSubtaskStreams=${this.allowSubtaskStreams}
480
+ ></dees-harness-tool-card>`
460
481
  : ''}
461
482
  ${this.renderText()}
462
483
  ${message.error ? html`<div class="errorText">${message.error}</div>` : ''}