@nac3/forge-cli 1.0.50 → 1.0.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +466 -390
  2. package/dist/chat/agent_scope.d.ts +41 -0
  3. package/dist/chat/agent_scope.d.ts.map +1 -0
  4. package/dist/chat/agent_scope.js +80 -0
  5. package/dist/chat/agent_scope.js.map +1 -0
  6. package/dist/chat/agent_session.d.ts +46 -0
  7. package/dist/chat/agent_session.d.ts.map +1 -0
  8. package/dist/chat/agent_session.js +169 -0
  9. package/dist/chat/agent_session.js.map +1 -0
  10. package/dist/chat/bridge.d.ts +8 -0
  11. package/dist/chat/bridge.d.ts.map +1 -1
  12. package/dist/chat/bridge.js +8 -3
  13. package/dist/chat/bridge.js.map +1 -1
  14. package/dist/chat/doctrine_digest.d.ts +6 -1
  15. package/dist/chat/doctrine_digest.d.ts.map +1 -1
  16. package/dist/chat/doctrine_digest.js +7 -2
  17. package/dist/chat/doctrine_digest.js.map +1 -1
  18. package/dist/chat/panel.d.ts.map +1 -1
  19. package/dist/chat/panel.js +326 -8
  20. package/dist/chat/panel.js.map +1 -1
  21. package/dist/chat/server.d.ts +20 -1
  22. package/dist/chat/server.d.ts.map +1 -1
  23. package/dist/chat/server.js +122 -7
  24. package/dist/chat/server.js.map +1 -1
  25. package/dist/chat/tools/nac3_invoke.d.ts.map +1 -1
  26. package/dist/chat/tools/nac3_invoke.js +57 -1
  27. package/dist/chat/tools/nac3_invoke.js.map +1 -1
  28. package/dist/chat/tools/session_verbs.d.ts +39 -0
  29. package/dist/chat/tools/session_verbs.d.ts.map +1 -0
  30. package/dist/chat/tools/session_verbs.js +299 -0
  31. package/dist/chat/tools/session_verbs.js.map +1 -0
  32. package/dist/chat/tools.d.ts.map +1 -1
  33. package/dist/chat/tools.js +16 -0
  34. package/dist/chat/tools.js.map +1 -1
  35. package/dist/commands/chat.d.ts +18 -4
  36. package/dist/commands/chat.d.ts.map +1 -1
  37. package/dist/commands/chat.js +81 -2
  38. package/dist/commands/chat.js.map +1 -1
  39. package/dist/commands/pilot.d.ts.map +1 -1
  40. package/dist/commands/pilot.js +3 -1
  41. package/dist/commands/pilot.js.map +1 -1
  42. package/dist/core/file_tree.d.ts +27 -0
  43. package/dist/core/file_tree.d.ts.map +1 -0
  44. package/dist/core/file_tree.js +87 -0
  45. package/dist/core/file_tree.js.map +1 -0
  46. package/dist/core/limits_config.d.ts +10 -0
  47. package/dist/core/limits_config.d.ts.map +1 -1
  48. package/dist/core/limits_config.js +9 -0
  49. package/dist/core/limits_config.js.map +1 -1
  50. package/dist/docs/doctrine/session-orchestration.md +86 -0
  51. package/dist/nac3/internal_manifest.d.ts.map +1 -1
  52. package/dist/nac3/internal_manifest.js +103 -0
  53. package/dist/nac3/internal_manifest.js.map +1 -1
  54. package/dist/nac3/manifest_lazy.d.ts +5 -0
  55. package/dist/nac3/manifest_lazy.d.ts.map +1 -1
  56. package/dist/nac3/manifest_lazy.js +3 -3
  57. package/dist/nac3/manifest_lazy.js.map +1 -1
  58. package/dist/version.d.ts +1 -1
  59. package/dist/version.js +1 -1
  60. package/docs/doctrine/session-orchestration.md +86 -0
  61. package/package.json +1 -1
  62. package/src/i18n/catalogs/ar.json +13 -2
  63. package/src/i18n/catalogs/de.json +13 -2
  64. package/src/i18n/catalogs/en.json +13 -2
  65. package/src/i18n/catalogs/es.json +13 -2
  66. package/src/i18n/catalogs/fr.json +13 -2
  67. package/src/i18n/catalogs/hi.json +13 -2
  68. package/src/i18n/catalogs/it.json +13 -2
  69. package/src/i18n/catalogs/ja.json +13 -2
  70. package/src/i18n/catalogs/pt.json +13 -2
  71. package/src/i18n/catalogs/zh.json +13 -2
@@ -46,6 +46,16 @@ export function renderPanelHtml(cfg) {
46
46
  projectTitle: tForLang(lang, 'panel.project.title'),
47
47
  projectAdd: tForLang(lang, 'panel.project.add'),
48
48
  projectAddPrompt: tForLang(lang, 'panel.project.addPrompt'),
49
+ projectRemove: tForLang(lang, 'panel.project.remove'),
50
+ projectRemoveConfirm: tForLang(lang, 'panel.project.removeConfirm'),
51
+ projectRemoved: tForLang(lang, 'panel.project.removed'),
52
+ filesRefresh: tForLang(lang, 'panel.files.refresh'),
53
+ filesLoading: tForLang(lang, 'panel.files.loading'),
54
+ filesError: tForLang(lang, 'panel.files.error'),
55
+ filesEmpty: tForLang(lang, 'panel.files.empty'),
56
+ filesTruncated: tForLang(lang, 'panel.files.truncated'),
57
+ filesOpened: tForLang(lang, 'panel.files.opened'),
58
+ filesOpenFailed: tForLang(lang, 'panel.files.openFailed'),
49
59
  projectSwitching: tForLang(lang, 'panel.project.switching'),
50
60
  micButton: tForLang(lang, 'panel.button.mic'),
51
61
  micButtonRec: tForLang(lang, 'panel.button.mic.recording'),
@@ -474,6 +484,26 @@ body {
474
484
  font-family: ui-monospace, monospace;
475
485
  line-height: 1.45;
476
486
  }
487
+ /* File explorer tab (kind 'files'). */
488
+ .pz-files-wrap { display: flex; flex-direction: column; height: 100%; overflow: hidden; }
489
+ .pz-files-bar { display: flex; align-items: center; gap: 10px; padding: 6px 10px;
490
+ border-bottom: 1px solid var(--border-subtle, #e3ddcf); flex: 0 0 auto; }
491
+ .pz-files-bar .pz-files-refresh { font: inherit; font-size: 11px; cursor: pointer;
492
+ border: 1px solid var(--border-subtle, #d9d2c4); background: #fff; color: #3a3a3a;
493
+ border-radius: 6px; padding: 3px 10px; }
494
+ .pz-files-bar .pz-files-refresh:hover { background: var(--bg2, #f1efe7); }
495
+ .pz-files-bar .pz-files-status { font-size: 11px; color: var(--ink-muted, #8a8275); }
496
+ .pz-files-tree { flex: 1; overflow: auto; padding: 8px 10px; font-size: 12.5px; line-height: 1.5; }
497
+ .pz-files-tree ul.pz-files-ul { list-style: none; margin: 0; padding: 0 0 0 16px; }
498
+ .pz-files-tree ul.pz-files-root { padding-left: 0; }
499
+ .pz-files-tree .pz-file-li { margin: 0; }
500
+ .pz-files-tree .pz-file-row { display: flex; align-items: center; gap: 6px;
501
+ padding: 2px 6px; border-radius: 5px; cursor: pointer; white-space: nowrap; }
502
+ .pz-files-tree .pz-file-row:hover { background: var(--bg2, #f1efe7); }
503
+ .pz-files-tree .pz-file-caret { width: 12px; flex: 0 0 auto; color: var(--ink-muted, #8a8275); font-size: 10px; }
504
+ .pz-files-tree .pz-file-ic { flex: 0 0 auto; }
505
+ .pz-files-tree .pz-file-name { overflow: hidden; text-overflow: ellipsis; }
506
+ .pz-files-tree .pz-file-dir > .pz-file-name { font-weight: 600; }
477
507
  /* PIZ-3 (PND-073) -- grafo de nodos dinamico, estetica sumi-e. */
478
508
  #yf-full .pz-graph-wrap {
479
509
  display: flex; gap: 0; height: 100%; min-height: 360px; padding: 0;
@@ -516,6 +546,13 @@ body {
516
546
  background-repeat: no-repeat; background-position: 0 100%; background-size: 100% 1.5px;
517
547
  padding-bottom: 6px; margin-bottom: 8px; word-break: break-word;
518
548
  }
549
+ #yf-full .pz-graph-detail-path { margin: 4px 0 8px; }
550
+ #yf-full .pz-graph-detail-path a {
551
+ font-family: ui-monospace, monospace; font-size: 11px; color: var(--indigo, #4f5b87);
552
+ cursor: pointer; text-decoration: none; border-bottom: 1px dotted var(--indigo, #4f5b87);
553
+ word-break: break-all;
554
+ }
555
+ #yf-full .pz-graph-detail-path a:hover { color: var(--shu, #b7410e); border-bottom-color: var(--shu, #b7410e); }
519
556
  #yf-full .pz-graph-detail-kind {
520
557
  display: inline-block; font-size: 10px; text-transform: uppercase; letter-spacing: 0.5px;
521
558
  color: var(--indigo, #4f5b87); border: 1px solid var(--indigo, #4f5b87);
@@ -885,13 +922,19 @@ body {
885
922
  box-shadow: 0 6px 24px rgba(0,0,0,0.18); padding: 4px; }
886
923
  .proj-menu .proj-menu-title { font-size: 10px; text-transform: uppercase; letter-spacing: .06em;
887
924
  color: var(--ink-muted); padding: 6px 8px 2px; }
888
- .proj-menu .proj-row { display: flex; flex-direction: column; gap: 1px;
925
+ .proj-menu .proj-row { display: flex; flex-direction: row; align-items: center; gap: 6px;
889
926
  padding: 6px 8px; border-radius: 6px; cursor: pointer; }
927
+ .proj-menu .proj-row .proj-row-main { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1; }
890
928
  .proj-menu .proj-row:hover { background: var(--bg2, #f1efe7); }
891
929
  .proj-menu .proj-row.on { background: rgba(80,90,160,0.08); }
892
930
  .proj-menu .proj-row .proj-row-name { font-size: 13px; font-weight: 600; }
893
931
  .proj-menu .proj-row .proj-row-path { font-size: 10px; color: var(--ink-muted);
894
932
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
933
+ .proj-menu .proj-row .proj-row-x { flex: 0 0 auto; width: 22px; height: 22px; line-height: 1;
934
+ border: none; background: transparent; color: var(--ink-muted); font-size: 17px; cursor: pointer;
935
+ border-radius: 5px; opacity: 0; transition: opacity .12s, background .12s, color .12s; }
936
+ .proj-menu .proj-row:hover .proj-row-x, .proj-menu .proj-row:focus-within .proj-row-x { opacity: 1; }
937
+ .proj-menu .proj-row .proj-row-x:hover { background: rgba(183,65,14,0.12); color: #b7410e; }
895
938
  .proj-menu .proj-add { color: var(--indigo); font-weight: 600; border-top: 1px solid var(--border-subtle); margin-top: 2px; }
896
939
  .header .actions { display: flex; gap: 4px; }
897
940
  .header .actions button {
@@ -2893,9 +2936,13 @@ async function openProjectMenu(anchor) {
2893
2936
  return String(b.last_active_at || '').localeCompare(String(a.last_active_at || ''));
2894
2937
  }).map(function (p) {
2895
2938
  const active = p.slug === reg.active_slug;
2939
+ const rmLabel = escapeHtml((CONFIG.i18n && CONFIG.i18n.projectRemove) || 'Quitar de la lista');
2896
2940
  return '<div class="proj-row' + (active ? ' on' : '') + '" data-proj-slug="' + escapeHtml(p.slug) + '" role="button" tabindex="0">'
2941
+ + '<span class="proj-row-main">'
2897
2942
  + '<span class="proj-row-name">' + (active ? '&#9679; ' : '') + escapeHtml(p.slug) + '</span>'
2898
2943
  + '<span class="proj-row-path">' + escapeHtml(String(p.path || '')) + '</span>'
2944
+ + '</span>'
2945
+ + '<button type="button" class="proj-row-x" data-proj-remove="' + escapeHtml(p.slug) + '" title="' + rmLabel + '" aria-label="' + rmLabel + '">&times;</button>'
2899
2946
  + '</div>';
2900
2947
  }).join('');
2901
2948
  menu.innerHTML = '<div class="proj-menu-title">' + escapeHtml(CONFIG.i18n.projectTitle) + '</div>'
@@ -2911,6 +2958,14 @@ async function openProjectMenu(anchor) {
2911
2958
  menu.querySelectorAll('[data-proj-slug]').forEach(function (row) {
2912
2959
  row.addEventListener('click', function () { switchProject(row.getAttribute('data-proj-slug')); });
2913
2960
  });
2961
+ /* The "X" removes the project from the list (never from disk). stopPropagation
2962
+ * so the click does NOT also trigger the row's switch handler. */
2963
+ menu.querySelectorAll('[data-proj-remove]').forEach(function (x) {
2964
+ x.addEventListener('click', function (e) {
2965
+ e.stopPropagation();
2966
+ removeProjectViaClick(x.getAttribute('data-proj-remove'), x.closest('.proj-row'));
2967
+ });
2968
+ });
2914
2969
  const addRow = menu.querySelector('[data-proj-add]');
2915
2970
  if (addRow) addRow.addEventListener('click', addProjectViaPrompt);
2916
2971
  setTimeout(function () { document.addEventListener('click', onProjMenuOutside, true); }, 0);
@@ -2938,6 +2993,30 @@ async function switchProject(slug) {
2938
2993
  setStatus('No se pudo cambiar de proyecto.', true);
2939
2994
  }
2940
2995
  }
2996
+ /* Remove a project from the list (the "X"). Confirms first; on success drops
2997
+ * the row from the open menu. Server-side this only edits projects.json --
2998
+ * the repo on disk is never touched. */
2999
+ async function removeProjectViaClick(slug, rowEl) {
3000
+ if (!slug) return;
3001
+ const msg = ((CONFIG.i18n && CONFIG.i18n.projectRemoveConfirm) || 'Quitar este proyecto de la lista? (no borra los archivos del disco)') + '\\n\\n' + slug;
3002
+ if (!window.confirm(msg)) return;
3003
+ try {
3004
+ const r = await fetch('/api/forge/projects/remove', {
3005
+ method: 'POST', headers: { 'content-type': 'application/json' },
3006
+ body: JSON.stringify({ slug: slug }),
3007
+ });
3008
+ const j = await r.json();
3009
+ if (j && j.ok) {
3010
+ if (rowEl && rowEl.parentNode) rowEl.parentNode.removeChild(rowEl);
3011
+ setStatus(((CONFIG.i18n && CONFIG.i18n.projectRemoved) || 'Proyecto quitado de la lista') + ': ' + slug);
3012
+ setTimeout(function () { setStatus(''); }, 2500);
3013
+ } else {
3014
+ setStatus((j && j.error) || 'No se pudo quitar el proyecto.', true);
3015
+ }
3016
+ } catch (e) {
3017
+ setStatus('No se pudo quitar el proyecto.', true);
3018
+ }
3019
+ }
2941
3020
  async function addProjectViaPrompt() {
2942
3021
  closeProjectMenu();
2943
3022
  const path = prompt(CONFIG.i18n.projectAddPrompt, '');
@@ -5209,6 +5288,18 @@ function renderPizarronCardBody(it) {
5209
5288
  if (it.kind === 'tree') {
5210
5289
  return bodyOpen + '<pre class="pz-tree">' + escapeHtml(it.content) + '</pre></div>';
5211
5290
  }
5291
+ if (it.kind === 'files') {
5292
+ /* File explorer of the local repo. The tree is fetched live by
5293
+ * initFilesTab from /api/forge/files-tree; clicking a file opens it
5294
+ * with the OS-associated app via /api/forge/open-native. */
5295
+ return '<div class="pz-body pz-files-wrap" data-nac-id="yujin.pizarron.item.' + it.id + '.body" data-nac-role="region">'
5296
+ + '<div class="pz-files-bar">'
5297
+ + '<button type="button" class="pz-files-refresh" data-pz-files-refresh>' + escapeHtml((CONFIG.i18n && CONFIG.i18n.filesRefresh) || 'Actualizar') + '</button>'
5298
+ + '<span class="pz-files-status" data-pz-files-status></span>'
5299
+ + '</div>'
5300
+ + '<div class="pz-files-tree" data-pz-files-tree>' + escapeHtml((CONFIG.i18n && CONFIG.i18n.filesLoading) || 'Cargando...') + '</div>'
5301
+ + '</div>';
5302
+ }
5212
5303
  if (it.kind === 'bpmn' || it.kind === 'flow') {
5213
5304
  const trimmed = it.content.trim();
5214
5305
  /* SVG crudo -> passthrough (compat). */
@@ -5318,6 +5409,9 @@ function renderPizarron() {
5318
5409
  if (it.kind === 'workflow') {
5319
5410
  try { initWorkflowTab(it); } catch (e) { /* render best-effort */ }
5320
5411
  }
5412
+ if (it.kind === 'files') {
5413
+ try { initFilesTab(it); } catch (e) { /* render best-effort */ }
5414
+ }
5321
5415
  }
5322
5416
 
5323
5417
  /* Selector multi-workflow: persiste el indice elegido por tab id (igual
@@ -6170,11 +6264,11 @@ function unmarkStartupTabClosed(key) {
6170
6264
  * titulo real lo recordamos del ultimo fetch; el fallback cubre las que
6171
6265
  * nunca se vieron. */
6172
6266
  var yfStartupTitles = {};
6173
- var NATIVE_TAB_KEYS = ['startup_graph', 'startup_graph_sem', 'startup_pendings', 'startup_workflow', 'startup_tasks', 'coding_canvas'];
6267
+ var NATIVE_TAB_KEYS = ['startup_graph', 'startup_graph_sem', 'startup_pendings', 'startup_workflow', 'startup_tasks', 'startup_files', 'coding_canvas'];
6174
6268
  var NATIVE_TAB_FALLBACK = {
6175
6269
  startup_graph: 'Grafo', startup_graph_sem: 'Grafo semantico',
6176
6270
  startup_pendings: 'Pendientes', startup_workflow: 'Workflow',
6177
- startup_tasks: 'Tareas', coding_canvas: 'Coding',
6271
+ startup_tasks: 'Tareas', startup_files: 'Archivos', coding_canvas: 'Coding',
6178
6272
  };
6179
6273
  function nativeTabLabel(key) { return yfStartupTitles[key] || NATIVE_TAB_FALLBACK[key] || key; }
6180
6274
 
@@ -6322,6 +6416,165 @@ function graphNodeGroup(n) {
6322
6416
  return 'backend';
6323
6417
  }
6324
6418
 
6419
+ /* Best-effort project-relative path of a graph node, recovered from its
6420
+ * detail/purpose: derive.ts writes loose files as "Archivo X (src/foo.py)."
6421
+ * and directory modules as "... (src/foo).". We pick the last parenthetical
6422
+ * that looks like a path (has a separator or a file extension). Returns ''
6423
+ * when none -- libraries/protocols have no file. Used to make the node's
6424
+ * path clickable so it opens with the OS-associated app. */
6425
+ function graphNodePath(n) {
6426
+ if (n && n.path) return String(n.path);
6427
+ const d = String((n && n.detail) || '');
6428
+ /* No literal backslashes here: the panel lives inside a template literal,
6429
+ * which eats them. We extract parentheticals with indexOf and detect a
6430
+ * backslash via char code 92. */
6431
+ const BSLASH = String.fromCharCode(92);
6432
+ const candidates = [];
6433
+ let i = 0;
6434
+ while (i < d.length) {
6435
+ const open = d.indexOf('(', i);
6436
+ if (open < 0) break;
6437
+ const close = d.indexOf(')', open + 1);
6438
+ if (close < 0) break;
6439
+ candidates.push(d.slice(open + 1, close).trim());
6440
+ i = close + 1;
6441
+ }
6442
+ for (let k = candidates.length - 1; k >= 0; k--) {
6443
+ let inner = candidates[k];
6444
+ if (!inner || inner.length > 240) continue;
6445
+ while (inner.length && '.,;'.indexOf(inner[inner.length - 1]) >= 0) inner = inner.slice(0, -1);
6446
+ const hasSep = inner.indexOf('/') >= 0 || inner.indexOf(BSLASH) >= 0;
6447
+ let hasExt = false;
6448
+ const dot = inner.lastIndexOf('.');
6449
+ if (dot > 0 && dot < inner.length - 1) {
6450
+ const ext = inner.slice(dot + 1);
6451
+ hasExt = ext.length <= 8 && /^[a-z0-9]+$/i.test(ext);
6452
+ }
6453
+ if (!hasSep && !hasExt) continue;
6454
+ /* skip prose: spaces are only OK when it clearly has a path separator */
6455
+ if (inner.indexOf(' ') >= 0 && !hasSep) continue;
6456
+ return inner;
6457
+ }
6458
+ return '';
6459
+ }
6460
+
6461
+ /* ====================================================================
6462
+ * File explorer tab (startup_files / kind 'files', Pablo 2026-06-29).
6463
+ * Fetches the repo tree from /api/forge/files-tree, renders a collapsible
6464
+ * tree, and on a file click opens it with the OS-associated app via
6465
+ * /api/forge/open-native. Expand state is preserved per tab across the
6466
+ * 12s startup-tabs refresh.
6467
+ * ================================================================== */
6468
+ const _filesExpandByTab = {};
6469
+
6470
+ function fmtFileSize(n) {
6471
+ if (typeof n !== 'number' || !isFinite(n)) return '';
6472
+ if (n < 1024) return n + ' B';
6473
+ if (n < 1024 * 1024) return (n / 1024).toFixed(1) + ' KB';
6474
+ return (n / (1024 * 1024)).toFixed(1) + ' MB';
6475
+ }
6476
+
6477
+ function initFilesTab(it) {
6478
+ const wrap = document.querySelector('[data-pz-files-tree]');
6479
+ if (!wrap) return;
6480
+ const statusEl = document.querySelector('[data-pz-files-status]');
6481
+ const refreshBtn = document.querySelector('[data-pz-files-refresh]');
6482
+ const expanded = _filesExpandByTab[it.id] || (_filesExpandByTab[it.id] = new Set());
6483
+
6484
+ function setFilesStatus(msg) { if (statusEl) statusEl.textContent = msg || ''; }
6485
+
6486
+ function renderNode(node) {
6487
+ const li = document.createElement('li');
6488
+ li.className = 'pz-file-li';
6489
+ const row = document.createElement('div');
6490
+ row.className = 'pz-file-row pz-file-' + (node.kind === 'dir' ? 'dir' : 'file');
6491
+ row.setAttribute('role', 'button');
6492
+ row.setAttribute('tabindex', '0');
6493
+ if (node.kind === 'dir') {
6494
+ const isOpen = expanded.has(node.path);
6495
+ row.innerHTML = '<span class="pz-file-caret">' + (isOpen ? '&#9662;' : '&#9656;') + '</span>'
6496
+ + '<span class="pz-file-ic">&#128193;</span>'
6497
+ + '<span class="pz-file-name">' + escapeHtml(node.name) + '</span>';
6498
+ li.appendChild(row);
6499
+ const childUl = document.createElement('ul');
6500
+ childUl.className = 'pz-files-ul';
6501
+ childUl.style.display = isOpen ? '' : 'none';
6502
+ (node.children || []).forEach(function (c) { childUl.appendChild(renderNode(c)); });
6503
+ li.appendChild(childUl);
6504
+ row.addEventListener('click', function () {
6505
+ const nowOpen = childUl.style.display === 'none';
6506
+ childUl.style.display = nowOpen ? '' : 'none';
6507
+ const caret = row.querySelector('.pz-file-caret');
6508
+ if (caret) caret.innerHTML = nowOpen ? '&#9662;' : '&#9656;';
6509
+ if (nowOpen) expanded.add(node.path); else expanded.delete(node.path);
6510
+ });
6511
+ } else {
6512
+ row.setAttribute('data-pz-file-path', node.path);
6513
+ const sz = fmtFileSize(node.size);
6514
+ row.title = node.path + (sz ? ' (' + sz + ')' : '');
6515
+ row.innerHTML = '<span class="pz-file-caret"></span>'
6516
+ + '<span class="pz-file-ic">&#128196;</span>'
6517
+ + '<span class="pz-file-name">' + escapeHtml(node.name) + '</span>';
6518
+ li.appendChild(row);
6519
+ row.addEventListener('click', function () { openFileWithOS(node.path, setFilesStatus); });
6520
+ }
6521
+ return li;
6522
+ }
6523
+
6524
+ async function load() {
6525
+ wrap.textContent = (CONFIG.i18n && CONFIG.i18n.filesLoading) || 'Cargando...';
6526
+ setFilesStatus('');
6527
+ try {
6528
+ const r = await fetch('/api/forge/files-tree');
6529
+ const j = await r.json();
6530
+ if (!j || !j.ok || !j.tree) {
6531
+ wrap.textContent = (j && j.error) || ((CONFIG.i18n && CONFIG.i18n.filesError) || 'No pude leer los archivos.');
6532
+ return;
6533
+ }
6534
+ wrap.innerHTML = '';
6535
+ const rootUl = document.createElement('ul');
6536
+ rootUl.className = 'pz-files-ul pz-files-root';
6537
+ (j.tree.children || []).forEach(function (c) { rootUl.appendChild(renderNode(c)); });
6538
+ if (!j.tree.children || j.tree.children.length === 0) {
6539
+ wrap.textContent = (CONFIG.i18n && CONFIG.i18n.filesEmpty) || '(sin archivos)';
6540
+ return;
6541
+ }
6542
+ wrap.appendChild(rootUl);
6543
+ if (j.truncated) setFilesStatus((CONFIG.i18n && CONFIG.i18n.filesTruncated) || '(lista truncada)');
6544
+ } catch (e) {
6545
+ wrap.textContent = (CONFIG.i18n && CONFIG.i18n.filesError) || 'No pude leer los archivos.';
6546
+ }
6547
+ }
6548
+
6549
+ if (refreshBtn && !refreshBtn._wired) {
6550
+ refreshBtn._wired = true;
6551
+ refreshBtn.addEventListener('click', load);
6552
+ }
6553
+ load();
6554
+ }
6555
+
6556
+ async function openFileWithOS(relPath, setFilesStatus) {
6557
+ try {
6558
+ const r = await fetch('/api/forge/open-native', {
6559
+ method: 'POST', headers: { 'content-type': 'application/json' },
6560
+ body: JSON.stringify({ path: relPath }),
6561
+ });
6562
+ const j = await r.json();
6563
+ if (j && j.ok) {
6564
+ const msg = ((CONFIG.i18n && CONFIG.i18n.filesOpened) || 'Abierto') + ': ' + (j.opened || relPath)
6565
+ + (j.app_hint ? ' (' + j.app_hint + ')' : '');
6566
+ if (setFilesStatus) setFilesStatus(msg);
6567
+ setStatus(msg);
6568
+ } else {
6569
+ const m = (j && j.error) || ((CONFIG.i18n && CONFIG.i18n.filesOpenFailed) || 'No se pudo abrir el archivo.');
6570
+ if (setFilesStatus) setFilesStatus(m);
6571
+ setStatus(m, true);
6572
+ }
6573
+ } catch (e) {
6574
+ setStatus((CONFIG.i18n && CONFIG.i18n.filesOpenFailed) || 'No se pudo abrir el archivo.', true);
6575
+ }
6576
+ }
6577
+
6325
6578
  function initGraphTab(it) {
6326
6579
  const canvas = document.querySelector('[data-pz-graph-canvas]');
6327
6580
  const detail = document.querySelector('[data-pz-graph-detail]');
@@ -6354,6 +6607,18 @@ function initGraphTab(it) {
6354
6607
  vx: 0, vy: 0, fixed: false,
6355
6608
  };
6356
6609
  });
6610
+ /* Margen interior = al menos un diametro del nodo mas grande, para
6611
+ * que ningun nodo quede dibujado pegado al borde de la vista (arriba,
6612
+ * abajo, izq y der). Se topa para no colapsar en canvases pequenos. */
6613
+ const _maxR = nodes.reduce((m, n) => Math.max(m, 9 + (n.weight || 0) * 11), 9);
6614
+ const MARGIN = Math.max(28, Math.min(2 * _maxR, Math.min(W, H) * 0.42 - 8));
6615
+ /* Circular containment (Pablo 2026-06-29): keep the cluster inside a
6616
+ * CIRCLE (not the rectangle), so the graph reads round instead of
6617
+ * filling the corners. BOUND_R is the disc radius the node CENTERS live
6618
+ * in; each node is further pulled in by its own radius so it fits whole. */
6619
+ const CX = W / 2, CY = H / 2;
6620
+ const BOUND_R = Math.max(_maxR + 4, Math.min(W, H) / 2 - MARGIN);
6621
+
6357
6622
  const idIndex = {};
6358
6623
  nodes.forEach((n, i) => { idIndex[n.id] = i; });
6359
6624
  const edges = data.edges
@@ -6437,8 +6702,9 @@ function initGraphTab(it) {
6437
6702
  counts[n.group] = (counts[n.group] || 0) + 1;
6438
6703
  });
6439
6704
  _graphFilterByTab[it.id] = vis; /* el toggle muta este mismo objeto */
6705
+ const legendTop = 6;
6440
6706
  const legend = document.createElement('div');
6441
- legend.setAttribute('style', 'position:absolute;top:6px;left:6px;right:6px;display:flex;flex-wrap:wrap;gap:5px;z-index:6;pointer-events:auto;');
6707
+ legend.setAttribute('style', 'position:absolute;top:' + legendTop + 'px;left:6px;right:6px;display:flex;flex-wrap:wrap;gap:5px;z-index:6;pointer-events:auto;');
6442
6708
  Object.keys(counts).sort().forEach((k) => {
6443
6709
  const chip = document.createElement('button');
6444
6710
  chip.type = 'button';
@@ -6457,10 +6723,14 @@ function initGraphTab(it) {
6457
6723
  /* el canvas es position:relative en CSS; si no, el absolute cuelga del svg */
6458
6724
  canvas.style.position = canvas.style.position || 'relative';
6459
6725
  canvas.appendChild(legend);
6726
+
6727
+ function nodeVisible(i) {
6728
+ return !!vis[nodes[i].group];
6729
+ }
6460
6730
  function applyGraphFilter() {
6461
- for (let i = 0; i < nodeEls.length; i++) nodeEls[i].style.display = vis[nodes[i].group] ? '' : 'none';
6731
+ for (let i = 0; i < nodeEls.length; i++) nodeEls[i].style.display = nodeVisible(i) ? '' : 'none';
6462
6732
  for (let k = 0; k < edges.length; k++) {
6463
- const show = vis[nodes[edges[k].from].group] && vis[nodes[edges[k].to].group];
6733
+ const show = nodeVisible(edges[k].from) && nodeVisible(edges[k].to);
6464
6734
  edgeEls[k].style.display = show ? '' : 'none';
6465
6735
  }
6466
6736
  }
@@ -6469,13 +6739,25 @@ function initGraphTab(it) {
6469
6739
  function showDetail(n) {
6470
6740
  if (!detail) return;
6471
6741
  nodeEls.forEach((g) => g.classList.toggle('selected', g._node === n));
6742
+ const npath = graphNodePath(n);
6472
6743
  detail.innerHTML =
6473
6744
  '<div class="pz-graph-detail-title">' + escapeHtml(n.label) + '</div>'
6474
6745
  + (n.kind ? '<div class="pz-graph-detail-kind">' + escapeHtml(String(n.kind)) + '</div>' : '')
6475
6746
  + '<div class="pz-graph-detail-meta">' + escapeHtml(CONFIG.i18n.pzGraphWeight) + ' ' + (Math.round(n.weight * 100) / 100)
6476
6747
  + ' &middot; id ' + escapeHtml(n.id) + '</div>'
6748
+ + (npath ? '<div class="pz-graph-detail-path"><a href="#" data-graph-open-path role="button" title="'
6749
+ + escapeHtml(((CONFIG.i18n && CONFIG.i18n.filesOpened) || 'Abrir') + ': ' + npath) + '">'
6750
+ + escapeHtml(npath) + '</a></div>' : '')
6477
6751
  + (n.detail ? '<div class="pz-graph-detail-body">' + renderMdRich(String(n.detail)) + '</div>'
6478
6752
  : '<div class="pz-graph-detail-hint">' + escapeHtml(CONFIG.i18n.pzGraphEmpty) + '</div>');
6753
+ if (npath) {
6754
+ const link = detail.querySelector('[data-graph-open-path]');
6755
+ if (link) link.addEventListener('click', (ev) => {
6756
+ ev.preventDefault();
6757
+ /* relative path -> the open-native endpoint prepends the project root */
6758
+ openFileWithOS(npath);
6759
+ });
6760
+ }
6479
6761
  }
6480
6762
 
6481
6763
  /* ---- Simulacion force-directed ---- */
@@ -6506,13 +6788,49 @@ function initGraphTab(it) {
6506
6788
  if (!a.fixed) { a._fx += ox; a._fy += oy; }
6507
6789
  if (!b.fixed) { b._fx -= ox; b._fy -= oy; }
6508
6790
  }
6791
+ /* integrate velocities -- containment + collision handled below. */
6509
6792
  for (const n of nodes) {
6510
6793
  if (n.fixed) continue;
6511
6794
  n.vx = (n.vx + n._fx * alpha) * DAMP;
6512
6795
  n.vy = (n.vy + n._fy * alpha) * DAMP;
6513
6796
  n.x += n.vx; n.y += n.vy;
6514
- n.x = Math.max(16, Math.min(W - 16, n.x));
6515
- n.y = Math.max(16, Math.min(H - 16, n.y));
6797
+ }
6798
+ /* Anti-overlap: separate node circles by their radii (a couple of
6799
+ * position passes; O(n^2) but the graph is small). The plain 1/d^2
6800
+ * repulse ignores radii, so big nodes overlapped without this. */
6801
+ const COL_PAD = 4;
6802
+ for (let pass = 0; pass < 2; pass++) {
6803
+ for (let i = 0; i < nodes.length; i++) {
6804
+ const a = nodes[i]; const ra = 9 + a.weight * 11;
6805
+ for (let j = i + 1; j < nodes.length; j++) {
6806
+ const b = nodes[j]; const rb = 9 + b.weight * 11;
6807
+ let dx = b.x - a.x, dy = b.y - a.y;
6808
+ const minD = ra + rb + COL_PAD;
6809
+ const d2 = dx * dx + dy * dy;
6810
+ if (d2 >= minD * minD) continue;
6811
+ let d = Math.sqrt(d2);
6812
+ if (d < 0.01) { dx = 1; dy = 0; d = 1; } /* coincident -> split on x */
6813
+ const push = (minD - d) / 2;
6814
+ const ox = (dx / d) * push, oy = (dy / d) * push;
6815
+ if (!a.fixed) { a.x -= ox; a.y -= oy; }
6816
+ if (!b.fixed) { b.x += ox; b.y += oy; }
6817
+ }
6818
+ }
6819
+ }
6820
+ /* Circular containment: clamp each node CENTER inside the disc, leaving
6821
+ * room for its own radius so the whole node stays in -- the cluster
6822
+ * reads round, not a rectangle filling the corners. */
6823
+ for (const n of nodes) {
6824
+ if (n.fixed) continue;
6825
+ const r = 9 + n.weight * 11;
6826
+ const dxc = n.x - CX, dyc = n.y - CY;
6827
+ const dist = Math.sqrt(dxc * dxc + dyc * dyc);
6828
+ const limit = Math.max(0, BOUND_R - r);
6829
+ if (dist > limit && dist > 0.001) {
6830
+ n.x = CX + (dxc / dist) * limit;
6831
+ n.y = CY + (dyc / dist) * limit;
6832
+ n.vx *= 0.5; n.vy *= 0.5;
6833
+ }
6516
6834
  }
6517
6835
  alpha *= 0.985; if (alpha < 0.02) alpha = 0.02;
6518
6836
  }
@@ -1 +1 @@
1
- {"version":3,"file":"panel.js","sourceRoot":"","sources":["../../src/chat/panel.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAm/QpB,kBAAkB;;QAEpB,CAAC;AACT,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC;SACL,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"panel.js","sourceRoot":"","sources":["../../src/chat/panel.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAswRpB,kBAAkB;;QAEpB,CAAC;AACT,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC;SACL,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC"}
@@ -44,6 +44,15 @@ export interface StartOptions {
44
44
  * /api/agent/events (SSE). When absent, those endpoints return
45
45
  * 503 so the UI can render a "runtime not started" state. */
46
46
  runtime?: import('../agents/runtime.js').Runtime;
47
+ /** Session orchestration -- when true, this server is a headless
48
+ * SUB-SESSION spawned by another `yf chat` via yujin.session.spawn.
49
+ * It still boots the full turn machinery (so the brain sees the
50
+ * graph + the server-side verbs) but: it does NOT mutate the global
51
+ * project registry (never flips the parent's active project) and it
52
+ * does NOT run the relay command consumer (so it never steals a
53
+ * phone command). The child's verb scope is gated separately by the
54
+ * YF_AGENT_MODE env flag in nac3_invoke. */
55
+ agentMode?: boolean;
47
56
  }
48
57
  export interface StartedServer {
49
58
  server: Server;
@@ -53,6 +62,11 @@ export interface StartedServer {
53
62
  port: number;
54
63
  store: TranscriptStore;
55
64
  close: () => Promise<void>;
65
+ /** Inter-instance coordination bridge handle (Pablo 2026-06-19), or null
66
+ * when the bridge is off. Exposed so a headless agent sub-session can
67
+ * publish its result on the typed 'session_reply' lane back to the
68
+ * parent (yujin.session.*). */
69
+ bridge?: import('./bridge.js').BridgeHandle | null;
56
70
  }
57
71
  export declare function startChatServer(opts: StartOptions): Promise<StartedServer>;
58
72
  interface Ctx {
@@ -151,7 +165,12 @@ panelMode?: 'native' | 'mcp-bridge' | 'none',
151
165
  * CLI version with the project's own version (Pablo: "Es Forge v1.0.44"
152
166
  * appeared while anchored to Yuemail 0.6.4). Undefined -> the block
153
167
  * falls back to name + root + Forge-CLI version (back-compat). */
154
- projectIdentity?: ProjectIdentity): string;
168
+ projectIdentity?: ProjectIdentity,
169
+ /** Pablo 2026-06-28 -- whether multi-agent session orchestration
170
+ * (yujin.session.*) is enabled in config. When false (default) the
171
+ * session verbs + their doctrine line are filtered out and the brain is
172
+ * told the feature is OFF. The caller prefetches readLimitsConfig(). */
173
+ multiagentEnabled?: boolean): string;
155
174
  /** Pablo 2026-06-22 -- live approval posture appended to systemDynamic each
156
175
  * turn. The stable prompt's R8 always says destructive verbs open a modal;
157
176
  * this reflects the ACTUAL danger_zone.auto_approve_all + shell.cwd_boundary_
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/chat/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/chat/server.ts"],"names":[],"mappings":"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"}