@xxmachina/components 19.140.4 → 19.144.4

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.
@@ -12,7 +12,7 @@ class WeeklyHeaderMolecule {
12
12
  <span>{{ day }}</span>
13
13
  </div>
14
14
  }
15
- `, isInline: true, styles: [":host{display:block;--primary-color: #404040;--primary-color-SCOPED-IN-3oqZ8pST: var(--primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-3oqZ8pST: var(--secondary-color)}:host{display:grid;width:100%;grid-template-columns:repeat(7,1fr);background-color:var(--primary-color-SCOPED-IN-3oqZ8pST)}:host .day-container{display:flex;justify-content:center;align-items:center;color:#fff;font-weight:700;width:calc(hvar(--width) / 7)}\n"] });
15
+ `, isInline: true, styles: [":host{display:block;--primary-color: #404040;--primary-color-SCOPED-IN-38riS83Q: var(--primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-38riS83Q: var(--secondary-color)}:host{display:grid;width:100%;grid-template-columns:repeat(7,1fr);background-color:var(--primary-color-SCOPED-IN-38riS83Q)}:host .day-container{display:flex;justify-content:center;align-items:center;color:#fff;font-weight:700;width:calc(hvar(--width) / 7)}\n"] });
16
16
  }
17
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: WeeklyHeaderMolecule, decorators: [{
18
18
  type: Component,
@@ -22,7 +22,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
22
22
  <span>{{ day }}</span>
23
23
  </div>
24
24
  }
25
- `, styles: [":host{display:block;--primary-color: #404040;--primary-color-SCOPED-IN-3oqZ8pST: var(--primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-3oqZ8pST: var(--secondary-color)}:host{display:grid;width:100%;grid-template-columns:repeat(7,1fr);background-color:var(--primary-color-SCOPED-IN-3oqZ8pST)}:host .day-container{display:flex;justify-content:center;align-items:center;color:#fff;font-weight:700;width:calc(hvar(--width) / 7)}\n"] }]
25
+ `, styles: [":host{display:block;--primary-color: #404040;--primary-color-SCOPED-IN-38riS83Q: var(--primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-38riS83Q: var(--secondary-color)}:host{display:grid;width:100%;grid-template-columns:repeat(7,1fr);background-color:var(--primary-color-SCOPED-IN-38riS83Q)}:host .day-container{display:flex;justify-content:center;align-items:center;color:#fff;font-weight:700;width:calc(hvar(--width) / 7)}\n"] }]
26
26
  }], ctorParameters: () => [] });
27
27
 
