@design.estate/dees-catalog 4.1.0 → 4.2.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.
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-catalog',
6
- version: '4.1.0',
6
+ version: '4.2.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFdBQVcsRUFBRSxzSkFBc0o7Q0FDcEssQ0FBQSJ9
@@ -3,6 +3,7 @@ import type { IHarnessToolCall } from '../interfaces.js';
3
3
  import { DeesHarnessToolRegistry } from '../toolregistry.js';
4
4
  import '../dees-harness-content-blocks/dees-harness-content-blocks.js';
5
5
  import '../../00group-dataview/dees-dataview-codebox/dees-dataview-codebox.js';
6
+ import './dees-harness-tool-fullscreen.js';
6
7
  import '../../00group-feedback/dees-badge/dees-badge.js';
7
8
  import '../../00group-utility/dees-icon/dees-icon.js';
8
9
  declare global {
@@ -23,13 +24,15 @@ export declare class DeesHarnessToolCard extends DeesElement {
23
24
  accessor toolRegistry: DeesHarnessToolRegistry;
24
25
  accessor expanded: boolean | undefined;
25
26
  accessor outputExpanded: boolean;
26
- /** Body height cap; content beyond it clips and offers fullscreen. */
27
+ /** Body height cap; taller content scrolls in place and offers fullscreen. */
27
28
  accessor bodyCapPx: number;
29
+ /** Set on the card inside the fullscreen modal: no cap, no maximize bar. */
30
+ accessor uncapped: boolean;
28
31
  accessor bodyOverflowing: boolean;
29
- accessor maximized: boolean;
30
32
  accessor returnFlash: boolean;
31
33
  private bodyResizeObserver;
32
34
  private observedBodyInner;
35
+ private fullscreenPortal;
33
36
  static styles: import("@design.estate/dees-element").CSSResult[];
34
37
  private get descriptor();
35
38
  /** call with mcp meta derived from the name when the adapter didn't set it */
@@ -38,7 +41,6 @@ export declare class DeesHarnessToolCard extends DeesElement {
38
41
  render(): TemplateResult;
39
42
  private readonly openFullscreen;
40
43
  private readonly closeFullscreen;
41
- private readonly handleFullscreenKeydown;
42
44
  updated(changedProperties: Map<PropertyKey, unknown>): void;
43
45
  disconnectedCallback(): Promise<void>;
44
46
  private renderMcpBadges;
@@ -41,6 +41,7 @@ import { harnessCardStyles, harnessPillStyles, harnessMonoStyles } from '../harn
41
41
  import { harnessFormatDuration, harnessTruncate } from '../harness.helpers.js';
42
42
  import '../dees-harness-content-blocks/dees-harness-content-blocks.js';
43
43
  import '../../00group-dataview/dees-dataview-codebox/dees-dataview-codebox.js';
44
+ import './dees-harness-tool-fullscreen.js';
44
45
  import '../../00group-feedback/dees-badge/dees-badge.js';
45
46
  import '../../00group-utility/dees-icon/dees-icon.js';
46
47
  /**
@@ -70,12 +71,12 @@ let DeesHarnessToolCard = (() => {
70
71
  let _bodyCapPx_decorators;
71
72
  let _bodyCapPx_initializers = [];
72
73
  let _bodyCapPx_extraInitializers = [];
74
+ let _uncapped_decorators;
75
+ let _uncapped_initializers = [];
76
+ let _uncapped_extraInitializers = [];
73
77
  let _bodyOverflowing_decorators;
74
78
  let _bodyOverflowing_initializers = [];
75
79
  let _bodyOverflowing_extraInitializers = [];
76
- let _maximized_decorators;
77
- let _maximized_initializers = [];
78
- let _maximized_extraInitializers = [];
79
80
  let _returnFlash_decorators;
80
81
  let _returnFlash_initializers = [];
81
82
  let _returnFlash_extraInitializers = [];
@@ -88,16 +89,16 @@ let DeesHarnessToolCard = (() => {
88
89
  _expanded_decorators = [state()];
89
90
  _outputExpanded_decorators = [state()];
90
91
  _bodyCapPx_decorators = [property({ type: Number })];
92
+ _uncapped_decorators = [property({ type: Boolean })];
91
93
  _bodyOverflowing_decorators = [state()];
92
- _maximized_decorators = [state()];
93
94
  _returnFlash_decorators = [state()];
94
95
  __esDecorate(this, null, _call_decorators, { kind: "accessor", name: "call", static: false, private: false, access: { has: obj => "call" in obj, get: obj => obj.call, set: (obj, value) => { obj.call = value; } }, metadata: _metadata }, _call_initializers, _call_extraInitializers);
95
96
  __esDecorate(this, null, _toolRegistry_decorators, { kind: "accessor", name: "toolRegistry", static: false, private: false, access: { has: obj => "toolRegistry" in obj, get: obj => obj.toolRegistry, set: (obj, value) => { obj.toolRegistry = value; } }, metadata: _metadata }, _toolRegistry_initializers, _toolRegistry_extraInitializers);
96
97
  __esDecorate(this, null, _expanded_decorators, { kind: "accessor", name: "expanded", static: false, private: false, access: { has: obj => "expanded" in obj, get: obj => obj.expanded, set: (obj, value) => { obj.expanded = value; } }, metadata: _metadata }, _expanded_initializers, _expanded_extraInitializers);
97
98
  __esDecorate(this, null, _outputExpanded_decorators, { kind: "accessor", name: "outputExpanded", static: false, private: false, access: { has: obj => "outputExpanded" in obj, get: obj => obj.outputExpanded, set: (obj, value) => { obj.outputExpanded = value; } }, metadata: _metadata }, _outputExpanded_initializers, _outputExpanded_extraInitializers);
98
99
  __esDecorate(this, null, _bodyCapPx_decorators, { kind: "accessor", name: "bodyCapPx", static: false, private: false, access: { has: obj => "bodyCapPx" in obj, get: obj => obj.bodyCapPx, set: (obj, value) => { obj.bodyCapPx = value; } }, metadata: _metadata }, _bodyCapPx_initializers, _bodyCapPx_extraInitializers);
100
+ __esDecorate(this, null, _uncapped_decorators, { kind: "accessor", name: "uncapped", static: false, private: false, access: { has: obj => "uncapped" in obj, get: obj => obj.uncapped, set: (obj, value) => { obj.uncapped = value; } }, metadata: _metadata }, _uncapped_initializers, _uncapped_extraInitializers);
99
101
  __esDecorate(this, null, _bodyOverflowing_decorators, { kind: "accessor", name: "bodyOverflowing", static: false, private: false, access: { has: obj => "bodyOverflowing" in obj, get: obj => obj.bodyOverflowing, set: (obj, value) => { obj.bodyOverflowing = value; } }, metadata: _metadata }, _bodyOverflowing_initializers, _bodyOverflowing_extraInitializers);
100
- __esDecorate(this, null, _maximized_decorators, { kind: "accessor", name: "maximized", static: false, private: false, access: { has: obj => "maximized" in obj, get: obj => obj.maximized, set: (obj, value) => { obj.maximized = value; } }, metadata: _metadata }, _maximized_initializers, _maximized_extraInitializers);
101
102
  __esDecorate(this, null, _returnFlash_decorators, { kind: "accessor", name: "returnFlash", static: false, private: false, access: { has: obj => "returnFlash" in obj, get: obj => obj.returnFlash, set: (obj, value) => { obj.returnFlash = value; } }, metadata: _metadata }, _returnFlash_initializers, _returnFlash_extraInitializers);
102
103
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
103
104
  DeesHarnessToolCard = _classThis = _classDescriptor.value;
@@ -118,20 +119,22 @@ let DeesHarnessToolCard = (() => {
118
119
  get outputExpanded() { return this.#outputExpanded_accessor_storage; }
119
120
  set outputExpanded(value) { this.#outputExpanded_accessor_storage = value; }
120
121
  #bodyCapPx_accessor_storage = (__runInitializers(this, _outputExpanded_extraInitializers), __runInitializers(this, _bodyCapPx_initializers, 360));
121
- /** Body height cap; content beyond it clips and offers fullscreen. */
122
+ /** Body height cap; taller content scrolls in place and offers fullscreen. */
122
123
  get bodyCapPx() { return this.#bodyCapPx_accessor_storage; }
123
124
  set bodyCapPx(value) { this.#bodyCapPx_accessor_storage = value; }
124
- #bodyOverflowing_accessor_storage = (__runInitializers(this, _bodyCapPx_extraInitializers), __runInitializers(this, _bodyOverflowing_initializers, false));
125
+ #uncapped_accessor_storage = (__runInitializers(this, _bodyCapPx_extraInitializers), __runInitializers(this, _uncapped_initializers, false));
126
+ /** Set on the card inside the fullscreen modal: no cap, no maximize bar. */
127
+ get uncapped() { return this.#uncapped_accessor_storage; }
128
+ set uncapped(value) { this.#uncapped_accessor_storage = value; }
129
+ #bodyOverflowing_accessor_storage = (__runInitializers(this, _uncapped_extraInitializers), __runInitializers(this, _bodyOverflowing_initializers, false));
125
130
  get bodyOverflowing() { return this.#bodyOverflowing_accessor_storage; }
126
131
  set bodyOverflowing(value) { this.#bodyOverflowing_accessor_storage = value; }
127
- #maximized_accessor_storage = (__runInitializers(this, _bodyOverflowing_extraInitializers), __runInitializers(this, _maximized_initializers, false));
128
- get maximized() { return this.#maximized_accessor_storage; }
129
- set maximized(value) { this.#maximized_accessor_storage = value; }
130
- #returnFlash_accessor_storage = (__runInitializers(this, _maximized_extraInitializers), __runInitializers(this, _returnFlash_initializers, false));
132
+ #returnFlash_accessor_storage = (__runInitializers(this, _bodyOverflowing_extraInitializers), __runInitializers(this, _returnFlash_initializers, false));
131
133
  get returnFlash() { return this.#returnFlash_accessor_storage; }
132
134
  set returnFlash(value) { this.#returnFlash_accessor_storage = value; }
133
135
  bodyResizeObserver = (__runInitializers(this, _returnFlash_extraInitializers), null);
134
136
  observedBodyInner = null;
137
+ fullscreenPortal = null;
135
138
  static styles = [
136
139
  themeDefaultStyles,
137
140
  cssManager.defaultStyles,
@@ -260,22 +263,14 @@ let DeesHarnessToolCard = (() => {
260
263
  }
261
264
 
262
265
  /* Three body modes: collapsed (no body), normal (content fits the
263
- cap), capped (content taller than the cap clips behind a fade and
264
- offers fullscreen). */
266
+ cap), capped (content taller than the cap scrolls inside the frame
267
+ and offers the fullscreen modal). */
265
268
  .bodyClipFrame {
266
269
  position: relative;
267
- overflow: hidden;
268
- }
269
-
270
- .bodyClipFrame.capped::after {
271
- content: '';
272
- position: absolute;
273
- left: 0;
274
- right: 0;
275
- bottom: 0;
276
- height: 44px;
277
- background: linear-gradient(to bottom, transparent, var(--dees-color-bg-primary));
278
- pointer-events: none;
270
+ overflow-y: auto;
271
+ overflow-x: hidden;
272
+ scrollbar-width: thin;
273
+ scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
279
274
  }
280
275
 
281
276
  .maximizeBar {
@@ -299,74 +294,6 @@ let DeesHarnessToolCard = (() => {
299
294
  color: var(--dees-color-link-hover);
300
295
  }
301
296
 
302
- .fullscreenLayer {
303
- position: fixed;
304
- inset: 0;
305
- z-index: 4000;
306
- display: grid;
307
- place-items: center;
308
- padding: 4vh 3vw;
309
- background: color-mix(in srgb, var(--dees-color-bg-primary) 55%, transparent);
310
- backdrop-filter: blur(6px);
311
- }
312
-
313
- .fullscreenPanel {
314
- display: flex;
315
- flex-direction: column;
316
- width: min(1200px, 100%);
317
- height: 100%;
318
- min-height: 0;
319
- border: 1px solid var(--dees-color-border-default);
320
- border-radius: var(--dees-radius-lg);
321
- background: var(--dees-color-bg-primary);
322
- box-shadow: 0 24px 64px rgba(0, 0, 0, 0.4);
323
- overflow: hidden;
324
- }
325
-
326
- .fullscreenHeader {
327
- display: flex;
328
- flex: 0 0 auto;
329
- align-items: center;
330
- gap: var(--dees-spacing-sm);
331
- padding: var(--dees-spacing-sm) var(--dees-spacing-md);
332
- border-bottom: 1px solid var(--dees-color-border-subtle);
333
- }
334
-
335
- .fullscreenTitle {
336
- min-width: 0;
337
- overflow: hidden;
338
- text-overflow: ellipsis;
339
- white-space: nowrap;
340
- font-size: var(--dees-font-control-size-sm, 12px);
341
- font-weight: 650;
342
- }
343
-
344
- .fullscreenClose {
345
- display: grid;
346
- place-items: center;
347
- margin-left: auto;
348
- padding: 6px;
349
- border: 0;
350
- border-radius: var(--dees-radius-md);
351
- background: transparent;
352
- color: var(--dees-color-text-secondary);
353
- cursor: pointer;
354
- }
355
-
356
- .fullscreenClose:hover {
357
- background: var(--dees-color-hover);
358
- color: var(--dees-color-text-primary);
359
- }
360
-
361
- .fullscreenBody {
362
- flex: 1;
363
- min-height: 0;
364
- overflow: auto;
365
- padding: var(--dees-spacing-md);
366
- scrollbar-width: thin;
367
- scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
368
- }
369
-
370
297
  /* Locates the card after minimizing: a brief highlight pulse. */
371
298
  .harness-card.returnFlash {
372
299
  animation: harness-card-return-flash 1.4s var(--dees-ease-standard);
@@ -447,15 +374,15 @@ let DeesHarnessToolCard = (() => {
447
374
  </span>
448
375
  </span>
449
376
  </button>
450
- ${this.isOpen && !this.maximized
377
+ ${this.isOpen
451
378
  ? html `
452
379
  <div
453
- class="bodyClipFrame ${this.bodyOverflowing ? 'capped' : ''}"
454
- style=${`max-height: ${this.bodyCapPx}px;`}
380
+ class="bodyClipFrame"
381
+ style=${this.uncapped ? '' : `max-height: ${this.bodyCapPx}px;`}
455
382
  >
456
383
  <div class="body bodyInner">${this.renderBody(call)}</div>
457
384
  </div>
458
- ${this.bodyOverflowing
385
+ ${this.bodyOverflowing && !this.uncapped
459
386
  ? html `
460
387
  <button class="maximizeBar" type="button" @click=${this.openFullscreen}>
461
388
  <dees-icon icon="lucide:Maximize2" iconSize="12"></dees-icon>
@@ -466,50 +393,36 @@ let DeesHarnessToolCard = (() => {
466
393
  `
467
394
  : ''}
468
395
  </div>
469
- ${this.maximized
470
- ? html `
471
- <div class="fullscreenLayer" @click=${(event) => {
472
- if (event.target === event.currentTarget)
473
- this.closeFullscreen();
474
- }}>
475
- <div class="fullscreenPanel">
476
- <header class="fullscreenHeader">
477
- <dees-icon .icon=${descriptor.icon} iconSize="15"></dees-icon>
478
- <span class="fullscreenTitle">${label}${subtitle ? ` · ${subtitle}` : ''}</span>
479
- <button class="fullscreenClose" type="button" @click=${this.closeFullscreen}>
480
- <dees-icon icon="lucide:Minimize2" iconSize="15"></dees-icon>
481
- </button>
482
- </header>
483
- <div class="fullscreenBody">${this.renderBody(call)}</div>
484
- </div>
485
- </div>
486
- `
487
- : ''}
488
396
  `;
489
397
  }
490
398
  openFullscreen = () => {
491
- this.maximized = true;
492
- window.addEventListener('keydown', this.handleFullscreenKeydown);
399
+ if (this.fullscreenPortal)
400
+ return;
401
+ // Appended to document.body: content-visibility containment in the
402
+ // transcript would trap a position: fixed layer inside this card.
403
+ const portal = document.createElement('dees-harness-tool-fullscreen');
404
+ portal.call = this.enrichedCall;
405
+ portal.toolRegistry = this.toolRegistry;
406
+ portal.addEventListener('tool-fullscreen-close', this.closeFullscreen, { once: true });
407
+ document.body.append(portal);
408
+ this.fullscreenPortal = portal;
493
409
  };
494
410
  closeFullscreen = () => {
495
- window.removeEventListener('keydown', this.handleFullscreenKeydown);
496
- if (!this.maximized)
411
+ const portal = this.fullscreenPortal;
412
+ if (!portal)
497
413
  return;
498
- this.maximized = false;
414
+ this.fullscreenPortal = null;
415
+ portal.remove();
499
416
  // The flash locates the card the user was just reading in fullscreen.
500
417
  this.returnFlash = true;
501
418
  requestAnimationFrame(() => {
502
419
  this.scrollIntoView({ block: 'center', behavior: 'smooth' });
503
420
  });
504
421
  };
505
- handleFullscreenKeydown = (event) => {
506
- if (event.key === 'Escape') {
507
- event.preventDefault();
508
- this.closeFullscreen();
509
- }
510
- };
511
422
  updated(changedProperties) {
512
423
  super.updated(changedProperties);
424
+ if (this.uncapped)
425
+ return;
513
426
  const bodyInner = this.shadowRoot?.querySelector('.bodyInner') ?? null;
514
427
  if (bodyInner === this.observedBodyInner)
515
428
  return;
@@ -529,7 +442,8 @@ let DeesHarnessToolCard = (() => {
529
442
  this.bodyResizeObserver.observe(bodyInner);
530
443
  }
531
444
  async disconnectedCallback() {
532
- window.removeEventListener('keydown', this.handleFullscreenKeydown);
445
+ this.fullscreenPortal?.remove();
446
+ this.fullscreenPortal = null;
533
447
  this.bodyResizeObserver?.disconnect();
534
448
  this.bodyResizeObserver = null;
535
449
  this.observedBodyInner = null;
@@ -618,4 +532,4 @@ let DeesHarnessToolCard = (() => {
618
532
  return DeesHarnessToolCard = _classThis;
619
533
  })();
620
534
  export { DeesHarnessToolCard };
621
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXRvb2wtY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLXRvb2wtY2FyZC9kZWVzLWhhcm5lc3MtdG9vbC1jYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDNUQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXRELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsWUFBWSxHQUdiLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9FLE9BQU8sK0RBQStELENBQUM7QUFDdkUsT0FBTyx1RUFBdUUsQ0FBQztBQUMvRSxPQUFPLGlEQUFpRCxDQUFDO0FBQ3pELE9BQU8sOENBQThDLENBQUM7QUFRdEQ7Ozs7O0dBS0c7SUFFVSxtQkFBbUI7NEJBRC9CLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQzs7OztzQkFDQyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DQUFuQixTQUFRLFdBQVc7Ozs7Z0NBSWpELFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzt3Q0FH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
535
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXRvb2wtY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLXRvb2wtY2FyZC9kZWVzLWhhcm5lc3MtdG9vbC1jYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDNUQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXRELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsWUFBWSxHQUdiLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9FLE9BQU8sK0RBQStELENBQUM7QUFDdkUsT0FBTyx1RUFBdUUsQ0FBQztBQUMvRSxPQUFPLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8saURBQWlELENBQUM7QUFDekQsT0FBTyw4Q0FBOEMsQ0FBQztBQVF0RDs7Ozs7R0FLRztJQUVVLG1CQUFtQjs0QkFEL0IsYUFBYSxDQUFDLHdCQUF3QixDQUFDOzs7O3NCQUNDLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUNBQW5CLFNBQVEsV0FBVzs7OztnQ0FJakQsUUFBUSxDQUFDLEVBQUUsU0FBUyxF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
@@ -0,0 +1,26 @@
1
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ import type { IHarnessToolCall } from '../interfaces.js';
3
+ import { DeesHarnessToolRegistry } from '../toolregistry.js';
4
+ import '../../00group-utility/dees-icon/dees-icon.js';
5
+ declare global {
6
+ interface HTMLElementTagNameMap {
7
+ 'dees-harness-tool-fullscreen': DeesHarnessToolFullscreen;
8
+ }
9
+ }
10
+ /**
11
+ * Fullscreen view of one tool card, appended to document.body by
12
+ * DeesHarnessToolCard so it escapes every containment context
13
+ * (content-visibility, transforms) that would trap a position: fixed layer
14
+ * inside the transcript. Emits `tool-fullscreen-close` on Escape, backdrop
15
+ * press, or the minimize button; the owning card removes it and flashes.
16
+ */
17
+ export declare class DeesHarnessToolFullscreen extends DeesElement {
18
+ accessor call: IHarnessToolCall;
19
+ accessor toolRegistry: DeesHarnessToolRegistry;
20
+ static styles: import("@design.estate/dees-element").CSSResult[];
21
+ render(): TemplateResult;
22
+ firstUpdated(): void;
23
+ private readonly handleKeydown;
24
+ private readonly emitClose;
25
+ disconnectedCallback(): Promise<void>;
26
+ }
@@ -0,0 +1,211 @@
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 { DeesElement, html, css, customElement, property, cssManager, } from '@design.estate/dees-element';
36
+ import { themeDefaultStyles } from '../../00theme.js';
37
+ import { DeesHarnessToolRegistry, parseMcpName } from '../toolregistry.js';
38
+ import '../../00group-utility/dees-icon/dees-icon.js';
39
+ /**
40
+ * Fullscreen view of one tool card, appended to document.body by
41
+ * DeesHarnessToolCard so it escapes every containment context
42
+ * (content-visibility, transforms) that would trap a position: fixed layer
43
+ * inside the transcript. Emits `tool-fullscreen-close` on Escape, backdrop
44
+ * press, or the minimize button; the owning card removes it and flashes.
45
+ */
46
+ let DeesHarnessToolFullscreen = (() => {
47
+ let _classDecorators = [customElement('dees-harness-tool-fullscreen')];
48
+ let _classDescriptor;
49
+ let _classExtraInitializers = [];
50
+ let _classThis;
51
+ let _classSuper = DeesElement;
52
+ let _call_decorators;
53
+ let _call_initializers = [];
54
+ let _call_extraInitializers = [];
55
+ let _toolRegistry_decorators;
56
+ let _toolRegistry_initializers = [];
57
+ let _toolRegistry_extraInitializers = [];
58
+ var DeesHarnessToolFullscreen = class extends _classSuper {
59
+ static { _classThis = this; }
60
+ static {
61
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
62
+ _call_decorators = [property({ attribute: false })];
63
+ _toolRegistry_decorators = [property({ attribute: false })];
64
+ __esDecorate(this, null, _call_decorators, { kind: "accessor", name: "call", static: false, private: false, access: { has: obj => "call" in obj, get: obj => obj.call, set: (obj, value) => { obj.call = value; } }, metadata: _metadata }, _call_initializers, _call_extraInitializers);
65
+ __esDecorate(this, null, _toolRegistry_decorators, { kind: "accessor", name: "toolRegistry", static: false, private: false, access: { has: obj => "toolRegistry" in obj, get: obj => obj.toolRegistry, set: (obj, value) => { obj.toolRegistry = value; } }, metadata: _metadata }, _toolRegistry_initializers, _toolRegistry_extraInitializers);
66
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
67
+ DeesHarnessToolFullscreen = _classThis = _classDescriptor.value;
68
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
69
+ }
70
+ #call_accessor_storage = __runInitializers(this, _call_initializers, { id: '', name: '', status: 'pending' });
71
+ get call() { return this.#call_accessor_storage; }
72
+ set call(value) { this.#call_accessor_storage = value; }
73
+ #toolRegistry_accessor_storage = (__runInitializers(this, _call_extraInitializers), __runInitializers(this, _toolRegistry_initializers, DeesHarnessToolRegistry.default));
74
+ get toolRegistry() { return this.#toolRegistry_accessor_storage; }
75
+ set toolRegistry(value) { this.#toolRegistry_accessor_storage = value; }
76
+ static styles = [
77
+ themeDefaultStyles,
78
+ cssManager.defaultStyles,
79
+ css `
80
+ :host {
81
+ position: fixed;
82
+ inset: 0;
83
+ z-index: 4000;
84
+ display: grid;
85
+ place-items: center;
86
+ padding: 4vh 3vw;
87
+ background: color-mix(in srgb, var(--dees-color-bg-primary) 55%, transparent);
88
+ backdrop-filter: blur(6px);
89
+ font-family: var(--dees-font-family);
90
+ }
91
+
92
+ .panel {
93
+ display: flex;
94
+ flex-direction: column;
95
+ width: min(1200px, 100%);
96
+ height: 100%;
97
+ min-height: 0;
98
+ border: 1px solid var(--dees-color-border-default);
99
+ border-radius: var(--dees-radius-lg);
100
+ background: var(--dees-color-bg-primary);
101
+ box-shadow: 0 24px 64px rgba(0, 0, 0, 0.4);
102
+ overflow: hidden;
103
+ }
104
+
105
+ .panelHeader {
106
+ display: flex;
107
+ flex: 0 0 auto;
108
+ align-items: center;
109
+ gap: var(--dees-spacing-sm);
110
+ padding: var(--dees-spacing-sm) var(--dees-spacing-md);
111
+ border-bottom: 1px solid var(--dees-color-border-subtle);
112
+ color: var(--dees-color-text-primary);
113
+ }
114
+
115
+ .panelTitle {
116
+ min-width: 0;
117
+ overflow: hidden;
118
+ text-overflow: ellipsis;
119
+ white-space: nowrap;
120
+ font-size: var(--dees-font-control-size-sm, 12px);
121
+ font-weight: 650;
122
+ }
123
+
124
+ .panelClose {
125
+ display: grid;
126
+ place-items: center;
127
+ margin-left: auto;
128
+ padding: 6px;
129
+ border: 0;
130
+ border-radius: var(--dees-radius-md);
131
+ background: transparent;
132
+ color: var(--dees-color-text-secondary);
133
+ cursor: pointer;
134
+ }
135
+
136
+ .panelClose:hover {
137
+ background: var(--dees-color-hover);
138
+ color: var(--dees-color-text-primary);
139
+ }
140
+
141
+ .panelBody {
142
+ flex: 1;
143
+ min-height: 0;
144
+ overflow: auto;
145
+ padding: var(--dees-spacing-md);
146
+ scrollbar-width: thin;
147
+ scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
148
+ }
149
+
150
+ .panelBody dees-harness-tool-card {
151
+ display: block;
152
+ }
153
+ `,
154
+ ];
155
+ render() {
156
+ const parsed = this.call.mcp ? undefined : parseMcpName(this.call.name);
157
+ const enriched = parsed
158
+ ? { ...this.call, mcp: { serverName: parsed.serverName, toolName: parsed.toolName } }
159
+ : this.call;
160
+ const descriptor = this.toolRegistry.resolve(enriched);
161
+ const label = typeof descriptor.label === 'function' ? descriptor.label(enriched) : descriptor.label;
162
+ const subtitle = descriptor.subtitle?.(enriched) ?? '';
163
+ return html `
164
+ <div class="panel" @click=${(event) => event.stopPropagation()}>
165
+ <header class="panelHeader">
166
+ <dees-icon .icon=${descriptor.icon} iconSize="15"></dees-icon>
167
+ <span class="panelTitle">${label}${subtitle ? ` · ${subtitle}` : ''}</span>
168
+ <button class="panelClose" type="button" @click=${this.emitClose}>
169
+ <dees-icon icon="lucide:Minimize2" iconSize="15"></dees-icon>
170
+ </button>
171
+ </header>
172
+ <div class="panelBody">
173
+ <dees-harness-tool-card
174
+ .call=${this.call}
175
+ .toolRegistry=${this.toolRegistry}
176
+ .expanded=${true}
177
+ .outputExpanded=${true}
178
+ uncapped
179
+ ></dees-harness-tool-card>
180
+ </div>
181
+ </div>
182
+ `;
183
+ }
184
+ firstUpdated() {
185
+ window.addEventListener('keydown', this.handleKeydown);
186
+ this.addEventListener('click', (event) => {
187
+ if (event.target === this)
188
+ this.emitClose();
189
+ });
190
+ }
191
+ handleKeydown = (__runInitializers(this, _toolRegistry_extraInitializers), (event) => {
192
+ if (event.key === 'Escape') {
193
+ event.preventDefault();
194
+ this.emitClose();
195
+ }
196
+ });
197
+ emitClose = () => {
198
+ this.dispatchEvent(new CustomEvent('tool-fullscreen-close', { bubbles: false }));
199
+ };
200
+ async disconnectedCallback() {
201
+ window.removeEventListener('keydown', this.handleKeydown);
202
+ await super.disconnectedCallback();
203
+ }
204
+ static {
205
+ __runInitializers(_classThis, _classExtraInitializers);
206
+ }
207
+ };
208
+ return DeesHarnessToolFullscreen = _classThis;
209
+ })();
210
+ export { DeesHarnessToolFullscreen };
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXRvb2wtZnVsbHNjcmVlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLXRvb2wtY2FyZC9kZWVzLWhhcm5lc3MtdG9vbC1mdWxsc2NyZWVuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLElBQUksRUFDSixHQUFHLEVBQ0gsYUFBYSxFQUViLFFBQVEsRUFDUixVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0UsT0FBTyw4Q0FBOEMsQ0FBQztBQVF0RDs7Ozs7O0dBTUc7SUFFVSx5QkFBeUI7NEJBRHJDLGFBQWEsQ0FBQyw4QkFBOEIsQ0FBQzs7OztzQkFDQyxXQUFXOzs7Ozs7O3lDQUFuQixTQUFRLFdBQVc7Ozs7Z0NBQ3ZELFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzt3Q0FHOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBRi9CLGlLQUFTLElBQUksNkJBQUosSUFBSSxtRkFBNkQ7WUFHMUUseUxBQVMsWUFBWSw2QkFBWixZQUFZLG1HQUE0RDtZQUxuRiw2S0EySUM7Ozs7UUF6SUMscUVBQWtDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsRUFBQztRQUExRSxJQUFTLElBQUksMENBQTZEO1FBQTFFLElBQVMsSUFBSSxnREFBNkQ7UUFHMUUsd0lBQWlELHVCQUF1QixDQUFDLE9BQU8sR0FBQztRQUFq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
@@ -2,4 +2,19 @@ import { type TemplateResult } from '@design.estate/dees-element';
2
2
  import type { IHarnessToolCall } from '../interfaces.js';
3
3
  import type { IHarnessToolRenderHelpers } from '../toolregistry.js';
4
4
  import '../dees-harness-todos/dees-harness-todos.js';
5
+ interface IApplyPatchFile {
6
+ op: 'add' | 'update' | 'delete';
7
+ path: string;
8
+ before: string;
9
+ after: string;
10
+ }
11
+ /**
12
+ * Parses the apply_patch envelope (`*** Begin Patch` / `*** Add|Update|Delete
13
+ * File: path` / `+`/`-`/context lines) that patch-oriented models emit,
14
+ * reconstructing before/after content per file so updates render as diffs.
15
+ */
16
+ export declare const parseApplyPatch: (patchText: string) => IApplyPatchFile[];
17
+ /** First file path named in an apply_patch envelope, for subtitles. */
18
+ export declare const applyPatchFirstPath: (call: IHarnessToolCall) => string;
5
19
  export declare const builtinBodyRenderers: Record<string, (call: IHarnessToolCall, helpers: IHarnessToolRenderHelpers) => TemplateResult>;
20
+ export {};