@design.estate/dees-catalog 10.0.0 → 11.1.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 +914 -780
- package/dist_bundle/bundle.js.map +1 -1
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.js +24 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.js +13 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.d.ts +62 -48
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.js +97 -57
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +541 -666
- package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.js +19 -1
- package/dist_ts_web/elements/00group-harness/dees-terminal-view/dees-terminal-view.d.ts +45 -6
- package/dist_ts_web/elements/00group-harness/dees-terminal-view/dees-terminal-view.js +184 -27
- package/dist_ts_web/elements/00group-harness/interfaces.d.ts +59 -20
- package/dist_ts_web/services/DeesServiceLibLoader.d.ts +7 -0
- package/dist_ts_web/services/DeesServiceLibLoader.js +45 -22
- package/package.json +1 -2
- package/readme.md +37 -17
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.ts +23 -0
- package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.ts +12 -0
- package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.ts +107 -55
- package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.ts +622 -756
- package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.ts +18 -0
- package/ts_web/elements/00group-harness/dees-terminal-view/dees-terminal-view.ts +196 -24
- package/ts_web/elements/00group-harness/interfaces.ts +63 -19
- package/ts_web/services/DeesServiceLibLoader.ts +150 -102
- package/.smartconfig.json +0 -86
|
@@ -323,11 +323,27 @@ export interface IHarnessSessionMeta {
|
|
|
323
323
|
statusLabel?: string;
|
|
324
324
|
/** Harness running this session, e.g. Codex, OpenCode or FlexHarness. */
|
|
325
325
|
harness?: IHarnessAgentIdentity;
|
|
326
|
+
/** Host-owned project or workspace this session belongs to, shown on the identity line. */
|
|
327
|
+
projectLabel?: string;
|
|
326
328
|
/** Pulse the normal/working indicator. Defaults to state === 'working'; never pulses attention/error/finished. */
|
|
327
329
|
working?: boolean;
|
|
328
330
|
/** Set false for pinned, non-sortable entries such as terminals. Defaults to true. */
|
|
329
331
|
draggable?: boolean;
|
|
330
332
|
}
|
|
333
|
+
/** Discriminates the two kinds of rows the session list orders as peers. */
|
|
334
|
+
export type THarnessSessionListItemKind = 'session' | 'resource';
|
|
335
|
+
/**
|
|
336
|
+
* Stable reference to one ordered row. Session ids and resource ids are
|
|
337
|
+
* separate namespaces, so ordering always carries the kind alongside the id.
|
|
338
|
+
*/
|
|
339
|
+
export interface IHarnessSessionListItemRef {
|
|
340
|
+
kind: THarnessSessionListItemKind;
|
|
341
|
+
id: string;
|
|
342
|
+
}
|
|
343
|
+
/** Detail of `harness-session-select` and `harness-session-open`. */
|
|
344
|
+
export interface IHarnessSessionEventDetail {
|
|
345
|
+
session: IHarnessSessionMeta;
|
|
346
|
+
}
|
|
331
347
|
/** Host-owned metadata for a resource that can be associated with a harness session. */
|
|
332
348
|
export interface IHarnessResourceMeta<TState extends string = string> {
|
|
333
349
|
/** Stable identity used by selection and association records. */
|
|
@@ -340,36 +356,48 @@ export interface IHarnessResourceMeta<TState extends string = string> {
|
|
|
340
356
|
preview?: string;
|
|
341
357
|
createdAt?: number;
|
|
342
358
|
updatedAt?: number;
|
|
359
|
+
/** Host-owned project or workspace this resource belongs to, shown on the metadata line. */
|
|
360
|
+
projectLabel?: string;
|
|
343
361
|
/** Optional host-defined display state. */
|
|
344
362
|
state?: TState;
|
|
363
|
+
/** Set false for pinned, non-sortable entries. Defaults to true. */
|
|
364
|
+
draggable?: boolean;
|
|
345
365
|
}
|
|
346
|
-
/**
|
|
366
|
+
/**
|
|
367
|
+
* A controlled zero-or-one association for one resource. The target is any
|
|
368
|
+
* other list item — a session or another resource such as a terminal.
|
|
369
|
+
*/
|
|
347
370
|
export interface IHarnessResourceAssociation {
|
|
348
371
|
resourceId: string;
|
|
349
|
-
|
|
372
|
+
target: IHarnessSessionListItemRef;
|
|
350
373
|
}
|
|
351
374
|
export interface IHarnessResourceEventDetail<TState extends string = string> {
|
|
352
375
|
resource: IHarnessResourceMeta<TState>;
|
|
353
|
-
|
|
376
|
+
/** The controlled association target, or null when the resource is unattached. */
|
|
377
|
+
target: IHarnessSessionListItemRef | null;
|
|
354
378
|
}
|
|
355
|
-
|
|
379
|
+
/**
|
|
380
|
+
* Association is an explicit host action, never a drop: dragging a resource
|
|
381
|
+
* only moves it inside the ordered list.
|
|
382
|
+
*/
|
|
383
|
+
export type THarnessResourceAssociationInteractionSource = 'action' | 'keyboard';
|
|
356
384
|
export type THarnessResourceAssociationRequestDetail<TState extends string = string> = {
|
|
357
385
|
intent: 'attach';
|
|
358
386
|
resource: IHarnessResourceMeta<TState>;
|
|
359
|
-
|
|
360
|
-
|
|
387
|
+
fromTarget: null;
|
|
388
|
+
toTarget: IHarnessSessionListItemRef;
|
|
361
389
|
source: THarnessResourceAssociationInteractionSource;
|
|
362
390
|
} | {
|
|
363
391
|
intent: 'detach';
|
|
364
392
|
resource: IHarnessResourceMeta<TState>;
|
|
365
|
-
|
|
366
|
-
|
|
393
|
+
fromTarget: IHarnessSessionListItemRef;
|
|
394
|
+
toTarget: null;
|
|
367
395
|
source: THarnessResourceAssociationInteractionSource;
|
|
368
396
|
} | {
|
|
369
397
|
intent: 'reassign';
|
|
370
398
|
resource: IHarnessResourceMeta<TState>;
|
|
371
|
-
|
|
372
|
-
|
|
399
|
+
fromTarget: IHarnessSessionListItemRef;
|
|
400
|
+
toTarget: IHarnessSessionListItemRef;
|
|
373
401
|
source: THarnessResourceAssociationInteractionSource;
|
|
374
402
|
};
|
|
375
403
|
export type THarnessResourceContextSource = 'pointer' | 'action' | 'keyboard';
|
|
@@ -380,7 +408,7 @@ export interface IHarnessResourceContextDetail<TState extends string = string> e
|
|
|
380
408
|
source: THarnessResourceContextSource;
|
|
381
409
|
originalEvent: MouseEvent | KeyboardEvent;
|
|
382
410
|
/** Routes a host menu choice through the component's validated controlled request event. */
|
|
383
|
-
requestAssociation: (
|
|
411
|
+
requestAssociation: (toTarget: IHarnessSessionListItemRef | null) => boolean;
|
|
384
412
|
/** Closes the external-menu disclosure state and restores focus to its invoking control. */
|
|
385
413
|
close: () => void;
|
|
386
414
|
}
|
|
@@ -393,21 +421,32 @@ export interface IHarnessSessionContextDetail {
|
|
|
393
421
|
/** Pass synchronously to DeesContextmenu.openContextMenuWithOptions to retain its composed dialog owner. */
|
|
394
422
|
originalEvent: MouseEvent;
|
|
395
423
|
}
|
|
396
|
-
/**
|
|
424
|
+
/**
|
|
425
|
+
* A user-defined group of list items; ordering of `itemIds` is the display
|
|
426
|
+
* order. Sessions and resources may be members in any interleaving.
|
|
427
|
+
*/
|
|
397
428
|
export interface IHarnessSessionGroup {
|
|
398
429
|
id: string;
|
|
399
430
|
name: string;
|
|
400
|
-
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
431
|
+
itemIds: IHarnessSessionListItemRef[];
|
|
432
|
+
}
|
|
433
|
+
export type THarnessItemMoveSource = 'pointer' | 'keyboard';
|
|
434
|
+
/** Detail of `harness-item-move`: one item landed in a new ordered position. */
|
|
435
|
+
export interface IHarnessItemMoveDetail {
|
|
436
|
+
item: IHarnessSessionListItemRef;
|
|
437
|
+
/** Group the item came from, or null for the ungrouped section. */
|
|
438
|
+
fromGroupId: string | null;
|
|
405
439
|
/** Target group, or null for the ungrouped section. */
|
|
440
|
+
toGroupId: string | null;
|
|
441
|
+
/** Stable target anchor in the dragged-item-excluded order; null means append. */
|
|
442
|
+
beforeItem: IHarnessSessionListItemRef | null;
|
|
443
|
+
source: THarnessItemMoveSource;
|
|
444
|
+
}
|
|
445
|
+
/** The open insertion slot a drag currently targets. */
|
|
446
|
+
export interface IDropSlot {
|
|
406
447
|
groupId: string | null;
|
|
407
|
-
/**
|
|
448
|
+
/** Index within the section's sortable, dragged-item-excluded order. */
|
|
408
449
|
index: number;
|
|
409
|
-
/** Stable target anchor in the dragged-card-excluded order; absent means append. */
|
|
410
|
-
beforeSessionId?: string;
|
|
411
450
|
}
|
|
412
451
|
/** Detail of `harness-group-context`, fired on right-click of a group header. */
|
|
413
452
|
export interface IHarnessGroupContextDetail {
|
|
@@ -132,6 +132,13 @@ export declare class DeesServiceLibLoader {
|
|
|
132
132
|
* Get the singleton instance of DeesServiceLibLoader
|
|
133
133
|
*/
|
|
134
134
|
static getInstance(): DeesServiceLibLoader;
|
|
135
|
+
/**
|
|
136
|
+
* Shares one in-flight load between concurrent callers — but only for as long
|
|
137
|
+
* as that load can still succeed. A rejected load clears its own cache entry,
|
|
138
|
+
* so the next call makes a fresh attempt instead of replaying a stale failure
|
|
139
|
+
* for the lifetime of the page. Every load below goes through this.
|
|
140
|
+
*/
|
|
141
|
+
private shareLoad;
|
|
135
142
|
/**
|
|
136
143
|
* Load xterm terminal emulator from CDN
|
|
137
144
|
* @returns Promise resolving to xterm module with Terminal class
|
|
@@ -49,6 +49,22 @@ export class DeesServiceLibLoader {
|
|
|
49
49
|
}
|
|
50
50
|
return DeesServiceLibLoader.instance;
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Shares one in-flight load between concurrent callers — but only for as long
|
|
54
|
+
* as that load can still succeed. A rejected load clears its own cache entry,
|
|
55
|
+
* so the next call makes a fresh attempt instead of replaying a stale failure
|
|
56
|
+
* for the lifetime of the page. Every load below goes through this.
|
|
57
|
+
*/
|
|
58
|
+
shareLoad(loadArg, readArg, writeArg) {
|
|
59
|
+
const pending = loadArg();
|
|
60
|
+
writeArg(pending);
|
|
61
|
+
pending.catch(() => {
|
|
62
|
+
// Retract only this attempt; a newer one may already own the entry.
|
|
63
|
+
if (readArg() === pending)
|
|
64
|
+
writeArg(null);
|
|
65
|
+
});
|
|
66
|
+
return pending;
|
|
67
|
+
}
|
|
52
68
|
/**
|
|
53
69
|
* Load xterm terminal emulator from CDN
|
|
54
70
|
* @returns Promise resolving to xterm module with Terminal class
|
|
@@ -60,7 +76,7 @@ export class DeesServiceLibLoader {
|
|
|
60
76
|
if (this.xtermLoadingPromise) {
|
|
61
77
|
return this.xtermLoadingPromise;
|
|
62
78
|
}
|
|
63
|
-
this.
|
|
79
|
+
return this.shareLoad(async () => {
|
|
64
80
|
const url = `${CDN_BASE}/xterm@${CDN_VERSIONS.xterm}/+esm`;
|
|
65
81
|
const module = await import(/* @vite-ignore */ url);
|
|
66
82
|
// Also load and inject xterm CSS
|
|
@@ -69,8 +85,9 @@ export class DeesServiceLibLoader {
|
|
|
69
85
|
Terminal: module.Terminal,
|
|
70
86
|
};
|
|
71
87
|
return this.xtermLib;
|
|
72
|
-
})()
|
|
73
|
-
|
|
88
|
+
}, () => this.xtermLoadingPromise, (promiseArg) => {
|
|
89
|
+
this.xtermLoadingPromise = promiseArg;
|
|
90
|
+
});
|
|
74
91
|
}
|
|
75
92
|
/**
|
|
76
93
|
* Provides xterm modules from the host application instead of the CDN.
|
|
@@ -109,15 +126,16 @@ export class DeesServiceLibLoader {
|
|
|
109
126
|
if (this.xtermFitAddonLoadingPromise) {
|
|
110
127
|
return this.xtermFitAddonLoadingPromise;
|
|
111
128
|
}
|
|
112
|
-
this.
|
|
129
|
+
return this.shareLoad(async () => {
|
|
113
130
|
const url = `${CDN_BASE}/xterm-addon-fit@${CDN_VERSIONS.xtermAddonFit}/+esm`;
|
|
114
131
|
const module = await import(/* @vite-ignore */ url);
|
|
115
132
|
this.xtermFitAddonLib = {
|
|
116
133
|
FitAddon: module.FitAddon,
|
|
117
134
|
};
|
|
118
135
|
return this.xtermFitAddonLib;
|
|
119
|
-
})()
|
|
120
|
-
|
|
136
|
+
}, () => this.xtermFitAddonLoadingPromise, (promiseArg) => {
|
|
137
|
+
this.xtermFitAddonLoadingPromise = promiseArg;
|
|
138
|
+
});
|
|
121
139
|
}
|
|
122
140
|
/**
|
|
123
141
|
* Load xterm-addon-search from CDN
|
|
@@ -130,15 +148,16 @@ export class DeesServiceLibLoader {
|
|
|
130
148
|
if (this.xtermSearchAddonLoadingPromise) {
|
|
131
149
|
return this.xtermSearchAddonLoadingPromise;
|
|
132
150
|
}
|
|
133
|
-
this.
|
|
151
|
+
return this.shareLoad(async () => {
|
|
134
152
|
const url = `${CDN_BASE}/xterm-addon-search@${CDN_VERSIONS.xtermAddonSearch}/+esm`;
|
|
135
153
|
const module = await import(/* @vite-ignore */ url);
|
|
136
154
|
this.xtermSearchAddonLib = {
|
|
137
155
|
SearchAddon: module.SearchAddon,
|
|
138
156
|
};
|
|
139
157
|
return this.xtermSearchAddonLib;
|
|
140
|
-
})()
|
|
141
|
-
|
|
158
|
+
}, () => this.xtermSearchAddonLoadingPromise, (promiseArg) => {
|
|
159
|
+
this.xtermSearchAddonLoadingPromise = promiseArg;
|
|
160
|
+
});
|
|
142
161
|
}
|
|
143
162
|
/**
|
|
144
163
|
* Inject xterm CSS styles into the document head
|
|
@@ -177,13 +196,14 @@ export class DeesServiceLibLoader {
|
|
|
177
196
|
if (this.highlightJsLoadingPromise) {
|
|
178
197
|
return this.highlightJsLoadingPromise;
|
|
179
198
|
}
|
|
180
|
-
this.
|
|
199
|
+
return this.shareLoad(async () => {
|
|
181
200
|
const url = `${CDN_BASE}/highlight.js@${CDN_VERSIONS.highlightJs}/+esm`;
|
|
182
201
|
const module = await import(/* @vite-ignore */ url);
|
|
183
202
|
this.highlightJsLib = module.default;
|
|
184
203
|
return this.highlightJsLib;
|
|
185
|
-
})()
|
|
186
|
-
|
|
204
|
+
}, () => this.highlightJsLoadingPromise, (promiseArg) => {
|
|
205
|
+
this.highlightJsLoadingPromise = promiseArg;
|
|
206
|
+
});
|
|
187
207
|
}
|
|
188
208
|
/**
|
|
189
209
|
* Load TradingView Lightweight Charts from CDN
|
|
@@ -196,7 +216,7 @@ export class DeesServiceLibLoader {
|
|
|
196
216
|
if (this.lightweightChartsLoadingPromise) {
|
|
197
217
|
return this.lightweightChartsLoadingPromise;
|
|
198
218
|
}
|
|
199
|
-
this.
|
|
219
|
+
return this.shareLoad(async () => {
|
|
200
220
|
const url = `${CDN_BASE}/lightweight-charts@${CDN_VERSIONS.lightweightCharts}/+esm`;
|
|
201
221
|
const module = await import(/* @vite-ignore */ url);
|
|
202
222
|
this.lightweightChartsLib = {
|
|
@@ -208,8 +228,9 @@ export class DeesServiceLibLoader {
|
|
|
208
228
|
CrosshairMode: module.CrosshairMode,
|
|
209
229
|
};
|
|
210
230
|
return this.lightweightChartsLib;
|
|
211
|
-
})()
|
|
212
|
-
|
|
231
|
+
}, () => this.lightweightChartsLoadingPromise, (promiseArg) => {
|
|
232
|
+
this.lightweightChartsLoadingPromise = promiseArg;
|
|
233
|
+
});
|
|
213
234
|
}
|
|
214
235
|
/**
|
|
215
236
|
* Load Apache ECharts from CDN
|
|
@@ -222,7 +243,7 @@ export class DeesServiceLibLoader {
|
|
|
222
243
|
if (this.echartsLoadingPromise) {
|
|
223
244
|
return this.echartsLoadingPromise;
|
|
224
245
|
}
|
|
225
|
-
this.
|
|
246
|
+
return this.shareLoad(async () => {
|
|
226
247
|
// Use the pre-built ESM bundle which includes all chart types and components.
|
|
227
248
|
// The +esm wrapper only exports the core without auto-registered chart types.
|
|
228
249
|
const url = `${CDN_BASE}/echarts@${CDN_VERSIONS.echarts}/dist/echarts.esm.min.js`;
|
|
@@ -233,8 +254,9 @@ export class DeesServiceLibLoader {
|
|
|
233
254
|
getInstanceByDom: module.getInstanceByDom,
|
|
234
255
|
};
|
|
235
256
|
return this.echartsLib;
|
|
236
|
-
})()
|
|
237
|
-
|
|
257
|
+
}, () => this.echartsLoadingPromise, (promiseArg) => {
|
|
258
|
+
this.echartsLoadingPromise = promiseArg;
|
|
259
|
+
});
|
|
238
260
|
}
|
|
239
261
|
/**
|
|
240
262
|
* Load Tiptap rich text editor and extensions from CDN
|
|
@@ -247,7 +269,7 @@ export class DeesServiceLibLoader {
|
|
|
247
269
|
if (this.tiptapLoadingPromise) {
|
|
248
270
|
return this.tiptapLoadingPromise;
|
|
249
271
|
}
|
|
250
|
-
this.
|
|
272
|
+
return this.shareLoad(async () => {
|
|
251
273
|
// Import directly from npm packages — bundled by esbuild into a single
|
|
252
274
|
// module graph. CDN loading caused duplicate ProseMirror instances because
|
|
253
275
|
// jsdelivr resolves each package's dependencies independently.
|
|
@@ -268,8 +290,9 @@ export class DeesServiceLibLoader {
|
|
|
268
290
|
Typography: typographyModule.default || typographyModule.Typography,
|
|
269
291
|
};
|
|
270
292
|
return this.tiptapLib;
|
|
271
|
-
})()
|
|
272
|
-
|
|
293
|
+
}, () => this.tiptapLoadingPromise, (promiseArg) => {
|
|
294
|
+
this.tiptapLoadingPromise = promiseArg;
|
|
295
|
+
});
|
|
273
296
|
}
|
|
274
297
|
/**
|
|
275
298
|
* Preload multiple libraries in parallel
|
|
@@ -310,4 +333,4 @@ export class DeesServiceLibLoader {
|
|
|
310
333
|
}
|
|
311
334
|
}
|
|
312
335
|
}
|
|
313
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVlc1NlcnZpY2VMaWJMb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvc2VydmljZXMvRGVlc1NlcnZpY2VMaWJMb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUE4R3ZEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILHVFQUF1RTtBQUN2RSxzRUFBc0U7QUFDdEUsOEVBQThFO0FBQzlFLE1BQU0sc0JBQXNCLEdBQUc7Ozs7O0NBSzlCLENBQUM7QUFFRixNQUFNLE9BQU8sb0JBQW9CO0lBQ3ZCLE1BQU0sQ0FBQyxRQUFRLENBQXVCO0lBRTlDLDRCQUE0QjtJQUNwQixRQUFRLEdBQXdCLElBQUksQ0FBQztJQUNyQyxnQkFBZ0IsR0FBZ0MsSUFBSSxDQUFDO0lBQ3JELG1CQUFtQixHQUFtQyxJQUFJLENBQUM7SUFDM0QsY0FBYyxHQUFtQixJQUFJLENBQUM7SUFDdEMsb0JBQW9CLEdBQW9DLElBQUksQ0FBQztJQUM3RCxVQUFVLEdBQTBCLElBQUksQ0FBQztJQUN6QyxTQUFTLEdBQXlCLElBQUksQ0FBQztJQUUvQyx5REFBeUQ7SUFDakQsbUJBQW1CLEdBQWlDLElBQUksQ0FBQztJQUN6RCwyQkFBMkIsR0FBeUMsSUFBSSxDQUFDO0lBQ3pFLDhCQUE4QixHQUE0QyxJQUFJLENBQUM7SUFDL0UseUJBQXlCLEdBQTRCLElBQUksQ0FBQztJQUMxRCwrQkFBK0IsR0FBNkMsSUFBSSxDQUFDO0lBQ2pGLHFCQUFxQixHQUFtQyxJQUFJLENBQUM7SUFDN0Qsb0JBQW9CLEdBQWtDLElBQUksQ0FBQztJQUVuRSxnQkFBdUIsQ0FBQztJQUV4Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxXQUFXO1FBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxvQkFBb0IsQ0FBQyxRQUFRLEdBQUcsSUFBSSxvQkFBb0Is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
|
|
336
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVlc1NlcnZpY2VMaWJMb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvc2VydmljZXMvRGVlc1NlcnZpY2VMaWJMb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUE4R3ZEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILHVFQUF1RTtBQUN2RSxzRUFBc0U7QUFDdEUsOEVBQThFO0FBQzlFLE1BQU0sc0JBQXNCLEdBQUc7Ozs7O0NBSzlCLENBQUM7QUFFRixNQUFNLE9BQU8sb0JBQW9CO0lBQ3ZCLE1BQU0sQ0FBQyxRQUFRLENBQXVCO0lBRTlDLDRCQUE0QjtJQUNwQixRQUFRLEdBQXdCLElBQUksQ0FBQztJQUNyQyxnQkFBZ0IsR0FBZ0MsSUFBSSxDQUFDO0lBQ3JELG1CQUFtQixHQUFtQyxJQUFJLENBQUM7SUFDM0QsY0FBYyxHQUFtQixJQUFJLENBQUM7SUFDdEMsb0JBQW9CLEdBQW9DLElBQUksQ0FBQztJQUM3RCxVQUFVLEdBQTBCLElBQUksQ0FBQztJQUN6QyxTQUFTLEdBQXlCLElBQUksQ0FBQztJQUUvQyx5REFBeUQ7SUFDakQsbUJBQW1CLEdBQWlDLElBQUksQ0FBQztJQUN6RCwyQkFBMkIsR0FBeUMsSUFBSSxDQUFDO0lBQ3pFLDhCQUE4QixHQUE0QyxJQUFJLENBQUM7SUFDL0UseUJBQXlCLEdBQTRCLElBQUksQ0FBQztJQUMxRCwrQkFBK0IsR0FBNkMsSUFBSSxDQUFDO0lBQ2pGLHFCQUFxQixHQUFtQyxJQUFJLENBQUM7SUFDN0Qsb0JBQW9CLEdBQWtDLElBQUksQ0FBQztJQUVuRSxnQkFBdUIsQ0FBQztJQUV4Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxXQUFXO1FBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxvQkFBb0IsQ0FBQyxRQUFRLEdBQUcsSUFBSSxvQkFBb0Is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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@design.estate/dees-catalog",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "11.1.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",
|
|
@@ -62,7 +62,6 @@
|
|
|
62
62
|
"assets/**/*",
|
|
63
63
|
"scripts/**/*",
|
|
64
64
|
"cli.js",
|
|
65
|
-
".smartconfig.json",
|
|
66
65
|
"readme.md",
|
|
67
66
|
"third-party-notices.md"
|
|
68
67
|
],
|
package/readme.md
CHANGED
|
@@ -229,7 +229,7 @@ task guide and examples deliberately; the generated table does not replace them.
|
|
|
229
229
|
| `dees-storage-keys` | dataview | — | [Source](ts_web/elements/00group-dataview/dees-storage-browser/dees-storage-keys.ts) |
|
|
230
230
|
| `dees-storage-preview` | dataview | — | [Source](ts_web/elements/00group-dataview/dees-storage-browser/dees-storage-preview.ts) |
|
|
231
231
|
| `dees-table` | dataview | [DeesTable](#deestable) | [Source](ts_web/elements/00group-dataview/dees-table/dees-table.ts) |
|
|
232
|
-
| `dees-terminal-view` | harness |
|
|
232
|
+
| `dees-terminal-view` | harness | [DeesTerminalView](#deesterminalview) | [Source](ts_web/elements/00group-harness/dees-terminal-view/dees-terminal-view.ts) |
|
|
233
233
|
| `dees-theme` | utility | [DeesTheme](#deestheme) | [Source](ts_web/elements/00group-utility/dees-theme/dees-theme.ts) |
|
|
234
234
|
| `dees-thumbnail-audio` | media | [DeesThumbnailAudio](#deesthumbnailaudio) | [Source](ts_web/elements/00group-media/dees-thumbnail-audio/component.ts) |
|
|
235
235
|
| `dees-thumbnail-folder` | media | [DeesThumbnailFolder](#deesthumbnailfolder) | [Source](ts_web/elements/00group-media/dees-thumbnail-folder/component.ts) |
|
|
@@ -2640,7 +2640,7 @@ Scrollable streaming-safe log. Up to 40 canonical entries (`messages` + `permiss
|
|
|
2640
2640
|
|
|
2641
2641
|
`refreshMessages(ids?)` reconciles in-place host mutations without replacing canonical objects. With IDs, it refreshes only matching message rows that are currently mounted; matching offscreen rows remain unmounted and use the mutated canonical objects when later mounted. With IDs omitted, it rebuilds structural transcript state and refreshes all mounted rows. `[]` is a no-op.
|
|
2642
2642
|
|
|
2643
|
-
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 the row's own width rather than the viewport, and status changes never regroup cards. Because a compact group sits inside the content measure, its column count is bounded by that measure — two columns at the 820px default; the wider three- and four-column steps apply when a host widens `--dees-harness-content-width`. Rows are held to a reading measure — `--dees-harness-content-width`, default `820px`, capped at the available width — while terminal and file-write rows keep the full pane, so prose stays readable and diffs and command output get the room they need. A subagent group takes the pane only from three cards upward; one or two stay on the measure. The docked composer keeps its full-bleed bar and insets its content to the same measure, so the prompt lines up with the messages above it. Set the custom property on the chat or the list to widen or disable the column; it is read when rows are measured, so change it at mount rather than while a virtualized transcript is scrolled. 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`, `transcriptKey`, `hasEarlierMessages`, `loadingEarlier`, `autoFollow`, `hideScrollbar`, `fadeScrollEdges`, `showRoles`, `showTimestamps`, `allowSubtaskStreams`, `markdownWhileStreaming` (default `true`), `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.
|
|
2643
|
+
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 the row's own width rather than the viewport, and status changes never regroup cards. Because a compact group sits inside the content measure, its column count is bounded by that measure — two columns at the 820px default; the wider three- and four-column steps apply when a host widens `--dees-harness-content-width`. Rows are held to a reading measure — `--dees-harness-content-width`, default `820px`, capped at the available width — while terminal and file-write rows keep the full pane, so prose stays readable and diffs and command output get the room they need. A subagent group takes the pane only from three cards upward; one or two stay on the measure. A terminal or file-write card that sits alone in its row keeps the pane only while it is open: once collapsed it returns to the reading measure, because a one-line header does not need the room its output did. The row itself still spans the pane; the card centres inside it and animates between the two widths with the standard disclosure timing. Cards that share a row as a multi-card grid keep their cell width in both states, since there the cell is the layout. The list publishes the collapsed width to its rows as `--dees-harness-collapsed-tool-width` (single cards only, derived from `--dees-harness-content-width`); a host can set it on a single row to widen that card, or set `100%` to keep collapsed cards full-bleed; setting it on the chat or the list also reaches grid cells, so prefer row-level overrides. The docked composer keeps its full-bleed bar and insets its content to the same measure, so the prompt lines up with the messages above it. Set the custom property on the chat or the list to widen or disable the column; it is read when rows are measured, so change it at mount rather than while a virtualized transcript is scrolled. 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`, `transcriptKey`, `hasEarlierMessages`, `loadingEarlier`, `autoFollow`, `hideScrollbar`, `fadeScrollEdges`, `showRoles`, `showTimestamps`, `allowSubtaskStreams`, `markdownWhileStreaming` (default `true`), `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.
|
|
2644
2644
|
|
|
2645
2645
|
#### `DeesHarnessMessage`
|
|
2646
2646
|
|
|
@@ -2654,7 +2654,7 @@ One message: role accent, markdown (assistant default, `message.markdown` overri
|
|
|
2654
2654
|
|
|
2655
2655
|
#### `DeesHarnessToolCard`
|
|
2656
2656
|
|
|
2657
|
-
Tool-call card: shared chrome (icon, label, subtitle, status pill, duration, MCP badges) with a per-kind body. Kind resolution goes through `DeesHarnessToolRegistry` (see below); bodies for the seeded kinds — terminal, file-read, file-write (renders a before/after diff via `dees-dataview-codebox` when the input carries previous content), file-delete, dir-list, browser (inline screenshots), http, json, search, subtask, project-task, todo, mcp, unknown — live in `renderers.ts`. File-write cards retain the user's inline/split choice while the same call updates. Numeric patch hunks preserve their source line numbers; patches and replacement snippets without coordinates hide gutters rather than presenting fabricated positions. A producer-supplied `IHarnessToolCall.title` leads the subtitle when present — a harness's own one-line description of the call, such as `Read SKILL.md` for a shell invocation — and the descriptor-derived line stays reachable as the hover tooltip; a blank title falls back to the derived line. Overflowing subtitles use a 40px right-edge fade and reveal the full line on hover plus once after a two-second initial delay. Expand/collapse always uses a smooth disclosure transition. Initially closed bodies mount lazily on first expansion, then retain the same DOM and become inert plus `aria-hidden` while closed. Long outputs truncate at 6,000 chars with a "Show all" expander. Terminal and error cards open by default, and a terminal card collapses itself again once its command can be proven to have succeeded, meaning an exit code of 0. A non-zero exit, an error, a stopped command, and a command that reports no exit code at all keep their output on screen — an absent exit code is not evidence of success, so a producer that reports a failed command as completed never has that failure hidden behind a summary. A collapsed terminal shows a one-line outcome (exit code, line count, and the last meaningful line) beneath the command. It is derived from the call's own output rather than from any producer-supplied description, so it is present for every producer. An explicit expand or collapse by the user always wins and is never overridden when the call settles. Descriptors opt in through `collapseWhenFinished` and supply the line through `summary`. Terminal output uses a black inner log surface and follows the live tail after reaching the card-height cap. Scrolling upward detaches the tail; leaving the card returns to the bottom after five seconds, while re-entering cancels that pending return. Terminal calls may provide `exitCode` separately when `output` is one combined process stream; the renderer retains support for `{ stdout, stderr, exitCode }` output objects. A subagent card is capped by `--dees-harness-active-subtask-height` (default `320px`) rather than fixed to it: a settled agent whose brief and result fit sizes to its own text, and only content past the cap hands the overflow to the panels, which scroll with a hidden scrollbar and a fade mask at the clipped edge. Both the Agent Brief and the Result carry that affordance, and the drill-in action stays pinned at the bottom of the card. A live child keeps the full window so its streaming transcript has a stable area to scroll in.
|
|
2657
|
+
Tool-call card: shared chrome (icon, label, subtitle, status pill, duration, MCP badges) with a per-kind body. Kind resolution goes through `DeesHarnessToolRegistry` (see below); bodies for the seeded kinds — terminal, file-read, file-write (renders a before/after diff via `dees-dataview-codebox` when the input carries previous content), file-delete, dir-list, browser (inline screenshots), http, json, search, subtask, project-task, todo, mcp, unknown — live in `renderers.ts`. File-write cards retain the user's inline/split choice while the same call updates. Numeric patch hunks preserve their source line numbers; patches and replacement snippets without coordinates hide gutters rather than presenting fabricated positions. A producer-supplied `IHarnessToolCall.title` leads the subtitle when present — a harness's own one-line description of the call, such as `Read SKILL.md` for a shell invocation — and the descriptor-derived line stays reachable as the hover tooltip; a blank title falls back to the derived line. Overflowing subtitles use a 40px right-edge fade and reveal the full line on hover plus once after a two-second initial delay. Expand/collapse always uses a smooth disclosure transition. Initially closed bodies mount lazily on first expansion, then retain the same DOM and become inert plus `aria-hidden` while closed. A closed card also reflects `data-collapsed` on its host and honours `--dees-harness-collapsed-tool-width` as its own `max-width`, so a transcript row can hold a collapsed card to a narrower measure than an open one; unset — a direct tool-card host, a grid cell — the card fills its row in both states. Long outputs truncate at 6,000 chars with a "Show all" expander. Terminal and error cards open by default, and a terminal card collapses itself again once its command can be proven to have succeeded, meaning an exit code of 0. A non-zero exit, an error, a stopped command, and a command that reports no exit code at all keep their output on screen — an absent exit code is not evidence of success, so a producer that reports a failed command as completed never has that failure hidden behind a summary. A collapsed terminal shows a one-line outcome (exit code, line count, and the last meaningful line) beneath the command. It is derived from the call's own output rather than from any producer-supplied description, so it is present for every producer. An explicit expand or collapse by the user always wins and is never overridden when the call settles. Descriptors opt in through `collapseWhenFinished` and supply the line through `summary`. Terminal output uses a black inner log surface and follows the live tail after reaching the card-height cap. Scrolling upward detaches the tail; leaving the card returns to the bottom after five seconds, while re-entering cancels that pending return. Terminal calls may provide `exitCode` separately when `output` is one combined process stream; the renderer retains support for `{ stdout, stderr, exitCode }` output objects. A subagent card is capped by `--dees-harness-active-subtask-height` (default `320px`) rather than fixed to it: a settled agent whose brief and result fit sizes to its own text, and only content past the cap hands the overflow to the panels, which scroll with a hidden scrollbar and a fade mask at the clipped edge. Both the Agent Brief and the Result carry that affordance, and the drill-in action stays pinned at the bottom of the card. A live child keeps the full window so its streaming transcript has a stable area to scroll in.
|
|
2658
2658
|
|
|
2659
2659
|
After mutating a canonical tool call in place, call `refreshCall()`. It refreshes the mounted card, any mounted nested subtask transcript, and any open fullscreen card while retaining the same canonical call and nested-message object references; it does not clone or replace them.
|
|
2660
2660
|
|
|
@@ -2751,6 +2751,14 @@ Idle/busy/error line with animated dots and `aria-live="polite"`. Renders nothin
|
|
|
2751
2751
|
|
|
2752
2752
|
Token usage chip (`in · out · total`, `compact` shows the total only); cache read/write detail in the tooltip.
|
|
2753
2753
|
|
|
2754
|
+
#### `DeesTerminalView`
|
|
2755
|
+
|
|
2756
|
+
Transport-agnostic xterm.js surface. The host pipes remote PTY output in with `write(data)` and receives keystrokes as `terminal-input` (`{ data }`); there is no process, runtime or socket coupling. `terminal-resize` (`{ rows, cols }`) reports the grid after every refit so the host can negotiate a PTY size, and `currentSize` reads it back (`undefined` while no terminal is live). `fontSize` sets the grid font, `disabled` stops `terminal-input` from being emitted, and `focus()` focuses the grid. xterm is loaded through `DeesServiceLibLoader`; CSP-locked or offline hosts call `provideXtermModules()` first to supply their own bundled copy instead of the CDN.
|
|
2757
|
+
|
|
2758
|
+
`write()` is safe before the terminal exists and while the element is detached: output is buffered and replayed in order on the next connection, bounded by the exported `maxPendingWriteBytes` (8 MiB — `Uint8Array` chunks count their `byteLength`, strings their UTF-16 memory). Past that bound the oldest chunks are dropped and the replay emits RIS first, so a truncated prefix is never rendered as if it were contiguous. `clear()` resets screen and scrollback through the write stream (RIS, `ESC c`) rather than around it, so it is ordered against output already queued in xterm — write, `clear()`, write leaves only the later output on screen.
|
|
2759
|
+
|
|
2760
|
+
`ready` resolves once the terminal of the current connection is live; a fresh promise is created per connection, so a reattached element can be awaited again. Every connection builds a terminal and every disconnection disposes it, so an element moved between containers, or returned to, is a live surface rather than a dead one; buffered output survives the move. A failed xterm load is not an unhandled rejection: it dispatches the bubbling, composed `terminal-error` (`ITerminalErrorDetail { error }`), rejects `ready` with the same error, leaves the element writable, and is retried on the next connection. xterm's own flow-control refusal is reported the same way. Sizing comes from the host element — give it a bounded height, as the demo does.
|
|
2761
|
+
|
|
2754
2762
|
#### `DeesHarnessSessionSidebar`
|
|
2755
2763
|
|
|
2756
2764
|
Generic session-detail panel that composes Tasks, Tools & Subagents, Tokens, Session Scratchpad, and Session Intelligence sections. Headings stay fixed in a single-open accordion; Session Intelligence splits its expanded body into independently scrolling history and a docked question composer. Set `.toolMessages` to top-level tool messages from the currently retained transcript window and `.toolRegistry` for matching labels/icons; active subagents use authoritative child status, and removed messages disappear without a second history cache. The host also supplies `IHarnessSessionMetrics`, `IHarnessScratchpad`, and `IHarnessIntelligenceExchange[]`; the component never loads or persists data itself. Context percentage and its progress bar render only when both `currentContextTokens` and a positive `maxContextTokens` are present.
|
|
@@ -2765,17 +2773,29 @@ Searchable, card-based conversation column for sidebars or a `DeesModal` (`harne
|
|
|
2765
2773
|
|
|
2766
2774
|
Each card exposes an Actions button. Actions, right-click, and ContextMenu/Shift+F10 on the primary or Actions control emit `harness-session-context` with the unchanged `IHarnessSessionContextDetail` (`session`, viewport `clientX`/`clientY`, and `originalEvent: MouseEvent`). Button and keyboard requests anchor the menu below the invoking control; pointer requests keep the pointer coordinates. Actions do not select, open, expand, or drag the session. Hosts own the menu choices and focus restoration. Call `DeesContextmenu.openContextMenuWithOptions(detail.originalEvent, items)` synchronously in the event handler, before any `await`, so the event's composed path retains the owning dialog. The session demo shows menu cleanup and focus restoration through `registerGarbageFunction()`.
|
|
2767
2775
|
|
|
2768
|
-
`IHarnessSessionMeta.state` accepts `normal`, `working`, `finished`, `attention`, or `error`. Every collapsed row shows its status icon and text. Optional `statusLabel` refines the description (for example, `Starting`, `Waiting for feedback`, or `Approval needed`); blank labels fall back to the standard state name. Optional `harness: IHarnessAgentIdentity` supplies `{ id, name, icon? }`, independently of the model and state. The harness name stays on its own metadata line; omitted identity renders no guessed provider. Search includes harness names/ids and status labels.
|
|
2776
|
+
`IHarnessSessionMeta.state` accepts `normal`, `working`, `finished`, `attention`, or `error`. Every collapsed row shows its status icon and text. Optional `statusLabel` refines the description (for example, `Starting`, `Waiting for feedback`, or `Approval needed`); blank labels fall back to the standard state name. Optional `harness: IHarnessAgentIdentity` supplies `{ id, name, icon? }`, independently of the model and state. Optional `projectLabel` names the project or workspace the session belongs to and renders beside the harness on the same collapsed identity line, elided when it does not fit; it is host-owned and never derived from the title or id. The harness name stays on its own metadata line; omitted identity renders no guessed provider. Search includes harness names/ids, project labels and status labels.
|
|
2769
2777
|
|
|
2770
2778
|
Attention and error rows retain a colored edge even when selected. Group headings count both states, including when collapsed. `working` controls the small activity pulse on normal/working rows, defaulting to `state === 'working'`; attention, error and finished indicators remain stationary. Reduced-motion preferences disable the pulse. State changes preserve row height, selection, expansion and host-provided order.
|
|
2771
2779
|
|
|
2772
|
-
|
|
2780
|
+
**Sessions and resources are peers in one ordered list.** Every sortable row — conversation or resource — carries a focusable grip: drag it anywhere the other kind can go, including between sessions and into or out of groups, or reorder it with ArrowUp, ArrowDown, Home, and End. Pointer dragging moves a preview the size of the dragged row, opens a matching drop slot, and animates surrounding rows. Reordering does not require `enableGrouping`, which now only adds group chrome; an active search query renders one flat, non-sortable, recency-ordered section and cancels a drag in flight.
|
|
2781
|
+
|
|
2782
|
+
Every move emits `harness-item-move` with `IHarnessItemMoveDetail`: `{ item, fromGroupId, toGroupId, beforeItem, source }`, where `item` and `beforeItem` are `IHarnessSessionListItemRef` values (`{ kind: 'session' | 'resource'; id }`) and a null `beforeItem` means append. Groups hold `itemIds: IHarnessSessionListItemRef[]`, and `ungroupedItemIds` controls the order outside groups; omitted or unknown entries of either kind fall back to `updatedAt ?? createdAt` recency. Set `draggable: false` on a session or a resource for pinned entries such as terminals; pinned entries sort first in the ungrouped section and stay outside the sortable order.
|
|
2773
2783
|
|
|
2774
2784
|
The compact **New group** button sits beside search whenever `enableGrouping` is true, including while filtering, and emits `harness-group-create-request`. The host owns creation; the list keeps its current search until the host chooses to clear it. The demo clears search after adding the group. Both search and the group action use 44px targets for coarse pointers.
|
|
2775
2785
|
|
|
2776
2786
|
The Sessions demo pairs the list with a selected-session workspace. Its controls step through starting, working, feedback, approval, completion and failure without timers or backend operations. Question and permission responses update the selected session; declining approval pauses it. The narrow layout switches between the preserved list and detail panes with an **All sessions** control that restores row focus.
|
|
2777
2787
|
|
|
2778
|
-
Generic host resources use the exported `IHarnessResourceMeta` and `IHarnessResourceAssociation` contracts. Set `.resources`, `.resourceAssociations`, `.selectedResourceId`, and `.
|
|
2788
|
+
Generic host resources use the exported `IHarnessResourceMeta` and `IHarnessResourceAssociation` contracts. Set `.resources`, `.resourceAssociations`, `.selectedResourceId`, and `.eligibleTargetsByResourceId`. Resource rows render as top-level rows in the ordered list, never as children of a session. Optional `projectLabel` renders on the resource metadata line after the kind and is searched like the title and preview. Resource metadata is presentation-only: the list never mounts a terminal, browser, file viewer, or other runtime.
|
|
2789
|
+
|
|
2790
|
+
**Attaching is a separate explicit action, not a drop.** An association is an access grant: it shows as a decorative marker on the resource row (a link icon plus the target's title, resolved from `sessions` or `resources` regardless of search or collapse) and never moves the row. Dropping is purely positional and never attaches. The association stays single-valued — a resource has at most one target — and the target is any other item, so a resource may be attached to a session **or** to another resource such as a terminal:
|
|
2791
|
+
|
|
2792
|
+
```typescript
|
|
2793
|
+
list.resourceAssociations = [
|
|
2794
|
+
{ resourceId: 'file:notes', target: { kind: 'resource', id: 'terminal:build' } },
|
|
2795
|
+
];
|
|
2796
|
+
```
|
|
2797
|
+
|
|
2798
|
+
Association records are projected only when the resource exists, the target exists, the target is not the resource itself, and no earlier record claimed that resource. `eligibleTargetsByResourceId` restricts attach/reassign targets for host menus: a missing entry leaves the resource unrestricted, an empty array means no eligible target. Which resource kinds may host an attachment is the host's rule, not the component's.
|
|
2779
2799
|
|
|
2780
2800
|
```typescript
|
|
2781
2801
|
import type {
|
|
@@ -2790,17 +2810,17 @@ list.resources = [
|
|
|
2790
2810
|
{ id: 'file:notes', kind: 'file', title: 'Release notes', preview: '6.7.0 draft' },
|
|
2791
2811
|
];
|
|
2792
2812
|
list.resourceAssociations = [
|
|
2793
|
-
{ resourceId: 'shell:build',
|
|
2813
|
+
{ resourceId: 'shell:build', target: { kind: 'session', id: 'session-1' } },
|
|
2794
2814
|
];
|
|
2795
|
-
list.
|
|
2796
|
-
'shell:build': ['session-1', 'session-2'],
|
|
2797
|
-
'file:notes': ['session-2'],
|
|
2815
|
+
list.eligibleTargetsByResourceId = {
|
|
2816
|
+
'shell:build': [{ kind: 'session', id: 'session-1' }, { kind: 'session', id: 'session-2' }],
|
|
2817
|
+
'file:notes': [{ kind: 'session', id: 'session-2' }, { kind: 'resource', id: 'shell:build' }],
|
|
2798
2818
|
};
|
|
2799
2819
|
|
|
2800
2820
|
list.addEventListener('harness-resource-association-request', async (event) => {
|
|
2801
2821
|
const resourceEvent = event as CustomEvent<THarnessResourceAssociationRequestDetail>;
|
|
2802
|
-
const { resource,
|
|
2803
|
-
await persistAssociation(resource.id,
|
|
2822
|
+
const { resource, toTarget } = resourceEvent.detail;
|
|
2823
|
+
await persistAssociation(resource.id, toTarget);
|
|
2804
2824
|
list.resourceAssociations = await loadAssociations();
|
|
2805
2825
|
});
|
|
2806
2826
|
|
|
@@ -2809,20 +2829,20 @@ list.addEventListener('harness-resource-context', (event) => {
|
|
|
2809
2829
|
openHostMenu({
|
|
2810
2830
|
x: resourceEvent.detail.clientX,
|
|
2811
2831
|
y: resourceEvent.detail.clientY,
|
|
2812
|
-
attach: (
|
|
2832
|
+
attach: (target) => resourceEvent.detail.requestAssociation(target),
|
|
2813
2833
|
detach: () => resourceEvent.detail.requestAssociation(null),
|
|
2814
2834
|
onClose: resourceEvent.detail.close,
|
|
2815
2835
|
});
|
|
2816
2836
|
});
|
|
2817
2837
|
```
|
|
2818
2838
|
|
|
2819
|
-
`harness-resource-select` and `harness-resource-open` carry `{ resource,
|
|
2839
|
+
`harness-resource-select` and `harness-resource-open` carry `{ resource, target }`, where `target` is the controlled association ref or null. `harness-resource-context` adds viewport coordinates, the pointer/Actions/keyboard source, the original event, `requestAssociation(toTarget)`, and `close()` for focus restoration. The visible Actions button has menu disclosure semantics; native `ContextMenu` and `Shift+F10` invoke the same host-owned path. The component does not require `DeesContextmenu` and does not own menu choices.
|
|
2820
2840
|
|
|
2821
|
-
All component-originated association request paths converge on the public `requestResourceAssociation(resourceId,
|
|
2841
|
+
All component-originated association request paths converge on the public `requestResourceAssociation(resourceId, toTarget, source?)` method. A valid change emits one bubbling/composed `harness-resource-association-request` discriminated by `intent: 'attach' | 'detach' | 'reassign'` and carrying `resource`, `fromTarget`, `toTarget`, and `source: 'action' | 'keyboard'`. The method returns `false` and emits nothing for unknown resources, unknown or ineligible targets, a target that is the resource itself, detach from an unattached resource, or the current target. It never mutates resources, associations, selection, groups, or order.
|
|
2822
2842
|
|
|
2823
|
-
Association projection is deterministic and non-destructive: resource records without a non-empty ID, kind, or title, unknown resource/
|
|
2843
|
+
Association projection is deterministic and non-destructive: resource records without a non-empty ID, kind, or title, unknown resource/target references, self-targets, and later duplicate records for a resource are ignored; the first valid association wins. Duplicate resource metadata IDs likewise use the first resource. Eligibility does not hide an existing authoritative association, which remains visible and detachable. Requested changes are announced separately from completion; completion is announced only after the controlled association input reflects the requested target.
|
|
2824
2844
|
|
|
2825
|
-
Search covers resource ID, kind, title, and preview
|
|
2845
|
+
Search covers resource ID, kind, title, and preview, and matches sessions and resources as peers — a matching session no longer reveals its attached resources, and a matching resource no longer reveals its target. Resources render with zero sessions. Resource dragging edge-scrolls the list exactly like session dragging and emits only `harness-item-move`. Use the Actions/context path for keyboard and mobile association workflows; coarse-pointer grip and Actions targets are at least 44px.
|
|
2826
2846
|
|
|
2827
2847
|
---
|
|
2828
2848
|
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@design.estate/dees-catalog',
|
|
6
|
-
version: '
|
|
6
|
+
version: '11.1.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
|
}
|
|
@@ -69,6 +69,29 @@ const toolShowcase = (): IHarnessMessage[] => {
|
|
|
69
69
|
finishedAt: now - 152_000,
|
|
70
70
|
},
|
|
71
71
|
},
|
|
72
|
+
{
|
|
73
|
+
id: 'demo-t4',
|
|
74
|
+
role: 'assistant',
|
|
75
|
+
text: 'Re-ran the suite to confirm the cache key fix.',
|
|
76
|
+
createdAt: now - 140_000,
|
|
77
|
+
},
|
|
78
|
+
// A terminal card alone in its row: expanded it takes the pane, and once it collapses it
|
|
79
|
+
// returns to the reading measure like the prose around it.
|
|
80
|
+
{
|
|
81
|
+
id: 'demo-t5',
|
|
82
|
+
role: 'tool',
|
|
83
|
+
text: '',
|
|
84
|
+
createdAt: now - 130_000,
|
|
85
|
+
toolCall: {
|
|
86
|
+
id: 'call-5',
|
|
87
|
+
name: 'run_command',
|
|
88
|
+
status: 'completed',
|
|
89
|
+
input: { command: 'pnpm test --filter sitemap', cwd: '/srv/app' },
|
|
90
|
+
output: { exitCode: 0, stdout: '14 tests passed\n0 failed' },
|
|
91
|
+
startedAt: now - 136_000,
|
|
92
|
+
finishedAt: now - 131_000,
|
|
93
|
+
},
|
|
94
|
+
},
|
|
72
95
|
];
|
|
73
96
|
};
|
|
74
97
|
|
package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.ts
CHANGED
|
@@ -343,6 +343,18 @@ export class DeesHarnessMessageList extends DeesElement {
|
|
|
343
343
|
width: 100%;
|
|
344
344
|
}
|
|
345
345
|
|
|
346
|
+
/*
|
|
347
|
+
* The pane is what an open command or diff needs, not what its one-line collapsed header
|
|
348
|
+
* needs, so a closed card returns to the reading measure inside its row. Only a row holding
|
|
349
|
+
* a single card offers it: in a multi-card grid the cell width is the layout, and shrinking
|
|
350
|
+
* one card would break the row. The card applies this itself — it alone knows whether it is
|
|
351
|
+
* open — and the measure stays defined here, with the rest of the column rules.
|
|
352
|
+
*/
|
|
353
|
+
.stack > [data-tool-layout='full-row'][data-tool-count='1'],
|
|
354
|
+
.virtualItem[data-tool-layout='full-row'][data-tool-count='1'] {
|
|
355
|
+
--dees-harness-collapsed-tool-width: min(var(--dees-harness-content-width, 820px), 100%);
|
|
356
|
+
}
|
|
357
|
+
|
|
346
358
|
/*
|
|
347
359
|
* One or two subagents are read like any other content, so they stay on the measure. The
|
|
348
360
|
* pane is only worth taking once three or more cards have to sit side by side.
|