28
28
  /**
@@ -56,7 +56,7 @@ class CalendarSectionOrganism {
56
56
  }
57
57
  }
58
58
  </div>
59
- `, isInline: true, styles: [":host{display:block;--row: 80px;--row-SCOPED-IN-IzcmIn8D: var(--row);--row-num: 0;--row-num-SCOPED-IN-IzcmIn8D: var(--row-num);--border-color: #9E9E9E;--border-color-SCOPED-IN-IzcmIn8D: var(--border-color);--primary-color: #404040;--primary-color-SCOPED-IN-IzcmIn8D: var(--primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-IzcmIn8D: var(--secondary-color)}:host{width:100%;height:auto}:host .calendar.header molecules-weekly-header{--height: 32px}:host .calendar.contents{display:grid;width:var(--width);border:1px solid var(--border-color-SCOPED-IN-IzcmIn8D);grid-gap:1px;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(var(--row-num-SCOPED-IN-IzcmIn8D),var(--row-SCOPED-IN-IzcmIn8D));box-sizing:border-box;background-color:var(--border-color-SCOPED-IN-IzcmIn8D)}:host .calendar.contents molecules-daily-cell{--width: calc((var(--width) - 8px) / 7);--height: var(--row-SCOPED-IN-IzcmIn8D);background-color:#fff}:host .calendar.description{display:flex;justify-content:flex-end;width:var(--width);height:32px;padding-right:16px}:host .calendar.description .description.container{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;font-size:12px}:host .calendar.description .description.container .circle{display:flex;width:20px;height:20px;justify-content:center;align-items:center;border-radius:50%;color:#fff;background:#00f}:host .calendar.description .description.container label{padding-left:4px;padding-right:8px}\n"], dependencies: [{ kind: "component", type: DailyCellMolecule, selector: "molecules-daily-cell", inputs: ["date", "schedules", "displayDate", "noSchedulesText", "toolTipText", "marked", "markingColor"] }, { kind: "component", type: WeeklyHeaderMolecule, selector: "molecules-weekly-header" }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
59
+ `, isInline: true, styles: [":host{display:block;--row: 80px;--row-SCOPED-IN-1SuUdDWS: var(--row);--row-num: 0;--row-num-SCOPED-IN-1SuUdDWS: var(--row-num);--border-color: #9E9E9E;--border-color-SCOPED-IN-1SuUdDWS: var(--border-color);--primary-color: #404040;--primary-color-SCOPED-IN-1SuUdDWS: var(--primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-1SuUdDWS: var(--secondary-color)}:host{width:100%;height:auto}:host .calendar.header molecules-weekly-header{--height: 32px}:host .calendar.contents{display:grid;width:var(--width);border:1px solid var(--border-color-SCOPED-IN-1SuUdDWS);grid-gap:1px;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(var(--row-num-SCOPED-IN-1SuUdDWS),var(--row-SCOPED-IN-1SuUdDWS));box-sizing:border-box;background-color:var(--border-color-SCOPED-IN-1SuUdDWS)}:host .calendar.contents molecules-daily-cell{--width: calc((var(--width) - 8px) / 7);--height: var(--row-SCOPED-IN-1SuUdDWS);background-color:#fff}:host .calendar.description{display:flex;justify-content:flex-end;width:var(--width);height:32px;padding-right:16px}:host .calendar.description .description.container{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;font-size:12px}:host .calendar.description .description.container .circle{display:flex;width:20px;height:20px;justify-content:center;align-items:center;border-radius:50%;color:#fff;background:#00f}:host .calendar.description .description.container label{padding-left:4px;padding-right:8px}\n"], dependencies: [{ kind: "component", type: DailyCellMolecule, selector: "molecules-daily-cell", inputs: ["date", "schedules", "displayDate", "noSchedulesText", "toolTipText", "marked", "markingColor"] }, { kind: "component", type: WeeklyHeaderMolecule, selector: "molecules-weekly-header" }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
60
60
  }
61
61
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: CalendarSectionOrganism, decorators: [{
62
62
  type: Component,
@@ -90,7 +90,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
90
90
  }
91
91
  }
92
92
  </div>
93
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--row: 80px;--row-SCOPED-IN-IzcmIn8D: var(--row);--row-num: 0;--row-num-SCOPED-IN-IzcmIn8D: var(--row-num);--border-color: #9E9E9E;--border-color-SCOPED-IN-IzcmIn8D: var(--border-color);--primary-color: #404040;--primary-color-SCOPED-IN-IzcmIn8D: var(--primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-IzcmIn8D: var(--secondary-color)}:host{width:100%;height:auto}:host .calendar.header molecules-weekly-header{--height: 32px}:host .calendar.contents{display:grid;width:var(--width);border:1px solid var(--border-color-SCOPED-IN-IzcmIn8D);grid-gap:1px;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(var(--row-num-SCOPED-IN-IzcmIn8D),var(--row-SCOPED-IN-IzcmIn8D));box-sizing:border-box;background-color:var(--border-color-SCOPED-IN-IzcmIn8D)}:host .calendar.contents molecules-daily-cell{--width: calc((var(--width) - 8px) / 7);--height: var(--row-SCOPED-IN-IzcmIn8D);background-color:#fff}:host .calendar.description{display:flex;justify-content:flex-end;width:var(--width);height:32px;padding-right:16px}:host .calendar.description .description.container{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;font-size:12px}:host .calendar.description .description.container .circle{display:flex;width:20px;height:20px;justify-content:center;align-items:center;border-radius:50%;color:#fff;background:#00f}:host .calendar.description .description.container label{padding-left:4px;padding-right:8px}\n"] }]
93
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--row: 80px;--row-SCOPED-IN-1SuUdDWS: var(--row);--row-num: 0;--row-num-SCOPED-IN-1SuUdDWS: var(--row-num);--border-color: #9E9E9E;--border-color-SCOPED-IN-1SuUdDWS: var(--border-color);--primary-color: #404040;--primary-color-SCOPED-IN-1SuUdDWS: var(--primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-1SuUdDWS: var(--secondary-color)}:host{width:100%;height:auto}:host .calendar.header molecules-weekly-header{--height: 32px}:host .calendar.contents{display:grid;width:var(--width);border:1px solid var(--border-color-SCOPED-IN-1SuUdDWS);grid-gap:1px;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(var(--row-num-SCOPED-IN-1SuUdDWS),var(--row-SCOPED-IN-1SuUdDWS));box-sizing:border-box;background-color:var(--border-color-SCOPED-IN-1SuUdDWS)}:host .calendar.contents molecules-daily-cell{--width: calc((var(--width) - 8px) / 7);--height: var(--row-SCOPED-IN-1SuUdDWS);background-color:#fff}:host .calendar.description{display:flex;justify-content:flex-end;width:var(--width);height:32px;padding-right:16px}:host .calendar.description .description.container{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;font-size:12px}:host .calendar.description .description.container .circle{display:flex;width:20px;height:20px;justify-content:center;align-items:center;border-radius:50%;color:#fff;background:#00f}:host .calendar.description .description.container label{padding-left:4px;padding-right:8px}\n"] }]
94
94
  }], propDecorators: { label: [{
95
95
  type: Input
96
96
  }], displayDays: [{
@@ -273,20 +273,6 @@ class FileLinkProvider {
273
273
  return { path: text };
274
274
  }
275
275
  }
276
- const isLikelyFilePath = (text) => {
277
- return /\.[a-zA-Z0-9]+(?::\d+(?::\d+)?)?$/.test(text) && !/^https?:\/\//.test(text);
278
- };
279
- const parseFilePath = (text) => {
280
- const match = text.match(/^(.+?)(?::(\d+)(?::(\d+))?)?$/);
281
- if (match) {
282
- return {
283
- path: match[1],
284
- line: match[2] ? parseInt(match[2], 10) : undefined,
285
- column: match[3] ? parseInt(match[3], 10) : undefined
286
- };
287
- }
288
- return { path: text };
289
- };
290
276
 
291
277
  class FileLinksAddon {
292
278
  _handler;
@@ -304,6 +290,91 @@ class FileLinksAddon {
304
290
  }
305
291
  }
306
292
 
293
+ const SESSION_MENTION_REGEX = /(?:^|[\s((『「])@([a-z][a-z0-9]*(?:-[a-z0-9]+)*)(?![\w/-])(?!\.[a-z0-9])/g;
294
+ function extractSessionMentions(text) {
295
+ const mentions = [];
296
+ SESSION_MENTION_REGEX.lastIndex = 0;
297
+ let match;
298
+ while ((match = SESSION_MENTION_REGEX.exec(text)) !== null) {
299
+ const name = match[1];
300
+ const ref = `@${name}`;
301
+ const start = match.index + (match[0].length - ref.length);
302
+ mentions.push({ name, start, end: start + ref.length });
303
+ }
304
+ return mentions;
305
+ }
306
+ class SessionMentionLinkProvider {
307
+ _terminal;
308
+ _handler;
309
+ constructor(_terminal, _handler) {
310
+ this._terminal = _terminal;
311
+ this._handler = _handler;
312
+ }
313
+ provideLinks(bufferLineNumber, callback) {
314
+ const lineIndex = bufferLineNumber - 1;
315
+ const line = this._terminal.buffer.active.getLine(lineIndex);
316
+ if (!line) {
317
+ callback(undefined);
318
+ return;
319
+ }
320
+ const text = line.translateToString(true);
321
+ const links = [];
322
+ for (const mention of extractSessionMentions(text)) {
323
+ const [, startX] = this._mapStrIdx(lineIndex, 0, mention.start);
324
+ const [, endX] = this._mapStrIdx(lineIndex, startX, mention.end - mention.start);
325
+ if (startX === -1 || endX === -1)
326
+ continue;
327
+ links.push({
328
+ text: `@${mention.name}`,
329
+ range: {
330
+ start: { x: startX + 1, y: bufferLineNumber },
331
+ end: { x: endX, y: bufferLineNumber },
332
+ },
333
+ activate: (event) => this._handler(event, mention.name),
334
+ });
335
+ }
336
+ callback(links.length > 0 ? links : undefined);
337
+ }
338
+ _mapStrIdx(lineIndex, rowIndex, stringIndex) {
339
+ const buf = this._terminal.buffer.active;
340
+ const cell = buf.getNullCell();
341
+ let start = rowIndex;
342
+ while (stringIndex) {
343
+ const line = buf.getLine(lineIndex);
344
+ if (!line)
345
+ return [-1, -1];
346
+ for (let i = start; i < line.length; ++i) {
347
+ line.getCell(i, cell);
348
+ const chars = cell.getChars();
349
+ const width = cell.getWidth();
350
+ if (width) {
351
+ stringIndex -= chars.length || 1;
352
+ }
353
+ if (stringIndex < 0) {
354
+ return [lineIndex, i];
355
+ }
356
+ }
357
+ lineIndex++;
358
+ start = 0;
359
+ }
360
+ return [lineIndex, start];
361
+ }
362
+ }
363
+
364
+ class SessionMentionLinksAddon {
365
+ _handler;
366
+ _linkProvider;
367
+ constructor(_handler) {
368
+ this._handler = _handler;
369
+ }
370
+ activate(terminal) {
371
+ this._linkProvider = terminal.registerLinkProvider(new SessionMentionLinkProvider(terminal, this._handler));
372
+ }
373
+ dispose() {
374
+ this._linkProvider?.dispose();
375
+ }
376
+ }
377
+
307
378
  function deployVersionToHostSuffix(version) {
308
379
  if (!version || version === 'stable')
309
380
  return '';
@@ -322,6 +393,12 @@ function deployVersionToHostSuffix(version) {
322
393
  return '';
323
394
  }
324
395
 
396
+ const USER_CONTENT_DOMAIN = '10p.io';
397
+ function buildUserContentOrigin(serverUUID, portOrService, deployVersion, domain = USER_CONTENT_DOMAIN) {
398
+ const suffix = deployVersionToHostSuffix(deployVersion);
399
+ return `https://${serverUUID}--${portOrService}${suffix}.${domain}`;
400
+ }
401
+
325
402
  function encodeUrlHandoff(token, endpoints, env) {
326
403
  if (env) {
327
404
  return btoa(JSON.stringify({ t: token, env }));
@@ -337,8 +414,7 @@ function appendUrlHandoff(proxyUrl, token, endpoints, env) {
337
414
  function openWebProxyForPort(opts) {
338
415
  const { serverUUID, port, path = '/', token, endpoints, env, deployVersion } = opts;
339
416
  const handler = opts.handler ?? ((_, url) => { window.open(url, '_blank', 'noopener'); });
340
- const hostSuffix = deployVersionToHostSuffix(deployVersion);
341
- const baseProxyUrl = `https://${serverUUID}--${port}${hostSuffix}.proxy.machina.at${path}`;
417
+ const baseProxyUrl = `${buildUserContentOrigin(serverUUID, port, deployVersion)}${path}`;
342
418
  if (!token || !endpoints) {
343
419
  handler(undefined, baseProxyUrl);
344
420
  return;
@@ -353,8 +429,7 @@ function toProxyUrl(serverUUID, localhostUrl, deployVersion) {
353
429
  return null;
354
430
  const port = match[1] || '80';
355
431
  const path = match[2] || '/';
356
- const hostSuffix = deployVersionToHostSuffix(deployVersion);
357
- return `https://${serverUUID}--${port}${hostSuffix}.proxy.machina.at${path}`;
432
+ return `${buildUserContentOrigin(serverUUID, port, deployVersion)}${path}`;
358
433
  }
359
434
 
360
435
  const LOCALHOST_URL_REGEX = /https?:\/\/(?:localhost|127\.0\.0\.1)(?::(\d+))?(\/[^\s<>'")\]]*)?/g;
@@ -469,6 +544,7 @@ var XtermActionId;
469
544
  XtermActionId["RESIZED"] = "xterm:resized";
470
545
  XtermActionId["GITHUB_LINK_CLICK"] = "xterm:github-link-click";
471
546
  XtermActionId["FILE_LINK_CLICK"] = "xterm:file-link-click";
547
+ XtermActionId["SESSION_MENTION_CLICK"] = "xterm:session-mention-click";
472
548
  XtermActionId["FOCUS_INPUT_REQUEST"] = "xterm:focus-input-request";
473
549
  })(XtermActionId || (XtermActionId = {}));
474
550
  const XTERM_SESSION_CONTEXT = new InjectionToken('XTERM_SESSION_CONTEXT');
@@ -628,7 +704,33 @@ function _legacyMeasureViaTempTerminal(fontSize = CANONICAL_FONT_SIZE_PX) {
628
704
  }
629
705
  }
630
706
 
631
- const MIN_CONTAINER_SIZE = 10;
707
+ const NOOP = { reset: false, text: '' };
708
+ function hasVisibleContent(s) {
709
+ const stripped = s
710
+ // eslint-disable-next-line no-control-regex
711
+ .replace(/\x1b\[[\d;?]*[a-zA-Z]/g, '')
712
+ // eslint-disable-next-line no-control-regex
713
+ .replace(/\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g, '');
714
+ return /\S/.test(stripped);
715
+ }
716
+ function decideTerminalWrite(state, data, totalWritten) {
717
+ if (totalWritten < state.lastProcessedLength) {
718
+ return { reset: true, text: data };
719
+ }
720
+ if (!data)
721
+ return NOOP;
722
+ const newBytesCount = totalWritten - state.lastProcessedLength;
723
+ if (newBytesCount <= 0) {
724
+ return NOOP;
725
+ }
726
+ if (data === state.lastData)
727
+ return NOOP;
728
+ if (newBytesCount >= data.length) {
729
+ return { reset: hasVisibleContent(data), text: data };
730
+ }
731
+ return { reset: false, text: data.slice(-newBytesCount) };
732
+ }
733
+
632
734
  const DISPLAY_THEME = {
633
735
  background: '#0a0a0a',
634
736
  foreground: '#66d9ef',
@@ -665,6 +767,45 @@ const INTERACTIVE_THEME = {
665
767
  brightCyan: '#8ad7ff',
666
768
  brightWhite: '#e5e5e5',
667
769
  };
770
+
771
+ const defaultOsc8Opener = (uri) => {
772
+ window.open(uri, '_blank', 'noopener');
773
+ };
774
+ function createOsc8LinkHandler(open) {
775
+ return {
776
+ activate: (event, text) => {
777
+ open(text, event);
778
+ },
779
+ };
780
+ }
781
+
782
+ function buildTerminalOptions({ isInteractive, useInteractiveTheme, focused = true, openLink = defaultOsc8Opener, }) {
783
+ return {
784
+ linkHandler: createOsc8LinkHandler(openLink),
785
+ theme: useInteractiveTheme ? INTERACTIVE_THEME : DISPLAY_THEME,
786
+ scrollback: isInteractive && focused ? 10000 : 1000,
787
+ fontSize: useInteractiveTheme ? 14 : 12,
788
+ fontFamily: CANONICAL_FONT_FAMILY,
789
+ lineHeight: CANONICAL_LINE_HEIGHT,
790
+ allowTransparency: false,
791
+ disableStdin: !isInteractive,
792
+ cursorBlink: isInteractive,
793
+ cursorStyle: 'block',
794
+ convertEol: true,
795
+ altClickMovesCursor: false,
796
+ macOptionClickForcesSelection: true,
797
+ rows: 24,
798
+ };
799
+ }
800
+
801
+ function installQueryReplySuppression(terminal) {
802
+ terminal.parser.registerCsiHandler({ final: 'c' }, () => true);
803
+ terminal.parser.registerCsiHandler({ prefix: '>', final: 'c' }, () => true);
804
+ terminal.parser.registerCsiHandler({ final: 'n' }, () => true);
805
+ terminal.parser.registerEscHandler({ final: 'Z' }, () => true);
806
+ }
807
+
808
+ const MIN_CONTAINER_SIZE = 10;
668
809
  class XtermOrganism extends NgAtomicComponent {
669
810
  container = viewChild.required('container');
670
811
  store = inject(XtermOrganismStore);
@@ -676,9 +817,11 @@ class XtermOrganism extends NgAtomicComponent {
676
817
  imageAddon;
677
818
  githubLinksAddon;
678
819
  fileLinksAddon;
820
+ sessionMentionLinksAddon;
679
821
  resizeObserver;
680
822
  lastDataLength = 0;
681
823
  lastProcessedLength = 0;
824
+ lastWrittenData = null;
682
825
  terminalInitialized = signal(false, ...(ngDevMode ? [{ debugName: "terminalInitialized" }] : []));
683
826
  initialized = this.terminalInitialized.asReadonly();
684
827
  fitEpoch = signal(0, ...(ngDevMode ? [{ debugName: "fitEpoch" }] : []));
@@ -698,7 +841,7 @@ class XtermOrganism extends NgAtomicComponent {
698
841
  const data = dataIsFunction ? rawData() : rawData;
699
842
  if (!isInitialized)
700
843
  return;
701
- if (totalWritten > 0) {
844
+ if (totalWritten > 0 || this.lastProcessedLength > 0) {
702
845
  this.writeDataWithTotalWritten(data ?? '', totalWritten);
703
846
  }
704
847
  else {
@@ -740,34 +883,20 @@ class XtermOrganism extends NgAtomicComponent {
740
883
  }
741
884
  }
742
885
  writeDataWithTotalWritten(data, totalWritten) {
743
- if (!data)
886
+ const isStreamRestart = totalWritten < this.lastProcessedLength;
887
+ if (!data && !isStreamRestart)
744
888
  return;
745
- const newBytesCount = totalWritten - this.lastProcessedLength;
746
- if (newBytesCount <= 0) {
747
- if (totalWritten < this.lastProcessedLength) {
748
- this.terminal.reset();
749
- this.terminal.write(data);
750
- this.lastProcessedLength = totalWritten;
751
- }
752
- return;
753
- }
754
- let written = '';
755
- if (newBytesCount >= data.length) {
756
- if (hasVisibleContent(data)) {
757
- this.terminal.reset();
758
- }
759
- this.terminal.write(data);
760
- written = data;
889
+ const decision = decideTerminalWrite({ lastData: this.lastWrittenData, lastProcessedLength: this.lastProcessedLength }, data, totalWritten);
890
+ if (decision.reset) {
891
+ this.terminal.reset();
892
+ this.lastDataLength = data.length;
761
893
  }
762
- else {
763
- const sliceN = Math.min(newBytesCount, data.length);
764
- const newContent = data.slice(-sliceN);
765
- if (newContent) {
766
- this.terminal.write(newContent);
767
- written = newContent;
768
- }
894
+ const written = decision.text;
895
+ if (written) {
896
+ this.terminal.write(written);
769
897
  }
770
898
  this.lastProcessedLength = totalWritten;
899
+ this.lastWrittenData = data;
771
900
  if (hasDisplayClearWithoutScrollbackClear(written)) {
772
901
  this.terminal.clear();
773
902
  }
@@ -792,19 +921,8 @@ class XtermOrganism extends NgAtomicComponent {
792
921
  initializeTerminal(containerElement) {
793
922
  const isInteractive = this.store.interactive();
794
923
  const useInteractiveTheme = this.store.useInteractiveTheme() || isInteractive;
795
- this.terminal = new Terminal({
796
- theme: useInteractiveTheme ? INTERACTIVE_THEME : DISPLAY_THEME,
797
- scrollback: isInteractive ? 10000 : 1000,
798
- fontSize: useInteractiveTheme ? 14 : 12,
799
- fontFamily: CANONICAL_FONT_FAMILY,
800
- lineHeight: CANONICAL_LINE_HEIGHT,
801
- allowTransparency: false,
802
- disableStdin: !isInteractive,
803
- cursorBlink: isInteractive,
804
- cursorStyle: 'block',
805
- convertEol: true,
806
- rows: 24
807
- });
924
+ this.terminal = new Terminal(buildTerminalOptions({ isInteractive, useInteractiveTheme }));
925
+ installQueryReplySuppression(this.terminal);
808
926
  this.fitAddon = new FitAddon();
809
927
  this.terminal.loadAddon(this.fitAddon);
810
928
  this.terminal.loadAddon(new WebLinksAddon());
@@ -819,6 +937,10 @@ class XtermOrganism extends NgAtomicComponent {
819
937
  }
820
938
  });
821
939
  this.terminal.loadAddon(this.fileLinksAddon);
940
+ this.sessionMentionLinksAddon = new SessionMentionLinksAddon((event, name) => {
941
+ this.dispatch({ id: XtermActionId.SESSION_MENTION_CLICK, payload: { name } });
942
+ });
943
+ this.terminal.loadAddon(this.sessionMentionLinksAddon);
822
944
  const ctx = this.store.sessionContext;
823
945
  this.terminal.loadAddon(new ProxyLinksAddon(ctx?.getServerUUID ?? (() => undefined), ctx?.getProxyToken, undefined, ctx?.getDeployVersion, ctx?.getProxyEndpoints, ctx?.onMissingToken, ctx?.getProxyEnv));
824
946
  this.terminal.open(containerElement);
@@ -995,6 +1117,9 @@ class XtermOrganism extends NgAtomicComponent {
995
1117
  const helperTextarea = this.container().nativeElement.querySelector('.xterm-helper-textarea');
996
1118
  helperTextarea?.focus();
997
1119
  }
1120
+ clearSelection() {
1121
+ this.terminal?.clearSelection();
1122
+ }
998
1123
  fit() {
999
1124
  this.fitToViewport();
1000
1125
  if (this.terminalInitialized() && this.terminal) {
@@ -1042,14 +1167,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
1042
1167
  inputs: ['data', 'interactive', 'useInteractiveTheme', 'totalWritten'],
1043
1168
  }], styles: ["@import\"https://unpkg.com/@xterm/xterm@5.5.0/css/xterm.css\";:host{display:block;width:100%;height:100%}:host .terminal-viewport,:host .xterm-wrapper{width:100%;height:100%;background:#0a0a0a;position:relative;overflow:hidden}:host:not(.interactive) .xterm-wrapper ::ng-deep .xterm-cursor-layer{display:none!important}:host:not(.interactive) .xterm-wrapper ::ng-deep .xterm-cursor,:host:not(.interactive) .xterm-wrapper ::ng-deep .xterm-cursor-outline{opacity:0!important}:host ::ng-deep .xterm-screen canvas{pointer-events:none}\n"] }]
1044
1169
  }], ctorParameters: () => [], propDecorators: { container: [{ type: i0.ViewChild, args: ['container', { isSignal: true }] }], terminalReady: [{ type: i0.Output, args: ["terminalReady"] }], githubLinkClick: [{ type: i0.Output, args: ["githubLinkClick"] }] } });
1045
- function hasVisibleContent(s) {
1046
- const stripped = s
1047
- // eslint-disable-next-line no-control-regex -- ANSI CSI / OSC を strip するため意図的に \x1b / \x07 を match
1048
- .replace(/\x1b\[[\d;?]*[a-zA-Z]/g, '')
1049
- // eslint-disable-next-line no-control-regex -- ANSI OSC を strip するため意図的に \x1b / \x07 を match
1050
- .replace(/\x1b\][^\x07\x1b]*[\x07\x1b]/g, '');
1051
- return /\S/.test(stripped);
1052
- }
1053
1170
  function hasDisplayClearWithoutScrollbackClear(s) {
1054
1171
  return s.includes('\x1b[2J') && !s.includes('\x1b[3J');
1055
1172
  }
@@ -1245,8 +1362,20 @@ async function getMachinaAsciiArtSixel(options = {}) {
1245
1362
  });
1246
1363
  }
1247
1364
 
1365
+ const FOCUSED_SCROLLBACK = 10000;
1366
+ const UNFOCUSED_SCROLLBACK = 1000;
1367
+ const focusedOnce = new WeakSet();
1368
+ function applyScrollbackForFocus(terminal, { isInteractive, focused }) {
1369
+ if (isInteractive && focused)
1370
+ focusedOnce.add(terminal);
1371
+ const grown = isInteractive && (focused || focusedOnce.has(terminal));
1372
+ const next = grown ? FOCUSED_SCROLLBACK : UNFOCUSED_SCROLLBACK;
1373
+ if (terminal.options.scrollback !== next)
1374
+ terminal.options.scrollback = next;
1375
+ }
1376
+
1248
1377
  /**
1249
1378
  * Generated bundle index. Do not edit.
1250
1379
  */
