@design.estate/dees-catalog 6.8.2 → 6.9.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.
- package/dist_bundle/bundle.js +271 -35
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.d.ts +2 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.js +11 -2
- package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.d.ts +23 -2
- package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.js +278 -10
- package/dist_ts_web/elements/00group-harness/interfaces.d.ts +5 -0
- package/package.json +1 -1
- package/readme.md +16 -2
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.ts +5 -0
- package/ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.ts +269 -7
- package/ts_web/elements/00group-harness/interfaces.ts +6 -0
package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
|
|
2
|
-
import type { IHarnessAttachment, IHarnessComposerOption } from '../interfaces.js';
|
|
2
|
+
import type { IHarnessAttachment, IHarnessComposerOption, IHarnessComposerSuggestion } from '../interfaces.js';
|
|
3
3
|
import '../../00group-button/dees-button/dees-button.js';
|
|
4
4
|
import '../../00group-input/dees-input-dropdown/dees-input-dropdown.js';
|
|
5
5
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
|
@@ -15,7 +15,7 @@ declare global {
|
|
|
15
15
|
* additional button and Send stays available for queueing; an empty prompt
|
|
16
16
|
* with queued messages offers "Steer now".
|
|
17
17
|
*
|
|
18
|
-
* Controlled component: `value` and `
|
|
18
|
+
* Controlled component: `value`, `attachments`, and `suggestions` are owned by the host;
|
|
19
19
|
* the composer emits `harness-input`, `harness-attachments-change`,
|
|
20
20
|
* `harness-attachment-error`, `harness-account-change`, `harness-model-change`, `harness-send`,
|
|
21
21
|
* `harness-steer`, and `harness-abort` (all bubbling + composed).
|
|
@@ -43,6 +43,12 @@ export declare class DeesHarnessComposer extends DeesElement {
|
|
|
43
43
|
/** number of messages the host has queued while the run is busy */
|
|
44
44
|
accessor queuedCount: number;
|
|
45
45
|
accessor attachments: IHarnessAttachment[];
|
|
46
|
+
accessor suggestions: IHarnessComposerSuggestion[];
|
|
47
|
+
private accessor activeSuggestionIndex;
|
|
48
|
+
private accessor suggestionsDismissed;
|
|
49
|
+
private accessor promptFocused;
|
|
50
|
+
private composing;
|
|
51
|
+
private readonly suggestionListId;
|
|
46
52
|
accessor maxAttachmentBytes: number;
|
|
47
53
|
accessor maxTotalAttachmentBytes: number;
|
|
48
54
|
accessor maxAttachmentCount: number;
|
|
@@ -62,10 +68,25 @@ export declare class DeesHarnessComposer extends DeesElement {
|
|
|
62
68
|
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
63
69
|
focusPrompt(): Promise<void>;
|
|
64
70
|
clear(): void;
|
|
71
|
+
willUpdate(changedProperties: Map<PropertyKey, unknown>): void;
|
|
72
|
+
updated(changedProperties: Map<PropertyKey, unknown>): void;
|
|
65
73
|
render(): TemplateResult;
|
|
74
|
+
private renderSuggestions;
|
|
66
75
|
private renderChip;
|
|
67
76
|
private handleTextInput;
|
|
68
77
|
private handleKeydown;
|
|
78
|
+
private handleCompositionStart;
|
|
79
|
+
private handleCompositionEnd;
|
|
80
|
+
private handlePromptFocus;
|
|
81
|
+
private handlePromptBlur;
|
|
82
|
+
private handleSuggestionPointerDown;
|
|
83
|
+
private resetSuggestionInteraction;
|
|
84
|
+
private get suggestionsVisible();
|
|
85
|
+
private suggestionOptionId;
|
|
86
|
+
private syncTextareaSuggestionAria;
|
|
87
|
+
private moveActiveSuggestion;
|
|
88
|
+
private scrollActiveSuggestionIntoView;
|
|
89
|
+
private selectSuggestion;
|
|
69
90
|
private autogrow;
|
|
70
91
|
private handleFileInputChange;
|
|
71
92
|
private handlePaste;
|
|
@@ -33,7 +33,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
|
|
|
33
33
|
return useValue ? value : void 0;
|
|
34
34
|
};
|
|
35
35
|
import { demoFunc } from './dees-harness-composer.demo.js';
|
|
36
|
-
import { DeesElement, html, css, customElement, property, cssManager, } from '@design.estate/dees-element';
|
|
36
|
+
import { DeesElement, html, css, customElement, property, state, cssManager, } from '@design.estate/dees-element';
|
|
37
37
|
import { themeDefaultStyles } from '../../00theme.js';
|
|
38
38
|
import { harnessFileToBase64, harnessFormatBytes, harnessAttachmentKindFor, harnessMaxAttachmentBytes, harnessMaxTotalAttachmentBytes, harnessMediaTypeForFile, } from '../harness.helpers.js';
|
|
39
39
|
import '../../00group-button/dees-button/dees-button.js';
|
|
@@ -41,6 +41,7 @@ import '../../00group-input/dees-input-dropdown/dees-input-dropdown.js';
|
|
|
41
41
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
|
42
42
|
const toDropdownOptions = (values) => values.map((value) => ({ option: value, key: value }));
|
|
43
43
|
const toLabeledDropdownOptions = (values) => values.map((value) => ({ option: value.label, key: value.value }));
|
|
44
|
+
let nextSuggestionListId = 0;
|
|
44
45
|
/**
|
|
45
46
|
* Prompt composer: autogrow textarea, attachments (picker / paste /
|
|
46
47
|
* drag-drop with per-file and total size limits), optional account, model,
|
|
@@ -48,7 +49,7 @@ const toLabeledDropdownOptions = (values) => values.map((value) => ({ option: va
|
|
|
48
49
|
* additional button and Send stays available for queueing; an empty prompt
|
|
49
50
|
* with queued messages offers "Steer now".
|
|
50
51
|
*
|
|
51
|
-
* Controlled component: `value` and `
|
|
52
|
+
* Controlled component: `value`, `attachments`, and `suggestions` are owned by the host;
|
|
52
53
|
* the composer emits `harness-input`, `harness-attachments-change`,
|
|
53
54
|
* `harness-attachment-error`, `harness-account-change`, `harness-model-change`, `harness-send`,
|
|
54
55
|
* `harness-steer`, and `harness-abort` (all bubbling + composed).
|
|
@@ -80,6 +81,18 @@ let DeesHarnessComposer = (() => {
|
|
|
80
81
|
let _attachments_decorators;
|
|
81
82
|
let _attachments_initializers = [];
|
|
82
83
|
let _attachments_extraInitializers = [];
|
|
84
|
+
let _suggestions_decorators;
|
|
85
|
+
let _suggestions_initializers = [];
|
|
86
|
+
let _suggestions_extraInitializers = [];
|
|
87
|
+
let _activeSuggestionIndex_decorators;
|
|
88
|
+
let _activeSuggestionIndex_initializers = [];
|
|
89
|
+
let _activeSuggestionIndex_extraInitializers = [];
|
|
90
|
+
let _suggestionsDismissed_decorators;
|
|
91
|
+
let _suggestionsDismissed_initializers = [];
|
|
92
|
+
let _suggestionsDismissed_extraInitializers = [];
|
|
93
|
+
let _promptFocused_decorators;
|
|
94
|
+
let _promptFocused_initializers = [];
|
|
95
|
+
let _promptFocused_extraInitializers = [];
|
|
83
96
|
let _maxAttachmentBytes_decorators;
|
|
84
97
|
let _maxAttachmentBytes_initializers = [];
|
|
85
98
|
let _maxAttachmentBytes_extraInitializers = [];
|
|
@@ -127,6 +140,10 @@ let DeesHarnessComposer = (() => {
|
|
|
127
140
|
_busy_decorators = [property({ type: Boolean })];
|
|
128
141
|
_queuedCount_decorators = [property({ type: Number })];
|
|
129
142
|
_attachments_decorators = [property({ attribute: false })];
|
|
143
|
+
_suggestions_decorators = [property({ attribute: false })];
|
|
144
|
+
_activeSuggestionIndex_decorators = [state()];
|
|
145
|
+
_suggestionsDismissed_decorators = [state()];
|
|
146
|
+
_promptFocused_decorators = [state()];
|
|
130
147
|
_maxAttachmentBytes_decorators = [property({ type: Number })];
|
|
131
148
|
_maxTotalAttachmentBytes_decorators = [property({ type: Number })];
|
|
132
149
|
_maxAttachmentCount_decorators = [property({ type: Number })];
|
|
@@ -146,6 +163,10 @@ let DeesHarnessComposer = (() => {
|
|
|
146
163
|
__esDecorate(this, null, _busy_decorators, { kind: "accessor", name: "busy", static: false, private: false, access: { has: obj => "busy" in obj, get: obj => obj.busy, set: (obj, value) => { obj.busy = value; } }, metadata: _metadata }, _busy_initializers, _busy_extraInitializers);
|
|
147
164
|
__esDecorate(this, null, _queuedCount_decorators, { kind: "accessor", name: "queuedCount", static: false, private: false, access: { has: obj => "queuedCount" in obj, get: obj => obj.queuedCount, set: (obj, value) => { obj.queuedCount = value; } }, metadata: _metadata }, _queuedCount_initializers, _queuedCount_extraInitializers);
|
|
148
165
|
__esDecorate(this, null, _attachments_decorators, { kind: "accessor", name: "attachments", static: false, private: false, access: { has: obj => "attachments" in obj, get: obj => obj.attachments, set: (obj, value) => { obj.attachments = value; } }, metadata: _metadata }, _attachments_initializers, _attachments_extraInitializers);
|
|
166
|
+
__esDecorate(this, null, _suggestions_decorators, { kind: "accessor", name: "suggestions", static: false, private: false, access: { has: obj => "suggestions" in obj, get: obj => obj.suggestions, set: (obj, value) => { obj.suggestions = value; } }, metadata: _metadata }, _suggestions_initializers, _suggestions_extraInitializers);
|
|
167
|
+
__esDecorate(this, null, _activeSuggestionIndex_decorators, { kind: "accessor", name: "activeSuggestionIndex", static: false, private: false, access: { has: obj => "activeSuggestionIndex" in obj, get: obj => obj.activeSuggestionIndex, set: (obj, value) => { obj.activeSuggestionIndex = value; } }, metadata: _metadata }, _activeSuggestionIndex_initializers, _activeSuggestionIndex_extraInitializers);
|
|
168
|
+
__esDecorate(this, null, _suggestionsDismissed_decorators, { kind: "accessor", name: "suggestionsDismissed", static: false, private: false, access: { has: obj => "suggestionsDismissed" in obj, get: obj => obj.suggestionsDismissed, set: (obj, value) => { obj.suggestionsDismissed = value; } }, metadata: _metadata }, _suggestionsDismissed_initializers, _suggestionsDismissed_extraInitializers);
|
|
169
|
+
__esDecorate(this, null, _promptFocused_decorators, { kind: "accessor", name: "promptFocused", static: false, private: false, access: { has: obj => "promptFocused" in obj, get: obj => obj.promptFocused, set: (obj, value) => { obj.promptFocused = value; } }, metadata: _metadata }, _promptFocused_initializers, _promptFocused_extraInitializers);
|
|
149
170
|
__esDecorate(this, null, _maxAttachmentBytes_decorators, { kind: "accessor", name: "maxAttachmentBytes", static: false, private: false, access: { has: obj => "maxAttachmentBytes" in obj, get: obj => obj.maxAttachmentBytes, set: (obj, value) => { obj.maxAttachmentBytes = value; } }, metadata: _metadata }, _maxAttachmentBytes_initializers, _maxAttachmentBytes_extraInitializers);
|
|
150
171
|
__esDecorate(this, null, _maxTotalAttachmentBytes_decorators, { kind: "accessor", name: "maxTotalAttachmentBytes", static: false, private: false, access: { has: obj => "maxTotalAttachmentBytes" in obj, get: obj => obj.maxTotalAttachmentBytes, set: (obj, value) => { obj.maxTotalAttachmentBytes = value; } }, metadata: _metadata }, _maxTotalAttachmentBytes_initializers, _maxTotalAttachmentBytes_extraInitializers);
|
|
151
172
|
__esDecorate(this, null, _maxAttachmentCount_decorators, { kind: "accessor", name: "maxAttachmentCount", static: false, private: false, access: { has: obj => "maxAttachmentCount" in obj, get: obj => obj.maxAttachmentCount, set: (obj, value) => { obj.maxAttachmentCount = value; } }, metadata: _metadata }, _maxAttachmentCount_initializers, _maxAttachmentCount_extraInitializers);
|
|
@@ -198,7 +219,21 @@ let DeesHarnessComposer = (() => {
|
|
|
198
219
|
#attachments_accessor_storage = (__runInitializers(this, _queuedCount_extraInitializers), __runInitializers(this, _attachments_initializers, []));
|
|
199
220
|
get attachments() { return this.#attachments_accessor_storage; }
|
|
200
221
|
set attachments(value) { this.#attachments_accessor_storage = value; }
|
|
201
|
-
#
|
|
222
|
+
#suggestions_accessor_storage = (__runInitializers(this, _attachments_extraInitializers), __runInitializers(this, _suggestions_initializers, []));
|
|
223
|
+
get suggestions() { return this.#suggestions_accessor_storage; }
|
|
224
|
+
set suggestions(value) { this.#suggestions_accessor_storage = value; }
|
|
225
|
+
#activeSuggestionIndex_accessor_storage = (__runInitializers(this, _suggestions_extraInitializers), __runInitializers(this, _activeSuggestionIndex_initializers, -1));
|
|
226
|
+
get activeSuggestionIndex() { return this.#activeSuggestionIndex_accessor_storage; }
|
|
227
|
+
set activeSuggestionIndex(value) { this.#activeSuggestionIndex_accessor_storage = value; }
|
|
228
|
+
#suggestionsDismissed_accessor_storage = (__runInitializers(this, _activeSuggestionIndex_extraInitializers), __runInitializers(this, _suggestionsDismissed_initializers, false));
|
|
229
|
+
get suggestionsDismissed() { return this.#suggestionsDismissed_accessor_storage; }
|
|
230
|
+
set suggestionsDismissed(value) { this.#suggestionsDismissed_accessor_storage = value; }
|
|
231
|
+
#promptFocused_accessor_storage = (__runInitializers(this, _suggestionsDismissed_extraInitializers), __runInitializers(this, _promptFocused_initializers, false));
|
|
232
|
+
get promptFocused() { return this.#promptFocused_accessor_storage; }
|
|
233
|
+
set promptFocused(value) { this.#promptFocused_accessor_storage = value; }
|
|
234
|
+
composing = (__runInitializers(this, _promptFocused_extraInitializers), false);
|
|
235
|
+
suggestionListId = `dees-harness-composer-suggestions-${++nextSuggestionListId}`;
|
|
236
|
+
#maxAttachmentBytes_accessor_storage = __runInitializers(this, _maxAttachmentBytes_initializers, harnessMaxAttachmentBytes);
|
|
202
237
|
get maxAttachmentBytes() { return this.#maxAttachmentBytes_accessor_storage; }
|
|
203
238
|
set maxAttachmentBytes(value) { this.#maxAttachmentBytes_accessor_storage = value; }
|
|
204
239
|
#maxTotalAttachmentBytes_accessor_storage = (__runInitializers(this, _maxAttachmentBytes_extraInitializers), __runInitializers(this, _maxTotalAttachmentBytes_initializers, harnessMaxTotalAttachmentBytes));
|
|
@@ -248,6 +283,69 @@ let DeesHarnessComposer = (() => {
|
|
|
248
283
|
container-type: inline-size;
|
|
249
284
|
}
|
|
250
285
|
|
|
286
|
+
.composerShell {
|
|
287
|
+
position: relative;
|
|
288
|
+
min-width: 0;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.suggestionList {
|
|
292
|
+
position: absolute;
|
|
293
|
+
z-index: 2;
|
|
294
|
+
inset-inline: 0;
|
|
295
|
+
bottom: calc(100% + var(--dees-spacing-xs));
|
|
296
|
+
box-sizing: border-box;
|
|
297
|
+
max-height: min(240px, 35dvh);
|
|
298
|
+
margin: 0;
|
|
299
|
+
padding: var(--dees-spacing-xs);
|
|
300
|
+
overflow-x: hidden;
|
|
301
|
+
overflow-y: auto;
|
|
302
|
+
overscroll-behavior: contain;
|
|
303
|
+
list-style: none;
|
|
304
|
+
border: 1px solid var(--dees-color-border-subtle);
|
|
305
|
+
border-radius: var(--dees-radius-xl);
|
|
306
|
+
corner-shape: var(--dees-corner-shape);
|
|
307
|
+
background: var(--dees-color-bg-primary);
|
|
308
|
+
box-shadow: var(--dees-shadow-up-sm);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
.suggestionOption {
|
|
312
|
+
display: grid;
|
|
313
|
+
align-content: center;
|
|
314
|
+
box-sizing: border-box;
|
|
315
|
+
min-width: 0;
|
|
316
|
+
min-height: 44px;
|
|
317
|
+
padding: var(--dees-spacing-xs) var(--dees-spacing-sm);
|
|
318
|
+
border-radius: var(--dees-radius-lg);
|
|
319
|
+
corner-shape: var(--dees-corner-shape);
|
|
320
|
+
color: var(--dees-color-text-primary);
|
|
321
|
+
cursor: pointer;
|
|
322
|
+
touch-action: manipulation;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
.suggestionOption:hover,
|
|
326
|
+
.suggestionOption.active {
|
|
327
|
+
background: var(--dees-color-fill-secondary);
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
.suggestionLabel {
|
|
331
|
+
min-width: 0;
|
|
332
|
+
overflow: hidden;
|
|
333
|
+
font-size: var(--dees-font-control-size, 13px);
|
|
334
|
+
font-weight: 600;
|
|
335
|
+
line-height: 1.35;
|
|
336
|
+
text-overflow: ellipsis;
|
|
337
|
+
white-space: nowrap;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
.suggestionDescription {
|
|
341
|
+
min-width: 0;
|
|
342
|
+
margin-top: 2px;
|
|
343
|
+
color: var(--dees-color-text-secondary);
|
|
344
|
+
font-size: var(--dees-font-caption1-size, 11px);
|
|
345
|
+
line-height: 1.35;
|
|
346
|
+
overflow-wrap: anywhere;
|
|
347
|
+
}
|
|
348
|
+
|
|
251
349
|
.composer {
|
|
252
350
|
display: grid;
|
|
253
351
|
gap: var(--dees-spacing-sm);
|
|
@@ -470,17 +568,29 @@ let DeesHarnessComposer = (() => {
|
|
|
470
568
|
}
|
|
471
569
|
clear() {
|
|
472
570
|
this.value = '';
|
|
571
|
+
this.resetSuggestionInteraction();
|
|
473
572
|
this.emitInput('');
|
|
474
573
|
this.autogrow();
|
|
475
574
|
}
|
|
575
|
+
willUpdate(changedProperties) {
|
|
576
|
+
super.willUpdate(changedProperties);
|
|
577
|
+
if (changedProperties.has('suggestions'))
|
|
578
|
+
this.resetSuggestionInteraction();
|
|
579
|
+
}
|
|
580
|
+
updated(changedProperties) {
|
|
581
|
+
super.updated(changedProperties);
|
|
582
|
+
this.syncTextareaSuggestionAria();
|
|
583
|
+
}
|
|
476
584
|
render() {
|
|
477
585
|
return html `
|
|
478
|
-
<div
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
586
|
+
<div class="composerShell">
|
|
587
|
+
${this.suggestionsVisible ? this.renderSuggestions() : ''}
|
|
588
|
+
<div
|
|
589
|
+
class="composer"
|
|
590
|
+
@dragover=${this.handleDragOver}
|
|
591
|
+
@dragleave=${this.handleDragLeave}
|
|
592
|
+
@drop=${this.handleDrop}
|
|
593
|
+
>
|
|
484
594
|
<input
|
|
485
595
|
class="fileInput"
|
|
486
596
|
type="file"
|
|
@@ -496,11 +606,16 @@ let DeesHarnessComposer = (() => {
|
|
|
496
606
|
: ''}
|
|
497
607
|
<textarea
|
|
498
608
|
.value=${this.value}
|
|
609
|
+
aria-label="Message"
|
|
499
610
|
placeholder=${this.placeholder}
|
|
500
611
|
?disabled=${this.disabled}
|
|
501
612
|
rows="1"
|
|
502
613
|
@input=${this.handleTextInput}
|
|
503
614
|
@keydown=${this.handleKeydown}
|
|
615
|
+
@focus=${this.handlePromptFocus}
|
|
616
|
+
@blur=${this.handlePromptBlur}
|
|
617
|
+
@compositionstart=${this.handleCompositionStart}
|
|
618
|
+
@compositionend=${this.handleCompositionEnd}
|
|
504
619
|
@paste=${this.handlePaste}
|
|
505
620
|
></textarea>
|
|
506
621
|
<div class="controlsRow">
|
|
@@ -610,8 +725,38 @@ let DeesHarnessComposer = (() => {
|
|
|
610
725
|
Send
|
|
611
726
|
</dees-button>
|
|
612
727
|
`}
|
|
728
|
+
</div>
|
|
613
729
|
</div>
|
|
614
730
|
</div>
|
|
731
|
+
`;
|
|
732
|
+
}
|
|
733
|
+
renderSuggestions() {
|
|
734
|
+
return html `
|
|
735
|
+
<ul
|
|
736
|
+
id=${this.suggestionListId}
|
|
737
|
+
class="suggestionList"
|
|
738
|
+
role="listbox"
|
|
739
|
+
aria-label="Suggestions"
|
|
740
|
+
@pointerdown=${this.handleSuggestionPointerDown}
|
|
741
|
+
>
|
|
742
|
+
${this.suggestions.map((suggestion, index) => html `
|
|
743
|
+
<li
|
|
744
|
+
id=${this.suggestionOptionId(index)}
|
|
745
|
+
class=${`suggestionOption ${index === this.activeSuggestionIndex ? 'active' : ''}`}
|
|
746
|
+
role="option"
|
|
747
|
+
aria-selected=${String(index === this.activeSuggestionIndex)}
|
|
748
|
+
@pointerenter=${() => {
|
|
749
|
+
this.activeSuggestionIndex = index;
|
|
750
|
+
}}
|
|
751
|
+
@click=${() => void this.selectSuggestion(index)}
|
|
752
|
+
>
|
|
753
|
+
<span class="suggestionLabel">${suggestion.label}</span>
|
|
754
|
+
${suggestion.description
|
|
755
|
+
? html `<span class="suggestionDescription">${suggestion.description}</span>`
|
|
756
|
+
: ''}
|
|
757
|
+
</li>
|
|
758
|
+
`)}
|
|
759
|
+
</ul>
|
|
615
760
|
`;
|
|
616
761
|
}
|
|
617
762
|
renderChip(attachment) {
|
|
@@ -641,15 +786,42 @@ let DeesHarnessComposer = (() => {
|
|
|
641
786
|
// ------------------------------------------------------------------ input
|
|
642
787
|
handleTextInput = (__runInitializers(this, _showModelControls_extraInitializers), (event) => {
|
|
643
788
|
this.value = event.currentTarget.value;
|
|
789
|
+
this.resetSuggestionInteraction();
|
|
644
790
|
this.emitInput(this.value);
|
|
645
791
|
this.autogrow();
|
|
646
792
|
});
|
|
647
793
|
handleKeydown = (event) => {
|
|
794
|
+
if (event.isComposing || this.composing)
|
|
795
|
+
return;
|
|
648
796
|
if (event.key === 'Enter' && (event.metaKey || event.ctrlKey)) {
|
|
649
797
|
event.preventDefault();
|
|
650
798
|
this.send();
|
|
651
799
|
return;
|
|
652
800
|
}
|
|
801
|
+
if (this.suggestionsVisible) {
|
|
802
|
+
if (event.key === 'Escape') {
|
|
803
|
+
event.preventDefault();
|
|
804
|
+
this.suggestionsDismissed = true;
|
|
805
|
+
return;
|
|
806
|
+
}
|
|
807
|
+
if (!event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) {
|
|
808
|
+
if (event.key === 'ArrowDown') {
|
|
809
|
+
event.preventDefault();
|
|
810
|
+
this.moveActiveSuggestion(1);
|
|
811
|
+
return;
|
|
812
|
+
}
|
|
813
|
+
if (event.key === 'ArrowUp') {
|
|
814
|
+
event.preventDefault();
|
|
815
|
+
this.moveActiveSuggestion(-1);
|
|
816
|
+
return;
|
|
817
|
+
}
|
|
818
|
+
if (event.key === 'Enter') {
|
|
819
|
+
event.preventDefault();
|
|
820
|
+
void this.selectSuggestion(this.activeSuggestionIndex);
|
|
821
|
+
return;
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
}
|
|
653
825
|
// Shift+Tab cycles the agent mode without leaving the prompt
|
|
654
826
|
if (event.key === 'Tab' && event.shiftKey && this.modeOptions.length) {
|
|
655
827
|
event.preventDefault();
|
|
@@ -659,6 +831,102 @@ let DeesHarnessComposer = (() => {
|
|
|
659
831
|
this.emit('harness-mode-change', { mode: nextMode });
|
|
660
832
|
}
|
|
661
833
|
};
|
|
834
|
+
handleCompositionStart = () => {
|
|
835
|
+
this.composing = true;
|
|
836
|
+
};
|
|
837
|
+
handleCompositionEnd = () => {
|
|
838
|
+
this.composing = false;
|
|
839
|
+
};
|
|
840
|
+
handlePromptFocus = () => {
|
|
841
|
+
this.promptFocused = true;
|
|
842
|
+
};
|
|
843
|
+
handlePromptBlur = () => {
|
|
844
|
+
this.promptFocused = false;
|
|
845
|
+
};
|
|
846
|
+
handleSuggestionPointerDown = (event) => {
|
|
847
|
+
event.preventDefault();
|
|
848
|
+
};
|
|
849
|
+
resetSuggestionInteraction() {
|
|
850
|
+
this.activeSuggestionIndex = this.suggestions.length ? 0 : -1;
|
|
851
|
+
this.suggestionsDismissed = false;
|
|
852
|
+
}
|
|
853
|
+
get suggestionsVisible() {
|
|
854
|
+
return this.promptFocused
|
|
855
|
+
&& !this.disabled
|
|
856
|
+
&& !this.suggestionsDismissed
|
|
857
|
+
&& this.suggestions.length > 0;
|
|
858
|
+
}
|
|
859
|
+
suggestionOptionId(indexArg) {
|
|
860
|
+
return `${this.suggestionListId}-option-${indexArg}`;
|
|
861
|
+
}
|
|
862
|
+
syncTextareaSuggestionAria() {
|
|
863
|
+
const textarea = this.shadowRoot?.querySelector('textarea');
|
|
864
|
+
if (!textarea)
|
|
865
|
+
return;
|
|
866
|
+
const suggestionsAvailable = !this.disabled && this.suggestions.length > 0;
|
|
867
|
+
if (suggestionsAvailable) {
|
|
868
|
+
textarea.setAttribute('aria-autocomplete', 'list');
|
|
869
|
+
textarea.setAttribute('aria-haspopup', 'listbox');
|
|
870
|
+
}
|
|
871
|
+
else {
|
|
872
|
+
textarea.removeAttribute('aria-autocomplete');
|
|
873
|
+
textarea.removeAttribute('aria-haspopup');
|
|
874
|
+
}
|
|
875
|
+
if (this.suggestionsVisible) {
|
|
876
|
+
textarea.setAttribute('aria-controls', this.suggestionListId);
|
|
877
|
+
}
|
|
878
|
+
else {
|
|
879
|
+
textarea.removeAttribute('aria-controls');
|
|
880
|
+
}
|
|
881
|
+
if (this.suggestionsVisible
|
|
882
|
+
&& this.activeSuggestionIndex >= 0
|
|
883
|
+
&& this.activeSuggestionIndex < this.suggestions.length) {
|
|
884
|
+
textarea.setAttribute('aria-activedescendant', this.suggestionOptionId(this.activeSuggestionIndex));
|
|
885
|
+
}
|
|
886
|
+
else {
|
|
887
|
+
textarea.removeAttribute('aria-activedescendant');
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
moveActiveSuggestion(offsetArg) {
|
|
891
|
+
if (!this.suggestions.length)
|
|
892
|
+
return;
|
|
893
|
+
this.activeSuggestionIndex = this.activeSuggestionIndex < 0
|
|
894
|
+
? (offsetArg === 1 ? 0 : this.suggestions.length - 1)
|
|
895
|
+
: (this.activeSuggestionIndex + offsetArg + this.suggestions.length) % this.suggestions.length;
|
|
896
|
+
void this.scrollActiveSuggestionIntoView();
|
|
897
|
+
}
|
|
898
|
+
async scrollActiveSuggestionIntoView() {
|
|
899
|
+
await this.updateComplete;
|
|
900
|
+
const list = this.shadowRoot?.getElementById(this.suggestionListId);
|
|
901
|
+
const option = this.shadowRoot?.getElementById(this.suggestionOptionId(this.activeSuggestionIndex));
|
|
902
|
+
if (!list || !option)
|
|
903
|
+
return;
|
|
904
|
+
const optionTop = option.offsetTop;
|
|
905
|
+
const optionBottom = optionTop + option.offsetHeight;
|
|
906
|
+
if (optionTop < list.scrollTop) {
|
|
907
|
+
list.scrollTop = optionTop;
|
|
908
|
+
}
|
|
909
|
+
else if (optionBottom > list.scrollTop + list.clientHeight) {
|
|
910
|
+
list.scrollTop = optionBottom - list.clientHeight;
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
async selectSuggestion(indexArg) {
|
|
914
|
+
if (this.disabled)
|
|
915
|
+
return;
|
|
916
|
+
const suggestion = this.suggestions[indexArg];
|
|
917
|
+
if (!suggestion)
|
|
918
|
+
return;
|
|
919
|
+
this.value = suggestion.value;
|
|
920
|
+
this.suggestionsDismissed = true;
|
|
921
|
+
this.emitInput(this.value);
|
|
922
|
+
await this.updateComplete;
|
|
923
|
+
const textarea = this.shadowRoot?.querySelector('textarea');
|
|
924
|
+
if (!textarea)
|
|
925
|
+
return;
|
|
926
|
+
textarea.focus();
|
|
927
|
+
textarea.setSelectionRange(this.value.length, this.value.length);
|
|
928
|
+
this.autogrow();
|
|
929
|
+
}
|
|
662
930
|
autogrow() {
|
|
663
931
|
const textarea = this.shadowRoot?.querySelector('textarea');
|
|
664
932
|
if (!textarea)
|
|
@@ -784,4 +1052,4 @@ let DeesHarnessComposer = (() => {
|
|
|
784
1052
|
return DeesHarnessComposer = _classThis;
|
|
785
1053
|
})();
|
|
786
1054
|
export { DeesHarnessComposer };
|
|
787
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLWNvbXBvc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtaGFybmVzcy9kZWVzLWhhcm5lc3MtY29tcG9zZXIvZGVlcy1oYXJuZXNzLWNvbXBvc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsVUFBVSxHQUNYLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFNdEQsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6Qiw4QkFBOEIsRUFDOUIsdUJBQXVCLEdBQ3hCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxpREFBaUQsQ0FBQztBQUN6RCxPQUFPLGdFQUFnRSxDQUFDO0FBQ3hFLE9BQU8sOENBQThDLENBQUM7QUFVdEQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE1BQWdCLEVBQXFCLEVBQUUsQ0FDaEUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUV6RCxNQUFNLHdCQUF3QixHQUFHLENBQUMsTUFBZ0MsRUFBcUIsRUFBRSxDQUN2RixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FB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
|
|
1055
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLWNvbXBvc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtaGFybmVzcy9kZWVzLWhhcm5lc3MtY29tcG9zZXIvZGVlcy1oYXJuZXNzLWNvbXBvc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBT3RELE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsOEJBQThCLEVBQzlCLHVCQUF1QixHQUN4QixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8saURBQWlELENBQUM7QUFDekQsT0FBTyxnRUFBZ0UsQ0FBQztBQUN4RSxPQUFPLDhDQUE4QyxDQUFDO0FBVXRELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFnQixFQUFxQixFQUFFLENBQ2hFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFekQsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE1BQWdDLEVBQXFCLEVBQUUsQ0FDdkYsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFB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
|
|
@@ -412,6 +412,11 @@ export interface IHarnessComposerOption {
|
|
|
412
412
|
label: string;
|
|
413
413
|
value: string;
|
|
414
414
|
}
|
|
415
|
+
export interface IHarnessComposerSuggestion {
|
|
416
|
+
label: string;
|
|
417
|
+
value: string;
|
|
418
|
+
description?: string;
|
|
419
|
+
}
|
|
415
420
|
export interface IHarnessAccountChangeDetail {
|
|
416
421
|
account: string;
|
|
417
422
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@design.estate/dees-catalog",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.9.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.",
|
|
6
6
|
"main": "dist_ts_web/index.js",
|
package/readme.md
CHANGED
|
@@ -1782,6 +1782,18 @@ chat.accountOptions = [
|
|
|
1782
1782
|
];
|
|
1783
1783
|
chat.modelOptions = ['gpt-5.5', 'o4-mini'];
|
|
1784
1784
|
chat.effortOptions = ['high', 'medium', 'low'];
|
|
1785
|
+
const commandSuggestions = [
|
|
1786
|
+
{ label: 'Explain code', value: 'Explain the selected code' },
|
|
1787
|
+
{ label: 'Review diff', value: 'Review the current diff', description: 'Focus on bugs and regressions.' },
|
|
1788
|
+
];
|
|
1789
|
+
chat.suggestions = commandSuggestions;
|
|
1790
|
+
|
|
1791
|
+
chat.addEventListener('harness-input', (event) => {
|
|
1792
|
+
const value = event.detail.value;
|
|
1793
|
+
chat.suggestions = value.startsWith('/')
|
|
1794
|
+
? commandSuggestions.filter((suggestion) => suggestion.label.toLowerCase().includes(value.slice(1).toLowerCase()))
|
|
1795
|
+
: [];
|
|
1796
|
+
});
|
|
1785
1797
|
|
|
1786
1798
|
chat.addEventListener('harness-send', (event) => {
|
|
1787
1799
|
const { text, attachments, account, model, reasoningEffort } = event.detail;
|
|
@@ -1803,7 +1815,7 @@ chat.applyDelta({
|
|
|
1803
1815
|
});
|
|
1804
1816
|
```
|
|
1805
1817
|
|
|
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.
|
|
1818
|
+
Key props: `messages`, `permissions`, `questions`, `status`, `usage`, `todos`/`showTodosPanel`, `sessionMetrics`, `scratchpad`/`scratchpadBusy`/`scratchpadError`, `sessionIntelligenceEnabled`/`intelligenceExchanges`/`intelligenceBusy`/`intelligenceError`, `showSessionSidebar`, `heading`, `subheading`, `showToolbar`, `busy`, `queuedCount`, `disabled`, `suggestions`, `account`/`accountOptions`, `model`/`modelOptions`, `reasoningEffort`/`effortOptions`, `mode`/`modeOptions`, `toolRegistry`. `suggestions` is forwarded unchanged to the controlled composer. 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
1819
|
|
|
1808
1820
|
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
1821
|
|
|
@@ -1884,7 +1896,9 @@ A question the agent asks mid-run: option buttons with descriptions (single-sele
|
|
|
1884
1896
|
|
|
1885
1897
|
#### `DeesHarnessComposer`
|
|
1886
1898
|
|
|
1887
|
-
Prompt input: autogrow textarea, attachment picker/paste/drag-drop with configurable `maxAttachmentCount`, `maxAttachmentBytes` (10 MB default), and `maxTotalAttachmentBytes` (30 MB default), image/text/binary classification, optional account, model, and reasoning-effort dropdowns, Cmd/Ctrl+Enter to send. Attachment count is unlimited unless the host sets it. `dees-harness-chat` forwards all three limits to its composer. Controlled component — the host owns `value`, `attachments`, `account`, and the other selections. Set `accountOptions` to `{ label, value }[]` so the dropdown displays readable labels while events retain opaque stable account values. Account changes emit `harness-account-change` with `{ account }`; `harness-send` includes optional `account` alongside `model` and `reasoningEffort`.
|
|
1899
|
+
Prompt input: autogrow textarea, attachment picker/paste/drag-drop with configurable `maxAttachmentCount`, `maxAttachmentBytes` (10 MB default), and `maxTotalAttachmentBytes` (30 MB default), image/text/binary classification, optional account, model, and reasoning-effort dropdowns, Cmd/Ctrl+Enter to send. Attachment count is unlimited unless the host sets it. `dees-harness-chat` forwards all three limits and `suggestions` to its composer. Controlled component — the host owns `value`, `attachments`, `suggestions`, `account`, and the other selections. Set `accountOptions` to `{ label, value }[]` so the dropdown displays readable labels while events retain opaque stable account values. Account changes emit `harness-account-change` with `{ account }`; `harness-send` includes optional `account` alongside `model` and `reasoningEffort`.
|
|
1900
|
+
|
|
1901
|
+
Set `suggestions` to `IHarnessComposerSuggestion[]`, where each item is `{ label, value, description? }`. The composer does not filter or generate suggestions: listen for `harness-input`, update the controlled `value`, and provide a fresh filtered array. While the textarea owns focus, the listbox stays anchored above the composer; moving focus to another control closes it. Arrow keys wrap through rows, Enter chooses the active row, and Escape dismisses the current list until the next text input or fresh suggestions array. Choosing a row sets `value` to the suggestion's `value` and emits the existing bubbling/composed `harness-input` event; it does not emit `harness-send`.
|
|
1888
1902
|
|
|
1889
1903
|
While `busy`, Stop renders as an additional button and Send stays available so hosts can queue messages. With an empty prompt and `queuedCount > 0`, the primary action becomes **Steer now** (`harness-steer` event) to force the agent to continue with the queued messages immediately.
|
|
1890
1904
|
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@design.estate/dees-catalog',
|
|
6
|
-
version: '6.
|
|
6
|
+
version: '6.9.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
|
}
|