agentglow 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +38 -3
  2. package/dist/chunks/KitScene-BuFtYuhc.js +2737 -0
  3. package/dist/chunks/index-BPyTLdiF.js +792 -0
  4. package/dist/chunks/index-Bo5HRf-O.js +784 -0
  5. package/dist/chunks/index-C42Ihyo1.js +605 -0
  6. package/dist/chunks/index-C5YqtHnC.js +677 -0
  7. package/dist/chunks/index-Cyv7bII1.js +818 -0
  8. package/dist/chunks/index-D0UvupqM.js +1143 -0
  9. package/dist/chunks/index-D733n3Hf.js +1086 -0
  10. package/dist/chunks/index-DCmhxN8v.js +1010 -0
  11. package/dist/chunks/index-DO9SAG-u.js +753 -0
  12. package/dist/chunks/index-Dn6oRasS.js +887 -0
  13. package/dist/chunks/index-HyfZ0ePz.js +838 -0
  14. package/dist/chunks/index-XMOz-HBf.js +492 -0
  15. package/dist/chunks/index-ZT88hgW-.js +763 -0
  16. package/dist/chunks/index-e6egU2Q6.js +889 -0
  17. package/dist/chunks/index-jLXx_Wgk.js +68 -0
  18. package/dist/chunks/index-tonipLb2.js +980 -0
  19. package/dist/index.js +1 -1
  20. package/dist/style.css +1 -1
  21. package/dist/types/AgentScene.d.ts +14 -1
  22. package/dist/types/world.d.ts +59 -0
  23. package/package.json +1 -1
  24. package/dist/chunks/ClusterBall-CPsd6JvJ.js +0 -1489
  25. package/dist/chunks/index-0Bqa57T_.js +0 -786
  26. package/dist/chunks/index-4JCQqMml.js +0 -831
  27. package/dist/chunks/index-55W5crSg.js +0 -63
  28. package/dist/chunks/index-78lWZCrQ.js +0 -984
  29. package/dist/chunks/index-Bv6_kdaq.js +0 -768
  30. package/dist/chunks/index-Cgb5ir1r.js +0 -688
  31. package/dist/chunks/index-CqVCWpP7.js +0 -796
  32. package/dist/chunks/index-D1O5v601.js +0 -1065
  33. package/dist/chunks/index-DOoA9htC.js +0 -1181
  34. package/dist/chunks/index-K__sPGRy.js +0 -1134
  35. package/dist/chunks/index-N0zWN8NS.js +0 -857
  36. package/dist/chunks/index-NiYqQci9.js +0 -936
  37. package/dist/chunks/index-PQRnbPiJ.js +0 -565
  38. package/dist/chunks/index-VOXn1m-Q.js +0 -848
  39. package/dist/chunks/index-o4vs5msj.js +0 -837
  40. package/dist/chunks/index-yos7IepY.js +0 -890
  41. package/dist/chunks/spread-CWdeDFd9.js +0 -35
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import "./style.css";
3
- import { A as E, T as s, a as T } from "./chunks/index-55W5crSg.js";
3
+ import { A as E, T as s, a as T } from "./chunks/index-jLXx_Wgk.js";
4
4
  export {
5
5
  E as AgentScene,
6
6
  s as THEMES,
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .scene-root{position:fixed;top:0;right:0;bottom:0;left:0;background:#03050b;color:#e8edf5;font-family:Public Sans,system-ui,sans-serif;overflow:hidden}.scene-root canvas{display:block}.hud{position:absolute;z-index:10;background:#0a0e1a8c;border:1px solid rgba(148,163,255,.16);border-radius:14px;backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3);box-shadow:0 8px 32px #00000059,inset 0 1px #ffffff0a}.hud-top{top:16px;left:16px;padding:12px 16px;max-width:min(560px,calc(100vw - 32px))}.hud-title{display:flex;align-items:center;gap:10px;font-weight:700;font-size:17px;letter-spacing:-.01em}.hud-sub{margin-top:3px;font-size:12px;color:#94a3b8}.hud-dot{width:9px;height:9px;border-radius:50%;background:#22c55e;box-shadow:0 0 10px #22c55e;animation:hud-ping 1.6s ease-out infinite}@keyframes hud-ping{0%{box-shadow:0 0 #22c55eb3}to{box-shadow:0 0 0 10px #22c55e00}}.hud-badge{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;padding:2px 7px;border-radius:999px;background:#94a3b829;color:#cbd5e1}.hud-nav{display:flex;flex-wrap:wrap;gap:4px;margin-top:10px}.hud-nav a{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#94a3b8;text-decoration:none;padding:3px 8px;border-radius:999px;border:1px solid transparent}.hud-nav a:hover{color:#e2e8f0;border-color:#94a3ff40}.hud-nav a[aria-current=page]{color:#03050b;background:linear-gradient(135deg,#818cf8,#22d3ee)}.hud-counts{right:16px;bottom:16px;padding:12px 14px;display:grid;grid-template-columns:repeat(7,auto);gap:4px 16px;font-size:10px;color:#94a3b8;text-transform:uppercase;letter-spacing:.06em}.hud-counts b{display:block;font-size:20px;color:#f1f5f9;letter-spacing:-.02em;text-transform:none;font-variant-numeric:tabular-nums}.hud-legend{display:none;top:16px;right:16px;padding:8px 12px;display:grid;gap:4px;font-size:13px}.hud-legend div{display:flex;align-items:center;gap:8px}.hud-legend i{width:10px;height:10px;border-radius:50%;background:var(--c);box-shadow:0 0 10px var(--c)}.hud-legend em{margin-left:auto;padding-left:12px;font-style:normal;font-variant-numeric:tabular-nums;color:var(--c);font-weight:700}.hud-ticker{left:16px;bottom:16px;width:min(560px,calc(100vw - 32px));padding:10px 12px;display:grid;gap:4px;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.hud-tick{display:flex;gap:8px;align-items:baseline;white-space:nowrap;overflow:hidden;color:#cbd5e1}.hud-tick i{flex:0 0 7px;height:7px;border-radius:50%;background:var(--c);box-shadow:0 0 8px var(--c)}.hud-tick span{overflow:hidden;text-overflow:ellipsis}.hud-card{top:210px;right:16px;width:min(380px,calc(100vw - 32px));max-height:46vh;overflow:auto;padding:14px 16px}.hud-card h3{margin:0 0 4px;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--c);display:flex;align-items:center;gap:8px}.hud-card h3 i{width:10px;height:10px;border-radius:50%;background:var(--c);box-shadow:0 0 10px var(--c)}.hud-card ul{margin:8px 0 0;padding-left:16px;display:grid;gap:4px;font-size:12px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.hud-muted{margin:0;color:#94a3b8;font-size:12px}.hud-close{all:unset;position:absolute;top:8px;right:12px;cursor:pointer;font-size:18px;color:#94a3b8}.scene-label{font-size:12px;font-weight:600;color:#f8fafc;padding:2px 8px;border-radius:999px;white-space:nowrap;background:#03050b8c;border:1px solid color-mix(in srgb,var(--c, #818cf8) 55%,transparent);text-shadow:0 0 10px var(--c, #818cf8);pointer-events:none}.scene-label{scale:.78;max-width:240px;overflow:hidden;text-overflow:ellipsis;border-width:.5px;text-shadow:0 0 6px color-mix(in srgb,var(--c, #818cf8) 70%,transparent);background:#03050b6b}@media(max-width:760px){.hud-counts{grid-template-columns:repeat(3,auto);bottom:auto;top:150px}.hud-legend{display:none}}.hud-agents{top:16px;right:16px;width:min(360px,calc(100vw - 32px));max-height:calc(100vh - 140px);display:flex;flex-direction:column;padding:10px 12px;font-size:13px}.hud-agents.is-collapsed{max-height:none}.ap-head{display:flex;align-items:center;gap:8px}.ap-head strong{font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:#a5b4fc}.ap-count{color:#64748b;font-size:12px;font-variant-numeric:tabular-nums}.ap-link{all:unset;cursor:pointer;margin-left:auto;font-size:12px;color:#93c5fd}.ap-toggle{all:unset;cursor:pointer;margin-left:auto;width:20px;text-align:center;color:#94a3b8;font-size:16px}.ap-link+.ap-toggle{margin-left:8px}.ap-search{margin-top:8px;width:100%;box-sizing:border-box;background:#03050b99;border:1px solid rgba(148,163,255,.2);border-radius:8px;color:inherit;font:inherit;font-size:12px;padding:6px 9px;outline:none}.ap-search:focus{border-color:#818cf8}.ap-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.ap-chips button{all:unset;cursor:pointer;display:flex;align-items:center;gap:5px;font-size:11px;padding:3px 7px;border-radius:999px;border:1px solid rgba(148,163,255,.15);color:#cbd5e1}.ap-chips button.on{border-color:var(--c);background:color-mix(in srgb,var(--c) 18%,transparent);color:#f8fafc}.ap-chips i{width:8px;height:8px;border-radius:50%;background:var(--c);box-shadow:0 0 8px var(--c)}.ap-chips em{font-style:normal;color:var(--c);font-weight:700;font-variant-numeric:tabular-nums}.ap-row-filters{display:flex;gap:6px;margin-top:8px;align-items:center}.ap-seg{display:flex;border:1px solid rgba(148,163,255,.15);border-radius:8px;overflow:hidden}.ap-seg button{all:unset;cursor:pointer;font-size:11px;padding:3px 7px;color:#94a3b8;text-transform:capitalize}.ap-seg button.on{background:#818cf840;color:#f1f5f9}.ap-row-filters select{flex:1;min-width:0;background:#03050b99;color:#cbd5e1;border:1px solid rgba(148,163,255,.15);border-radius:8px;font:inherit;font-size:11px;padding:3px 6px}.ap-list{list-style:none;margin:8px -4px 0;padding:0;overflow-y:auto;min-height:0;flex:1}.ap-list li button{all:unset;box-sizing:border-box;width:100%;cursor:pointer;display:flex;align-items:center;gap:8px;padding:6px;border-radius:8px}.ap-list li button:hover{background:#94a3ff1a}.ap-list li button.is-done{opacity:.55}.ap-list i{flex:0 0 9px;height:9px;border-radius:50%;background:var(--c);box-shadow:0 0 8px var(--c)}.ap-list i[data-status=thinking]{animation:ap-pulse .9s ease-in-out infinite}.ap-list i[data-status=waiting]{opacity:.5}.ap-list i[data-status=done]{background:transparent;border:1.5px solid var(--c);box-shadow:none}@keyframes ap-pulse{50%{transform:scale(1.5)}}.ap-name{flex:1;min-width:0;display:flex;flex-direction:column;font-size:12px;color:#e2e8f0}.ap-name small{color:#64748b;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ap-meta{text-align:right;font-size:11px;color:#94a3b8;font-variant-numeric:tabular-nums;display:flex;flex-direction:column}.ap-meta b{color:var(--c);font-weight:600;text-transform:lowercase}.ap-more{padding:6px;color:#64748b;font-size:11px}.ap-detail{overflow-y:auto;min-height:0;margin-top:8px}.ap-detail h3{margin:0;display:flex;align-items:center;gap:8px;font-size:15px;color:var(--c)}.ap-detail h3 i{width:11px;height:11px;border-radius:50%;background:var(--c);box-shadow:0 0 10px var(--c)}.ap-detail h3 small{color:#64748b;font-size:11px;font-weight:500}.ap-status{margin-top:3px;font-size:12px;color:#cbd5e1}.ap-status[data-status=thinking]{color:#fde68a}.ap-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin:10px 0 4px}.ap-stats div{background:#03050b73;border-radius:8px;padding:6px;text-align:center}.ap-stats dt{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:#64748b}.ap-stats dd{margin:2px 0 0;font-size:15px;font-weight:700;color:#f1f5f9;font-variant-numeric:tabular-nums}.ap-detail section{margin-top:10px}.ap-detail h4{margin:0 0 4px;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#64748b}.ap-detail p{margin:0;font-size:12px;color:#cbd5e1}.ap-steps{display:flex;gap:4px;margin-top:4px}.ap-steps span{font-size:10px;text-transform:uppercase;letter-spacing:.06em;padding:2px 7px;border-radius:999px;border:1px solid #334155;color:#64748b}.ap-steps span[data-status=running]{border-color:#fbbf24;color:#fde68a}.ap-steps span[data-status=done]{border-color:#22c55e;color:#86efac}.ap-chip-link{all:unset;cursor:pointer;display:block;font-size:12px;color:#e2e8f0;padding:3px 6px;border-left:2px solid var(--c);margin:2px 0;border-radius:0 6px 6px 0}.ap-chip-link:hover{background:#94a3ff1a}.ap-wait{color:#fbbf24!important;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.ap-nodes{line-height:1.5}.ap-events{margin:0;padding-left:14px;display:grid;gap:3px;font-size:11px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.hud-badge--live{background:#22c55e2e;color:#86efac}.hud-run{display:flex;gap:6px;margin-top:8px;align-items:center;flex-wrap:wrap}.hud-run input{flex:1;min-width:160px;background:#03050b99;border:1px solid rgba(148,163,255,.2);border-radius:999px;color:inherit;font:inherit;font-size:12px;padding:6px 11px;outline:none}.hud-run button{border:0;border-radius:999px;padding:6px 13px;font:inherit;font-size:12px;font-weight:600;background:linear-gradient(135deg,#818cf8,#22d3ee);color:#03050b;cursor:pointer}.hud-run button:disabled{opacity:.5}.hud-run span{font-size:11px;color:#86efac}.agentglow-embed{position:relative;overflow:hidden;width:100%;height:100%;min-height:320px;isolation:isolate}.agentglow-embed .scene-root{position:absolute;top:0;right:0;bottom:0;left:0}.agentglow-embed .hud-top{max-width:min(560px,calc(100% - 32px))}.agentglow-embed .hud-ticker{width:min(560px,calc(100% - 32px))}.agentglow-embed .hud-agents{width:min(360px,calc(100% - 32px));max-height:calc(100% - 140px)}.lod-cluster-label{all:unset;box-sizing:border-box;display:grid;gap:1px;text-align:center;cursor:pointer;pointer-events:auto;font-size:12px;font-weight:600;color:#f8fafc;padding:4px 11px 5px;border-radius:12px;white-space:nowrap;background:#03050b9e;border:1px solid color-mix(in srgb,var(--c, #818cf8) 60%,transparent);text-shadow:0 0 10px var(--c, #818cf8);box-shadow:0 0 18px color-mix(in srgb,var(--c, #818cf8) 22%,transparent);transition:border-color .2s,background .2s}.lod-cluster-label:hover{background:color-mix(in srgb,var(--c, #818cf8) 22%,rgba(3,5,11,.7));border-color:var(--c, #818cf8)}.lod-cluster-label b{font-weight:700;letter-spacing:-.01em}.lod-cluster-label small{font-size:10px;font-weight:500;color:#94a3b8;text-shadow:none;font-variant-numeric:tabular-nums}.hud-lod{left:50%;transform:translate(-50%);top:16px;padding:6px 8px 6px 14px;display:flex;align-items:center;gap:10px;font-size:12px;color:#cbd5e1;white-space:nowrap}.hud-lod b{color:#f1f5f9;font-variant-numeric:tabular-nums}.hud-lod i{width:7px;height:7px;border-radius:50%;background:#a5b4fc;box-shadow:0 0 8px #a5b4fc}.hud-lod button{all:unset;cursor:pointer;font-size:11px;padding:3px 9px;border-radius:999px;border:1px solid rgba(148,163,255,.25);color:#c7d2fe}.hud-lod button:hover{background:#818cf833;color:#f8fafc}@media(max-width:1100px){.hud-lod{top:auto;bottom:96px}}.scene-label.subway-station{font-size:10px;font-weight:500;padding:1px 6px;letter-spacing:.08em;text-transform:uppercase;color:#cbd5e1;opacity:.85}.scene-label.subway-airport{font-size:11px}.scene-label.subway-run{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:4px 9px;border-radius:10px;font-size:11px}.subway-steps{display:flex;gap:4px}.subway-steps b{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;padding:0 5px;border-radius:999px;color:#94a3b8;border:1px solid #334155;text-shadow:none}.subway-steps b[data-st=running]{color:#fde68a;border-color:#fbbf24;box-shadow:0 0 8px #fbbf2499}.subway-steps b[data-st=done]{color:#bbf7d0;border-color:#22c55e}.subway-steps b[data-st=failed]{color:#fecaca;border-color:#ef4444}.scene-label.subway-flare{font-size:10px;transition:opacity .2s}.city-root{background:#05040d}.city-district{display:grid;gap:4px;padding:5px 10px 6px;border-radius:10px;transition:opacity .4s}.city-district-top{display:flex;align-items:baseline;gap:8px}.city-district-top b{font-size:12px;color:#f8fafc}.city-count{font-size:10px;font-weight:500;color:#a5b4fc;text-shadow:none}.city-steps{display:flex;gap:4px}.city-chip{--sc: #3b4256;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:1px 7px;border-radius:999px;color:var(--sc);border:1px solid color-mix(in srgb,var(--sc) 70%,transparent);text-shadow:none}.city-chip[data-st=running]{color:#03050b;background:var(--sc);box-shadow:0 0 10px var(--sc)}.city-chip[data-st=done]{color:var(--sc);background:color-mix(in srgb,var(--sc) 18%,transparent)}.city-chip[data-st=queued]{color:#64748b;border-color:#334155}.city-chip+.city-chip:before{content:""}.city-tower-label{font-size:13px}.city-mcp-label{font-size:11px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.city-tower-label{font-size:15px;font-weight:800;letter-spacing:.06em;padding:3px 12px}.city-node-label{font-size:10px;transition:opacity .2s}.flow-run{display:flex;flex-direction:column;align-items:center;gap:4px;pointer-events:none}.flow-run .scene-label{font-size:11px;max-width:220px;overflow:hidden;text-overflow:ellipsis}.flow-steps{display:flex;gap:3px;font:600 9px/1 ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase;letter-spacing:.06em}.flow-steps span{padding:2px 5px;border-radius:999px;color:#64748b;background:#03050b8c;border:1px solid rgba(100,116,139,.35)}.flow-steps span[data-s=running]{color:#03050b;background:var(--c);border-color:var(--c);box-shadow:0 0 12px var(--c)}.flow-steps span[data-s=done]{color:var(--c);border-color:color-mix(in srgb,var(--c) 60%,transparent)}.flow-steps span[data-s=failed]{color:#fecaca;background:#7f1d1d}.flow-step{font:600 9px/1 ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase;letter-spacing:.08em;color:color-mix(in srgb,var(--c) 70%,white);text-shadow:0 0 8px var(--c);opacity:.55;pointer-events:none;white-space:nowrap;transition:opacity .3s}.flow-step[data-s=running]{opacity:1}.flow-hint{font-size:10px;padding:1px 7px;opacity:.9}.flow-label-core{font-size:11px;letter-spacing:.04em}.ap-root{background:radial-gradient(ellipse at 45% 50%,#03140e,#010604 60%,#000302)}.ap-root,.ap-tag,.ap-airport,.ap-gate,.ap-strip,.ap-wp,.ap-bearing{--mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, monospace}.ap-bearing{font:600 9px/1 var(--mono);color:#2fae6e;letter-spacing:.08em;opacity:.85;text-shadow:0 0 6px rgba(70,255,154,.5)}.ap-tag{position:relative;width:0;height:0;pointer-events:none;transition:none}.ap-leader{position:absolute;left:6px;top:-22px;overflow:visible}.ap-leader line{stroke:color-mix(in srgb,var(--c) 45%,#46ff9a);stroke-width:1;opacity:.7}.ap-tag-box{position:absolute;left:28px;top:-38px;display:grid;gap:1px;padding:2px 6px 2px 5px;border-left:2px solid var(--c);background:#010c089e;white-space:nowrap}.ap-call{font:700 10px/1.15 var(--mono);letter-spacing:.06em;color:#d9ffe9;text-shadow:0 0 8px color-mix(in srgb,var(--c) 70%,transparent)}.ap-data{font:500 9px/1.15 var(--mono);letter-spacing:.05em;color:#57d897}.ap-tag-big .ap-call{font-size:12px}.ap-tag-big .ap-data{font-size:10px}.ap-airport{width:max-content;display:flex;align-items:center;gap:6px;white-space:nowrap;font:600 10px/1 var(--mono);color:#c8f7de;letter-spacing:.04em;padding:3px 7px;border:1px solid color-mix(in srgb,var(--c) 55%,transparent);background:#010a07b3;text-shadow:0 0 8px color-mix(in srgb,var(--c) 60%,transparent)}.ap-airport-code{font-weight:800;color:var(--c);letter-spacing:.1em}.ap-gate{white-space:nowrap;font:500 9px/1 var(--mono);color:#a6e9c6;letter-spacing:.03em;padding:2px 5px;background:#010a078c;border-bottom:1px solid color-mix(in srgb,var(--c) 50%,transparent)}.ap-gate.ap-hot{color:#fff;font-weight:700;border-bottom-color:var(--c);box-shadow:0 0 10px color-mix(in srgb,var(--c) 50%,transparent)}.ap-strip{width:max-content;display:grid;gap:2px;text-align:left;padding:4px 9px 4px 8px;border-left:3px solid var(--c);background:#010c08b8;outline:1px solid rgba(70,255,154,.14);max-width:260px}.ap-strip-topic{font:600 11px/1.25 Public Sans,system-ui,sans-serif;color:#e8fff1;white-space:normal}.ap-strip-sub{font:500 9px/1.2 var(--mono);color:#5fbf8d;letter-spacing:.05em;white-space:nowrap}.ap-wp{white-space:nowrap;font:600 9px/1 var(--mono);letter-spacing:.05em;color:#e9fffb;padding:2px 5px;border:1px solid color-mix(in srgb,var(--c, #38e8ff) 60%,transparent);background:#010a0aa6;text-shadow:0 0 8px var(--c, #38e8ff)}.ap-tag-left .ap-leader{left:-28px;transform:scaleX(-1)}.ap-tag-left .ap-tag-box{left:auto;right:28px;text-align:right;border-left:0;border-right:2px solid var(--c);padding:2px 5px 2px 6px}
1
+ .scene-root{position:fixed;top:0;right:0;bottom:0;left:0;background:#03050b;color:#e8edf5;font-family:Public Sans,system-ui,sans-serif;overflow:hidden}.scene-root canvas{display:block}.hud{position:absolute;z-index:10;background:#0a0e1a8c;border:1px solid rgba(148,163,255,.16);border-radius:14px;backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3);box-shadow:0 8px 32px #00000059,inset 0 1px #ffffff0a}.hud-topwrap{position:absolute;z-index:10;top:12px;left:12px;max-width:calc(100% - var(--hud-side, 320px) - 36px);display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px;pointer-events:none}.hud-topwrap.is-rail{--hud-side: 40px}.hud-topwrap>*{pointer-events:auto}.hud-top{position:relative;padding:6px 8px 6px 12px;min-width:0}.hud-bar{display:flex;align-items:center;gap:4px 8px;flex-wrap:wrap}.hud-bar .hud-run{margin-top:0}.hud-info{all:unset;cursor:pointer;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font:italic 600 11px/1 Georgia,serif;color:#94a3b8;border:1px solid rgba(148,163,184,.35)}.hud-info:hover,.hud-info.on{color:#e2e8f0;border-color:#818cf8}.hud-theme{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#03050b8c url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5'%3E%3Cpath d='M0 0l4 5 4-5z' fill='%2394a3b8'/%3E%3C/svg%3E") no-repeat right 9px center;color:#cbd5e1;border:1px solid rgba(148,163,255,.22);border-radius:999px;font:inherit;font-size:11px;text-transform:uppercase;letter-spacing:.08em;padding:4px 24px 4px 10px;cursor:pointer;outline:none}.hud-theme:hover{border-color:#818cf8}.hud-title{display:flex;align-items:center;gap:8px;font-weight:700;font-size:15px;letter-spacing:-.01em;white-space:nowrap}.hud-sub{margin:6px 0 2px;max-width:460px;font-size:12px;line-height:1.45;color:#94a3b8}.hud-dot{width:9px;height:9px;border-radius:50%;background:#22c55e;box-shadow:0 0 10px #22c55e;animation:hud-ping 1.6s ease-out infinite}@keyframes hud-ping{0%{box-shadow:0 0 #22c55eb3}to{box-shadow:0 0 0 10px #22c55e00}}.hud-badge{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;padding:2px 7px;border-radius:999px;background:#94a3b829;color:#cbd5e1}.hud-stats{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.hud-stat{font-size:11px;color:#94a3b8;padding:2px 8px;border-radius:999px;background:#03050b66;white-space:nowrap}.hud-stat b{color:#f1f5f9;font-weight:700;font-variant-numeric:tabular-nums}.scene-root :focus-visible{outline:2px solid #818cf8;outline-offset:2px}.hud-side{top:12px;right:12px;bottom:12px;width:320px;display:flex;flex-direction:column;padding:8px 10px 10px;font-size:13px;box-sizing:border-box;animation:hs-in .18s ease-out}.hud-side.is-rail{width:40px;padding:6px 0;align-items:center}@keyframes hs-in{0%{opacity:.4}}.hs-head{display:flex;align-items:center;gap:2px;padding-bottom:8px;margin:0 -2px 2px;border-bottom:1px solid rgba(148,163,255,.12)}.hs-head button{all:unset;cursor:pointer;display:flex;align-items:center;gap:5px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:#94a3b8;padding:5px 9px;border-radius:999px}.hs-head button:hover{color:#e2e8f0}.hs-head button.on{color:#f1f5f9;background:#818cf838}.hs-head em,.hs-icon em{font-style:normal;font-size:10px;font-weight:700;font-variant-numeric:tabular-nums;color:#c7d2fe;letter-spacing:0}.hs-head .hs-collapse{margin-left:auto;font-size:14px;padding:2px 8px;letter-spacing:0}.hs-rail{display:flex;flex-direction:column;align-items:center;gap:6px}.hs-rail button{all:unset;cursor:pointer;position:relative;width:30px;height:30px;display:grid;place-items:center;border-radius:9px;color:#94a3b8}.hs-rail button:hover{color:#e2e8f0;background:#94a3ff1a}.hs-rail .hs-collapse{font-size:14px;margin-bottom:4px}.hs-icon em{position:absolute;top:-3px;right:-5px;min-width:14px;height:14px;padding:0 3px;box-sizing:border-box;border-radius:999px;display:grid;place-items:center;font-size:9px;background:#4f46e5;color:#eef2ff}.hs-icon em:empty{min-width:8px;width:8px;height:8px;padding:0;top:1px;right:1px;background:#22d3ee;box-shadow:0 0 8px #22d3ee}.hs-body{flex:1;min-height:0;display:flex;flex-direction:column}.hs-body[hidden]{display:none}.hs-empty{margin:14px 4px;font-size:12px;line-height:1.5;color:#64748b}.hs-events{list-style:none;margin:6px -4px 0;padding:0;overflow-y:auto;min-height:0;flex:1;font-size:11.5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.hs-events li>*{all:unset;box-sizing:border-box;width:100%;display:flex;gap:8px;align-items:baseline;padding:4px 6px;border-radius:7px;color:#cbd5e1;line-height:1.4}.hs-events li>button{cursor:pointer}.hs-events li>button:hover{background:#94a3ff1a;color:#f1f5f9}.hs-events i{flex:0 0 7px;height:7px;border-radius:50%;background:var(--c);box-shadow:0 0 8px var(--c);transform:translateY(-1px)}.hs-events span{min-width:0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}.ap-head{display:flex;align-items:center;gap:8px;margin-top:6px}.ap-count{flex:none;color:#64748b;font-size:11px;font-variant-numeric:tabular-nums}.ap-link{all:unset;cursor:pointer;font-size:12px;color:#93c5fd}.ap-link:hover{color:#bfdbfe}.ap-searchrow{display:flex;align-items:center;gap:8px;margin-top:8px}.ap-search{flex:1;min-width:0;width:100%;box-sizing:border-box;background:#03050b99;border:1px solid rgba(148,163,255,.2);border-radius:8px;color:inherit;font:inherit;font-size:12px;padding:6px 9px;outline:none}.ap-search:focus{border-color:#818cf8}.ap-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.ap-chips button{all:unset;cursor:pointer;display:flex;align-items:center;gap:5px;font-size:11px;padding:3px 7px;border-radius:999px;border:1px solid rgba(148,163,255,.15);color:#cbd5e1}.ap-chips button.on{border-color:var(--c);background:color-mix(in srgb,var(--c) 18%,transparent);color:#f8fafc}.ap-chips i{width:8px;height:8px;border-radius:50%;background:var(--c);box-shadow:0 0 8px var(--c)}.ap-chips em{font-style:normal;color:var(--c);font-weight:700;font-variant-numeric:tabular-nums}.ap-row-filters{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;align-items:center}.ap-seg{display:flex;border:1px solid rgba(148,163,255,.15);border-radius:8px;overflow:hidden}.ap-seg{flex:none}.ap-seg button{all:unset;cursor:pointer;font-size:11px;padding:3px 6px;color:#94a3b8;text-transform:capitalize}.ap-seg button.on{background:#818cf840;color:#f1f5f9}.ap-row-filters select{flex:1;min-width:64px;background:#03050b99;color:#cbd5e1;border:1px solid rgba(148,163,255,.15);border-radius:8px;font:inherit;font-size:11px;padding:3px 6px}.ap-list{list-style:none;margin:8px -4px 0;padding:0;overflow-y:auto;min-height:0;flex:1}.ap-list li button{all:unset;box-sizing:border-box;width:100%;cursor:pointer;display:flex;align-items:center;gap:8px;padding:6px;border-radius:8px}.ap-list li button:hover{background:#94a3ff1a}.ap-list li button.is-done{opacity:.55}.ap-list i{flex:0 0 9px;height:9px;border-radius:50%;background:var(--c);box-shadow:0 0 8px var(--c)}.ap-list i[data-status=thinking]{animation:ap-pulse .9s ease-in-out infinite}.ap-list i[data-status=waiting]{opacity:.5}.ap-list i[data-status=done]{background:transparent;border:1.5px solid var(--c);box-shadow:none}@keyframes ap-pulse{50%{transform:scale(1.5)}}.ap-name{flex:1;min-width:0;display:flex;flex-direction:column;font-size:12px;color:#e2e8f0}.ap-name small{color:#64748b;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ap-meta{text-align:right;font-size:11px;color:#94a3b8;font-variant-numeric:tabular-nums;display:flex;flex-direction:column}.ap-meta b{color:var(--c);font-weight:600;text-transform:lowercase}.ap-more{padding:6px;color:#64748b;font-size:11px}.ap-detail{overflow-y:auto;min-height:0;margin-top:8px;flex:1}.ap-detail h3{margin:0;display:flex;align-items:center;gap:8px;font-size:15px;color:var(--c)}.ap-detail h3 i{width:11px;height:11px;border-radius:50%;background:var(--c);box-shadow:0 0 10px var(--c)}.ap-detail h3 small{color:#64748b;font-size:11px;font-weight:500}.ap-status{margin-top:3px;font-size:12px;color:#cbd5e1}.ap-status[data-status=thinking]{color:#fde68a}.ap-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(46px,1fr));gap:4px;margin:10px 0 4px}.ap-stats div{background:#03050b73;border-radius:8px;padding:6px;text-align:center}.ap-stats dt{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:#64748b}.ap-stats dd{margin:2px 0 0;font-size:15px;font-weight:700;color:#f1f5f9;font-variant-numeric:tabular-nums}.ap-detail section{margin-top:10px}.ap-detail h4{margin:0 0 4px;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#64748b}.ap-detail p{margin:0;font-size:12px;color:#cbd5e1}.ap-steps{display:flex;gap:4px;margin-top:4px}.ap-steps span{font-size:10px;text-transform:uppercase;letter-spacing:.06em;padding:2px 7px;border-radius:999px;border:1px solid #334155;color:#64748b}.ap-steps span[data-status=running]{border-color:#fbbf24;color:#fde68a}.ap-steps span[data-status=done]{border-color:#22c55e;color:#86efac}.ap-chip-link{all:unset;cursor:pointer;display:block;font-size:12px;color:#e2e8f0;padding:3px 6px;border-left:2px solid var(--c);margin:2px 0;border-radius:0 6px 6px 0}.ap-chip-link:hover{background:#94a3ff1a}.ap-wait{color:#fbbf24!important;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.ap-nodes{line-height:1.5}.ap-events{margin:0;padding-left:14px;display:grid;gap:3px;font-size:11px;color:#cbd5e1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.hud-badge--live{background:#22c55e2e;color:#86efac}.hud-badge--denied{background:#f871712e;color:#fca5a5;text-transform:none;letter-spacing:.02em}.hud-chip{text-transform:none;letter-spacing:.02em;font-weight:500;background:#818cf829;color:#c7d2fe;white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis}.hud-chip b{font-weight:650;color:#e0e7ff}.hud-run{display:flex;gap:6px;margin-top:8px;align-items:center;flex-wrap:wrap}.hud-run input{flex:1;min-width:160px;background:#03050b99;border:1px solid rgba(148,163,255,.2);border-radius:999px;color:inherit;font:inherit;font-size:12px;padding:6px 11px;outline:none}.hud-run button{border:0;border-radius:999px;padding:6px 13px;font:inherit;font-size:12px;font-weight:600;background:linear-gradient(135deg,#818cf8,#22d3ee);color:#03050b;cursor:pointer}.hud-run button:disabled{opacity:.5}.hud-run span{font-size:11px;color:#86efac}.agentglow-embed{position:relative;overflow:hidden;width:100%;height:100%;min-height:320px;isolation:isolate}.agentglow-embed .scene-root{position:absolute;top:0;right:0;bottom:0;left:0}.lod-cluster-label{all:unset;box-sizing:border-box;display:grid;gap:1px;text-align:center;cursor:pointer;pointer-events:auto;font-size:12px;font-weight:600;color:#f8fafc;padding:4px 11px 5px;border-radius:12px;white-space:nowrap;background:#03050b9e;border:1px solid color-mix(in srgb,var(--c, #818cf8) 60%,transparent);text-shadow:0 0 10px var(--c, #818cf8);box-shadow:0 0 18px color-mix(in srgb,var(--c, #818cf8) 22%,transparent);transition:border-color .2s,background .2s}.lod-cluster-label:hover{background:color-mix(in srgb,var(--c, #818cf8) 22%,rgba(3,5,11,.7));border-color:var(--c, #818cf8)}.lod-cluster-label b{font-weight:700;letter-spacing:-.01em}.lod-cluster-label small{font-size:10px;font-weight:500;color:#94a3b8;text-shadow:none;font-variant-numeric:tabular-nums}.hud-dock{display:flex;align-items:center;gap:8px}.hud-dock:empty{display:none}.hud-dock>.hud{position:static}.hud-lod{padding:6px 8px 6px 12px;display:flex;align-items:center;gap:8px;font-size:12px;color:#cbd5e1;white-space:nowrap}.hud-lod span b{margin:0 1px}.hud-lod b{color:#f1f5f9;font-variant-numeric:tabular-nums}.hud-lod i{width:7px;height:7px;border-radius:50%;background:#a5b4fc;box-shadow:0 0 8px #a5b4fc}.hud-lod button{all:unset;cursor:pointer;font-size:11px;padding:3px 9px;border-radius:999px;border:1px solid rgba(148,163,255,.25);color:#c7d2fe}.hud-lod button:hover{background:#818cf833;color:#f8fafc}.scene-root{container:agscene / size}@container agscene (max-width: 719px){.scene-root .hud-top{padding:5px 7px 5px 10px}.scene-root .hud-title{font-size:13px}.scene-root .hud-theme{padding:3px 20px 3px 8px;font-size:10px;background-position:right 7px center}.scene-root .hud-stat:nth-child(n+3){display:none}.scene-root .hud-side:not(.is-rail){width:min(290px,calc(100% - 64px));padding:6px 8px 8px}.scene-root .hs-head button{padding:4px 6px;letter-spacing:.04em;font-size:10.5px}.scene-root .hs-head .hs-collapse{padding:2px 4px}.scene-root .ap-list li button{padding:4px 6px}.scene-root .hud-topwrap:not(.is-rail){--hud-side: min(290px, calc(100% - 64px) )}}@container agscene (max-height: 520px){.scene-root .hud-sub{max-height:4.5em;overflow:auto}}.scene-label.subway-station{font-size:10px;font-weight:500;padding:1px 6px;letter-spacing:.08em;text-transform:uppercase;color:#cbd5e1;opacity:.85}.scene-label.subway-airport{font-size:11px}.scene-label.subway-run{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:4px 9px;border-radius:10px;font-size:11px}.subway-steps{display:flex;gap:4px}.subway-steps b{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;padding:0 5px;border-radius:999px;color:#94a3b8;border:1px solid #334155;text-shadow:none}.subway-steps b[data-st=running]{color:#fde68a;border-color:#fbbf24;box-shadow:0 0 8px #fbbf2499}.subway-steps b[data-st=done]{color:#bbf7d0;border-color:#22c55e}.subway-steps b[data-st=failed]{color:#fecaca;border-color:#ef4444}.scene-label.subway-flare{font-size:10px;transition:opacity .2s}.city-root{background:#05040d}.city-district{display:grid;gap:4px;padding:5px 10px 6px;border-radius:10px;transition:opacity .4s}.city-district-top{display:flex;align-items:baseline;gap:8px}.city-district-top b{font-size:12px;color:#f8fafc}.city-count{font-size:10px;font-weight:500;color:#a5b4fc;text-shadow:none}.city-steps{display:flex;gap:4px}.city-chip{--sc: #3b4256;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:1px 7px;border-radius:999px;color:var(--sc);border:1px solid color-mix(in srgb,var(--sc) 70%,transparent);text-shadow:none}.city-chip[data-st=running]{color:#03050b;background:var(--sc);box-shadow:0 0 10px var(--sc)}.city-chip[data-st=done]{color:var(--sc);background:color-mix(in srgb,var(--sc) 18%,transparent)}.city-chip[data-st=queued]{color:#64748b;border-color:#334155}.city-chip+.city-chip:before{content:""}.city-tower-label{font-size:13px}.city-mcp-label{font-size:11px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.city-tower-label{font-size:15px;font-weight:800;letter-spacing:.06em;padding:3px 12px}.city-node-label{font-size:10px;transition:opacity .2s}.tunnel-pause{padding:7px 14px;color:#e2e8f0;font:600 11px/1 Public Sans,system-ui,sans-serif;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;white-space:nowrap}.flow-run{display:flex;flex-direction:column;align-items:center;gap:4px;pointer-events:none}.flow-run .scene-label{font-size:11px;max-width:220px;overflow:hidden;text-overflow:ellipsis}.flow-steps{display:flex;gap:3px;font:600 9px/1 ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase;letter-spacing:.06em}.flow-steps span{padding:2px 5px;border-radius:999px;color:#64748b;background:#03050b8c;border:1px solid rgba(100,116,139,.35)}.flow-steps span[data-s=running]{color:#03050b;background:var(--c);border-color:var(--c);box-shadow:0 0 12px var(--c)}.flow-steps span[data-s=done]{color:var(--c);border-color:color-mix(in srgb,var(--c) 60%,transparent)}.flow-steps span[data-s=failed]{color:#fecaca;background:#7f1d1d}.flow-step{font:600 9px/1 ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase;letter-spacing:.08em;color:color-mix(in srgb,var(--c) 70%,white);text-shadow:0 0 8px var(--c);opacity:.55;pointer-events:none;white-space:nowrap;transition:opacity .3s}.flow-step[data-s=running]{opacity:1}.flow-hint{font-size:10px;padding:1px 7px;opacity:.9}.flow-label-core{font-size:11px;letter-spacing:.04em}.ap-root{background:radial-gradient(ellipse at 45% 50%,#03140e,#010604 60%,#000302)}.ap-root,.ap-tag,.ap-airport,.ap-gate,.ap-strip,.ap-wp,.ap-bearing{--mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, monospace}.ap-bearing{font:600 9px/1 var(--mono);color:#2fae6e;letter-spacing:.08em;opacity:.85;text-shadow:0 0 6px rgba(70,255,154,.5)}.ap-tag{position:relative;width:0;height:0;pointer-events:none;transition:none}.ap-leader{position:absolute;left:6px;top:-22px;overflow:visible}.ap-leader line{stroke:color-mix(in srgb,var(--c) 45%,#46ff9a);stroke-width:1;opacity:.7}.ap-tag-box{position:absolute;left:28px;top:-38px;display:grid;gap:1px;padding:2px 6px 2px 5px;border-left:2px solid var(--c);background:#010c089e;white-space:nowrap}.ap-call{font:700 10px/1.15 var(--mono);letter-spacing:.06em;color:#d9ffe9;text-shadow:0 0 8px color-mix(in srgb,var(--c) 70%,transparent)}.ap-data{font:500 9px/1.15 var(--mono);letter-spacing:.05em;color:#57d897}.ap-tag-big .ap-call{font-size:12px}.ap-tag-big .ap-data{font-size:10px}.ap-airport{width:max-content;display:flex;align-items:center;gap:6px;white-space:nowrap;font:600 10px/1 var(--mono);color:#c8f7de;letter-spacing:.04em;padding:3px 7px;border:1px solid color-mix(in srgb,var(--c) 55%,transparent);background:#010a07b3;text-shadow:0 0 8px color-mix(in srgb,var(--c) 60%,transparent)}.ap-airport-code{font-weight:800;color:var(--c);letter-spacing:.1em}.ap-gate{white-space:nowrap;font:500 9px/1 var(--mono);color:#a6e9c6;letter-spacing:.03em;padding:2px 5px;background:#010a078c;border-bottom:1px solid color-mix(in srgb,var(--c) 50%,transparent)}.ap-gate.ap-hot{color:#fff;font-weight:700;border-bottom-color:var(--c);box-shadow:0 0 10px color-mix(in srgb,var(--c) 50%,transparent)}.ap-strip{width:max-content;display:grid;gap:2px;text-align:left;padding:4px 9px 4px 8px;border-left:3px solid var(--c);background:#010c08b8;outline:1px solid rgba(70,255,154,.14);max-width:260px}.ap-strip-topic{font:600 11px/1.25 Public Sans,system-ui,sans-serif;color:#e8fff1;white-space:normal}.ap-strip-sub{font:500 9px/1.2 var(--mono);color:#5fbf8d;letter-spacing:.05em;white-space:nowrap}.ap-wp{white-space:nowrap;font:600 9px/1 var(--mono);letter-spacing:.05em;color:#e9fffb;padding:2px 5px;border:1px solid color-mix(in srgb,var(--c, #38e8ff) 60%,transparent);background:#010a0aa6;text-shadow:0 0 8px var(--c, #38e8ff)}.ap-tag-left .ap-leader{left:-28px;transform:scaleX(-1)}.ap-tag-left .ap-tag-box{left:auto;right:28px;text-align:right;border-left:0;border-right:2px solid var(--c);padding:2px 5px 2px 6px}
@@ -10,8 +10,21 @@ export type AgentSceneProps = {
10
10
  hud?: boolean;
11
11
  /** Use the built-in simulator instead of a server. Default false (auto-fallback if the server is unreachable). */
12
12
  sim?: boolean;
13
+ /**
14
+ * Only show agents in this scope (e.g. a user or tenant id). Sent as the `X-AgentGlow-Scope` header, never in a URL.
15
+ * On a server that requires tokens the token decides the scope; this is then only a label (and the POST /live/run scope).
16
+ */
17
+ scope?: string;
18
+ /** Only show this one run (sent as the `X-AgentGlow-Run` header). */
19
+ run?: string;
20
+ /**
21
+ * Bearer token minted by YOUR backend (see the root README / SPEC for the format). Sent as
22
+ * `Authorization: Bearer <token>` on every /live/* request, never in a URL. A 401 shows
23
+ * "not authorized" in the HUD instead of falling back to the simulator.
24
+ */
25
+ token?: string;
13
26
  style?: CSSProperties;
14
27
  className?: string;
15
28
  };
16
- export declare function AgentScene({ theme, source, hud, sim, style, className }: AgentSceneProps): import("react").JSX.Element;
29
+ export declare function AgentScene({ theme, source, hud, sim, scope, run, token, style, className }: AgentSceneProps): import("react").JSX.Element;
17
30
  export default AgentScene;
@@ -211,7 +211,14 @@ export declare const world: {
211
211
  instances: Map<string, Instance>;
212
212
  comets: Comet[];
213
213
  flares: Flare[];
214
+ /**
215
+ * MCP servers agents have CALLED (an `mcp` event). Registration alone (`mcp_register`) does not add one here:
216
+ * it only fills mcpRegistry (names / backend kinds) so a newly used server looks right immediately.
217
+ * Visibility over time: mcpWanted(srv) (shown while used, hidden after MCP_IDLE_MS idle).
218
+ */
214
219
  mcpServers: Map<string, McpServer>;
220
+ /** registered (not necessarily used) MCP servers: server -> backend name -> kind */
221
+ mcpRegistry: Map<string, Map<string, ResourceKind>>;
215
222
  mcpCalls: McpCall[];
216
223
  /** in-flight MCP calls keyed `${instance}|${server}|${tool}`; resolvedAt kept briefly for a "snap back" effect */
217
224
  mcpPending: Map<string, McpPending>;
@@ -234,12 +241,25 @@ export declare const world: {
234
241
  mode: "connecting" | "sim" | "live";
235
242
  /** label for the graph/memory structure: names the DB only when the server provides a real graph */
236
243
  graphLabel: string;
244
+ /**
245
+ * True once this session USES a knowledge graph: a `graph` read/write event arrived, or sim mode (the
246
+ * simulator emits graph events). A served /live/graph sample alone does not flip it (it only supplies the
247
+ * real nodes to draw once the graph is used). Sticky for the session. When false, scenes draw
248
+ * no graph centerpiece and let the agents take the center. Use `graphMix()` in useFrame for a smooth 0..1.
249
+ */
250
+ hasGraph: boolean;
251
+ /** performance.now() when hasGraph flipped true (drives the fade-in / layout ease) */
252
+ hasGraphAt: number;
237
253
  focus: string | null;
238
254
  focusAt: number;
255
+ /** last `task` / `Agent` tool call (performance.now()): a subagent is about to spawn (FitCamera batches it) */
256
+ spawnHintAt: number;
239
257
  /** exited instances kept for the agent panel after their shape fades (newest last, capped) */
240
258
  archive: Map<string, Instance>;
241
259
  /** instance selected in the agent panel or by clicking a shape */
242
260
  selected: string | null;
261
+ /** the server answered 401 for this scope/run/token (the HUD shows a notice; no simulator fallback) */
262
+ unauthorized: boolean;
243
263
  };
244
264
  /** Subscribe a React component to world changes (HUD / DOM). Scenes should read `world` in useFrame instead. */
245
265
  export declare function useWorld(): {
@@ -247,7 +267,14 @@ export declare function useWorld(): {
247
267
  instances: Map<string, Instance>;
248
268
  comets: Comet[];
249
269
  flares: Flare[];
270
+ /**
271
+ * MCP servers agents have CALLED (an `mcp` event). Registration alone (`mcp_register`) does not add one here:
272
+ * it only fills mcpRegistry (names / backend kinds) so a newly used server looks right immediately.
273
+ * Visibility over time: mcpWanted(srv) (shown while used, hidden after MCP_IDLE_MS idle).
274
+ */
250
275
  mcpServers: Map<string, McpServer>;
276
+ /** registered (not necessarily used) MCP servers: server -> backend name -> kind */
277
+ mcpRegistry: Map<string, Map<string, ResourceKind>>;
251
278
  mcpCalls: McpCall[];
252
279
  /** in-flight MCP calls keyed `${instance}|${server}|${tool}`; resolvedAt kept briefly for a "snap back" effect */
253
280
  mcpPending: Map<string, McpPending>;
@@ -270,12 +297,25 @@ export declare function useWorld(): {
270
297
  mode: "connecting" | "sim" | "live";
271
298
  /** label for the graph/memory structure: names the DB only when the server provides a real graph */
272
299
  graphLabel: string;
300
+ /**
301
+ * True once this session USES a knowledge graph: a `graph` read/write event arrived, or sim mode (the
302
+ * simulator emits graph events). A served /live/graph sample alone does not flip it (it only supplies the
303
+ * real nodes to draw once the graph is used). Sticky for the session. When false, scenes draw
304
+ * no graph centerpiece and let the agents take the center. Use `graphMix()` in useFrame for a smooth 0..1.
305
+ */
306
+ hasGraph: boolean;
307
+ /** performance.now() when hasGraph flipped true (drives the fade-in / layout ease) */
308
+ hasGraphAt: number;
273
309
  focus: string | null;
274
310
  focusAt: number;
311
+ /** last `task` / `Agent` tool call (performance.now()): a subagent is about to spawn (FitCamera batches it) */
312
+ spawnHintAt: number;
275
313
  /** exited instances kept for the agent panel after their shape fades (newest last, capped) */
276
314
  archive: Map<string, Instance>;
277
315
  /** instance selected in the agent panel or by clicking a shape */
278
316
  selected: string | null;
317
+ /** the server answered 401 for this scope/run/token (the HUD shows a notice; no simulator fallback) */
318
+ unauthorized: boolean;
279
319
  };
280
320
  /** Stable pseudo-random 0..1 from a string (same id → same value, different ids → different values). */
281
321
  export declare const hash01: (id: string, salt?: number) => number;
@@ -298,4 +338,23 @@ export declare function selectInstance(id: string | null): void;
298
338
  export declare function setSimulated(v: boolean): void;
299
339
  /** Name the graph structure (e.g. when the server serves a real FalkorDB sample). */
300
340
  export declare function setGraphLabel(label: string): void;
341
+ /** The server refused this scope/run/token (401). */
342
+ export declare function setUnauthorized(v: boolean): void;
343
+ /** Forget every run, agent and stat (a new connection with a different scope/run filter starts clean). */
344
+ export declare function resetWorld(): void;
301
345
  export declare function setMode(m: "sim" | "live"): void;
346
+ /** Mark that this session has a knowledge graph (sticky: once true it stays true). */
347
+ export declare function setHasGraph(v: boolean, doNotify?: boolean): void;
348
+ /** An MCP server with no calls for this long (and none in flight) fades out; the next call fades it back in. */
349
+ export declare const MCP_IDLE_MS = 90000;
350
+ /** Should this MCP server (and its used backends) be drawn now? Shared "only show resources while used" rule. */
351
+ export declare function mcpWanted(srv: McpServer, now?: number): boolean;
352
+ /** How long the side graph fades in after hasGraph flips true (ms). */
353
+ export declare const GRAPH_FADE_MS = 1800;
354
+ /**
355
+ * 0..1 graph presence for useFrame: 0 = no graph (agents take the center), 1 = graph fully shown.
356
+ * Eases (smoothstep) over GRAPH_FADE_MS after hasGraph flips (the kit fades the side graph in with it).
357
+ */
358
+ export declare function graphMix(now?: number): number;
359
+ /** React hook: does this session have a knowledge graph? (re-renders when it flips true) */
360
+ export declare function useHasGraph(): boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentglow",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Live 3D views of agent systems (LangGraph, deepagents, any OpenTelemetry-instrumented agents) as a React component.",
5
5
  "keywords": [
6
6
  "opentelemetry",