1251
1380
 
1252
- export { CANONICAL_CELL_HEIGHT_RATIO, CANONICAL_CELL_WIDTH_RATIO, CANONICAL_FONT_FAMILY, CANONICAL_FONT_SIZE_PX, CANONICAL_LINE_HEIGHT, DISPLAY_THEME, GitHubLinkProvider, GitHubLinksAddon, INTERACTIVE_THEME, MAX_VIEWPORT_COLS, MAX_VIEWPORT_ROWS, MIN_VIEWPORT_COLS, MIN_VIEWPORT_ROWS, ProxyLinkProvider, ProxyLinksAddon, WebLinksAddon, XTERM_SESSION_CONTEXT, XtermActionId, XtermOrganism, XtermOrganismStore, appendUrlHandoff, asciiArtToSvg, clearCanvasCellMetricCache, computeFitToViewport, deployVersionToHostSuffix, encodeUrlHandoff, generateAsciiArt, getCanvasCellMetric, getMachinaAsciiArtSixel, measureCellMetric, openWebProxyForPort, recordCanvasCellMetric, svgToSixel, toProxyUrl };
1381
+ export { CANONICAL_CELL_HEIGHT_RATIO, CANONICAL_CELL_WIDTH_RATIO, CANONICAL_FONT_FAMILY, CANONICAL_FONT_SIZE_PX, CANONICAL_LINE_HEIGHT, DISPLAY_THEME, GitHubLinkProvider, GitHubLinksAddon, INTERACTIVE_THEME, MAX_VIEWPORT_COLS, MAX_VIEWPORT_ROWS, MIN_VIEWPORT_COLS, MIN_VIEWPORT_ROWS, ProxyLinkProvider, ProxyLinksAddon, SessionMentionLinkProvider, SessionMentionLinksAddon, USER_CONTENT_DOMAIN, WebLinksAddon, XTERM_SESSION_CONTEXT, XtermActionId, XtermOrganism, XtermOrganismStore, appendUrlHandoff, applyScrollbackForFocus, asciiArtToSvg, buildTerminalOptions, buildUserContentOrigin, clearCanvasCellMetricCache, computeFitToViewport, decideTerminalWrite, deployVersionToHostSuffix, encodeUrlHandoff, extractSessionMentions, generateAsciiArt, getCanvasCellMetric, getMachinaAsciiArtSixel, hasVisibleContent, measureCellMetric, openWebProxyForPort, recordCanvasCellMetric, svgToSixel, toProxyUrl };
@@ -422,7 +422,7 @@ class CommandPage extends NgAtomicComponent {
422
422
  </frames-tabs>
423
423
  </templates-form>
424
424
  </frames-router-outlet>
425
- `, isInline: true, styles: [":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-command-1oVr: var(--page-width-lv1);--primary-color-SCOPED-IN-command-1oVr: var(--primary-color);--on-primary-color-SCOPED-IN-command-1oVr: var(--on-primary-color);--background-color-SCOPED-IN-command-1oVr: var(--background-color);--on-background-color-SCOPED-IN-command-1oVr: var(--on-background-color)}:host templates-form{padding-left:0;box-sizing:border-box;transition:padding-left .3s}:host .template{--first-content-height: 0px;width:var(--page-width-lv1-SCOPED-IN-command-1oVr)}:host .template div[dashboard]{padding:0;box-sizing:border-box}:host *{--primary-color: var(--primary-color-SCOPED-IN-command-1oVr);--on-primary-color: var(--on-primary-color-SCOPED-IN-command-1oVr);--background-color: var(--background-color-SCOPED-IN-command-1oVr);--on-background-color: var(--on-background-color-SCOPED-IN-command-1oVr)}\n"], dependencies: [{ kind: "component", type: RouterOutletFrame, selector: "frames-router-outlet", outputs: ["events"] }, { kind: "component", type: FormTemplate, selector: "templates-form" }, { kind: "component", type: TabsFrame, selector: "frames-tabs", inputs: ["labels"], outputs: ["selectedTabIndexChange"] }, { kind: "component", type: CommandFormGroup, selector: "groups-command-form", inputs: ["apiJsonUrls"] }, { kind: "component", type: QueryFormGroup, selector: "groups-query-form", inputs: ["form", "keyActions"] }] });
425
+ `, isInline: true, styles: [":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-command-XQE4: var(--page-width-lv1);--primary-color-SCOPED-IN-command-XQE4: var(--primary-color);--on-primary-color-SCOPED-IN-command-XQE4: var(--on-primary-color);--background-color-SCOPED-IN-command-XQE4: var(--background-color);--on-background-color-SCOPED-IN-command-XQE4: var(--on-background-color)}:host templates-form{padding-left:0;box-sizing:border-box;transition:padding-left .3s}:host .template{--first-content-height: 0px;width:var(--page-width-lv1-SCOPED-IN-command-XQE4)}:host .template div[dashboard]{padding:0;box-sizing:border-box}:host *{--primary-color: var(--primary-color-SCOPED-IN-command-XQE4);--on-primary-color: var(--on-primary-color-SCOPED-IN-command-XQE4);--background-color: var(--background-color-SCOPED-IN-command-XQE4);--on-background-color: var(--on-background-color-SCOPED-IN-command-XQE4)}\n"], dependencies: [{ kind: "component", type: RouterOutletFrame, selector: "frames-router-outlet", outputs: ["events"] }, { kind: "component", type: FormTemplate, selector: "templates-form" }, { kind: "component", type: TabsFrame, selector: "frames-tabs", inputs: ["labels"], outputs: ["selectedTabIndexChange"] }, { kind: "component", type: CommandFormGroup, selector: "groups-command-form", inputs: ["apiJsonUrls"] }, { kind: "component", type: QueryFormGroup, selector: "groups-query-form", inputs: ["form", "keyActions"] }] });
426
426
  }
427
427
  __decorate([
428
428
  Effect(FormTemplateStore.ActionId.FILE_SELECTED),
@@ -485,7 +485,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
485
485
  'actions',
486
486
  ]
487
487
  },
488
- ], styles: [":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-command-1oVr: var(--page-width-lv1);--primary-color-SCOPED-IN-command-1oVr: var(--primary-color);--on-primary-color-SCOPED-IN-command-1oVr: var(--on-primary-color);--background-color-SCOPED-IN-command-1oVr: var(--background-color);--on-background-color-SCOPED-IN-command-1oVr: var(--on-background-color)}:host templates-form{padding-left:0;box-sizing:border-box;transition:padding-left .3s}:host .template{--first-content-height: 0px;width:var(--page-width-lv1-SCOPED-IN-command-1oVr)}:host .template div[dashboard]{padding:0;box-sizing:border-box}:host *{--primary-color: var(--primary-color-SCOPED-IN-command-1oVr);--on-primary-color: var(--on-primary-color-SCOPED-IN-command-1oVr);--background-color: var(--background-color-SCOPED-IN-command-1oVr);--on-background-color: var(--on-background-color-SCOPED-IN-command-1oVr)}\n"] }]
488
+ ], styles: [":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-command-XQE4: var(--page-width-lv1);--primary-color-SCOPED-IN-command-XQE4: var(--primary-color);--on-primary-color-SCOPED-IN-command-XQE4: var(--on-primary-color);--background-color-SCOPED-IN-command-XQE4: var(--background-color);--on-background-color-SCOPED-IN-command-XQE4: var(--on-background-color)}:host templates-form{padding-left:0;box-sizing:border-box;transition:padding-left .3s}:host .template{--first-content-height: 0px;width:var(--page-width-lv1-SCOPED-IN-command-XQE4)}:host .template div[dashboard]{padding:0;box-sizing:border-box}:host *{--primary-color: var(--primary-color-SCOPED-IN-command-XQE4);--on-primary-color: var(--on-primary-color-SCOPED-IN-command-XQE4);--background-color: var(--background-color-SCOPED-IN-command-XQE4);--on-background-color: var(--on-background-color-SCOPED-IN-command-XQE4)}\n"] }]
489
489
  }], propDecorators: { onFileSelected: [] } });
490
490
 
