@design.estate/dees-catalog 11.2.2 → 12.0.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 (25) hide show
  1. package/dist_bundle/bundle.js +1861 -1290
  2. package/dist_bundle/bundle.js.map +1 -1
  3. package/dist_ts_web/00_commitinfo_data.js +1 -1
  4. package/dist_ts_web/elements/00group-harness/dees-harness-conversation-picker/dees-harness-conversation-picker.d.ts +62 -0
  5. package/dist_ts_web/elements/00group-harness/dees-harness-conversation-picker/dees-harness-conversation-picker.demo.d.ts +1 -0
  6. package/dist_ts_web/elements/00group-harness/dees-harness-conversation-picker/dees-harness-conversation-picker.demo.js +38 -0
  7. package/dist_ts_web/elements/00group-harness/dees-harness-conversation-picker/dees-harness-conversation-picker.js +455 -0
  8. package/dist_ts_web/elements/00group-harness/dees-harness-conversation-picker/index.d.ts +1 -0
  9. package/dist_ts_web/elements/00group-harness/dees-harness-conversation-picker/index.js +2 -0
  10. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.d.ts +39 -10
  11. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.js +81 -27
  12. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +327 -115
  13. package/dist_ts_web/elements/00group-harness/index.d.ts +1 -0
  14. package/dist_ts_web/elements/00group-harness/index.js +2 -1
  15. package/dist_ts_web/elements/00group-harness/interfaces.d.ts +35 -16
  16. package/package.json +1 -1
  17. package/readme.md +54 -22
  18. package/ts_web/00_commitinfo_data.ts +1 -1
  19. package/ts_web/elements/00group-harness/dees-harness-conversation-picker/dees-harness-conversation-picker.demo.ts +46 -0
  20. package/ts_web/elements/00group-harness/dees-harness-conversation-picker/dees-harness-conversation-picker.ts +420 -0
  21. package/ts_web/elements/00group-harness/dees-harness-conversation-picker/index.ts +1 -0
  22. package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.ts +94 -36
  23. package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.ts +357 -120
  24. package/ts_web/elements/00group-harness/index.ts +1 -0
  25. package/ts_web/elements/00group-harness/interfaces.ts +41 -16
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-catalog',
6
- version: '11.2.2',
6
+ version: '12.0.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
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFdBQVcsRUFBRSxzSkFBc0o7Q0FDcEssQ0FBQSJ9
@@ -0,0 +1,62 @@
1
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ import type { IHarnessResourceMeta, IHarnessSessionGroup, IHarnessSessionListItemRef, IHarnessSessionMeta } from '../interfaces.js';
3
+ import '../../00group-utility/dees-icon/dees-icon.js';
4
+ declare global {
5
+ interface HTMLElementTagNameMap {
6
+ 'dees-harness-conversation-picker': DeesHarnessConversationPicker;
7
+ }
8
+ }
9
+ /** Options for the one-call static helper. */
10
+ export interface IHarnessConversationPickerOptions {
11
+ sessions?: IHarnessSessionMeta[];
12
+ groups?: IHarnessSessionGroup[];
13
+ resources?: IHarnessResourceMeta[];
14
+ /** Targets already in use; filtered out so a picker never offers a no-op. */
15
+ excludeTargets?: IHarnessSessionListItemRef[];
16
+ /** Host-declared allowed targets; an absent list means unrestricted. */
17
+ eligibleTargets?: IHarnessSessionListItemRef[];
18
+ heading?: string;
19
+ subheading?: string;
20
+ emptyText?: string;
21
+ }
22
+ /**
23
+ * Keyboard-first picker for one conversation (or one attachable resource). It is presentation
24
+ * only: it never mutates a session, a resource, or an association — it resolves one choice and
25
+ * leaves the change to the host.
26
+ *
27
+ * Typing filters on title, project label and group name. Up/Down move the active row, Enter picks
28
+ * it, Escape cancels. `harness-picker-choose` carries the chosen `IHarnessSessionListItemRef`;
29
+ * `harness-picker-cancel` carries nothing. Use the static `pick()` helper to get both as one
30
+ * promise inside a modal.
31
+ */
32
+ export declare class DeesHarnessConversationPicker extends DeesElement {
33
+ static demo: () => TemplateResult<1>;
34
+ static demoGroups: string[];
35
+ accessor sessions: IHarnessSessionMeta[];
36
+ accessor groups: IHarnessSessionGroup[];
37
+ accessor resources: IHarnessResourceMeta[];
38
+ accessor excludeTargets: IHarnessSessionListItemRef[];
39
+ /** Absent (undefined) means unrestricted; an empty array means nothing is eligible. */
40
+ accessor eligibleTargets: IHarnessSessionListItemRef[] | undefined;
41
+ accessor heading: string;
42
+ accessor emptyText: string;
43
+ accessor search: string;
44
+ accessor activeKey: string;
45
+ static styles: import("@design.estate/dees-element").CSSResult[];
46
+ /** Every offerable target, before the search filter. */
47
+ private get entries();
48
+ /** Title, project label and group name are all searchable, like the list itself. */
49
+ private get filteredEntries();
50
+ private get activeEntry();
51
+ render(): TemplateResult;
52
+ focusSearch(): Promise<void>;
53
+ private readonly handleKeyDown;
54
+ private scrollActiveIntoView;
55
+ private choose;
56
+ private cancel;
57
+ /**
58
+ * Opens the picker in a modal and resolves with the chosen target, or null when it was
59
+ * cancelled. Focus returns to whatever had it when the picker opened.
60
+ */
61
+ static pick(optionsArg?: IHarnessConversationPickerOptions): Promise<IHarnessSessionListItemRef | null>;
62
+ }
@@ -0,0 +1 @@
1
+ export declare const demoFunc: () => import("@design.estate/dees-element").TemplateResult<1>;
@@ -0,0 +1,38 @@
1
+ import { html } from '@design.estate/dees-element';
2
+ import { demoPage } from '../../../demos/templates.js';
3
+ const demoSessions = [
4
+ { id: 's1', title: 'Fix sitemap cache key', projectLabel: 'storefront', updatedAt: Date.now() - 1_000 },
5
+ { id: 's2', title: 'Investigate model rate limits', projectLabel: 'gateway', updatedAt: Date.now() - 2_000 },
6
+ { id: 's3', title: 'Prepare the catalog release', projectLabel: 'catalog', updatedAt: Date.now() - 3_000 },
7
+ { id: 's4', title: 'Improve agent onboarding', updatedAt: Date.now() - 4_000 },
8
+ ];
9
+ const demoResources = [
10
+ { id: 'terminal:build', kind: 'terminal', title: 'Build shell', icon: 'lucide:Terminal', projectLabel: 'storefront' },
11
+ ];
12
+ const demoGroups = [
13
+ { id: 'active', name: 'Workspace', itemIds: [{ kind: 'session', id: 's1' }, { kind: 'session', id: 's2' }] },
14
+ { id: 'review', name: 'Review', itemIds: [{ kind: 'session', id: 's3' }] },
15
+ ];
16
+ export const demoFunc = () => demoPage('Conversation picker', 'Keyboard-first target picker: type to filter on title, project label or group, Enter picks, Escape cancels.', html `
17
+ <style>
18
+ .pickerDemo {
19
+ max-width: 420px;
20
+ padding: 16px;
21
+ border: 1px solid var(--dees-color-border-subtle);
22
+ border-radius: var(--dees-radius-xl);
23
+ background: var(--dees-color-bg-secondary);
24
+ }
25
+ </style>
26
+ <div class="pickerDemo">
27
+ <dees-harness-conversation-picker
28
+ heading="Attach Build shell to…"
29
+ .sessions=${demoSessions}
30
+ .groups=${demoGroups}
31
+ .resources=${demoResources}
32
+ .excludeTargets=${[{ kind: 'session', id: 's4' }]}
33
+ @harness-picker-choose=${(event) => console.log('picked', event.detail.target)}
34
+ @harness-picker-cancel=${() => console.log('cancelled')}
35
+ ></dees-harness-conversation-picker>
36
+ </div>
37
+ `);
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLWNvbnZlcnNhdGlvbi1waWNrZXIuZGVtby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLWNvbnZlcnNhdGlvbi1waWNrZXIvZGVlcy1oYXJuZXNzLWNvbnZlcnNhdGlvbi1waWNrZXIuZGVtby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR3ZELE1BQU0sWUFBWSxHQUEwQjtJQUMxQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUU7SUFDdkcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSwrQkFBK0IsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFO0lBQzVHLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRTtJQUMxRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLDBCQUEwQixFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFO0NBQy9FLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBMkI7SUFDNUMsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFO0NBQ3RILENBQUM7QUFFRixNQUFNLFVBQVUsR0FBMkI7SUFDekMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDNUcsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO0NBQzNFLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUNwQyxxQkFBcUIsRUFDckIsNkdBQTZHLEVBQzdHLElBQUksQ0FBQTs7Ozs7Ozs7Ozs7OztvQkFhYyxZQUFZO2tCQUNkLFVBQVU7cUJBQ1AsYUFBYTswQkFDUixDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQWtCLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO2lDQUNqQyxDQUFDLEtBQWtCLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO2lDQUNsRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQzs7O0dBRzVELENBQ0YsQ0FBQyJ9
@@ -0,0 +1,455 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { demoFunc } from './dees-harness-conversation-picker.demo.js';
36
+ import { DeesElement, html, css, customElement, property, state, cssManager, } from '@design.estate/dees-element';
37
+ import { themeDefaultStyles } from '../../00theme.js';
38
+ import '../../00group-utility/dees-icon/dees-icon.js';
39
+ const itemKey = (refArg) => `${refArg.kind}:${refArg.id}`;
40
+ /**
41
+ * Stable per-option DOM id so the input can point `aria-activedescendant` at the active row.
42
+ * Ids only have to be unique inside this shadow root, and the key already is.
43
+ */
44
+ const optionId = (refArg) => `picker-option-${refArg.kind}-${refArg.id}`.replace(/[^a-zA-Z0-9_-]/g, '_');
45
+ const sameRef = (leftArg, rightArg) => Boolean(leftArg && rightArg && itemKey(leftArg) === itemKey(rightArg));
46
+ /**
47
+ * Keyboard-first picker for one conversation (or one attachable resource). It is presentation
48
+ * only: it never mutates a session, a resource, or an association — it resolves one choice and
49
+ * leaves the change to the host.
50
+ *
51
+ * Typing filters on title, project label and group name. Up/Down move the active row, Enter picks
52
+ * it, Escape cancels. `harness-picker-choose` carries the chosen `IHarnessSessionListItemRef`;
53
+ * `harness-picker-cancel` carries nothing. Use the static `pick()` helper to get both as one
54
+ * promise inside a modal.
55
+ */
56
+ let DeesHarnessConversationPicker = (() => {
57
+ let _classDecorators = [customElement('dees-harness-conversation-picker')];
58
+ let _classDescriptor;
59
+ let _classExtraInitializers = [];
60
+ let _classThis;
61
+ let _classSuper = DeesElement;
62
+ let _sessions_decorators;
63
+ let _sessions_initializers = [];
64
+ let _sessions_extraInitializers = [];
65
+ let _groups_decorators;
66
+ let _groups_initializers = [];
67
+ let _groups_extraInitializers = [];
68
+ let _resources_decorators;
69
+ let _resources_initializers = [];
70
+ let _resources_extraInitializers = [];
71
+ let _excludeTargets_decorators;
72
+ let _excludeTargets_initializers = [];
73
+ let _excludeTargets_extraInitializers = [];
74
+ let _eligibleTargets_decorators;
75
+ let _eligibleTargets_initializers = [];
76
+ let _eligibleTargets_extraInitializers = [];
77
+ let _heading_decorators;
78
+ let _heading_initializers = [];
79
+ let _heading_extraInitializers = [];
80
+ let _emptyText_decorators;
81
+ let _emptyText_initializers = [];
82
+ let _emptyText_extraInitializers = [];
83
+ let _search_decorators;
84
+ let _search_initializers = [];
85
+ let _search_extraInitializers = [];
86
+ let _activeKey_decorators;
87
+ let _activeKey_initializers = [];
88
+ let _activeKey_extraInitializers = [];
89
+ var DeesHarnessConversationPicker = class extends _classSuper {
90
+ static { _classThis = this; }
91
+ static {
92
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
93
+ _sessions_decorators = [property({ attribute: false })];
94
+ _groups_decorators = [property({ attribute: false })];
95
+ _resources_decorators = [property({ attribute: false })];
96
+ _excludeTargets_decorators = [property({ attribute: false })];
97
+ _eligibleTargets_decorators = [property({ attribute: false })];
98
+ _heading_decorators = [property({ type: String })];
99
+ _emptyText_decorators = [property({ type: String })];
100
+ _search_decorators = [state()];
101
+ _activeKey_decorators = [state()];
102
+ __esDecorate(this, null, _sessions_decorators, { kind: "accessor", name: "sessions", static: false, private: false, access: { has: obj => "sessions" in obj, get: obj => obj.sessions, set: (obj, value) => { obj.sessions = value; } }, metadata: _metadata }, _sessions_initializers, _sessions_extraInitializers);
103
+ __esDecorate(this, null, _groups_decorators, { kind: "accessor", name: "groups", static: false, private: false, access: { has: obj => "groups" in obj, get: obj => obj.groups, set: (obj, value) => { obj.groups = value; } }, metadata: _metadata }, _groups_initializers, _groups_extraInitializers);
104
+ __esDecorate(this, null, _resources_decorators, { kind: "accessor", name: "resources", static: false, private: false, access: { has: obj => "resources" in obj, get: obj => obj.resources, set: (obj, value) => { obj.resources = value; } }, metadata: _metadata }, _resources_initializers, _resources_extraInitializers);
105
+ __esDecorate(this, null, _excludeTargets_decorators, { kind: "accessor", name: "excludeTargets", static: false, private: false, access: { has: obj => "excludeTargets" in obj, get: obj => obj.excludeTargets, set: (obj, value) => { obj.excludeTargets = value; } }, metadata: _metadata }, _excludeTargets_initializers, _excludeTargets_extraInitializers);
106
+ __esDecorate(this, null, _eligibleTargets_decorators, { kind: "accessor", name: "eligibleTargets", static: false, private: false, access: { has: obj => "eligibleTargets" in obj, get: obj => obj.eligibleTargets, set: (obj, value) => { obj.eligibleTargets = value; } }, metadata: _metadata }, _eligibleTargets_initializers, _eligibleTargets_extraInitializers);
107
+ __esDecorate(this, null, _heading_decorators, { kind: "accessor", name: "heading", static: false, private: false, access: { has: obj => "heading" in obj, get: obj => obj.heading, set: (obj, value) => { obj.heading = value; } }, metadata: _metadata }, _heading_initializers, _heading_extraInitializers);
108
+ __esDecorate(this, null, _emptyText_decorators, { kind: "accessor", name: "emptyText", static: false, private: false, access: { has: obj => "emptyText" in obj, get: obj => obj.emptyText, set: (obj, value) => { obj.emptyText = value; } }, metadata: _metadata }, _emptyText_initializers, _emptyText_extraInitializers);
109
+ __esDecorate(this, null, _search_decorators, { kind: "accessor", name: "search", static: false, private: false, access: { has: obj => "search" in obj, get: obj => obj.search, set: (obj, value) => { obj.search = value; } }, metadata: _metadata }, _search_initializers, _search_extraInitializers);
110
+ __esDecorate(this, null, _activeKey_decorators, { kind: "accessor", name: "activeKey", static: false, private: false, access: { has: obj => "activeKey" in obj, get: obj => obj.activeKey, set: (obj, value) => { obj.activeKey = value; } }, metadata: _metadata }, _activeKey_initializers, _activeKey_extraInitializers);
111
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
112
+ DeesHarnessConversationPicker = _classThis = _classDescriptor.value;
113
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
114
+ }
115
+ static demo = demoFunc;
116
+ static demoGroups = ['Agent Chat'];
117
+ #sessions_accessor_storage = __runInitializers(this, _sessions_initializers, []);
118
+ get sessions() { return this.#sessions_accessor_storage; }
119
+ set sessions(value) { this.#sessions_accessor_storage = value; }
120
+ #groups_accessor_storage = (__runInitializers(this, _sessions_extraInitializers), __runInitializers(this, _groups_initializers, []));
121
+ get groups() { return this.#groups_accessor_storage; }
122
+ set groups(value) { this.#groups_accessor_storage = value; }
123
+ #resources_accessor_storage = (__runInitializers(this, _groups_extraInitializers), __runInitializers(this, _resources_initializers, []));
124
+ get resources() { return this.#resources_accessor_storage; }
125
+ set resources(value) { this.#resources_accessor_storage = value; }
126
+ #excludeTargets_accessor_storage = (__runInitializers(this, _resources_extraInitializers), __runInitializers(this, _excludeTargets_initializers, []));
127
+ get excludeTargets() { return this.#excludeTargets_accessor_storage; }
128
+ set excludeTargets(value) { this.#excludeTargets_accessor_storage = value; }
129
+ #eligibleTargets_accessor_storage = (__runInitializers(this, _excludeTargets_extraInitializers), __runInitializers(this, _eligibleTargets_initializers, undefined));
130
+ /** Absent (undefined) means unrestricted; an empty array means nothing is eligible. */
131
+ get eligibleTargets() { return this.#eligibleTargets_accessor_storage; }
132
+ set eligibleTargets(value) { this.#eligibleTargets_accessor_storage = value; }
133
+ #heading_accessor_storage = (__runInitializers(this, _eligibleTargets_extraInitializers), __runInitializers(this, _heading_initializers, 'Attach to…'));
134
+ get heading() { return this.#heading_accessor_storage; }
135
+ set heading(value) { this.#heading_accessor_storage = value; }
136
+ #emptyText_accessor_storage = (__runInitializers(this, _heading_extraInitializers), __runInitializers(this, _emptyText_initializers, 'No conversation matches.'));
137
+ get emptyText() { return this.#emptyText_accessor_storage; }
138
+ set emptyText(value) { this.#emptyText_accessor_storage = value; }
139
+ #search_accessor_storage = (__runInitializers(this, _emptyText_extraInitializers), __runInitializers(this, _search_initializers, ''));
140
+ get search() { return this.#search_accessor_storage; }
141
+ set search(value) { this.#search_accessor_storage = value; }
142
+ #activeKey_accessor_storage = (__runInitializers(this, _search_extraInitializers), __runInitializers(this, _activeKey_initializers, ''));
143
+ get activeKey() { return this.#activeKey_accessor_storage; }
144
+ set activeKey(value) { this.#activeKey_accessor_storage = value; }
145
+ static styles = [
146
+ themeDefaultStyles,
147
+ cssManager.defaultStyles,
148
+ css `
149
+ :host {
150
+ display: block;
151
+ min-width: 0;
152
+ font-family: var(--dees-font-family);
153
+ }
154
+
155
+ .searchRow {
156
+ display: flex;
157
+ align-items: center;
158
+ gap: var(--dees-spacing-sm);
159
+ padding: 0 0 var(--dees-spacing-sm);
160
+ }
161
+
162
+ .searchRow dees-icon {
163
+ flex: 0 0 auto;
164
+ color: var(--dees-color-text-secondary);
165
+ }
166
+
167
+ input {
168
+ flex: 1;
169
+ min-width: 0;
170
+ height: var(--dees-control-height-md);
171
+ padding: 0 10px;
172
+ border: 1px solid var(--dees-color-border-default);
173
+ border-radius: var(--dees-radius-md);
174
+ corner-shape: var(--dees-corner-shape);
175
+ background: var(--dees-color-control-bg);
176
+ color: var(--dees-color-text-primary);
177
+ font-family: inherit;
178
+ font-size: var(--dees-font-control-size-sm, 12px);
179
+ }
180
+
181
+ input:focus-visible {
182
+ outline: 2px solid var(--dees-color-focus-ring);
183
+ outline-offset: 1px;
184
+ }
185
+
186
+ .results {
187
+ display: grid;
188
+ gap: 2px;
189
+ max-height: 320px;
190
+ overflow-y: auto;
191
+ scrollbar-width: thin;
192
+ scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
193
+ }
194
+
195
+ .entry {
196
+ display: grid;
197
+ grid-template-columns: 20px minmax(0, 1fr);
198
+ align-items: center;
199
+ gap: var(--dees-spacing-sm);
200
+ padding: 6px 8px;
201
+ border: 0;
202
+ border-radius: var(--dees-radius-md);
203
+ corner-shape: var(--dees-corner-shape);
204
+ background: transparent;
205
+ color: var(--dees-color-text-primary);
206
+ cursor: pointer;
207
+ font-family: inherit;
208
+ text-align: left;
209
+ }
210
+
211
+ .entry:hover {
212
+ background: var(--dees-color-hover);
213
+ }
214
+
215
+ .entry.active {
216
+ background: var(--dees-color-nav-selected);
217
+ }
218
+
219
+ .entryCopy {
220
+ min-width: 0;
221
+ }
222
+
223
+ .entryTitle {
224
+ display: block;
225
+ overflow: hidden;
226
+ text-overflow: ellipsis;
227
+ white-space: nowrap;
228
+ font-size: var(--dees-font-control-size-sm, 12px);
229
+ font-weight: 590;
230
+ }
231
+
232
+ .entryMeta {
233
+ display: block;
234
+ overflow: hidden;
235
+ margin-top: 1px;
236
+ color: var(--dees-color-text-secondary);
237
+ text-overflow: ellipsis;
238
+ white-space: nowrap;
239
+ font-size: var(--dees-font-caption2-size, 10px);
240
+ }
241
+
242
+ .empty {
243
+ padding: var(--dees-spacing-md) 8px;
244
+ color: var(--dees-color-text-secondary);
245
+ text-align: center;
246
+ font-size: var(--dees-font-control-size-sm, 12px);
247
+ }
248
+ `,
249
+ ];
250
+ /** Every offerable target, before the search filter. */
251
+ get entries() {
252
+ const groupNameByKey = new Map();
253
+ for (const group of this.groups) {
254
+ for (const ref of group.itemIds ?? []) {
255
+ if (ref)
256
+ groupNameByKey.set(itemKey(ref), group.name);
257
+ }
258
+ }
259
+ const excluded = new Set(this.excludeTargets.filter(Boolean).map((ref) => itemKey(ref)));
260
+ const eligible = this.eligibleTargets
261
+ ? new Set(this.eligibleTargets.filter(Boolean).map((ref) => itemKey(ref)))
262
+ : undefined;
263
+ const offerable = (refArg) => !excluded.has(itemKey(refArg)) && (eligible === undefined || eligible.has(itemKey(refArg)));
264
+ const result = [];
265
+ for (const session of this.sessions) {
266
+ const target = { kind: 'session', id: session.id };
267
+ if (!session.id || !offerable(target))
268
+ continue;
269
+ result.push({
270
+ target,
271
+ title: session.title || session.id,
272
+ detail: session.projectLabel?.trim() || session.harness?.name || '',
273
+ groupName: groupNameByKey.get(itemKey(target)) ?? '',
274
+ icon: session.icon || 'lucide:MessageSquare',
275
+ });
276
+ }
277
+ for (const resource of this.resources) {
278
+ const target = { kind: 'resource', id: resource.id };
279
+ if (!resource.id || !offerable(target))
280
+ continue;
281
+ result.push({
282
+ target,
283
+ title: resource.title || resource.id,
284
+ detail: [resource.kind, resource.projectLabel?.trim()].filter(Boolean).join(' · '),
285
+ groupName: groupNameByKey.get(itemKey(target)) ?? '',
286
+ icon: resource.icon || 'lucide:Box',
287
+ });
288
+ }
289
+ return result;
290
+ }
291
+ /** Title, project label and group name are all searchable, like the list itself. */
292
+ get filteredEntries() {
293
+ const query = this.search.trim().toLowerCase();
294
+ if (!query)
295
+ return this.entries;
296
+ return this.entries.filter((entry) => [entry.title, entry.detail, entry.groupName]
297
+ .filter(Boolean)
298
+ .join(' ')
299
+ .toLowerCase()
300
+ .includes(query));
301
+ }
302
+ get activeEntry() {
303
+ const entries = this.filteredEntries;
304
+ return entries.find((entry) => itemKey(entry.target) === this.activeKey) ?? entries[0];
305
+ }
306
+ render() {
307
+ const entries = this.filteredEntries;
308
+ const active = this.activeEntry;
309
+ return html `
310
+ <div class="searchRow">
311
+ <dees-icon icon="lucide:Search" iconSize="14"></dees-icon>
312
+ <input
313
+ type="text"
314
+ role="combobox"
315
+ aria-expanded="true"
316
+ aria-controls="picker-results"
317
+ aria-activedescendant=${active ? optionId(active.target) : ''}
318
+ aria-label=${this.heading}
319
+ placeholder="Search conversations"
320
+ .value=${this.search}
321
+ @input=${(event) => {
322
+ this.search = event.target.value;
323
+ this.activeKey = '';
324
+ }}
325
+ @keydown=${this.handleKeyDown}
326
+ />
327
+ </div>
328
+ <div class="results" id="picker-results" role="listbox">
329
+ ${entries.length
330
+ ? entries.map((entry) => html `
331
+ <button
332
+ class=${`entry ${sameRef(entry.target, active?.target) ? 'active' : ''}`}
333
+ type="button"
334
+ role="option"
335
+ id=${optionId(entry.target)}
336
+ aria-selected=${sameRef(entry.target, active?.target) ? 'true' : 'false'}
337
+ data-target-key=${itemKey(entry.target)}
338
+ @click=${() => this.choose(entry.target)}
339
+ >
340
+ <dees-icon aria-hidden="true" icon=${entry.icon} iconSize="14"></dees-icon>
341
+ <span class="entryCopy">
342
+ <span class="entryTitle">${entry.title}</span>
343
+ ${entry.detail || entry.groupName
344
+ ? html `<span class="entryMeta">${[entry.detail, entry.groupName].filter(Boolean).join(' · ')}</span>`
345
+ : ''}
346
+ </span>
347
+ </button>
348
+ `)
349
+ : html `<div class="empty">${this.emptyText}</div>`}
350
+ </div>
351
+ `;
352
+ }
353
+ async focusSearch() {
354
+ await this.updateComplete;
355
+ this.shadowRoot?.querySelector('input')?.focus();
356
+ }
357
+ handleKeyDown = (__runInitializers(this, _activeKey_extraInitializers), (eventArg) => {
358
+ const entries = this.filteredEntries;
359
+ if (eventArg.key === 'Escape') {
360
+ eventArg.preventDefault();
361
+ eventArg.stopPropagation();
362
+ this.cancel();
363
+ return;
364
+ }
365
+ if (eventArg.key === 'Enter') {
366
+ eventArg.preventDefault();
367
+ const active = this.activeEntry;
368
+ if (active)
369
+ this.choose(active.target);
370
+ return;
371
+ }
372
+ if (eventArg.key !== 'ArrowDown' && eventArg.key !== 'ArrowUp')
373
+ return;
374
+ if (!entries.length)
375
+ return;
376
+ eventArg.preventDefault();
377
+ const activeIndex = Math.max(0, entries.findIndex((entry) => itemKey(entry.target) === itemKey(this.activeEntry.target)));
378
+ const nextIndex = eventArg.key === 'ArrowDown'
379
+ ? (activeIndex + 1) % entries.length
380
+ : (activeIndex - 1 + entries.length) % entries.length;
381
+ this.activeKey = itemKey(entries[nextIndex].target);
382
+ void this.scrollActiveIntoView();
383
+ });
384
+ async scrollActiveIntoView() {
385
+ await this.updateComplete;
386
+ this.shadowRoot?.querySelector('.entry.active')?.scrollIntoView({ block: 'nearest' });
387
+ }
388
+ choose(targetArg) {
389
+ this.dispatchEvent(new CustomEvent('harness-picker-choose', {
390
+ detail: { target: { kind: targetArg.kind, id: targetArg.id } },
391
+ bubbles: true,
392
+ composed: true,
393
+ }));
394
+ }
395
+ cancel() {
396
+ this.dispatchEvent(new CustomEvent('harness-picker-cancel', { bubbles: true, composed: true }));
397
+ }
398
+ /**
399
+ * Opens the picker in a modal and resolves with the chosen target, or null when it was
400
+ * cancelled. Focus returns to whatever had it when the picker opened.
401
+ */
402
+ static async pick(optionsArg = {}) {
403
+ const { DeesModal } = await import('../../00group-overlay/dees-modal/dees-modal.js');
404
+ const picker = new DeesHarnessConversationPicker();
405
+ picker.sessions = optionsArg.sessions ?? [];
406
+ picker.groups = optionsArg.groups ?? [];
407
+ picker.resources = optionsArg.resources ?? [];
408
+ picker.excludeTargets = optionsArg.excludeTargets ?? [];
409
+ picker.eligibleTargets = optionsArg.eligibleTargets;
410
+ picker.heading = optionsArg.heading ?? 'Attach to…';
411
+ if (optionsArg.emptyText)
412
+ picker.emptyText = optionsArg.emptyText;
413
+ const previousFocus = (document.activeElement instanceof HTMLElement)
414
+ ? document.activeElement
415
+ : undefined;
416
+ return new Promise((resolve) => {
417
+ let settled = false;
418
+ const modalPromise = DeesModal.createAndShow({
419
+ heading: optionsArg.heading ?? 'Attach to…',
420
+ subheading: optionsArg.subheading,
421
+ content: html `${picker}`,
422
+ menuOptions: [],
423
+ width: 'small',
424
+ });
425
+ const finish = (resultArg) => {
426
+ if (settled)
427
+ return;
428
+ settled = true;
429
+ picker.removeEventListener('harness-picker-choose', onChoose);
430
+ picker.removeEventListener('harness-picker-cancel', onCancel);
431
+ void modalPromise.then((modal) => modal.destroy()).finally(() => {
432
+ previousFocus?.focus();
433
+ resolve(resultArg);
434
+ });
435
+ };
436
+ const onChoose = (eventArg) => {
437
+ finish(eventArg.detail.target);
438
+ };
439
+ const onCancel = () => finish(null);
440
+ picker.addEventListener('harness-picker-choose', onChoose);
441
+ picker.addEventListener('harness-picker-cancel', onCancel);
442
+ void modalPromise.then(async (modal) => {
443
+ modal.addEventListener('modal-close', onCancel, { once: true });
444
+ await picker.focusSearch();
445
+ });
446
+ });
447
+ }
448
+ static {
449
+ __runInitializers(_classThis, _classExtraInitializers);
450
+ }
451
+ };
452
+ return DeesHarnessConversationPicker = _classThis;
453
+ })();
454
+ export { DeesHarnessConversationPicker };
455
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLWNvbnZlcnNhdGlvbi1waWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2RlZXMtaGFybmVzcy1jb252ZXJzYXRpb24tcGlja2VyL2RlZXMtaGFybmVzcy1jb252ZXJzYXRpb24tcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdEUsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBT3RELE9BQU8sOENBQThDLENBQUM7QUFpQnRELE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBa0MsRUFBVSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUU5Rjs7O0dBR0c7QUFDSCxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQWtDLEVBQVUsRUFBRSxDQUM5RCxpQkFBaUIsTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRTlFLE1BQU0sT0FBTyxHQUFHLENBQ2QsT0FBK0MsRUFDL0MsUUFBZ0QsRUFDdkMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksUUFBUSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQWdCckY7Ozs7Ozs7OztHQVNHO0lBRVUsNkJBQTZCOzRCQUR6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
@@ -0,0 +1 @@
1
+ export * from './dees-harness-conversation-picker.js';
@@ -0,0 +1,2 @@
1
+ export * from './dees-harness-conversation-picker.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2RlZXMtaGFybmVzcy1jb252ZXJzYXRpb24tcGlja2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUNBQXVDLENBQUMifQ==