@design.estate/dees-catalog 4.12.0 → 5.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 (34) hide show
  1. package/dist_bundle/bundle.js +2322 -1251
  2. package/dist_ts_web/00_commitinfo_data.js +2 -2
  3. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.d.ts +17 -3
  4. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.js +291 -78
  5. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.js +328 -35
  6. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.js +44 -3
  7. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.js +5 -7
  8. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +5 -2
  9. package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.d.ts +49 -0
  10. package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.demo.d.ts +1 -0
  11. package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.demo.js +56 -0
  12. package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.js +649 -0
  13. package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/index.d.ts +1 -0
  14. package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/index.js +2 -0
  15. package/dist_ts_web/elements/00group-harness/harness.markdown.js +3 -1
  16. package/dist_ts_web/elements/00group-harness/harness.styles.js +29 -1
  17. package/dist_ts_web/elements/00group-harness/index.d.ts +1 -0
  18. package/dist_ts_web/elements/00group-harness/index.js +2 -1
  19. package/dist_ts_web/elements/00group-harness/interfaces.d.ts +41 -0
  20. package/package.json +1 -1
  21. package/readme.md +11 -5
  22. package/ts_web/00_commitinfo_data.ts +1 -1
  23. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.ts +278 -79
  24. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.ts +283 -28
  25. package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.ts +43 -2
  26. package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.ts +4 -6
  27. package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.ts +4 -1
  28. package/ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.demo.ts +67 -0
  29. package/ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.ts +557 -0
  30. package/ts_web/elements/00group-harness/dees-harness-session-sidebar/index.ts +1 -0
  31. package/ts_web/elements/00group-harness/harness.markdown.ts +2 -0
  32. package/ts_web/elements/00group-harness/harness.styles.ts +28 -0
  33. package/ts_web/elements/00group-harness/index.ts +1 -0
  34. package/ts_web/elements/00group-harness/interfaces.ts +48 -0
@@ -0,0 +1,649 @@
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-session-sidebar.demo.js';
36
+ import { DeesElement, html, css, customElement, property, state, cssManager, directives, } from '@design.estate/dees-element';
37
+ import { themeDefaultStyles } from '../../00theme.js';
38
+ import '../dees-harness-todos/dees-harness-todos.js';
39
+ import '../../00group-button/dees-button/dees-button.js';
40
+ import '../../00group-utility/dees-icon/dees-icon.js';
41
+ const { repeat } = directives;
42
+ const formatTokenCount = (valueArg) => valueArg.toLocaleString('en-US');
43
+ /**
44
+ * Generic session context sidebar. It renders host-owned state and emits
45
+ * mutations, but never loads, persists, or executes session data itself.
46
+ */
47
+ let DeesHarnessSessionSidebar = (() => {
48
+ let _classDecorators = [customElement('dees-harness-session-sidebar')];
49
+ let _classDescriptor;
50
+ let _classExtraInitializers = [];
51
+ let _classThis;
52
+ let _classSuper = DeesElement;
53
+ let _todos_decorators;
54
+ let _todos_initializers = [];
55
+ let _todos_extraInitializers = [];
56
+ let _showTasks_decorators;
57
+ let _showTasks_initializers = [];
58
+ let _showTasks_extraInitializers = [];
59
+ let _metrics_decorators;
60
+ let _metrics_initializers = [];
61
+ let _metrics_extraInitializers = [];
62
+ let _scratchpad_decorators;
63
+ let _scratchpad_initializers = [];
64
+ let _scratchpad_extraInitializers = [];
65
+ let _scratchpadBusy_decorators;
66
+ let _scratchpadBusy_initializers = [];
67
+ let _scratchpadBusy_extraInitializers = [];
68
+ let _scratchpadError_decorators;
69
+ let _scratchpadError_initializers = [];
70
+ let _scratchpadError_extraInitializers = [];
71
+ let _intelligenceEnabled_decorators;
72
+ let _intelligenceEnabled_initializers = [];
73
+ let _intelligenceEnabled_extraInitializers = [];
74
+ let _intelligenceExchanges_decorators;
75
+ let _intelligenceExchanges_initializers = [];
76
+ let _intelligenceExchanges_extraInitializers = [];
77
+ let _intelligenceBusy_decorators;
78
+ let _intelligenceBusy_initializers = [];
79
+ let _intelligenceBusy_extraInitializers = [];
80
+ let _intelligenceError_decorators;
81
+ let _intelligenceError_initializers = [];
82
+ let _intelligenceError_extraInitializers = [];
83
+ let _disabled_decorators;
84
+ let _disabled_initializers = [];
85
+ let _disabled_extraInitializers = [];
86
+ let _scratchpadDraft_decorators;
87
+ let _scratchpadDraft_initializers = [];
88
+ let _scratchpadDraft_extraInitializers = [];
89
+ let _scratchpadDraftRevision_decorators;
90
+ let _scratchpadDraftRevision_initializers = [];
91
+ let _scratchpadDraftRevision_extraInitializers = [];
92
+ let _scratchpadDirty_decorators;
93
+ let _scratchpadDirty_initializers = [];
94
+ let _scratchpadDirty_extraInitializers = [];
95
+ let _scratchpadStale_decorators;
96
+ let _scratchpadStale_initializers = [];
97
+ let _scratchpadStale_extraInitializers = [];
98
+ let _intelligenceQuestion_decorators;
99
+ let _intelligenceQuestion_initializers = [];
100
+ let _intelligenceQuestion_extraInitializers = [];
101
+ var DeesHarnessSessionSidebar = class extends _classSuper {
102
+ static { _classThis = this; }
103
+ static {
104
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
105
+ _todos_decorators = [property({ attribute: false })];
106
+ _showTasks_decorators = [property({ type: Boolean })];
107
+ _metrics_decorators = [property({ attribute: false })];
108
+ _scratchpad_decorators = [property({ attribute: false })];
109
+ _scratchpadBusy_decorators = [property({ type: Boolean })];
110
+ _scratchpadError_decorators = [property()];
111
+ _intelligenceEnabled_decorators = [property({ type: Boolean })];
112
+ _intelligenceExchanges_decorators = [property({ attribute: false })];
113
+ _intelligenceBusy_decorators = [property({ type: Boolean })];
114
+ _intelligenceError_decorators = [property()];
115
+ _disabled_decorators = [property({ type: Boolean })];
116
+ _scratchpadDraft_decorators = [state()];
117
+ _scratchpadDraftRevision_decorators = [state()];
118
+ _scratchpadDirty_decorators = [state()];
119
+ _scratchpadStale_decorators = [state()];
120
+ _intelligenceQuestion_decorators = [state()];
121
+ __esDecorate(this, null, _todos_decorators, { kind: "accessor", name: "todos", static: false, private: false, access: { has: obj => "todos" in obj, get: obj => obj.todos, set: (obj, value) => { obj.todos = value; } }, metadata: _metadata }, _todos_initializers, _todos_extraInitializers);
122
+ __esDecorate(this, null, _showTasks_decorators, { kind: "accessor", name: "showTasks", static: false, private: false, access: { has: obj => "showTasks" in obj, get: obj => obj.showTasks, set: (obj, value) => { obj.showTasks = value; } }, metadata: _metadata }, _showTasks_initializers, _showTasks_extraInitializers);
123
+ __esDecorate(this, null, _metrics_decorators, { kind: "accessor", name: "metrics", static: false, private: false, access: { has: obj => "metrics" in obj, get: obj => obj.metrics, set: (obj, value) => { obj.metrics = value; } }, metadata: _metadata }, _metrics_initializers, _metrics_extraInitializers);
124
+ __esDecorate(this, null, _scratchpad_decorators, { kind: "accessor", name: "scratchpad", static: false, private: false, access: { has: obj => "scratchpad" in obj, get: obj => obj.scratchpad, set: (obj, value) => { obj.scratchpad = value; } }, metadata: _metadata }, _scratchpad_initializers, _scratchpad_extraInitializers);
125
+ __esDecorate(this, null, _scratchpadBusy_decorators, { kind: "accessor", name: "scratchpadBusy", static: false, private: false, access: { has: obj => "scratchpadBusy" in obj, get: obj => obj.scratchpadBusy, set: (obj, value) => { obj.scratchpadBusy = value; } }, metadata: _metadata }, _scratchpadBusy_initializers, _scratchpadBusy_extraInitializers);
126
+ __esDecorate(this, null, _scratchpadError_decorators, { kind: "accessor", name: "scratchpadError", static: false, private: false, access: { has: obj => "scratchpadError" in obj, get: obj => obj.scratchpadError, set: (obj, value) => { obj.scratchpadError = value; } }, metadata: _metadata }, _scratchpadError_initializers, _scratchpadError_extraInitializers);
127
+ __esDecorate(this, null, _intelligenceEnabled_decorators, { kind: "accessor", name: "intelligenceEnabled", static: false, private: false, access: { has: obj => "intelligenceEnabled" in obj, get: obj => obj.intelligenceEnabled, set: (obj, value) => { obj.intelligenceEnabled = value; } }, metadata: _metadata }, _intelligenceEnabled_initializers, _intelligenceEnabled_extraInitializers);
128
+ __esDecorate(this, null, _intelligenceExchanges_decorators, { kind: "accessor", name: "intelligenceExchanges", static: false, private: false, access: { has: obj => "intelligenceExchanges" in obj, get: obj => obj.intelligenceExchanges, set: (obj, value) => { obj.intelligenceExchanges = value; } }, metadata: _metadata }, _intelligenceExchanges_initializers, _intelligenceExchanges_extraInitializers);
129
+ __esDecorate(this, null, _intelligenceBusy_decorators, { kind: "accessor", name: "intelligenceBusy", static: false, private: false, access: { has: obj => "intelligenceBusy" in obj, get: obj => obj.intelligenceBusy, set: (obj, value) => { obj.intelligenceBusy = value; } }, metadata: _metadata }, _intelligenceBusy_initializers, _intelligenceBusy_extraInitializers);
130
+ __esDecorate(this, null, _intelligenceError_decorators, { kind: "accessor", name: "intelligenceError", static: false, private: false, access: { has: obj => "intelligenceError" in obj, get: obj => obj.intelligenceError, set: (obj, value) => { obj.intelligenceError = value; } }, metadata: _metadata }, _intelligenceError_initializers, _intelligenceError_extraInitializers);
131
+ __esDecorate(this, null, _disabled_decorators, { kind: "accessor", name: "disabled", static: false, private: false, access: { has: obj => "disabled" in obj, get: obj => obj.disabled, set: (obj, value) => { obj.disabled = value; } }, metadata: _metadata }, _disabled_initializers, _disabled_extraInitializers);
132
+ __esDecorate(this, null, _scratchpadDraft_decorators, { kind: "accessor", name: "scratchpadDraft", static: false, private: false, access: { has: obj => "scratchpadDraft" in obj, get: obj => obj.scratchpadDraft, set: (obj, value) => { obj.scratchpadDraft = value; } }, metadata: _metadata }, _scratchpadDraft_initializers, _scratchpadDraft_extraInitializers);
133
+ __esDecorate(this, null, _scratchpadDraftRevision_decorators, { kind: "accessor", name: "scratchpadDraftRevision", static: false, private: false, access: { has: obj => "scratchpadDraftRevision" in obj, get: obj => obj.scratchpadDraftRevision, set: (obj, value) => { obj.scratchpadDraftRevision = value; } }, metadata: _metadata }, _scratchpadDraftRevision_initializers, _scratchpadDraftRevision_extraInitializers);
134
+ __esDecorate(this, null, _scratchpadDirty_decorators, { kind: "accessor", name: "scratchpadDirty", static: false, private: false, access: { has: obj => "scratchpadDirty" in obj, get: obj => obj.scratchpadDirty, set: (obj, value) => { obj.scratchpadDirty = value; } }, metadata: _metadata }, _scratchpadDirty_initializers, _scratchpadDirty_extraInitializers);
135
+ __esDecorate(this, null, _scratchpadStale_decorators, { kind: "accessor", name: "scratchpadStale", static: false, private: false, access: { has: obj => "scratchpadStale" in obj, get: obj => obj.scratchpadStale, set: (obj, value) => { obj.scratchpadStale = value; } }, metadata: _metadata }, _scratchpadStale_initializers, _scratchpadStale_extraInitializers);
136
+ __esDecorate(this, null, _intelligenceQuestion_decorators, { kind: "accessor", name: "intelligenceQuestion", static: false, private: false, access: { has: obj => "intelligenceQuestion" in obj, get: obj => obj.intelligenceQuestion, set: (obj, value) => { obj.intelligenceQuestion = value; } }, metadata: _metadata }, _intelligenceQuestion_initializers, _intelligenceQuestion_extraInitializers);
137
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
138
+ DeesHarnessSessionSidebar = _classThis = _classDescriptor.value;
139
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
140
+ }
141
+ static demo = demoFunc;
142
+ static demoGroups = ['Agent Chat'];
143
+ #todos_accessor_storage = __runInitializers(this, _todos_initializers, []);
144
+ get todos() { return this.#todos_accessor_storage; }
145
+ set todos(value) { this.#todos_accessor_storage = value; }
146
+ #showTasks_accessor_storage = (__runInitializers(this, _todos_extraInitializers), __runInitializers(this, _showTasks_initializers, true));
147
+ get showTasks() { return this.#showTasks_accessor_storage; }
148
+ set showTasks(value) { this.#showTasks_accessor_storage = value; }
149
+ #metrics_accessor_storage = (__runInitializers(this, _showTasks_extraInitializers), __runInitializers(this, _metrics_initializers, {}));
150
+ get metrics() { return this.#metrics_accessor_storage; }
151
+ set metrics(value) { this.#metrics_accessor_storage = value; }
152
+ #scratchpad_accessor_storage = (__runInitializers(this, _metrics_extraInitializers), __runInitializers(this, _scratchpad_initializers, undefined));
153
+ get scratchpad() { return this.#scratchpad_accessor_storage; }
154
+ set scratchpad(value) { this.#scratchpad_accessor_storage = value; }
155
+ #scratchpadBusy_accessor_storage = (__runInitializers(this, _scratchpad_extraInitializers), __runInitializers(this, _scratchpadBusy_initializers, false));
156
+ get scratchpadBusy() { return this.#scratchpadBusy_accessor_storage; }
157
+ set scratchpadBusy(value) { this.#scratchpadBusy_accessor_storage = value; }
158
+ #scratchpadError_accessor_storage = (__runInitializers(this, _scratchpadBusy_extraInitializers), __runInitializers(this, _scratchpadError_initializers, ''));
159
+ get scratchpadError() { return this.#scratchpadError_accessor_storage; }
160
+ set scratchpadError(value) { this.#scratchpadError_accessor_storage = value; }
161
+ #intelligenceEnabled_accessor_storage = (__runInitializers(this, _scratchpadError_extraInitializers), __runInitializers(this, _intelligenceEnabled_initializers, false));
162
+ get intelligenceEnabled() { return this.#intelligenceEnabled_accessor_storage; }
163
+ set intelligenceEnabled(value) { this.#intelligenceEnabled_accessor_storage = value; }
164
+ #intelligenceExchanges_accessor_storage = (__runInitializers(this, _intelligenceEnabled_extraInitializers), __runInitializers(this, _intelligenceExchanges_initializers, []));
165
+ get intelligenceExchanges() { return this.#intelligenceExchanges_accessor_storage; }
166
+ set intelligenceExchanges(value) { this.#intelligenceExchanges_accessor_storage = value; }
167
+ #intelligenceBusy_accessor_storage = (__runInitializers(this, _intelligenceExchanges_extraInitializers), __runInitializers(this, _intelligenceBusy_initializers, false));
168
+ get intelligenceBusy() { return this.#intelligenceBusy_accessor_storage; }
169
+ set intelligenceBusy(value) { this.#intelligenceBusy_accessor_storage = value; }
170
+ #intelligenceError_accessor_storage = (__runInitializers(this, _intelligenceBusy_extraInitializers), __runInitializers(this, _intelligenceError_initializers, ''));
171
+ get intelligenceError() { return this.#intelligenceError_accessor_storage; }
172
+ set intelligenceError(value) { this.#intelligenceError_accessor_storage = value; }
173
+ #disabled_accessor_storage = (__runInitializers(this, _intelligenceError_extraInitializers), __runInitializers(this, _disabled_initializers, false));
174
+ get disabled() { return this.#disabled_accessor_storage; }
175
+ set disabled(value) { this.#disabled_accessor_storage = value; }
176
+ #scratchpadDraft_accessor_storage = (__runInitializers(this, _disabled_extraInitializers), __runInitializers(this, _scratchpadDraft_initializers, ''));
177
+ get scratchpadDraft() { return this.#scratchpadDraft_accessor_storage; }
178
+ set scratchpadDraft(value) { this.#scratchpadDraft_accessor_storage = value; }
179
+ #scratchpadDraftRevision_accessor_storage = (__runInitializers(this, _scratchpadDraft_extraInitializers), __runInitializers(this, _scratchpadDraftRevision_initializers, 0));
180
+ get scratchpadDraftRevision() { return this.#scratchpadDraftRevision_accessor_storage; }
181
+ set scratchpadDraftRevision(value) { this.#scratchpadDraftRevision_accessor_storage = value; }
182
+ #scratchpadDirty_accessor_storage = (__runInitializers(this, _scratchpadDraftRevision_extraInitializers), __runInitializers(this, _scratchpadDirty_initializers, false));
183
+ get scratchpadDirty() { return this.#scratchpadDirty_accessor_storage; }
184
+ set scratchpadDirty(value) { this.#scratchpadDirty_accessor_storage = value; }
185
+ #scratchpadStale_accessor_storage = (__runInitializers(this, _scratchpadDirty_extraInitializers), __runInitializers(this, _scratchpadStale_initializers, false));
186
+ get scratchpadStale() { return this.#scratchpadStale_accessor_storage; }
187
+ set scratchpadStale(value) { this.#scratchpadStale_accessor_storage = value; }
188
+ #intelligenceQuestion_accessor_storage = (__runInitializers(this, _scratchpadStale_extraInitializers), __runInitializers(this, _intelligenceQuestion_initializers, ''));
189
+ get intelligenceQuestion() { return this.#intelligenceQuestion_accessor_storage; }
190
+ set intelligenceQuestion(value) { this.#intelligenceQuestion_accessor_storage = value; }
191
+ static styles = [
192
+ themeDefaultStyles,
193
+ cssManager.defaultStyles,
194
+ css `
195
+ :host {
196
+ display: block;
197
+ min-width: 0;
198
+ height: 100%;
199
+ font-family: var(--dees-font-family);
200
+ color: var(--dees-color-text-primary);
201
+ }
202
+
203
+ .sidebar {
204
+ display: flex;
205
+ flex-direction: column;
206
+ min-height: 100%;
207
+ }
208
+
209
+ .section {
210
+ padding: var(--dees-spacing-sm) var(--dees-spacing-md);
211
+ border-bottom: 1px solid var(--dees-color-border-subtle);
212
+ }
213
+
214
+ .section:last-child {
215
+ border-bottom: 0;
216
+ }
217
+
218
+ .sectionHeading {
219
+ display: flex;
220
+ align-items: center;
221
+ gap: var(--dees-spacing-xs);
222
+ margin-bottom: var(--dees-spacing-sm);
223
+ color: var(--dees-color-text-primary);
224
+ font-size: var(--dees-font-control-size-sm, 12px);
225
+ font-weight: 650;
226
+ }
227
+
228
+ .sectionHeading dees-icon {
229
+ color: var(--dees-color-text-secondary);
230
+ }
231
+
232
+ .metricList {
233
+ display: grid;
234
+ gap: 6px;
235
+ }
236
+
237
+ .metricRow {
238
+ display: flex;
239
+ align-items: baseline;
240
+ justify-content: space-between;
241
+ gap: var(--dees-spacing-md);
242
+ color: var(--dees-color-text-secondary);
243
+ font-size: var(--dees-font-caption1-size, 11px);
244
+ }
245
+
246
+ .metricValue {
247
+ color: var(--dees-color-text-primary);
248
+ font-family: var(--dees-font-family-mono);
249
+ font-variant-numeric: tabular-nums;
250
+ text-align: right;
251
+ }
252
+
253
+ .contextProgress {
254
+ height: 4px;
255
+ margin-top: 2px;
256
+ overflow: hidden;
257
+ border-radius: var(--dees-radius-full);
258
+ background: var(--dees-color-fill-secondary);
259
+ }
260
+
261
+ .contextProgressFill {
262
+ height: 100%;
263
+ border-radius: inherit;
264
+ background: var(--dees-color-accent-primary);
265
+ transition: width var(--dees-transition-default) var(--dees-ease-standard);
266
+ }
267
+
268
+ textarea {
269
+ box-sizing: border-box;
270
+ width: 100%;
271
+ min-height: 108px;
272
+ resize: vertical;
273
+ padding: var(--dees-spacing-sm);
274
+ border: 1px solid var(--dees-color-border-default);
275
+ border-radius: var(--dees-radius-md);
276
+ background: var(--dees-color-bg-primary);
277
+ color: var(--dees-color-text-primary);
278
+ font: var(--dees-font-caption1-size, 11px) / 1.5 var(--dees-font-family-mono);
279
+ outline: none;
280
+ }
281
+
282
+ textarea:focus-visible {
283
+ border-color: var(--dees-color-accent-primary);
284
+ box-shadow: 0 0 0 1px var(--dees-color-accent-primary);
285
+ }
286
+
287
+ textarea:disabled {
288
+ opacity: 0.62;
289
+ cursor: not-allowed;
290
+ }
291
+
292
+ .editorMeta,
293
+ .exchangeMeta,
294
+ .hint {
295
+ color: var(--dees-color-text-muted);
296
+ font-size: var(--dees-font-caption2-size, 10px);
297
+ line-height: 1.4;
298
+ }
299
+
300
+ .editorMeta {
301
+ margin-top: 5px;
302
+ }
303
+
304
+ .actions {
305
+ display: flex;
306
+ align-items: center;
307
+ justify-content: flex-end;
308
+ gap: var(--dees-spacing-xs);
309
+ margin-top: var(--dees-spacing-sm);
310
+ }
311
+
312
+ .conflict,
313
+ .error {
314
+ margin-top: var(--dees-spacing-sm);
315
+ padding: var(--dees-spacing-xs) var(--dees-spacing-sm);
316
+ border-radius: var(--dees-radius-md);
317
+ font-size: var(--dees-font-caption1-size, 11px);
318
+ line-height: 1.4;
319
+ }
320
+
321
+ .conflict {
322
+ color: var(--dees-color-text-warning);
323
+ background: var(--dees-color-badge-warning-bg);
324
+ }
325
+
326
+ .error {
327
+ color: var(--dees-color-text-error);
328
+ background: var(--dees-color-badge-error-bg);
329
+ }
330
+
331
+ .exchangeList {
332
+ display: grid;
333
+ gap: var(--dees-spacing-sm);
334
+ margin-bottom: var(--dees-spacing-sm);
335
+ }
336
+
337
+ .exchange {
338
+ display: grid;
339
+ gap: 4px;
340
+ padding-left: var(--dees-spacing-sm);
341
+ border-left: 1px solid var(--dees-color-border-default);
342
+ }
343
+
344
+ .question,
345
+ .answer {
346
+ overflow-wrap: anywhere;
347
+ font-size: var(--dees-font-caption1-size, 11px);
348
+ line-height: 1.45;
349
+ white-space: pre-wrap;
350
+ }
351
+
352
+ .question {
353
+ color: var(--dees-color-text-secondary);
354
+ }
355
+
356
+ .answer {
357
+ color: var(--dees-color-text-primary);
358
+ }
359
+
360
+ .exchange.running .answer {
361
+ color: var(--dees-color-text-muted);
362
+ }
363
+
364
+ .exchange.error .answer {
365
+ color: var(--dees-color-text-error);
366
+ }
367
+
368
+ .empty {
369
+ color: var(--dees-color-text-muted);
370
+ font-size: var(--dees-font-caption1-size, 11px);
371
+ }
372
+
373
+ @media (prefers-reduced-motion: reduce) {
374
+ .contextProgressFill {
375
+ transition: none;
376
+ }
377
+ }
378
+ `,
379
+ ];
380
+ willUpdate(changedPropertiesArg) {
381
+ if (!changedPropertiesArg.has('scratchpad'))
382
+ return;
383
+ const next = this.scratchpad;
384
+ if (!next) {
385
+ this.scratchpadDraft = '';
386
+ this.scratchpadDraftRevision = 0;
387
+ this.scratchpadDirty = false;
388
+ this.scratchpadStale = false;
389
+ return;
390
+ }
391
+ const previous = changedPropertiesArg.get('scratchpad');
392
+ if (!previous || previous.id !== next.id) {
393
+ this.acceptScratchpad(next);
394
+ return;
395
+ }
396
+ if (!this.scratchpadDirty || next.text === this.scratchpadDraft) {
397
+ this.acceptScratchpad(next);
398
+ return;
399
+ }
400
+ if (next.revision > this.scratchpadDraftRevision)
401
+ this.scratchpadStale = true;
402
+ }
403
+ get contextPercentage() {
404
+ const current = this.metrics.currentContextTokens;
405
+ const maximum = this.metrics.maxContextTokens;
406
+ if (current === undefined || maximum === undefined || maximum <= 0)
407
+ return undefined;
408
+ return Math.min(100, Math.max(0, (current / maximum) * 100));
409
+ }
410
+ render() {
411
+ return html `
412
+ <div class="sidebar">
413
+ ${this.showTasks ? this.renderTasks() : ''}
414
+ ${this.hasMetrics ? this.renderMetrics() : ''}
415
+ ${this.scratchpad ? this.renderScratchpad() : ''}
416
+ ${this.intelligenceEnabled ? this.renderIntelligence() : ''}
417
+ </div>
418
+ `;
419
+ }
420
+ get hasMetrics() {
421
+ return Object.values(this.metrics).some((value) => value !== undefined);
422
+ }
423
+ renderTasks() {
424
+ return html `
425
+ <section class="section tasksSection">
426
+ <dees-harness-todos heading="Tasks" .todos=${this.todos}></dees-harness-todos>
427
+ </section>
428
+ `;
429
+ }
430
+ renderMetrics() {
431
+ const metrics = this.metrics;
432
+ const percentage = this.contextPercentage;
433
+ const rows = [
434
+ ['Lifetime used', metrics.lifetimeUsedTokens],
435
+ ['Compactions', metrics.compactionCount],
436
+ ['Before latest compaction', metrics.tokensBeforeLatestCompaction],
437
+ ['Context window', metrics.maxContextTokens],
438
+ ['Current context', metrics.currentContextTokens],
439
+ ];
440
+ return html `
441
+ <section class="section metricsSection">
442
+ <div class="sectionHeading">
443
+ <dees-icon icon="lucide:Gauge" iconSize="13"></dees-icon>
444
+ <span>Tokens</span>
445
+ </div>
446
+ <div class="metricList">
447
+ ${rows.map(([label, value]) => value === undefined ? '' : html `
448
+ <div class="metricRow">
449
+ <span>${label}</span>
450
+ <span class="metricValue">
451
+ ${formatTokenCount(value)}${label === 'Current context' && percentage !== undefined
452
+ ? ` · ${Math.round(percentage)}%`
453
+ : ''}
454
+ </span>
455
+ </div>
456
+ `)}
457
+ ${percentage === undefined ? '' : html `
458
+ <div
459
+ class="contextProgress"
460
+ role="progressbar"
461
+ aria-label="Current context window usage"
462
+ aria-valuemin="0"
463
+ aria-valuemax="100"
464
+ aria-valuenow=${String(Math.round(percentage))}
465
+ >
466
+ <div class="contextProgressFill" style=${`width: ${percentage}%`}></div>
467
+ </div>
468
+ `}
469
+ </div>
470
+ </section>
471
+ `;
472
+ }
473
+ renderScratchpad() {
474
+ const scratchpad = this.scratchpad;
475
+ const updatedBy = scratchpad.updatedBy === 'intelligence' ? 'Session Intelligence' : 'you';
476
+ return html `
477
+ <section class="section scratchpadSection">
478
+ <div class="sectionHeading">
479
+ <dees-icon icon="lucide:NotebookPen" iconSize="13"></dees-icon>
480
+ <span>Session Scratchpad</span>
481
+ </div>
482
+ <textarea
483
+ aria-label="Session scratchpad"
484
+ maxlength="32768"
485
+ .value=${this.scratchpadDraft}
486
+ ?disabled=${this.disabled || this.scratchpadBusy}
487
+ @input=${(event) => {
488
+ this.scratchpadDraft = event.currentTarget.value;
489
+ this.scratchpadDirty = this.scratchpadDraft !== scratchpad.text;
490
+ }}
491
+ @keydown=${(event) => {
492
+ if (event.key === 'Enter' && (event.metaKey || event.ctrlKey)) {
493
+ event.preventDefault();
494
+ this.saveScratchpad();
495
+ }
496
+ }}
497
+ ></textarea>
498
+ <div class="editorMeta">
499
+ Revision ${scratchpad.revision}${scratchpad.updatedAt
500
+ ? ` · updated by ${updatedBy} ${new Date(scratchpad.updatedAt).toLocaleString()}`
501
+ : ''}
502
+ </div>
503
+ ${this.scratchpadStale ? html `
504
+ <div class="conflict" role="status">
505
+ A newer revision arrived. Keep this draft on the latest revision or discard it.
506
+ <div class="actions">
507
+ <dees-button
508
+ size="sm"
509
+ type="ghost"
510
+ text="Discard draft"
511
+ @clicked=${this.discardScratchpadDraft}
512
+ ></dees-button>
513
+ <dees-button
514
+ size="sm"
515
+ type="outline"
516
+ text="Keep draft on latest"
517
+ @clicked=${this.rebaseScratchpadDraft}
518
+ ></dees-button>
519
+ </div>
520
+ </div>
521
+ ` : ''}
522
+ ${this.scratchpadError ? html `<div class="error" role="alert">${this.scratchpadError}</div>` : ''}
523
+ <div class="actions">
524
+ <dees-button
525
+ size="sm"
526
+ type="accent"
527
+ text="Save"
528
+ .status=${this.scratchpadBusy ? 'pending' : 'normal'}
529
+ ?disabled=${this.disabled || this.scratchpadBusy || !this.scratchpadDirty || this.scratchpadStale}
530
+ @clicked=${this.saveScratchpad}
531
+ ></dees-button>
532
+ </div>
533
+ </section>
534
+ `;
535
+ }
536
+ renderIntelligence() {
537
+ return html `
538
+ <section class="section intelligenceSection">
539
+ <div class="sectionHeading">
540
+ <dees-icon icon="lucide:Sparkles" iconSize="13"></dees-icon>
541
+ <span>Session Intelligence</span>
542
+ </div>
543
+ ${this.intelligenceExchanges.length ? html `
544
+ <div class="exchangeList" role="log" aria-live="polite">
545
+ ${repeat(this.intelligenceExchanges, (exchange) => exchange.id, (exchange) => this.renderExchange(exchange))}
546
+ </div>
547
+ ` : html `<div class="empty">Ask about this session without interrupting its main work.</div>`}
548
+ <textarea
549
+ class="intelligenceInput"
550
+ aria-label="Ask Session Intelligence"
551
+ placeholder="Ask a parallel question…"
552
+ maxlength="8192"
553
+ .value=${this.intelligenceQuestion}
554
+ ?disabled=${this.disabled || this.intelligenceBusy}
555
+ @input=${(event) => {
556
+ this.intelligenceQuestion = event.currentTarget.value;
557
+ }}
558
+ @keydown=${(event) => {
559
+ if (event.key === 'Enter' && (event.metaKey || event.ctrlKey)) {
560
+ event.preventDefault();
561
+ this.askIntelligence();
562
+ }
563
+ }}
564
+ ></textarea>
565
+ <div class="hint">Runs separately from the main session. Ctrl/⌘ + Enter to ask.</div>
566
+ ${this.intelligenceError ? html `<div class="error" role="alert">${this.intelligenceError}</div>` : ''}
567
+ <div class="actions">
568
+ <dees-button
569
+ size="sm"
570
+ type="accent"
571
+ text="Ask"
572
+ .status=${this.intelligenceBusy ? 'pending' : 'normal'}
573
+ ?disabled=${this.disabled || this.intelligenceBusy || !this.intelligenceQuestion.trim()}
574
+ @clicked=${this.askIntelligence}
575
+ ></dees-button>
576
+ </div>
577
+ </section>
578
+ `;
579
+ }
580
+ renderExchange(exchangeArg) {
581
+ const answer = exchangeArg.status === 'running'
582
+ ? 'Thinking in parallel…'
583
+ : exchangeArg.status === 'error'
584
+ ? exchangeArg.error || 'Session Intelligence failed.'
585
+ : exchangeArg.answer || '';
586
+ return html `
587
+ <article class="exchange ${exchangeArg.status}">
588
+ <div class="question">${exchangeArg.question}</div>
589
+ <div class="answer">${answer}</div>
590
+ ${exchangeArg.model
591
+ ? html `<div class="exchangeMeta">${exchangeArg.model}</div>`
592
+ : ''}
593
+ </article>
594
+ `;
595
+ }
596
+ acceptScratchpad(scratchpadArg) {
597
+ this.scratchpadDraft = scratchpadArg.text;
598
+ this.scratchpadDraftRevision = scratchpadArg.revision;
599
+ this.scratchpadDirty = false;
600
+ this.scratchpadStale = false;
601
+ }
602
+ discardScratchpadDraft = (__runInitializers(this, _intelligenceQuestion_extraInitializers), () => {
603
+ if (this.scratchpad)
604
+ this.acceptScratchpad(this.scratchpad);
605
+ });
606
+ rebaseScratchpadDraft = () => {
607
+ if (!this.scratchpad)
608
+ return;
609
+ this.scratchpadDraftRevision = this.scratchpad.revision;
610
+ this.scratchpadStale = false;
611
+ this.scratchpadDirty = this.scratchpadDraft !== this.scratchpad.text;
612
+ };
613
+ saveScratchpad = () => {
614
+ if (!this.scratchpad
615
+ || !this.scratchpadDirty
616
+ || this.scratchpadStale
617
+ || this.disabled
618
+ || this.scratchpadBusy)
619
+ return;
620
+ const detail = {
621
+ text: this.scratchpadDraft,
622
+ expectedRevision: this.scratchpadDraftRevision,
623
+ };
624
+ this.dispatchEvent(new CustomEvent('harness-scratchpad-save', {
625
+ detail,
626
+ bubbles: true,
627
+ composed: true,
628
+ }));
629
+ };
630
+ askIntelligence = () => {
631
+ const question = this.intelligenceQuestion.trim();
632
+ if (!question || this.disabled || this.intelligenceBusy)
633
+ return;
634
+ const detail = { question };
635
+ this.dispatchEvent(new CustomEvent('harness-session-intelligence-ask', {
636
+ detail,
637
+ bubbles: true,
638
+ composed: true,
639
+ }));
640
+ this.intelligenceQuestion = '';
641
+ };
642
+ static {
643
+ __runInitializers(_classThis, _classExtraInitializers);
644
+ }
645
+ };
646
+ return DeesHarnessSessionSidebar = _classThis;
647
+ })();
648
+ export { DeesHarnessSessionSidebar };
649
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXNlc3Npb24tc2lkZWJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLXNlc3Npb24tc2lkZWJhci9kZWVzLWhhcm5lc3Mtc2Vzc2lvbi1zaWRlYmFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbEUsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVN0RCxPQUFPLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8saURBQWlELENBQUM7QUFDekQsT0FBTyw4Q0FBOEMsQ0FBQztBQUV0RCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDO0FBRTlCLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxRQUFnQixFQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBUXhGOzs7R0FHRztJQUVVLHlCQUF5Qjs0QkFEckMsYUFBYSxDQUFDLDhCQUE4QixDQUFDOzs7O3NCQUNDLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUNBQW5CLFNBQVEsV0FBVzs7OztpQ0FJdkQsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO3FDQUc5QixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7bUNBRzNCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFB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