491
491
  /**
@@ -688,7 +688,7 @@ class QueryPage extends NgAtomicComponent {
688
688
  <groups-query-form dashboard (action)="dispatch($event)" />
689
689
  </templates-index>
690
690
  </frames-router-outlet>
691
- `, isInline: true, styles: ["@charset \"UTF-8\";:host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-query-BMUh: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-query-BMUh: var(--page-width-lv3);--primary-color-SCOPED-IN-query-BMUh: var(--primary-color);--on-primary-color-SCOPED-IN-query-BMUh: var(--on-primary-color);--surface-color-SCOPED-IN-query-BMUh: var(--surface-color);--on-surface-color-SCOPED-IN-query-BMUh: var(--on-surface-color);--on-background-color-SCOPED-IN-query-BMUh: var(--on-background-color);--background-color-SCOPED-IN-query-BMUh: var(--background-color);--navigator-background-color-SCOPED-IN-query-BMUh: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-query-BMUh: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-query-BMUh: var(--table-background-color);--table-on-background-color-SCOPED-IN-query-BMUh: var(--table-on-background-color);--is-debug: 1;--is-debug-SCOPED-IN-query-BMUh: var(--is-debug)}:host *{--primary-color: var(--primary-color-SCOPED-IN-query-BMUh);--on-primary-color: var(--on-primary-color-SCOPED-IN-query-BMUh);--surface-color: var(--surface-color-SCOPED-IN-query-BMUh);--on-surface-color: var(--on-surface-color-SCOPED-IN-query-BMUh);--background-color: var(--background-color-SCOPED-IN-query-BMUh);--on-background-color: var(--on-background-color-SCOPED-IN-query-BMUh);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-query-BMUh);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-query-BMUh);--table-background-color: var(--table-background-color-SCOPED-IN-query-BMUh);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-query-BMUh);--is-debug: var(--is-debug-SCOPED-IN-query-BMUh)}:host templates-index{padding-left:0;box-sizing:border-box;--first-content-height: calc(var(--is-debug-SCOPED-IN-query-BMUh) * 300px);transition:padding-left .3s}:host templates-index div[navDashboard]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:16px;box-sizing:border-box}:host templates-index div[navDashboard] ng-atomic-form-section-builder{--horizontal-padding: 0}\n"], dependencies: [{ kind: "component", type: IndexTemplate, selector: "templates-index" }, { kind: "component", type: RouterOutletFrame, selector: "frames-router-outlet", outputs: ["events"] }, { kind: "component", type: NgAtomicFormSectionBuilder, selector: "ng-atomic-form-section-builder", inputs: ["form", "formFlatExcludes", "fieldMap", "fieldKeys"] }, { kind: "component", type: QueryFormGroup, selector: "groups-query-form", inputs: ["form", "keyActions"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
691
+ `, isInline: true, styles: ["@charset \"UTF-8\";:host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-query-AHMI: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-query-AHMI: var(--page-width-lv3);--primary-color-SCOPED-IN-query-AHMI: var(--primary-color);--on-primary-color-SCOPED-IN-query-AHMI: var(--on-primary-color);--surface-color-SCOPED-IN-query-AHMI: var(--surface-color);--on-surface-color-SCOPED-IN-query-AHMI: var(--on-surface-color);--on-background-color-SCOPED-IN-query-AHMI: var(--on-background-color);--background-color-SCOPED-IN-query-AHMI: var(--background-color);--navigator-background-color-SCOPED-IN-query-AHMI: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-query-AHMI: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-query-AHMI: var(--table-background-color);--table-on-background-color-SCOPED-IN-query-AHMI: var(--table-on-background-color);--is-debug: 1;--is-debug-SCOPED-IN-query-AHMI: var(--is-debug)}:host *{--primary-color: var(--primary-color-SCOPED-IN-query-AHMI);--on-primary-color: var(--on-primary-color-SCOPED-IN-query-AHMI);--surface-color: var(--surface-color-SCOPED-IN-query-AHMI);--on-surface-color: var(--on-surface-color-SCOPED-IN-query-AHMI);--background-color: var(--background-color-SCOPED-IN-query-AHMI);--on-background-color: var(--on-background-color-SCOPED-IN-query-AHMI);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-query-AHMI);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-query-AHMI);--table-background-color: var(--table-background-color-SCOPED-IN-query-AHMI);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-query-AHMI);--is-debug: var(--is-debug-SCOPED-IN-query-AHMI)}:host templates-index{padding-left:0;box-sizing:border-box;--first-content-height: calc(var(--is-debug-SCOPED-IN-query-AHMI) * 300px);transition:padding-left .3s}:host templates-index div[navDashboard]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:16px;box-sizing:border-box}:host templates-index div[navDashboard] ng-atomic-form-section-builder{--horizontal-padding: 0}\n"], dependencies: [{ kind: "component", type: IndexTemplate, selector: "templates-index" }, { kind: "component", type: RouterOutletFrame, selector: "frames-router-outlet", outputs: ["events"] }, { kind: "component", type: NgAtomicFormSectionBuilder, selector: "ng-atomic-form-section-builder", inputs: ["form", "formFlatExcludes", "fieldMap", "fieldKeys"] }, { kind: "component", type: QueryFormGroup, selector: "groups-query-form", inputs: ["form", "keyActions"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
692
692
  }
693
693
  __decorate([
694
694
  Effect(IndexTemplateStore.ActionId.BACK),
@@ -769,7 +769,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
769
769
  'pageSizeOptions'
770
770
  ]
771
771
  },
772
- ], styles: ["@charset \"UTF-8\";:host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-query-BMUh: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-query-BMUh: var(--page-width-lv3);--primary-color-SCOPED-IN-query-BMUh: var(--primary-color);--on-primary-color-SCOPED-IN-query-BMUh: var(--on-primary-color);--surface-color-SCOPED-IN-query-BMUh: var(--surface-color);--on-surface-color-SCOPED-IN-query-BMUh: var(--on-surface-color);--on-background-color-SCOPED-IN-query-BMUh: var(--on-background-color);--background-color-SCOPED-IN-query-BMUh: var(--background-color);--navigator-background-color-SCOPED-IN-query-BMUh: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-query-BMUh: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-query-BMUh: var(--table-background-color);--table-on-background-color-SCOPED-IN-query-BMUh: var(--table-on-background-color);--is-debug: 1;--is-debug-SCOPED-IN-query-BMUh: var(--is-debug)}:host *{--primary-color: var(--primary-color-SCOPED-IN-query-BMUh);--on-primary-color: var(--on-primary-color-SCOPED-IN-query-BMUh);--surface-color: var(--surface-color-SCOPED-IN-query-BMUh);--on-surface-color: var(--on-surface-color-SCOPED-IN-query-BMUh);--background-color: var(--background-color-SCOPED-IN-query-BMUh);--on-background-color: var(--on-background-color-SCOPED-IN-query-BMUh);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-query-BMUh);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-query-BMUh);--table-background-color: var(--table-background-color-SCOPED-IN-query-BMUh);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-query-BMUh);--is-debug: var(--is-debug-SCOPED-IN-query-BMUh)}:host templates-index{padding-left:0;box-sizing:border-box;--first-content-height: calc(var(--is-debug-SCOPED-IN-query-BMUh) * 300px);transition:padding-left .3s}:host templates-index div[navDashboard]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:16px;box-sizing:border-box}:host templates-index div[navDashboard] ng-atomic-form-section-builder{--horizontal-padding: 0}\n"] }]
772
+ ], styles: ["@charset \"UTF-8\";:host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-query-AHMI: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-query-AHMI: var(--page-width-lv3);--primary-color-SCOPED-IN-query-AHMI: var(--primary-color);--on-primary-color-SCOPED-IN-query-AHMI: var(--on-primary-color);--surface-color-SCOPED-IN-query-AHMI: var(--surface-color);--on-surface-color-SCOPED-IN-query-AHMI: var(--on-surface-color);--on-background-color-SCOPED-IN-query-AHMI: var(--on-background-color);--background-color-SCOPED-IN-query-AHMI: var(--background-color);--navigator-background-color-SCOPED-IN-query-AHMI: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-query-AHMI: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-query-AHMI: var(--table-background-color);--table-on-background-color-SCOPED-IN-query-AHMI: var(--table-on-background-color);--is-debug: 1;--is-debug-SCOPED-IN-query-AHMI: var(--is-debug)}:host *{--primary-color: var(--primary-color-SCOPED-IN-query-AHMI);--on-primary-color: var(--on-primary-color-SCOPED-IN-query-AHMI);--surface-color: var(--surface-color-SCOPED-IN-query-AHMI);--on-surface-color: var(--on-surface-color-SCOPED-IN-query-AHMI);--background-color: var(--background-color-SCOPED-IN-query-AHMI);--on-background-color: var(--on-background-color-SCOPED-IN-query-AHMI);--navigator-background-color: var(--navigator-background-color-SCOPED-IN-query-AHMI);--navigator-on-background-color: var(--navigator-on-background-color-SCOPED-IN-query-AHMI);--table-background-color: var(--table-background-color-SCOPED-IN-query-AHMI);--table-on-background-color: var(--table-on-background-color-SCOPED-IN-query-AHMI);--is-debug: var(--is-debug-SCOPED-IN-query-AHMI)}:host templates-index{padding-left:0;box-sizing:border-box;--first-content-height: calc(var(--is-debug-SCOPED-IN-query-AHMI) * 300px);transition:padding-left .3s}:host templates-index div[navDashboard]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;padding:16px;box-sizing:border-box}:host templates-index div[navDashboard] ng-atomic-form-section-builder{--horizontal-padding: 0}\n"] }]
773
773
  }], ctorParameters: () => [], propDecorators: { template: [{ type: i0.ViewChild, args: [i0.forwardRef(() => IndexTemplate), { isSignal: true }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], back: [], navigateToIframe: [], expandPage: [], itemClick: [] } });
774
774
 
775
775
  /**
@@ -104,7 +104,7 @@ class ThreadPage extends NgAtomicComponent {
104
104
  (action)="dispatch($event)"
105
105
  />
106
106
  </frames-router-outlet>
107
- `, isInline: true, styles: [":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-thread-SzUz: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-thread-SzUz: var(--page-width-lv3);--primary-color-SCOPED-IN-thread-SzUz: var(--primary-color);--on-primary-color-SCOPED-IN-thread-SzUz: var(--on-primary-color);--surface-color-SCOPED-IN-thread-SzUz: var(--surface-color);--on-surface-color-SCOPED-IN-thread-SzUz: var(--on-surface-color);--on-background-color-SCOPED-IN-thread-SzUz: var(--on-background-color);--background-color-SCOPED-IN-thread-SzUz: var(--background-color);--navigator-background-color-SCOPED-IN-thread-SzUz: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-thread-SzUz: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-thread-SzUz: var(--table-background-color);--table-on-background-color-SCOPED-IN-thread-SzUz: var(--table-on-background-color)}:host .template{width:var(--page-width-lv1-SCOPED-IN-thread-SzUz)}:host .chat-container{display:flex;flex-direction:column;height:100%}:host .message{padding:10px;border-bottom:1px solid #ccc}\n"], dependencies: [{ kind: "component", type: RouterOutletFrame, selector: "frames-router-outlet", outputs: ["events"] }, { kind: "component", type: ThreadTemplate, selector: "templates-messages" }] });
107
+ `, isInline: true, styles: [":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-thread-dcQA: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-thread-dcQA: var(--page-width-lv3);--primary-color-SCOPED-IN-thread-dcQA: var(--primary-color);--on-primary-color-SCOPED-IN-thread-dcQA: var(--on-primary-color);--surface-color-SCOPED-IN-thread-dcQA: var(--surface-color);--on-surface-color-SCOPED-IN-thread-dcQA: var(--on-surface-color);--on-background-color-SCOPED-IN-thread-dcQA: var(--on-background-color);--background-color-SCOPED-IN-thread-dcQA: var(--background-color);--navigator-background-color-SCOPED-IN-thread-dcQA: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-thread-dcQA: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-thread-dcQA: var(--table-background-color);--table-on-background-color-SCOPED-IN-thread-dcQA: var(--table-on-background-color)}:host .template{width:var(--page-width-lv1-SCOPED-IN-thread-dcQA)}:host .chat-container{display:flex;flex-direction:column;height:100%}:host .message{padding:10px;border-bottom:1px solid #ccc}\n"], dependencies: [{ kind: "component", type: RouterOutletFrame, selector: "frames-router-outlet", outputs: ["events"] }, { kind: "component", type: ThreadTemplate, selector: "templates-messages" }] });
108
108
  }
109
109
  __decorate([
110
110
  Effect(ActionId.SEND_MESSAGE),
@@ -137,7 +137,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
137
137
  'messages',
138
138
  ]
139
139
  },
140
- ], styles: [":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-thread-SzUz: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-thread-SzUz: var(--page-width-lv3);--primary-color-SCOPED-IN-thread-SzUz: var(--primary-color);--on-primary-color-SCOPED-IN-thread-SzUz: var(--on-primary-color);--surface-color-SCOPED-IN-thread-SzUz: var(--surface-color);--on-surface-color-SCOPED-IN-thread-SzUz: var(--on-surface-color);--on-background-color-SCOPED-IN-thread-SzUz: var(--on-background-color);--background-color-SCOPED-IN-thread-SzUz: var(--background-color);--navigator-background-color-SCOPED-IN-thread-SzUz: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-thread-SzUz: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-thread-SzUz: var(--table-background-color);--table-on-background-color-SCOPED-IN-thread-SzUz: var(--table-on-background-color)}:host .template{width:var(--page-width-lv1-SCOPED-IN-thread-SzUz)}:host .chat-container{display:flex;flex-direction:column;height:100%}:host .message{padding:10px;border-bottom:1px solid #ccc}\n"] }]
140
+ ], styles: [":host{width:100%;height:100%;display:block;--page-width-lv1-SCOPED-IN-thread-dcQA: var(--page-width-lv1);--page-width-lv3-SCOPED-IN-thread-dcQA: var(--page-width-lv3);--primary-color-SCOPED-IN-thread-dcQA: var(--primary-color);--on-primary-color-SCOPED-IN-thread-dcQA: var(--on-primary-color);--surface-color-SCOPED-IN-thread-dcQA: var(--surface-color);--on-surface-color-SCOPED-IN-thread-dcQA: var(--on-surface-color);--on-background-color-SCOPED-IN-thread-dcQA: var(--on-background-color);--background-color-SCOPED-IN-thread-dcQA: var(--background-color);--navigator-background-color-SCOPED-IN-thread-dcQA: var(--navigator-background-color);--navigator-on-background-color-SCOPED-IN-thread-dcQA: var(--navigator-on-background-color);--table-background-color-SCOPED-IN-thread-dcQA: var(--table-background-color);--table-on-background-color-SCOPED-IN-thread-dcQA: var(--table-on-background-color)}:host .template{width:var(--page-width-lv1-SCOPED-IN-thread-dcQA)}:host .chat-container{display:flex;flex-direction:column;height:100%}:host .message{padding:10px;border-bottom:1px solid #ccc}\n"] }]
141
141
  }], propDecorators: { onCompositionStart: [{
142
142
  type: HostListener,
143
143
  args: ['compositionstart', ['$event']]
@@ -4,11 +4,7 @@ import { QueryPageStore, QueryPage } from '@xxmachina/components/pages/query';
4
4
  import { injectOne } from '@ng-atomic/common/stores/entities';
5
5
  import { injectRouteParam } from '@ng-atomic/common/utils';
6
6
  import { applyToInput } from '@ng-atomic/core';
7
- import dayjs from 'dayjs';
8
7
 
9
- function buildYearMonthColumns(startYearMonth, months) {
10
- return Array.from({ length: months }, (_, i) => dayjs(startYearMonth).add(i, 'month').format('YYYY/MM'));
11
- }
12
8
  const routes = [
13
9
  {
14
10
  path: '',
@@ -420,7 +420,7 @@ class AgentTemplate extends NgAtomicComponent {
420
420
  </div>
421
421
  }
422
422
  </frames-scroll>
423
- `, isInline: true, styles: [":host{--text: #e0e0e0;--text-SCOPED-IN-entrance-M6Aw: var(--text);--user: #33ff33;--user-SCOPED-IN-entrance-M6Aw: var(--user);--sys: #888;--sys-SCOPED-IN-entrance-M6Aw: var(--sys);--accent: #ff79c6;--accent-SCOPED-IN-entrance-M6Aw: var(--accent);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-entrance-M6Aw: var(--border)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:host{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:transparent;font-family:SF Mono,Monaco,monospace;container-type:inline-size;container-name:agent-container;transition:all .3s ease}.terminal-window{--height: 100%;--contents-gap: 0;width:100%;max-width:900px;height:600px;background:#0a0a0a;border:1px solid var(--border-SCOPED-IN-entrance-M6Aw);border-radius:8px;box-shadow:0 20px 40px #0000004d;animation:fadeIn .3s;transition:all .3s ease}.terminal-header{display:flex;justify-content:space-between;align-items:center;height:56px;min-height:56px;flex-shrink:0;padding:0;background:#1a1a1a99;border-bottom:1px solid var(--border-SCOPED-IN-entrance-M6Aw);transition:all .3s ease;position:relative}.terminal-header .close-button{color:var(--sys-SCOPED-IN-entrance-M6Aw);margin-right:.5rem;opacity:.7}.terminal-header .close-button:hover{color:var(--text-SCOPED-IN-entrance-M6Aw);opacity:1}.terminal-header .terminal-title{font-size:13px;color:var(--text-SCOPED-IN-entrance-M6Aw);font-weight:500;flex:1}.terminal-header .terminal-status{font-size:12px;color:var(--sys-SCOPED-IN-entrance-M6Aw);opacity:.7}.terminal-display{width:100%;height:100%;background:#0a0a0a}.input-area{background:#000000e6;border-top:1px solid var(--border-SCOPED-IN-entrance-M6Aw);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s ease;padding:16px 20px}.input-line{display:block;position:relative}.input-line .input-prefix{display:none}.input-line .textarea-wrapper{display:flex;align-items:flex-start;position:relative;border:1px solid rgba(255,255,255,.2);border-radius:4px;transition:border-color .2s ease}.input-line .textarea-wrapper:focus-within{border-color:#fff6}.input-line .textarea-wrapper .arrow-prefix{color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;padding:12px 0 12px 16px;flex-shrink:0;pointer-events:none}.input-line .textarea-wrapper .input-container{flex:1;position:relative;overflow:hidden}.input-line .textarea-wrapper .terminal-input{width:100%;background:transparent;border:none;outline:none;color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;caret-color:transparent;padding:12px 16px 12px 8px;transition:none;resize:none;height:44px;min-height:44px;max-height:200px;overflow-y:auto;overflow-x:hidden;line-height:20px;box-sizing:border-box;white-space:pre-wrap;word-wrap:break-word}.input-line .textarea-wrapper .terminal-input::selection{background:#ffffff4d}.input-line .textarea-wrapper .terminal-input{caret-shape:block}.input-line .textarea-wrapper .terminal-input:disabled{opacity:.5;cursor:not-allowed}.input-line .textarea-wrapper .terminal-input:-webkit-autofill{-webkit-text-fill-color:#e0e0e0;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.9) inset}.input-line .textarea-wrapper .terminal-input::placeholder{color:#ffffff4d;opacity:1}.input-line .textarea-wrapper .block-cursor{position:absolute;width:10px;height:20px;background:#e0e0e0;opacity:0;pointer-events:none}.input-line .textarea-wrapper .block-cursor.visible{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:.8}51%,to{opacity:0}}:host:has(.terminal-window){height:100vh;height:100dvh;overflow-y:auto}@container agent-container (max-width: 600px){:host{padding:0;padding-top:env(safe-area-inset-top)}.terminal-window{height:100%;max-height:100vh;max-height:100dvh;max-width:100%;border-radius:0;border:none;box-shadow:none}.terminal-header{height:56px;padding:0}.terminal-header .terminal-title{font-size:12px}.terminal-header .terminal-status{font-size:11px}.terminal-header .close-button{margin-right:.25rem}}@container agent-container (min-width: 601px) and (max-width: 900px){.terminal-window{max-width:100%;height:100%;border-radius:0}}@container agent-container (max-width: 400px){.terminal-header{height:56px;padding:0}.terminal-header .close-button{margin-right:.2rem}.input-area{padding:12px 16px}.textarea-wrapper .arrow-prefix{font-size:13px;padding:10px 0 10px 12px}.textarea-wrapper .terminal-input{font-size:12px;padding:10px 12px 10px 6px;height:40px;min-height:40px;line-height:20px}}.ascii-art{font-family:Consolas,Monaco,Liberation Mono,Menlo,Courier New,monospace!important;font-size:10px!important;line-height:1.1!important;letter-spacing:0!important;font-weight:400!important;margin:1em 0!important;padding:1em!important;white-space:pre!important;overflow-x:auto!important;overflow-y:hidden!important;display:block!important;width:fit-content!important;background:#ffffff08;border:1px solid var(--border-SCOPED-IN-entrance-M6Aw);border-radius:4px;color:var(--accent-SCOPED-IN-entrance-M6Aw)!important;opacity:.9;text-shadow:0 0 10px var(--accent-SCOPED-IN-entrance-M6Aw),0 0 20px var(--accent-SCOPED-IN-entrance-M6Aw);-webkit-font-smoothing:none!important;-moz-osx-font-smoothing:unset!important;font-variant-ligatures:none!important;text-rendering:optimizeLegibility!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ScrollFrame, selector: "frames-scroll" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: XtermOrganism, selector: "organisms-xterm", outputs: ["terminalReady", "githubLinkClick"] }, { kind: "directive", type: NavigatorOrganismStore, selector: "organisms-navigator", inputs: ["startActions", "endActions", "title"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
423
+ `, isInline: true, styles: [":host{--text: #e0e0e0;--text-SCOPED-IN-entrance-SNRl: var(--text);--user: #33ff33;--user-SCOPED-IN-entrance-SNRl: var(--user);--sys: #888;--sys-SCOPED-IN-entrance-SNRl: var(--sys);--accent: #ff79c6;--accent-SCOPED-IN-entrance-SNRl: var(--accent);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-entrance-SNRl: var(--border)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:host{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:transparent;font-family:SF Mono,Monaco,monospace;container-type:inline-size;container-name:agent-container;transition:all .3s ease}.terminal-window{--height: 100%;--contents-gap: 0;width:100%;max-width:900px;height:600px;background:#0a0a0a;border:1px solid var(--border-SCOPED-IN-entrance-SNRl);border-radius:8px;box-shadow:0 20px 40px #0000004d;animation:fadeIn .3s;transition:all .3s ease}.terminal-header{display:flex;justify-content:space-between;align-items:center;height:56px;min-height:56px;flex-shrink:0;padding:0;background:#1a1a1a99;border-bottom:1px solid var(--border-SCOPED-IN-entrance-SNRl);transition:all .3s ease;position:relative}.terminal-header .close-button{color:var(--sys-SCOPED-IN-entrance-SNRl);margin-right:.5rem;opacity:.7}.terminal-header .close-button:hover{color:var(--text-SCOPED-IN-entrance-SNRl);opacity:1}.terminal-header .terminal-title{font-size:13px;color:var(--text-SCOPED-IN-entrance-SNRl);font-weight:500;flex:1}.terminal-header .terminal-status{font-size:12px;color:var(--sys-SCOPED-IN-entrance-SNRl);opacity:.7}.terminal-display{width:100%;height:100%;background:#0a0a0a}.input-area{background:#000000e6;border-top:1px solid var(--border-SCOPED-IN-entrance-SNRl);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s ease;padding:16px 20px}.input-line{display:block;position:relative}.input-line .input-prefix{display:none}.input-line .textarea-wrapper{display:flex;align-items:flex-start;position:relative;border:1px solid rgba(255,255,255,.2);border-radius:4px;transition:border-color .2s ease}.input-line .textarea-wrapper:focus-within{border-color:#fff6}.input-line .textarea-wrapper .arrow-prefix{color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;padding:12px 0 12px 16px;flex-shrink:0;pointer-events:none}.input-line .textarea-wrapper .input-container{flex:1;position:relative;overflow:hidden}.input-line .textarea-wrapper .terminal-input{width:100%;background:transparent;border:none;outline:none;color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;caret-color:transparent;padding:12px 16px 12px 8px;transition:none;resize:none;height:44px;min-height:44px;max-height:200px;overflow-y:auto;overflow-x:hidden;line-height:20px;box-sizing:border-box;white-space:pre-wrap;word-wrap:break-word}.input-line .textarea-wrapper .terminal-input::selection{background:#ffffff4d}.input-line .textarea-wrapper .terminal-input{caret-shape:block}.input-line .textarea-wrapper .terminal-input:disabled{opacity:.5;cursor:not-allowed}.input-line .textarea-wrapper .terminal-input:-webkit-autofill{-webkit-text-fill-color:#e0e0e0;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.9) inset}.input-line .textarea-wrapper .terminal-input::placeholder{color:#ffffff4d;opacity:1}.input-line .textarea-wrapper .block-cursor{position:absolute;width:10px;height:20px;background:#e0e0e0;opacity:0;pointer-events:none}.input-line .textarea-wrapper .block-cursor.visible{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:.8}51%,to{opacity:0}}:host:has(.terminal-window){height:100vh;height:100dvh;overflow-y:auto}@container agent-container (max-width: 600px){:host{padding:0;padding-top:env(safe-area-inset-top)}.terminal-window{height:100%;max-height:100vh;max-height:100dvh;max-width:100%;border-radius:0;border:none;box-shadow:none}.terminal-header{height:56px;padding:0}.terminal-header .terminal-title{font-size:12px}.terminal-header .terminal-status{font-size:11px}.terminal-header .close-button{margin-right:.25rem}}@container agent-container (min-width: 601px) and (max-width: 900px){.terminal-window{max-width:100%;height:100%;border-radius:0}}@container agent-container (max-width: 400px){.terminal-header{height:56px;padding:0}.terminal-header .close-button{margin-right:.2rem}.input-area{padding:12px 16px}.textarea-wrapper .arrow-prefix{font-size:13px;padding:10px 0 10px 12px}.textarea-wrapper .terminal-input{font-size:12px;padding:10px 12px 10px 6px;height:40px;min-height:40px;line-height:20px}}.ascii-art{font-family:Consolas,Monaco,Liberation Mono,Menlo,Courier New,monospace!important;font-size:10px!important;line-height:1.1!important;letter-spacing:0!important;font-weight:400!important;margin:1em 0!important;padding:1em!important;white-space:pre!important;overflow-x:auto!important;overflow-y:hidden!important;display:block!important;width:fit-content!important;background:#ffffff08;border:1px solid var(--border-SCOPED-IN-entrance-SNRl);border-radius:4px;color:var(--accent-SCOPED-IN-entrance-SNRl)!important;opacity:.9;text-shadow:0 0 10px var(--accent-SCOPED-IN-entrance-SNRl),0 0 20px var(--accent-SCOPED-IN-entrance-SNRl);-webkit-font-smoothing:none!important;-moz-osx-font-smoothing:unset!important;font-variant-ligatures:none!important;text-rendering:optimizeLegibility!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ScrollFrame, selector: "frames-scroll" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: XtermOrganism, selector: "organisms-xterm", outputs: ["terminalReady", "githubLinkClick"] }, { kind: "directive", type: NavigatorOrganismStore, selector: "organisms-navigator", inputs: ["startActions", "endActions", "title"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
424
424
  }
425
425
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: AgentTemplate, decorators: [{
426
426
  type: Component,
@@ -505,7 +505,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
505
505
  'fieldMap',
506
506
  ],
507
507
  },
508
- ], styles: [":host{--text: #e0e0e0;--text-SCOPED-IN-entrance-M6Aw: var(--text);--user: #33ff33;--user-SCOPED-IN-entrance-M6Aw: var(--user);--sys: #888;--sys-SCOPED-IN-entrance-M6Aw: var(--sys);--accent: #ff79c6;--accent-SCOPED-IN-entrance-M6Aw: var(--accent);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-entrance-M6Aw: var(--border)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:host{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:transparent;font-family:SF Mono,Monaco,monospace;container-type:inline-size;container-name:agent-container;transition:all .3s ease}.terminal-window{--height: 100%;--contents-gap: 0;width:100%;max-width:900px;height:600px;background:#0a0a0a;border:1px solid var(--border-SCOPED-IN-entrance-M6Aw);border-radius:8px;box-shadow:0 20px 40px #0000004d;animation:fadeIn .3s;transition:all .3s ease}.terminal-header{display:flex;justify-content:space-between;align-items:center;height:56px;min-height:56px;flex-shrink:0;padding:0;background:#1a1a1a99;border-bottom:1px solid var(--border-SCOPED-IN-entrance-M6Aw);transition:all .3s ease;position:relative}.terminal-header .close-button{color:var(--sys-SCOPED-IN-entrance-M6Aw);margin-right:.5rem;opacity:.7}.terminal-header .close-button:hover{color:var(--text-SCOPED-IN-entrance-M6Aw);opacity:1}.terminal-header .terminal-title{font-size:13px;color:var(--text-SCOPED-IN-entrance-M6Aw);font-weight:500;flex:1}.terminal-header .terminal-status{font-size:12px;color:var(--sys-SCOPED-IN-entrance-M6Aw);opacity:.7}.terminal-display{width:100%;height:100%;background:#0a0a0a}.input-area{background:#000000e6;border-top:1px solid var(--border-SCOPED-IN-entrance-M6Aw);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s ease;padding:16px 20px}.input-line{display:block;position:relative}.input-line .input-prefix{display:none}.input-line .textarea-wrapper{display:flex;align-items:flex-start;position:relative;border:1px solid rgba(255,255,255,.2);border-radius:4px;transition:border-color .2s ease}.input-line .textarea-wrapper:focus-within{border-color:#fff6}.input-line .textarea-wrapper .arrow-prefix{color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;padding:12px 0 12px 16px;flex-shrink:0;pointer-events:none}.input-line .textarea-wrapper .input-container{flex:1;position:relative;overflow:hidden}.input-line .textarea-wrapper .terminal-input{width:100%;background:transparent;border:none;outline:none;color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;caret-color:transparent;padding:12px 16px 12px 8px;transition:none;resize:none;height:44px;min-height:44px;max-height:200px;overflow-y:auto;overflow-x:hidden;line-height:20px;box-sizing:border-box;white-space:pre-wrap;word-wrap:break-word}.input-line .textarea-wrapper .terminal-input::selection{background:#ffffff4d}.input-line .textarea-wrapper .terminal-input{caret-shape:block}.input-line .textarea-wrapper .terminal-input:disabled{opacity:.5;cursor:not-allowed}.input-line .textarea-wrapper .terminal-input:-webkit-autofill{-webkit-text-fill-color:#e0e0e0;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.9) inset}.input-line .textarea-wrapper .terminal-input::placeholder{color:#ffffff4d;opacity:1}.input-line .textarea-wrapper .block-cursor{position:absolute;width:10px;height:20px;background:#e0e0e0;opacity:0;pointer-events:none}.input-line .textarea-wrapper .block-cursor.visible{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:.8}51%,to{opacity:0}}:host:has(.terminal-window){height:100vh;height:100dvh;overflow-y:auto}@container agent-container (max-width: 600px){:host{padding:0;padding-top:env(safe-area-inset-top)}.terminal-window{height:100%;max-height:100vh;max-height:100dvh;max-width:100%;border-radius:0;border:none;box-shadow:none}.terminal-header{height:56px;padding:0}.terminal-header .terminal-title{font-size:12px}.terminal-header .terminal-status{font-size:11px}.terminal-header .close-button{margin-right:.25rem}}@container agent-container (min-width: 601px) and (max-width: 900px){.terminal-window{max-width:100%;height:100%;border-radius:0}}@container agent-container (max-width: 400px){.terminal-header{height:56px;padding:0}.terminal-header .close-button{margin-right:.2rem}.input-area{padding:12px 16px}.textarea-wrapper .arrow-prefix{font-size:13px;padding:10px 0 10px 12px}.textarea-wrapper .terminal-input{font-size:12px;padding:10px 12px 10px 6px;height:40px;min-height:40px;line-height:20px}}.ascii-art{font-family:Consolas,Monaco,Liberation Mono,Menlo,Courier New,monospace!important;font-size:10px!important;line-height:1.1!important;letter-spacing:0!important;font-weight:400!important;margin:1em 0!important;padding:1em!important;white-space:pre!important;overflow-x:auto!important;overflow-y:hidden!important;display:block!important;width:fit-content!important;background:#ffffff08;border:1px solid var(--border-SCOPED-IN-entrance-M6Aw);border-radius:4px;color:var(--accent-SCOPED-IN-entrance-M6Aw)!important;opacity:.9;text-shadow:0 0 10px var(--accent-SCOPED-IN-entrance-M6Aw),0 0 20px var(--accent-SCOPED-IN-entrance-M6Aw);-webkit-font-smoothing:none!important;-moz-osx-font-smoothing:unset!important;font-variant-ligatures:none!important;text-rendering:optimizeLegibility!important}\n"] }]
508
+ ], styles: [":host{--text: #e0e0e0;--text-SCOPED-IN-entrance-SNRl: var(--text);--user: #33ff33;--user-SCOPED-IN-entrance-SNRl: var(--user);--sys: #888;--sys-SCOPED-IN-entrance-SNRl: var(--sys);--accent: #ff79c6;--accent-SCOPED-IN-entrance-SNRl: var(--accent);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-entrance-SNRl: var(--border)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:host{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:transparent;font-family:SF Mono,Monaco,monospace;container-type:inline-size;container-name:agent-container;transition:all .3s ease}.terminal-window{--height: 100%;--contents-gap: 0;width:100%;max-width:900px;height:600px;background:#0a0a0a;border:1px solid var(--border-SCOPED-IN-entrance-SNRl);border-radius:8px;box-shadow:0 20px 40px #0000004d;animation:fadeIn .3s;transition:all .3s ease}.terminal-header{display:flex;justify-content:space-between;align-items:center;height:56px;min-height:56px;flex-shrink:0;padding:0;background:#1a1a1a99;border-bottom:1px solid var(--border-SCOPED-IN-entrance-SNRl);transition:all .3s ease;position:relative}.terminal-header .close-button{color:var(--sys-SCOPED-IN-entrance-SNRl);margin-right:.5rem;opacity:.7}.terminal-header .close-button:hover{color:var(--text-SCOPED-IN-entrance-SNRl);opacity:1}.terminal-header .terminal-title{font-size:13px;color:var(--text-SCOPED-IN-entrance-SNRl);font-weight:500;flex:1}.terminal-header .terminal-status{font-size:12px;color:var(--sys-SCOPED-IN-entrance-SNRl);opacity:.7}.terminal-display{width:100%;height:100%;background:#0a0a0a}.input-area{background:#000000e6;border-top:1px solid var(--border-SCOPED-IN-entrance-SNRl);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s ease;padding:16px 20px}.input-line{display:block;position:relative}.input-line .input-prefix{display:none}.input-line .textarea-wrapper{display:flex;align-items:flex-start;position:relative;border:1px solid rgba(255,255,255,.2);border-radius:4px;transition:border-color .2s ease}.input-line .textarea-wrapper:focus-within{border-color:#fff6}.input-line .textarea-wrapper .arrow-prefix{color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;padding:12px 0 12px 16px;flex-shrink:0;pointer-events:none}.input-line .textarea-wrapper .input-container{flex:1;position:relative;overflow:hidden}.input-line .textarea-wrapper .terminal-input{width:100%;background:transparent;border:none;outline:none;color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;caret-color:transparent;padding:12px 16px 12px 8px;transition:none;resize:none;height:44px;min-height:44px;max-height:200px;overflow-y:auto;overflow-x:hidden;line-height:20px;box-sizing:border-box;white-space:pre-wrap;word-wrap:break-word}.input-line .textarea-wrapper .terminal-input::selection{background:#ffffff4d}.input-line .textarea-wrapper .terminal-input{caret-shape:block}.input-line .textarea-wrapper .terminal-input:disabled{opacity:.5;cursor:not-allowed}.input-line .textarea-wrapper .terminal-input:-webkit-autofill{-webkit-text-fill-color:#e0e0e0;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.9) inset}.input-line .textarea-wrapper .terminal-input::placeholder{color:#ffffff4d;opacity:1}.input-line .textarea-wrapper .block-cursor{position:absolute;width:10px;height:20px;background:#e0e0e0;opacity:0;pointer-events:none}.input-line .textarea-wrapper .block-cursor.visible{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:.8}51%,to{opacity:0}}:host:has(.terminal-window){height:100vh;height:100dvh;overflow-y:auto}@container agent-container (max-width: 600px){:host{padding:0;padding-top:env(safe-area-inset-top)}.terminal-window{height:100%;max-height:100vh;max-height:100dvh;max-width:100%;border-radius:0;border:none;box-shadow:none}.terminal-header{height:56px;padding:0}.terminal-header .terminal-title{font-size:12px}.terminal-header .terminal-status{font-size:11px}.terminal-header .close-button{margin-right:.25rem}}@container agent-container (min-width: 601px) and (max-width: 900px){.terminal-window{max-width:100%;height:100%;border-radius:0}}@container agent-container (max-width: 400px){.terminal-header{height:56px;padding:0}.terminal-header .close-button{margin-right:.2rem}.input-area{padding:12px 16px}.textarea-wrapper .arrow-prefix{font-size:13px;padding:10px 0 10px 12px}.textarea-wrapper .terminal-input{font-size:12px;padding:10px 12px 10px 6px;height:40px;min-height:40px;line-height:20px}}.ascii-art{font-family:Consolas,Monaco,Liberation Mono,Menlo,Courier New,monospace!important;font-size:10px!important;line-height:1.1!important;letter-spacing:0!important;font-weight:400!important;margin:1em 0!important;padding:1em!important;white-space:pre!important;overflow-x:auto!important;overflow-y:hidden!important;display:block!important;width:fit-content!important;background:#ffffff08;border:1px solid var(--border-SCOPED-IN-entrance-SNRl);border-radius:4px;color:var(--accent-SCOPED-IN-entrance-SNRl)!important;opacity:.9;text-shadow:0 0 10px var(--accent-SCOPED-IN-entrance-SNRl),0 0 20px var(--accent-SCOPED-IN-entrance-SNRl);-webkit-font-smoothing:none!important;-moz-osx-font-smoothing:unset!important;font-variant-ligatures:none!important;text-rendering:optimizeLegibility!important}\n"] }]
509
509
  }], propDecorators: { endActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "endActions", required: false }] }], hideInputArea: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideInputArea", required: false }] }], xtermComponent: [{ type: i0.ViewChild, args: ['xtermComponent', { isSignal: true }] }], inputField: [{ type: i0.ViewChild, args: ['inputField', { isSignal: true }] }], onWindowResize: [{
510
510
  type: HostListener,
511
511
  args: ['window:resize']
@@ -38,7 +38,7 @@ class MachinaIconButtonMenuTemplate extends NgAtomicComponent {
38
38
  </button>
39
39
  }
40
40
  </div>
41
- `, isInline: true, styles: [":host{width:100%;height:100%;background:#fff;display:block;--primary-color: #404040;--primary-color-SCOPED-IN-icon-button-menu-XVvM: var(--primary-color);--on-primary-color: #f0f0f0;--on-primary-color-SCOPED-IN-icon-button-menu-XVvM: var(--on-primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-icon-button-menu-XVvM: var(--secondary-color);--background-color: #000000;--background-color-SCOPED-IN-icon-button-menu-XVvM: var(--background-color);--on-background-color: #ffffff;--on-background-color-SCOPED-IN-icon-button-menu-XVvM: var(--on-background-color);--mat-icon-button-icon-color: #FEFEFE;--mat-icon-button-icon-color-SCOPED-IN-icon-button-menu-XVvM: var(--mat-icon-button-icon-color)}:host{display:flex;flex-direction:column;justify-content:space-between;align-items:center;width:100%;height:100%;background-color:var(--background-color-SCOPED-IN-icon-button-menu-XVvM);color:var(--on-background-color-SCOPED-IN-icon-button-menu-XVvM)}:host .top,:host .bottom{display:flex;flex-direction:column;justify-content:center;align-items:center}:host button{--mat-icon-color: var(--on-primary-color-SCOPED-IN-icon-button-menu-XVvM);cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: UserAvatarMenuMolecule, selector: "molecules-user-avatar-menu", inputs: ["signOutAction"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
41
+ `, isInline: true, styles: [":host{width:100%;height:100%;background:#fff;display:block;--primary-color: #404040;--primary-color-SCOPED-IN-icon-button-menu-hG4w: var(--primary-color);--on-primary-color: #f0f0f0;--on-primary-color-SCOPED-IN-icon-button-menu-hG4w: var(--on-primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-icon-button-menu-hG4w: var(--secondary-color);--background-color: #000000;--background-color-SCOPED-IN-icon-button-menu-hG4w: var(--background-color);--on-background-color: #ffffff;--on-background-color-SCOPED-IN-icon-button-menu-hG4w: var(--on-background-color);--mat-icon-button-icon-color: #FEFEFE;--mat-icon-button-icon-color-SCOPED-IN-icon-button-menu-hG4w: var(--mat-icon-button-icon-color)}:host{display:flex;flex-direction:column;justify-content:space-between;align-items:center;width:100%;height:100%;background-color:var(--background-color-SCOPED-IN-icon-button-menu-hG4w);color:var(--on-background-color-SCOPED-IN-icon-button-menu-hG4w)}:host .top,:host .bottom{display:flex;flex-direction:column;justify-content:center;align-items:center}:host button{--mat-icon-color: var(--on-primary-color-SCOPED-IN-icon-button-menu-hG4w);cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: UserAvatarMenuMolecule, selector: "molecules-user-avatar-menu", inputs: ["signOutAction"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
42
42
  }
43
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: MachinaIconButtonMenuTemplate, decorators: [{
44
44
  type: Component,
@@ -67,7 +67,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
67
67
  directive: IconButtonMenuTemplateStore,
68
68
  inputs: ['actions', 'bottomActions', 'topPadding'],
69
69
  },
70
- ], styles: [":host{width:100%;height:100%;background:#fff;display:block;--primary-color: #404040;--primary-color-SCOPED-IN-icon-button-menu-XVvM: var(--primary-color);--on-primary-color: #f0f0f0;--on-primary-color-SCOPED-IN-icon-button-menu-XVvM: var(--on-primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-icon-button-menu-XVvM: var(--secondary-color);--background-color: #000000;--background-color-SCOPED-IN-icon-button-menu-XVvM: var(--background-color);--on-background-color: #ffffff;--on-background-color-SCOPED-IN-icon-button-menu-XVvM: var(--on-background-color);--mat-icon-button-icon-color: #FEFEFE;--mat-icon-button-icon-color-SCOPED-IN-icon-button-menu-XVvM: var(--mat-icon-button-icon-color)}:host{display:flex;flex-direction:column;justify-content:space-between;align-items:center;width:100%;height:100%;background-color:var(--background-color-SCOPED-IN-icon-button-menu-XVvM);color:var(--on-background-color-SCOPED-IN-icon-button-menu-XVvM)}:host .top,:host .bottom{display:flex;flex-direction:column;justify-content:center;align-items:center}:host button{--mat-icon-color: var(--on-primary-color-SCOPED-IN-icon-button-menu-XVvM);cursor:pointer}\n"] }]
70
+ ], styles: [":host{width:100%;height:100%;background:#fff;display:block;--primary-color: #404040;--primary-color-SCOPED-IN-icon-button-menu-hG4w: var(--primary-color);--on-primary-color: #f0f0f0;--on-primary-color-SCOPED-IN-icon-button-menu-hG4w: var(--on-primary-color);--secondary-color: #B0B0B0;--secondary-color-SCOPED-IN-icon-button-menu-hG4w: var(--secondary-color);--background-color: #000000;--background-color-SCOPED-IN-icon-button-menu-hG4w: var(--background-color);--on-background-color: #ffffff;--on-background-color-SCOPED-IN-icon-button-menu-hG4w: var(--on-background-color);--mat-icon-button-icon-color: #FEFEFE;--mat-icon-button-icon-color-SCOPED-IN-icon-button-menu-hG4w: var(--mat-icon-button-icon-color)}:host{display:flex;flex-direction:column;justify-content:space-between;align-items:center;width:100%;height:100%;background-color:var(--background-color-SCOPED-IN-icon-button-menu-hG4w);color:var(--on-background-color-SCOPED-IN-icon-button-menu-hG4w)}:host .top,:host .bottom{display:flex;flex-direction:column;justify-content:center;align-items:center}:host button{--mat-icon-color: var(--on-primary-color-SCOPED-IN-icon-button-menu-hG4w);cursor:pointer}\n"] }]
71
71
  }] });
72
72
 
73
73
  /**
@@ -232,7 +232,7 @@ class SessionNavigatorOrganism extends NgAtomicComponent {
232
232
  }
233
233
  </div>
234
234
  </mat-toolbar>
235
- `, isInline: true, styles: [":host{display:block;--text: #e0e0e0;--text-SCOPED-IN-session-navigator-eMeK: var(--text);--sys: #888;--sys-SCOPED-IN-session-navigator-eMeK: var(--sys);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-session-navigator-eMeK: var(--border);--primary-color: #0f0f11;--primary-color-SCOPED-IN-session-navigator-eMeK: var(--primary-color);--on-primary-color: #e0e0e0;--on-primary-color-SCOPED-IN-session-navigator-eMeK: var(--on-primary-color);--secondary-color: #888;--secondary-color-SCOPED-IN-session-navigator-eMeK: var(--secondary-color);--on-secondary-color: #f0f0f0;--on-secondary-color-SCOPED-IN-session-navigator-eMeK: var(--on-secondary-color);--background-color: #0f0f11;--background-color-SCOPED-IN-session-navigator-eMeK: var(--background-color);--on-background-color: #e0e0e0;--on-background-color-SCOPED-IN-session-navigator-eMeK: var(--on-background-color)}:host{display:block;width:100%;height:56px}:host mat-toolbar{display:flex;width:100%;height:100%;padding:0!important;justify-content:space-between;align-items:center;overflow:hidden;transition:background .5s ease-in-out;background-color:var(--primary-color-SCOPED-IN-session-navigator-eMeK);color:var(--on-primary-color-SCOPED-IN-session-navigator-eMeK);border-bottom:1px solid var(--border-SCOPED-IN-session-navigator-eMeK)!important;font-family:SF Mono,Monaco,monospace!important;font-size:12px!important;--mat-toolbar-title-text-size: 12px !important;--mat-sys-title-large-size: 12px !important}:host mat-toolbar>div:first-child,:host mat-toolbar>div:last-child{flex:0 0 auto}:host mat-toolbar>div:nth-child(2){flex:1 1 auto;display:flex;justify-content:flex-start;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host mat-toolbar *:not(.mat-icon){font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar span,:host mat-toolbar div,:host mat-toolbar h1,:host mat-toolbar h2,:host mat-toolbar h3,:host mat-toolbar h4,:host mat-toolbar h5,:host mat-toolbar h6{font-size:12px!important;font-family:SF Mono,Monaco,monospace!important;color:var(--text-SCOPED-IN-session-navigator-eMeK)!important}:host mat-toolbar .mat-button{color:var(--sys-SCOPED-IN-session-navigator-eMeK)!important;font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar .mat-button:hover{color:var(--text-SCOPED-IN-session-navigator-eMeK)!important}:host mat-toolbar .mat-icon-button{color:var(--sys-SCOPED-IN-session-navigator-eMeK)!important;opacity:.7}:host mat-toolbar .mat-icon-button:hover{color:var(--text-SCOPED-IN-session-navigator-eMeK)!important;opacity:1}:host mat-toolbar .mat-icon-button .mat-icon{font-family:Material Icons!important;font-size:24px!important}:host div{display:flex;justify-content:center;align-items:center;line-height:1}:host atoms-menu-button{display:flex;align-items:center;line-height:1}@media(prefers-color-scheme:light){:host{--text: #333;--text-SCOPED-IN-session-navigator-eMeK: var(--text);--sys: #666;--sys-SCOPED-IN-session-navigator-eMeK: var(--sys);--border: #ddd;--border-SCOPED-IN-session-navigator-eMeK: var(--border)}}@media(max-width:600px){:host mat-toolbar span{font-size:11px!important}}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i1$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: MenuButtonAtomStore, selector: "atoms-menu-button, atoms-smart-menu-button", inputs: ["actions", "type", "action"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
235
+ `, isInline: true, styles: [":host{display:block;--text: #e0e0e0;--text-SCOPED-IN-session-navigator-0tpT: var(--text);--sys: #888;--sys-SCOPED-IN-session-navigator-0tpT: var(--sys);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-session-navigator-0tpT: var(--border);--primary-color: #0f0f11;--primary-color-SCOPED-IN-session-navigator-0tpT: var(--primary-color);--on-primary-color: #e0e0e0;--on-primary-color-SCOPED-IN-session-navigator-0tpT: var(--on-primary-color);--secondary-color: #888;--secondary-color-SCOPED-IN-session-navigator-0tpT: var(--secondary-color);--on-secondary-color: #f0f0f0;--on-secondary-color-SCOPED-IN-session-navigator-0tpT: var(--on-secondary-color);--background-color: #0f0f11;--background-color-SCOPED-IN-session-navigator-0tpT: var(--background-color);--on-background-color: #e0e0e0;--on-background-color-SCOPED-IN-session-navigator-0tpT: var(--on-background-color)}:host{display:block;width:100%;height:56px}:host mat-toolbar{display:flex;width:100%;height:100%;padding:0!important;justify-content:space-between;align-items:center;overflow:hidden;transition:background .5s ease-in-out;background-color:var(--primary-color-SCOPED-IN-session-navigator-0tpT);color:var(--on-primary-color-SCOPED-IN-session-navigator-0tpT);border-bottom:1px solid var(--border-SCOPED-IN-session-navigator-0tpT)!important;font-family:SF Mono,Monaco,monospace!important;font-size:12px!important;--mat-toolbar-title-text-size: 12px !important;--mat-sys-title-large-size: 12px !important}:host mat-toolbar>div:first-child,:host mat-toolbar>div:last-child{flex:0 0 auto}:host mat-toolbar>div:nth-child(2){flex:1 1 auto;display:flex;justify-content:flex-start;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host mat-toolbar *:not(.mat-icon){font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar span,:host mat-toolbar div,:host mat-toolbar h1,:host mat-toolbar h2,:host mat-toolbar h3,:host mat-toolbar h4,:host mat-toolbar h5,:host mat-toolbar h6{font-size:12px!important;font-family:SF Mono,Monaco,monospace!important;color:var(--text-SCOPED-IN-session-navigator-0tpT)!important}:host mat-toolbar .mat-button{color:var(--sys-SCOPED-IN-session-navigator-0tpT)!important;font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar .mat-button:hover{color:var(--text-SCOPED-IN-session-navigator-0tpT)!important}:host mat-toolbar .mat-icon-button{color:var(--sys-SCOPED-IN-session-navigator-0tpT)!important;opacity:.7}:host mat-toolbar .mat-icon-button:hover{color:var(--text-SCOPED-IN-session-navigator-0tpT)!important;opacity:1}:host mat-toolbar .mat-icon-button .mat-icon{font-family:Material Icons!important;font-size:24px!important}:host div{display:flex;justify-content:center;align-items:center;line-height:1}:host atoms-menu-button{display:flex;align-items:center;line-height:1}@media(prefers-color-scheme:light){:host{--text: #333;--text-SCOPED-IN-session-navigator-0tpT: var(--text);--sys: #666;--sys-SCOPED-IN-session-navigator-0tpT: var(--sys);--border: #ddd;--border-SCOPED-IN-session-navigator-0tpT: var(--border)}}@media(max-width:600px){:host mat-toolbar span{font-size:11px!important}}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i1$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: MenuButtonAtomStore, selector: "atoms-menu-button, atoms-smart-menu-button", inputs: ["actions", "type", "action"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
236
236
  }
237
237
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: SessionNavigatorOrganism, decorators: [{
238
238
  type: Component,
@@ -266,7 +266,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
266
266
  directive: SessionNavigatorOrganismStore,
267
267
  inputs: ['startActions', 'endActions', 'title'],
268
268
  }
269
- ], styles: [":host{display:block;--text: #e0e0e0;--text-SCOPED-IN-session-navigator-eMeK: var(--text);--sys: #888;--sys-SCOPED-IN-session-navigator-eMeK: var(--sys);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-session-navigator-eMeK: var(--border);--primary-color: #0f0f11;--primary-color-SCOPED-IN-session-navigator-eMeK: var(--primary-color);--on-primary-color: #e0e0e0;--on-primary-color-SCOPED-IN-session-navigator-eMeK: var(--on-primary-color);--secondary-color: #888;--secondary-color-SCOPED-IN-session-navigator-eMeK: var(--secondary-color);--on-secondary-color: #f0f0f0;--on-secondary-color-SCOPED-IN-session-navigator-eMeK: var(--on-secondary-color);--background-color: #0f0f11;--background-color-SCOPED-IN-session-navigator-eMeK: var(--background-color);--on-background-color: #e0e0e0;--on-background-color-SCOPED-IN-session-navigator-eMeK: var(--on-background-color)}:host{display:block;width:100%;height:56px}:host mat-toolbar{display:flex;width:100%;height:100%;padding:0!important;justify-content:space-between;align-items:center;overflow:hidden;transition:background .5s ease-in-out;background-color:var(--primary-color-SCOPED-IN-session-navigator-eMeK);color:var(--on-primary-color-SCOPED-IN-session-navigator-eMeK);border-bottom:1px solid var(--border-SCOPED-IN-session-navigator-eMeK)!important;font-family:SF Mono,Monaco,monospace!important;font-size:12px!important;--mat-toolbar-title-text-size: 12px !important;--mat-sys-title-large-size: 12px !important}:host mat-toolbar>div:first-child,:host mat-toolbar>div:last-child{flex:0 0 auto}:host mat-toolbar>div:nth-child(2){flex:1 1 auto;display:flex;justify-content:flex-start;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host mat-toolbar *:not(.mat-icon){font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar span,:host mat-toolbar div,:host mat-toolbar h1,:host mat-toolbar h2,:host mat-toolbar h3,:host mat-toolbar h4,:host mat-toolbar h5,:host mat-toolbar h6{font-size:12px!important;font-family:SF Mono,Monaco,monospace!important;color:var(--text-SCOPED-IN-session-navigator-eMeK)!important}:host mat-toolbar .mat-button{color:var(--sys-SCOPED-IN-session-navigator-eMeK)!important;font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar .mat-button:hover{color:var(--text-SCOPED-IN-session-navigator-eMeK)!important}:host mat-toolbar .mat-icon-button{color:var(--sys-SCOPED-IN-session-navigator-eMeK)!important;opacity:.7}:host mat-toolbar .mat-icon-button:hover{color:var(--text-SCOPED-IN-session-navigator-eMeK)!important;opacity:1}:host mat-toolbar .mat-icon-button .mat-icon{font-family:Material Icons!important;font-size:24px!important}:host div{display:flex;justify-content:center;align-items:center;line-height:1}:host atoms-menu-button{display:flex;align-items:center;line-height:1}@media(prefers-color-scheme:light){:host{--text: #333;--text-SCOPED-IN-session-navigator-eMeK: var(--text);--sys: #666;--sys-SCOPED-IN-session-navigator-eMeK: var(--sys);--border: #ddd;--border-SCOPED-IN-session-navigator-eMeK: var(--border)}}@media(max-width:600px){:host mat-toolbar span{font-size:11px!important}}\n"] }]
269
+ ], styles: [":host{display:block;--text: #e0e0e0;--text-SCOPED-IN-session-navigator-0tpT: var(--text);--sys: #888;--sys-SCOPED-IN-session-navigator-0tpT: var(--sys);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-session-navigator-0tpT: var(--border);--primary-color: #0f0f11;--primary-color-SCOPED-IN-session-navigator-0tpT: var(--primary-color);--on-primary-color: #e0e0e0;--on-primary-color-SCOPED-IN-session-navigator-0tpT: var(--on-primary-color);--secondary-color: #888;--secondary-color-SCOPED-IN-session-navigator-0tpT: var(--secondary-color);--on-secondary-color: #f0f0f0;--on-secondary-color-SCOPED-IN-session-navigator-0tpT: var(--on-secondary-color);--background-color: #0f0f11;--background-color-SCOPED-IN-session-navigator-0tpT: var(--background-color);--on-background-color: #e0e0e0;--on-background-color-SCOPED-IN-session-navigator-0tpT: var(--on-background-color)}:host{display:block;width:100%;height:56px}:host mat-toolbar{display:flex;width:100%;height:100%;padding:0!important;justify-content:space-between;align-items:center;overflow:hidden;transition:background .5s ease-in-out;background-color:var(--primary-color-SCOPED-IN-session-navigator-0tpT);color:var(--on-primary-color-SCOPED-IN-session-navigator-0tpT);border-bottom:1px solid var(--border-SCOPED-IN-session-navigator-0tpT)!important;font-family:SF Mono,Monaco,monospace!important;font-size:12px!important;--mat-toolbar-title-text-size: 12px !important;--mat-sys-title-large-size: 12px !important}:host mat-toolbar>div:first-child,:host mat-toolbar>div:last-child{flex:0 0 auto}:host mat-toolbar>div:nth-child(2){flex:1 1 auto;display:flex;justify-content:flex-start;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host mat-toolbar *:not(.mat-icon){font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar span,:host mat-toolbar div,:host mat-toolbar h1,:host mat-toolbar h2,:host mat-toolbar h3,:host mat-toolbar h4,:host mat-toolbar h5,:host mat-toolbar h6{font-size:12px!important;font-family:SF Mono,Monaco,monospace!important;color:var(--text-SCOPED-IN-session-navigator-0tpT)!important}:host mat-toolbar .mat-button{color:var(--sys-SCOPED-IN-session-navigator-0tpT)!important;font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar .mat-button:hover{color:var(--text-SCOPED-IN-session-navigator-0tpT)!important}:host mat-toolbar .mat-icon-button{color:var(--sys-SCOPED-IN-session-navigator-0tpT)!important;opacity:.7}:host mat-toolbar .mat-icon-button:hover{color:var(--text-SCOPED-IN-session-navigator-0tpT)!important;opacity:1}:host mat-toolbar .mat-icon-button .mat-icon{font-family:Material Icons!important;font-size:24px!important}:host div{display:flex;justify-content:center;align-items:center;line-height:1}:host atoms-menu-button{display:flex;align-items:center;line-height:1}@media(prefers-color-scheme:light){:host{--text: #333;--text-SCOPED-IN-session-navigator-0tpT: var(--text);--sys: #666;--sys-SCOPED-IN-session-navigator-0tpT: var(--sys);--border: #ddd;--border-SCOPED-IN-session-navigator-0tpT: var(--border)}}@media(max-width:600px){:host mat-toolbar span{font-size:11px!important}}\n"] }]
270
270
  }] });
271
271
 
272
272
  var InvoiceAppActionId;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xxmachina/components",
3
- "version": "19.140.4",
3
+ "version": "19.144.4",
4
4
  "license": "MIT",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
@@ -1,6 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { InjectionToken, AfterViewInit, OnDestroy, ElementRef } from '@angular/core';
3
- import { ILinkProvider, Terminal, ILink, ITerminalAddon } from '@xterm/xterm';
3
+ import { ILinkProvider, Terminal, ILink, ITerminalAddon, ITerminalOptions, ITerminalInitOnlyOptions } from '@xterm/xterm';
4
4
  import * as _ng_atomic_core from '@ng-atomic/core';
5
5
  import { InjectableComponent, NgAtomicComponent } from '@ng-atomic/core';
6
6
  import * as _ng_atomic_common_services_ui from '@ng-atomic/common/services/ui';
@@ -53,10 +53,12 @@ declare enum XtermActionId {
53
53
  RESIZED = "xterm:resized",
54
54
  GITHUB_LINK_CLICK = "xterm:github-link-click",
55
55
  FILE_LINK_CLICK = "xterm:file-link-click",
56
+ SESSION_MENTION_CLICK = "xterm:session-mention-click",
56
57
  FOCUS_INPUT_REQUEST = "xterm:focus-input-request"
57
58
  }
58
59
  interface XtermSessionContext {
59
60
  readonly getServerUUID?: () => string | undefined;
61
+ readonly getSessionId?: () => string | undefined;
60
62
  readonly getProxyToken?: () => string | undefined;
61
63
  readonly getDeployVersion?: () => string | null | undefined;
62
64
  readonly getProxyEndpoints?: () => ProxyEndpoints | undefined;
@@ -142,7 +144,6 @@ declare class XtermOrganismStore extends InjectableComponent {
142
144
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<XtermOrganismStore, "organisms-xterm", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "queryResult": { "alias": "queryResult"; "required": false; "isSignal": true; }; "useInteractiveTheme": { "alias": "useInteractiveTheme"; "required": false; "isSignal": true; }; "totalWritten": { "alias": "totalWritten"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
143
145
  }
144
146
 
145
- type ImageAddon = any;
146
147
  declare const DISPLAY_THEME: {
147
148
  background: string;
148
149
  foreground: string;
@@ -179,6 +180,9 @@ declare const INTERACTIVE_THEME: {
179
180
  brightCyan: string;
180
181
  brightWhite: string;
181
182
  };
183
+
184
+ type ImageAddon = any;
185
+
182
186
  declare class XtermOrganism extends NgAtomicComponent implements AfterViewInit, OnDestroy {
183
187
  readonly container: _angular_core.Signal<ElementRef<HTMLDivElement>>;
184
188
  protected readonly store: XtermOrganismStore;
@@ -190,9 +194,11 @@ declare class XtermOrganism extends NgAtomicComponent implements AfterViewInit,
190
194
  private imageAddon;
191
195
  private githubLinksAddon;
192
196
  private fileLinksAddon;
197
+ private sessionMentionLinksAddon;
193
198
  private resizeObserver?;
194
199
  private lastDataLength;
195
200
  private lastProcessedLength;
201
+ private lastWrittenData;
196
202
  private readonly terminalInitialized;
197
203
  readonly initialized: _angular_core.Signal<boolean>;
198
204
  readonly fitEpoch: _angular_core.WritableSignal<number>;
@@ -220,6 +226,7 @@ declare class XtermOrganism extends NgAtomicComponent implements AfterViewInit,
220
226
  scrollToTop(): void;
221
227
  scrollLines(lines: number): void;
222
228
  focus(): void;
229
+ clearSelection(): void;
223
230
  fit(): void;
224
231
  get cols(): number;
225
232
  get rows(): number;
@@ -256,6 +263,31 @@ declare class GitHubLinksAddon implements ITerminalAddon {
256
263
  dispose(): void;
257
264
  }
258
265
 
266
+ interface SessionMentionActivateHandler {
267
+ (event: MouseEvent, name: string): void;
268
+ }
269
+ interface SessionMention {
270
+ name: string;
271
+ start: number;
272
+ end: number;
273
+ }
274
+ declare function extractSessionMentions(text: string): SessionMention[];
275
+ declare class SessionMentionLinkProvider implements ILinkProvider {
276
+ private readonly _terminal;
277
+ private readonly _handler;
278
+ constructor(_terminal: Terminal, _handler: SessionMentionActivateHandler);
279
+ provideLinks(bufferLineNumber: number, callback: (links: ILink[] | undefined) => void): void;
280
+ private _mapStrIdx;
281
+ }
282
+
283
+ declare class SessionMentionLinksAddon implements ITerminalAddon {
284
+ private readonly _handler;
285
+ private _linkProvider?;
286
+ constructor(_handler: SessionMentionActivateHandler);
287
+ activate(terminal: Terminal): void;
288
+ dispose(): void;
289
+ }
290
+
259
291
  declare class WebLinksAddon implements ITerminalAddon {
260
292
  private readonly _handler?;
261
293
  private _linkProvider?;
@@ -278,6 +310,9 @@ declare class ProxyLinksAddon implements ITerminalAddon {
278
310
  dispose(): void;
279
311
  }
280
312
 
313
+ declare const USER_CONTENT_DOMAIN = "10p.io";
314
+ declare function buildUserContentOrigin(serverUUID: string, portOrService: number | string, deployVersion?: string | null, domain?: string): string;
315
+
281
316
  interface SvgToSixelOptions {
282
317
  width?: number;
283
318
  height?: number;
@@ -327,5 +362,36 @@ declare function recordCanvasCellMetric(metric: {
327
362
  }): void;
328
363
  declare function getCanvasCellMetric(fontSize?: number): CanvasCellMetric;
329
364
 
330
- export { CANONICAL_CELL_HEIGHT_RATIO, CANONICAL_CELL_WIDTH_RATIO, CANONICAL_FONT_FAMILY, CANONICAL_FONT_SIZE_PX, CANONICAL_LINE_HEIGHT, DISPLAY_THEME, GitHubLinkProvider, GitHubLinksAddon, INTERACTIVE_THEME, MAX_VIEWPORT_COLS, MAX_VIEWPORT_ROWS, MIN_VIEWPORT_COLS, MIN_VIEWPORT_ROWS, ProxyLinkProvider, ProxyLinksAddon, WebLinksAddon, XTERM_SESSION_CONTEXT, XtermActionId, XtermOrganism, XtermOrganismStore, appendUrlHandoff, asciiArtToSvg, clearCanvasCellMetricCache, computeFitToViewport, deployVersionToHostSuffix, encodeUrlHandoff, generateAsciiArt, getCanvasCellMetric, getMachinaAsciiArtSixel, measureCellMetric, openWebProxyForPort, recordCanvasCellMetric, svgToSixel, toProxyUrl };
331
- export type { DeployVersionGetter, EndpointsGetter, FitToViewportInput, FitToViewportResult, GitHubLinkActivateHandler, OpenWebProxyOptions, ProxyEndpoints, ProxyEnvGetter, ProxyEnvName, ServerUUIDGetter, SvgToSixelOptions, TokenGetter, XtermSessionContext };
365
+ interface TerminalWriteState {
366
+ readonly lastData: string | null;
367
+ readonly lastProcessedLength: number;
368
+ }
369
+ interface TerminalWriteDecision {
370
+ readonly reset: boolean;
371
+ readonly text: string;
372
+ }
373
+ declare function hasVisibleContent(s: string): boolean;
374
+ declare function decideTerminalWrite(state: TerminalWriteState, data: string, totalWritten: number): TerminalWriteDecision;
375
+
376
+ type Osc8Opener = (uri: string, event: MouseEvent) => void;
377
+
378
+ interface TerminalOptionsInput {
379
+ readonly isInteractive: boolean;
380
+ readonly useInteractiveTheme: boolean;
381
+ readonly focused?: boolean;
382
+ readonly openLink?: Osc8Opener;
383
+ }
384
+ declare function buildTerminalOptions({ isInteractive, useInteractiveTheme, focused, openLink, }: TerminalOptionsInput): ITerminalOptions & ITerminalInitOnlyOptions;
385
+
386
+ interface ScrollbackFocusTarget {
387
+ options: {
388
+ scrollback?: number;
389
+ };
390
+ }
391
+ declare function applyScrollbackForFocus(terminal: ScrollbackFocusTarget, { isInteractive, focused }: {
392
+ isInteractive: boolean;
393
+ focused: boolean;
394
+ }): void;
395
+
396
+ export { CANONICAL_CELL_HEIGHT_RATIO, CANONICAL_CELL_WIDTH_RATIO, CANONICAL_FONT_FAMILY, CANONICAL_FONT_SIZE_PX, CANONICAL_LINE_HEIGHT, DISPLAY_THEME, GitHubLinkProvider, GitHubLinksAddon, INTERACTIVE_THEME, MAX_VIEWPORT_COLS, MAX_VIEWPORT_ROWS, MIN_VIEWPORT_COLS, MIN_VIEWPORT_ROWS, ProxyLinkProvider, ProxyLinksAddon, SessionMentionLinkProvider, SessionMentionLinksAddon, USER_CONTENT_DOMAIN, WebLinksAddon, XTERM_SESSION_CONTEXT, XtermActionId, XtermOrganism, XtermOrganismStore, appendUrlHandoff, applyScrollbackForFocus, asciiArtToSvg, buildTerminalOptions, buildUserContentOrigin, clearCanvasCellMetricCache, computeFitToViewport, decideTerminalWrite, deployVersionToHostSuffix, encodeUrlHandoff, extractSessionMentions, generateAsciiArt, getCanvasCellMetric, getMachinaAsciiArtSixel, hasVisibleContent, measureCellMetric, openWebProxyForPort, recordCanvasCellMetric, svgToSixel, toProxyUrl };
397
+ export type { DeployVersionGetter, EndpointsGetter, FitToViewportInput, FitToViewportResult, GitHubLinkActivateHandler, OpenWebProxyOptions, ProxyEndpoints, ProxyEnvGetter, ProxyEnvName, ScrollbackFocusTarget, ServerUUIDGetter, SessionMention, SessionMentionActivateHandler, SvgToSixelOptions, TerminalOptionsInput, TerminalWriteDecision, TerminalWriteState, TokenGetter, XtermSessionContext };