agentglow 0.4.1 → 0.4.3

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.
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-DjDzoHSk.js";
3
+ import { A as E, T as s, a as T } from "./chunks/index-CW8fTJn1.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-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}.hud-dec{--dc: 94, 234, 212;animation:hud-dec-pulse .7s ease-out}.hud-dec.is-deny{--dc: 251, 59, 92}@keyframes hud-dec-pulse{0%{background:rgba(var(--dc),.5);box-shadow:0 0 rgba(var(--dc),.7);color:#fff}35%{background:rgba(var(--dc),.28);box-shadow:0 0 0 5px rgba(var(--dc),0)}to{background:#03050b66;box-shadow:0 0 rgba(var(--dc),0)}}@media(prefers-reduced-motion:reduce){.hud-dec{animation:none}}.hud-dec-hv{display:inline-flex;align-items:center;gap:4px;color:#a7f3d0;background:#5eead41a}.hud-dec-hv.is-deny{color:#fecdd3;background:#fb3b5c24}.hud-spark{color:#5eead4;margin-left:2px}.hud-dec-hv.is-deny .hud-spark{color:#fb7185}.hud-halt{color:#fecdd3;background:#fb3b5c38;box-shadow:inset 0 0 0 1px #fb3b5c8c;animation:hud-halt 1.6s ease-in-out infinite}.hud-halt b{color:#fb3b5c;letter-spacing:.04em}@keyframes hud-halt{50%{background:#fb3b5c57}}@media(prefers-reduced-motion:reduce){.hud-halt{animation:none}}.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}.hs-events li.is-skill>*{background:#f5b83d12}.hs-skill{flex:0 0 auto;font-size:9.5px;font-weight:600;line-height:1.5;text-transform:uppercase;letter-spacing:.06em;color:#fcd581;padding:0 6px;border-radius:999px;border:1px solid rgba(245,184,61,.55);background:#f5b83d1f}.ap-title{display:flex;align-items:center;gap:6px;min-width:0}.ap-skill{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal;font-size:9.5px;font-weight:600;color:#fcd581;padding:0 6px;border-radius:999px;border:1px solid rgba(245,184,61,.55);background:#f5b83d1f}.ap-skill:before{content:"skill:";color:#b8893a;font-weight:500}.hs-skill:before{content:"";display:inline-block;width:6px;height:6px;margin:0 4px 0 -1px;border:1px solid currentColor;border-radius:50%;vertical-align:0;box-shadow:0 0 4px #f5b83d99}.hs-events li.is-dec>*{background:#5eead40d}.hs-events li.is-deny>*{background:#fb3b5c1f}.hs-dec{flex:0 0 auto;font-size:9.5px;font-weight:600;line-height:1.5;text-transform:uppercase;letter-spacing:.06em;color:var(--c);padding:0 6px;border-radius:3px;border:1px solid var(--c);background:#ffffff0a}.ap-decisions{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}.ap-decisions li{display:flex;gap:6px;align-items:baseline;font-size:11px;color:#e2e8f0;padding:2px 6px;border-left:2px solid var(--c);background:#ffffff08}.ap-decisions li.is-deny{background:#fb3b5c1f}.ap-decisions li.is-strike span{text-decoration:line-through;color:#94a3b8}.ap-hv{font-size:11.5px;color:#e2e8f0;margin:0 0 4px;font-variant-numeric:tabular-nums}.ap-hv-bar{display:flex;height:6px;border-radius:3px;overflow:hidden;gap:1px;background:#ffffff0d}.ap-hv-bar span{flex-basis:0;min-width:2px}.ap-decisions b{flex:0 0 auto;font-size:9.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--c)}.ap-decisions span{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ap-decisions em{flex:0 0 auto;font-style:normal;font-size:10px;color:#94a3b8;font-variant-numeric:tabular-nums}.ap-skills{display:flex;flex-wrap:wrap;gap:4px}.ap-skills span{font-size:11px;color:#e2e8f0;padding:2px 8px;border-radius:999px;border:1px solid rgba(245,184,61,.35);background:#f5b83d0f;display:inline-flex;gap:5px;align-items:baseline}.ap-skills span.on{border-color:#f5b83d;background:#f5b83d2e;color:#fde7b0;box-shadow:0 0 10px #f5b83d40}.ap-skills em{font-style:normal;font-size:10px;color:#b8893a;font-variant-numeric:tabular-nums}.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-status[data-status=waiting]{color:#fcd34d}.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;flex-wrap:wrap;gap:4px;margin-top:4px}.ap-steps span{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;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=waiting]{border-color:#f59e0b;color:#fcd34d;background:#f59e0b24;animation:ap-wait-pulse 1.8s ease-in-out infinite}.ap-steps span[data-status=done]{border-color:#22c55e;color:#86efac}.ap-steps span[data-status=failed]{border-color:#ef4444;color:#fca5a5}.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-idle{color:#94a3b8!important;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.ap-runhead{display:flex;align-items:center;justify-content:space-between}.ap-dismiss{border:0;background:transparent;color:#94a3b8;font-size:15px;line-height:1;padding:0 4px;cursor:pointer;border-radius:4px}.ap-dismiss:hover,.ap-dismiss:focus-visible{color:#f1f5f9;background:#94a3b82e}.hud-hidden{border:0;cursor:pointer}.hud-hidden:hover{color:#f1f5f9}.ap-nodes{line-height:1.5}.ap-chat{margin:0;padding:0;list-style:none;display:grid;gap:6px;font-size:12px;color:#e2e8f0;white-space:pre-wrap;overflow-wrap:anywhere;max-height:320px;overflow-y:auto}.ap-chat li[data-role=user]{color:#c7d2fe}.ap-chat li[data-role=agent]{padding-bottom:6px;border-bottom:1px solid rgba(148,163,255,.12)}.ap-chat b{font-weight:650}.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 select{max-width:160px;min-width:0;background:#03050b99;color:#cbd5e1;border:1px solid rgba(148,163,255,.2);border-radius:999px;font:inherit;font-size:12px;padding:5px 9px;cursor:pointer}.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}}@keyframes ap-wait-pulse{50%{box-shadow:0 0 10px #f59e0b8c;border-color:#fbbf24}}@media(prefers-reduced-motion:reduce){.ap-steps span[data-status=waiting]{animation:none}}.hud-approve{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:8px}.hud-approve button{border:1px solid transparent;border-radius:999px;padding:5px 13px;font:inherit;font-size:12px;font-weight:650;cursor:pointer}.hud-approve .ha-yes{background:linear-gradient(135deg,#34d399,#22d3ee);color:#03050b}.hud-approve .ha-no{background:#fb3b5c24;border-color:#fb718599;color:#fecdd3}.hud-approve .ha-yes:hover{filter:brightness(1.1)}.hud-approve .ha-no:hover{background:#fb3b5c47}.hud-approve span{font-size:11px;color:#94a3b8}.hud-approve[data-verdict=approved] span,.hud-approve[data-verdict=approving] span{color:#86efac}.hud-approve[data-verdict=rejected] span,.hud-approve[data-verdict=rejecting] span,.hud-approve[data-verdict=error] span{color:#fda4af}.hud-approve.is-compact{margin-top:0;flex:none;gap:4px}.hud-approve.is-compact button{padding:3px 9px;font-size:11px}.hud-approvals{left:12px;bottom:12px;z-index:9;width:max-content;max-width:min(460px,calc(100% - 356px));padding:8px 10px;font-size:12px;box-sizing:border-box;border-color:#f59e0b73;box-shadow:0 8px 32px #00000059,0 0 18px #f59e0b1f}.hud-approvals.is-rail{max-width:min(460px,calc(100% - 76px))}.hud-approvals h4{margin:0 0 6px;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#fcd34d;display:flex;gap:6px;align-items:baseline}.hud-approvals h4 em{font-style:normal;font-variant-numeric:tabular-nums;color:#fde68a}.hud-approvals ul{list-style:none;margin:0;padding:0;display:grid;gap:4px}.hud-approvals .ha-late{font-style:normal}.hud-approvals .ha-late.is-due{color:#86efac}.hud-approvals .ha-late.is-overdue{color:#f59e0b;font-weight:600}.hud-approvals li{display:flex;align-items:center;gap:8px;min-width:0}.hud-approvals .ha-who{all:unset;cursor:pointer;flex:1;min-width:0;display:flex;align-items:baseline;gap:6px;padding:2px 4px;border-radius:6px}.hud-approvals .ha-who:hover{background:#94a3ff1a}.hud-approvals .ha-who i{flex:0 0 8px;height:8px;border-radius:50%;background:var(--c);box-shadow:0 0 8px var(--c);align-self:center}.hud-approvals .ha-who b{color:#e2e8f0;font-weight:650;white-space:nowrap}.hud-approvals .ha-who span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#fbbf24;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.hud-approvals p{margin:6px 0 0;font-size:11px;color:#64748b}.hud-approvals .ha-details,.ap-approve-row .ha-details{all:unset;cursor:pointer;flex:none;font-size:11px;color:#cbd5e1;padding:3px 8px;border-radius:999px;border:1px solid rgba(148,163,255,.28)}.hud-approvals .ha-details:hover,.ap-approve-row .ha-details:hover,.hud-approvals .ha-details:focus-visible{border-color:#818cf8;color:#f1f5f9}.ap-approve-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ap-approve-row .ha-details{margin-top:8px}.hud-drawer{top:64px;max-height:calc(100% - 76px);right:calc(var(--hud-side, 320px) + 24px);width:360px;max-width:calc(100% - var(--hud-side, 320px) - 48px);z-index:11;display:flex;flex-direction:column;gap:10px;padding:14px 14px 12px;box-sizing:border-box;overflow-y:auto;font-size:12px;outline:none;background:#0a0e1ac7;border-color:#f59e0b73;box-shadow:0 12px 40px #00000073,0 0 22px #f59e0b1a;animation:hd-in .18s ease-out}.hud-drawer.is-rail{--hud-side: 40px}@keyframes hd-in{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.hud-drawer{animation:none}}.hud-drawer .hd-head{display:flex;align-items:flex-start;gap:8px}.hud-drawer .hd-head>div{flex:1;min-width:0}.hud-drawer .hd-kicker{margin:0 0 2px;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#fcd34d}.hud-drawer h3{margin:0;font-size:15px;font-weight:700;line-height:1.3;color:#f1f5f9;overflow-wrap:anywhere}.hud-drawer .hd-close{all:unset;cursor:pointer;width:24px;height:24px;display:grid;place-items:center;border-radius:50%;font-size:17px;color:#94a3b8}.hud-drawer .hd-close:hover,.hud-drawer .hd-close:focus-visible{color:#f1f5f9;background:#94a3ff24}.hud-drawer .hd-who{all:unset;cursor:pointer;display:flex;align-items:baseline;gap:6px;min-width:0;padding:2px 4px;margin:-2px -4px;border-radius:6px}.hud-drawer .hd-who:hover{background:#94a3ff1a}.hud-drawer .hd-who i{flex:0 0 8px;height:8px;border-radius:50%;background:var(--c);box-shadow:0 0 8px var(--c);align-self:center}.hud-drawer .hd-who b{color:#e2e8f0;white-space:nowrap}.hud-drawer .hd-who span{color:#94a3b8;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hud-drawer .hd-deadline{align-self:flex-start;font-size:11px;font-variant-numeric:tabular-nums;color:#fde68a;padding:2px 9px;border-radius:999px;background:#f59e0b1f;border:1px solid rgba(245,158,11,.3)}.hud-drawer .hd-deadline.is-due{color:#86efac;background:#22c55e1f;border-color:#22c55e59}.hud-drawer .hd-deadline.is-overdue{color:#fbbf24;font-weight:650}.hud-drawer section h4{margin:0 0 5px;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#64748b}.hud-drawer .hd-why{border-left:2px solid #5eead4;padding:2px 0 2px 8px}.hud-drawer .hd-why.is-deny{border-left-color:#fb7185}.hud-drawer .hd-why p{margin:0 0 4px;color:#e2e8f0;line-height:1.4}.hud-drawer .hd-why p b{font-size:9px;letter-spacing:.06em;color:#94a3b8;margin-right:2px}.hud-drawer .hd-why p em{font-style:normal;font-weight:700;color:#5eead4}.hud-drawer .hd-why.is-deny p em{color:#fda4af}.hud-drawer .hd-reason{margin:0;color:#fbbf24;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.hud-drawer .hd-dl{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;margin:0;font-size:11px}.hud-drawer .hd-dl div{display:contents}.hud-drawer .hd-dl dt{color:#64748b}.hud-drawer .hd-dl dd{margin:0;color:#e2e8f0;font-variant-numeric:tabular-nums;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hud-drawer .hd-details dd{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.hud-drawer .ap-decisions{margin:0}.hud-drawer .hd-foot{display:grid;gap:8px;padding-top:4px;border-top:1px solid rgba(148,163,255,.12)}.hud-drawer .hd-note{width:100%;box-sizing:border-box;resize:vertical;min-height:38px;margin-top:8px;padding:6px 8px;font:inherit;font-size:12px;color:#e2e8f0;background:#03050b8c;border:1px solid rgba(148,163,255,.22);border-radius:8px;outline:none}.hud-drawer .hd-note:focus{border-color:#818cf8}.hud-drawer .hud-approve{margin-top:0}.hud-drawer .hd-keys{margin:0;font-size:10px;color:#64748b}.hud-drawer .hd-links{display:flex;flex-wrap:wrap;gap:6px}.hud-drawer .hd-links a,.hud-drawer .hd-links button{all:unset;cursor:pointer;font-size:11px;color:#c7d2fe;padding:3px 9px;border-radius:999px;border:1px solid rgba(148,163,255,.28)}.hud-drawer .hd-links a:hover,.hud-drawer .hd-links button:hover,.hud-drawer .hd-links a:focus-visible,.hud-drawer .hd-links button:focus-visible{border-color:#818cf8;color:#f1f5f9}.hud-halotip{position:fixed;z-index:30;pointer-events:none;padding:5px 8px;border-radius:8px;font-size:11px;line-height:1.45;color:#cbd5e1;background:#0a0e1ae0;border:1px solid rgba(148,163,255,.22);font-variant-numeric:tabular-nums;white-space:nowrap}.hud-halotip b{color:#f1f5f9}@container agscene (max-width: 719px){.scene-root .hud-approvals{max-width:calc(100% - 76px);padding:6px 8px}.scene-root .hud-approvals .ha-who span{display:none}.scene-root .hud-drawer{left:8px;right:8px;top:auto;bottom:8px;width:auto;max-width:none;max-height:72%}}.hud-rejected{color:#fde68a}.hud-rejected b{color:#fbbf24}.ap-prim-dim{font-size:11px;color:#94a3b8;margin:3px 0 0;font-variant-numeric:tabular-nums}.ap-prim-bar{height:6px;border-radius:3px;overflow:hidden;background:#ffffff0f;margin-top:6px}.ap-prim-bar span{display:block;height:100%;background:#5eead4;box-shadow:0 0 8px #5eead480}.ap-skills span.ap-prim-stage{border-color:color-mix(in srgb,var(--c) 45%,transparent);background:color-mix(in srgb,var(--c) 8%,transparent)}.ap-skills span.ap-prim-stage.on{border-color:var(--c);color:#e6fffb;box-shadow:0 0 10px color-mix(in srgb,var(--c) 30%,transparent)}.ap-skills span.ap-prim-stage em{color:#94a3b8}.ap-prim-dl{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;margin:0;font-size:11px}.ap-prim-dl div{display:contents}.ap-prim-dl dt{color:#64748b}.ap-prim-dl dd{margin:0;color:#e2e8f0;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;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}
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-clear{all:unset;cursor:pointer;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;padding:2px 7px;border-radius:999px;color:#94a3b8;border:1px solid rgba(148,163,184,.35)}.hud-clear:hover,.hud-clear:focus-visible{color:#e2e8f0;border-color:#818cf8}.hud-cleared{background:#818cf833;color:#c7d2fe}.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}.hud-dec{--dc: 94, 234, 212;animation:hud-dec-pulse .7s ease-out}.hud-dec.is-deny{--dc: 251, 59, 92}@keyframes hud-dec-pulse{0%{background:rgba(var(--dc),.5);box-shadow:0 0 rgba(var(--dc),.7);color:#fff}35%{background:rgba(var(--dc),.28);box-shadow:0 0 0 5px rgba(var(--dc),0)}to{background:#03050b66;box-shadow:0 0 rgba(var(--dc),0)}}@media(prefers-reduced-motion:reduce){.hud-dec{animation:none}}.hud-dec-hv{display:inline-flex;align-items:center;gap:4px;color:#a7f3d0;background:#5eead41a}.hud-dec-hv.is-deny{color:#fecdd3;background:#fb3b5c24}.hud-spark{color:#5eead4;margin-left:2px}.hud-dec-hv.is-deny .hud-spark{color:#fb7185}.hud-halt{color:#fecdd3;background:#fb3b5c38;box-shadow:inset 0 0 0 1px #fb3b5c8c;animation:hud-halt 1.6s ease-in-out infinite}.hud-halt b{color:#fb3b5c;letter-spacing:.04em}@keyframes hud-halt{50%{background:#fb3b5c57}}@media(prefers-reduced-motion:reduce){.hud-halt{animation:none}}.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}.hs-events li.is-skill>*{background:#f5b83d12}.hs-skill{flex:0 0 auto;font-size:9.5px;font-weight:600;line-height:1.5;text-transform:uppercase;letter-spacing:.06em;color:#fcd581;padding:0 6px;border-radius:999px;border:1px solid rgba(245,184,61,.55);background:#f5b83d1f}.ap-title{display:flex;align-items:center;gap:6px;min-width:0}.ap-skill{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal;font-size:9.5px;font-weight:600;color:#fcd581;padding:0 6px;border-radius:999px;border:1px solid rgba(245,184,61,.55);background:#f5b83d1f}.ap-skill:before{content:"skill:";color:#b8893a;font-weight:500}.hs-skill:before{content:"";display:inline-block;width:6px;height:6px;margin:0 4px 0 -1px;border:1px solid currentColor;border-radius:50%;vertical-align:0;box-shadow:0 0 4px #f5b83d99}.hs-events li.is-dec>*{background:#5eead40d}.hs-events li.is-deny>*{background:#fb3b5c1f}.hs-dec{flex:0 0 auto;font-size:9.5px;font-weight:600;line-height:1.5;text-transform:uppercase;letter-spacing:.06em;color:var(--c);padding:0 6px;border-radius:3px;border:1px solid var(--c);background:#ffffff0a}.ap-decisions{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}.ap-decisions li{display:flex;gap:6px;align-items:baseline;font-size:11px;color:#e2e8f0;padding:2px 6px;border-left:2px solid var(--c);background:#ffffff08}.ap-decisions li.is-deny{background:#fb3b5c1f}.ap-decisions li.is-strike span{text-decoration:line-through;color:#94a3b8}.ap-hv{font-size:11.5px;color:#e2e8f0;margin:0 0 4px;font-variant-numeric:tabular-nums}.ap-hv-bar{display:flex;height:6px;border-radius:3px;overflow:hidden;gap:1px;background:#ffffff0d}.ap-hv-bar span{flex-basis:0;min-width:2px}.ap-decisions b{flex:0 0 auto;font-size:9.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--c)}.ap-decisions span{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ap-decisions em{flex:0 0 auto;font-style:normal;font-size:10px;color:#94a3b8;font-variant-numeric:tabular-nums}.ap-skills{display:flex;flex-wrap:wrap;gap:4px}.ap-skills span{font-size:11px;color:#e2e8f0;padding:2px 8px;border-radius:999px;border:1px solid rgba(245,184,61,.35);background:#f5b83d0f;display:inline-flex;gap:5px;align-items:baseline}.ap-skills span.on{border-color:#f5b83d;background:#f5b83d2e;color:#fde7b0;box-shadow:0 0 10px #f5b83d40}.ap-skills em{font-style:normal;font-size:10px;color:#b8893a;font-variant-numeric:tabular-nums}.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-status[data-status=waiting]{color:#fcd34d}.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;flex-wrap:wrap;gap:4px;margin-top:4px}.ap-steps span{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;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=waiting]{border-color:#f59e0b;color:#fcd34d;background:#f59e0b24;animation:ap-wait-pulse 1.8s ease-in-out infinite}.ap-steps span[data-status=done]{border-color:#22c55e;color:#86efac}.ap-steps span[data-status=failed]{border-color:#ef4444;color:#fca5a5}.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-idle{color:#94a3b8!important;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.ap-runhead{display:flex;align-items:center;justify-content:space-between}.ap-dismiss{border:0;background:transparent;color:#94a3b8;font-size:15px;line-height:1;padding:0 4px;cursor:pointer;border-radius:4px}.ap-dismiss:hover,.ap-dismiss:focus-visible{color:#f1f5f9;background:#94a3b82e}.hud-hidden{border:0;cursor:pointer}.hud-hidden:hover{color:#f1f5f9}.ap-nodes{line-height:1.5}.ap-chat{margin:0;padding:0;list-style:none;display:grid;gap:6px;font-size:12px;color:#e2e8f0;white-space:pre-wrap;overflow-wrap:anywhere;max-height:320px;overflow-y:auto}.ap-chat li[data-role=user]{color:#c7d2fe}.ap-chat li[data-role=agent]{padding-bottom:6px;border-bottom:1px solid rgba(148,163,255,.12)}.ap-chat b{font-weight:650}.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 select{max-width:160px;min-width:0;background:#03050b99;color:#cbd5e1;border:1px solid rgba(148,163,255,.2);border-radius:999px;font:inherit;font-size:12px;padding:5px 9px;cursor:pointer}.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}}@keyframes ap-wait-pulse{50%{box-shadow:0 0 10px #f59e0b8c;border-color:#fbbf24}}@media(prefers-reduced-motion:reduce){.ap-steps span[data-status=waiting]{animation:none}}.hud-approve{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:8px}.hud-approve button{border:1px solid transparent;border-radius:999px;padding:5px 13px;font:inherit;font-size:12px;font-weight:650;cursor:pointer}.hud-approve .ha-yes{background:linear-gradient(135deg,#34d399,#22d3ee);color:#03050b}.hud-approve .ha-no{background:#fb3b5c24;border-color:#fb718599;color:#fecdd3}.hud-approve .ha-yes:hover{filter:brightness(1.1)}.hud-approve .ha-no:hover{background:#fb3b5c47}.hud-approve span{font-size:11px;color:#94a3b8}.hud-approve[data-verdict=approved] span,.hud-approve[data-verdict=approving] span{color:#86efac}.hud-approve[data-verdict=rejected] span,.hud-approve[data-verdict=rejecting] span,.hud-approve[data-verdict=error] span{color:#fda4af}.hud-approve.is-compact{margin-top:0;flex:none;gap:4px}.hud-approve.is-compact button{padding:3px 9px;font-size:11px}.hud-approvals{left:12px;bottom:12px;z-index:9;width:max-content;max-width:min(460px,calc(100% - 356px));padding:8px 10px;font-size:12px;box-sizing:border-box;border-color:#f59e0b73;box-shadow:0 8px 32px #00000059,0 0 18px #f59e0b1f}.hud-approvals.is-rail{max-width:min(460px,calc(100% - 76px))}.hud-approvals h4{margin:0 0 6px;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#fcd34d;display:flex;gap:6px;align-items:baseline}.hud-approvals h4 em{font-style:normal;font-variant-numeric:tabular-nums;color:#fde68a}.hud-approvals ul{list-style:none;margin:0;padding:0;display:grid;gap:4px}.hud-approvals .ha-late{font-style:normal}.hud-approvals .ha-late.is-due{color:#86efac}.hud-approvals .ha-late.is-overdue{color:#f59e0b;font-weight:600}.hud-approvals li{display:flex;align-items:center;gap:8px;min-width:0}.hud-approvals .ha-who{all:unset;cursor:pointer;flex:1;min-width:0;display:flex;align-items:baseline;gap:6px;padding:2px 4px;border-radius:6px}.hud-approvals .ha-who:hover{background:#94a3ff1a}.hud-approvals .ha-who i{flex:0 0 8px;height:8px;border-radius:50%;background:var(--c);box-shadow:0 0 8px var(--c);align-self:center}.hud-approvals .ha-who b{color:#e2e8f0;font-weight:650;white-space:nowrap}.hud-approvals .ha-who span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#fbbf24;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.hud-approvals p{margin:6px 0 0;font-size:11px;color:#64748b}.hud-approvals .ha-details,.ap-approve-row .ha-details{all:unset;cursor:pointer;flex:none;font-size:11px;color:#cbd5e1;padding:3px 8px;border-radius:999px;border:1px solid rgba(148,163,255,.28)}.hud-approvals .ha-details:hover,.ap-approve-row .ha-details:hover,.hud-approvals .ha-details:focus-visible{border-color:#818cf8;color:#f1f5f9}.ap-approve-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ap-approve-row .ha-details{margin-top:8px}.hud-drawer{top:64px;max-height:calc(100% - 76px);right:calc(var(--hud-side, 320px) + 24px);width:360px;max-width:calc(100% - var(--hud-side, 320px) - 48px);z-index:11;display:flex;flex-direction:column;gap:10px;padding:14px 14px 12px;box-sizing:border-box;overflow-y:auto;font-size:12px;outline:none;background:#0a0e1ac7;border-color:#f59e0b73;box-shadow:0 12px 40px #00000073,0 0 22px #f59e0b1a;animation:hd-in .18s ease-out}.hud-drawer.is-rail{--hud-side: 40px}@keyframes hd-in{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.hud-drawer{animation:none}}.hud-drawer .hd-head{display:flex;align-items:flex-start;gap:8px}.hud-drawer .hd-head>div{flex:1;min-width:0}.hud-drawer .hd-kicker{margin:0 0 2px;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#fcd34d}.hud-drawer h3{margin:0;font-size:15px;font-weight:700;line-height:1.3;color:#f1f5f9;overflow-wrap:anywhere}.hud-drawer .hd-close{all:unset;cursor:pointer;width:24px;height:24px;display:grid;place-items:center;border-radius:50%;font-size:17px;color:#94a3b8}.hud-drawer .hd-close:hover,.hud-drawer .hd-close:focus-visible{color:#f1f5f9;background:#94a3ff24}.hud-drawer .hd-who{all:unset;cursor:pointer;display:flex;align-items:baseline;gap:6px;min-width:0;padding:2px 4px;margin:-2px -4px;border-radius:6px}.hud-drawer .hd-who:hover{background:#94a3ff1a}.hud-drawer .hd-who i{flex:0 0 8px;height:8px;border-radius:50%;background:var(--c);box-shadow:0 0 8px var(--c);align-self:center}.hud-drawer .hd-who b{color:#e2e8f0;white-space:nowrap}.hud-drawer .hd-who span{color:#94a3b8;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hud-drawer .hd-deadline{align-self:flex-start;font-size:11px;font-variant-numeric:tabular-nums;color:#fde68a;padding:2px 9px;border-radius:999px;background:#f59e0b1f;border:1px solid rgba(245,158,11,.3)}.hud-drawer .hd-deadline.is-due{color:#86efac;background:#22c55e1f;border-color:#22c55e59}.hud-drawer .hd-deadline.is-overdue{color:#fbbf24;font-weight:650}.hud-drawer section h4{margin:0 0 5px;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#64748b}.hud-drawer .hd-why{border-left:2px solid #5eead4;padding:2px 0 2px 8px}.hud-drawer .hd-why.is-deny{border-left-color:#fb7185}.hud-drawer .hd-why p{margin:0 0 4px;color:#e2e8f0;line-height:1.4}.hud-drawer .hd-why p b{font-size:9px;letter-spacing:.06em;color:#94a3b8;margin-right:2px}.hud-drawer .hd-why p em{font-style:normal;font-weight:700;color:#5eead4}.hud-drawer .hd-why.is-deny p em{color:#fda4af}.hud-drawer .hd-reason{margin:0;color:#fbbf24;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.hud-drawer .hd-dl{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;margin:0;font-size:11px}.hud-drawer .hd-dl div{display:contents}.hud-drawer .hd-dl dt{color:#64748b}.hud-drawer .hd-dl dd{margin:0;color:#e2e8f0;font-variant-numeric:tabular-nums;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hud-drawer .hd-details dd{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.hud-drawer .ap-decisions{margin:0}.hud-drawer .hd-foot{display:grid;gap:8px;padding-top:4px;border-top:1px solid rgba(148,163,255,.12)}.hud-drawer .hd-note{width:100%;box-sizing:border-box;resize:vertical;min-height:38px;margin-top:8px;padding:6px 8px;font:inherit;font-size:12px;color:#e2e8f0;background:#03050b8c;border:1px solid rgba(148,163,255,.22);border-radius:8px;outline:none}.hud-drawer .hd-note:focus{border-color:#818cf8}.hud-drawer .hud-approve{margin-top:0}.hud-drawer .hd-keys{margin:0;font-size:10px;color:#64748b}.hud-drawer .hd-links{display:flex;flex-wrap:wrap;gap:6px}.hud-drawer .hd-links a,.hud-drawer .hd-links button{all:unset;cursor:pointer;font-size:11px;color:#c7d2fe;padding:3px 9px;border-radius:999px;border:1px solid rgba(148,163,255,.28)}.hud-drawer .hd-links a:hover,.hud-drawer .hd-links button:hover,.hud-drawer .hd-links a:focus-visible,.hud-drawer .hd-links button:focus-visible{border-color:#818cf8;color:#f1f5f9}.hud-halotip{position:fixed;z-index:30;pointer-events:none;padding:5px 8px;border-radius:8px;font-size:11px;line-height:1.45;color:#cbd5e1;background:#0a0e1ae0;border:1px solid rgba(148,163,255,.22);font-variant-numeric:tabular-nums;white-space:nowrap}.hud-halotip b{color:#f1f5f9}@container agscene (max-width: 719px){.scene-root .hud-approvals{max-width:calc(100% - 76px);padding:6px 8px}.scene-root .hud-approvals .ha-who span{display:none}.scene-root .hud-drawer{left:8px;right:8px;top:auto;bottom:8px;width:auto;max-width:none;max-height:72%}}.hud-rejected{color:#fde68a}.hud-rejected b{color:#fbbf24}.ap-prim-dim{font-size:11px;color:#94a3b8;margin:3px 0 0;font-variant-numeric:tabular-nums}.ap-prim-bar{height:6px;border-radius:3px;overflow:hidden;background:#ffffff0f;margin-top:6px}.ap-prim-bar span{display:block;height:100%;background:#5eead4;box-shadow:0 0 8px #5eead480}.ap-skills span.ap-prim-stage{border-color:color-mix(in srgb,var(--c) 45%,transparent);background:color-mix(in srgb,var(--c) 8%,transparent)}.ap-skills span.ap-prim-stage.on{border-color:var(--c);color:#e6fffb;box-shadow:0 0 10px color-mix(in srgb,var(--c) 30%,transparent)}.ap-skills span.ap-prim-stage em{color:#94a3b8}.ap-prim-dl{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;margin:0;font-size:11px}.ap-prim-dl div{display:contents}.ap-prim-dl dt{color:#64748b}.ap-prim-dl dd{margin:0;color:#e2e8f0;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rp-detail h3 .rp-icon{color:var(--c);font-style:normal;margin-right:2px}.rp-spark{display:block;width:100%;height:34px;background:#ffffff08;border-radius:4px}.rp-table{width:100%;border-collapse:collapse;font-size:11px;color:#e2e8f0;font-variant-numeric:tabular-nums;margin:4px 0;table-layout:fixed}.rp-table th{text-align:right;font-weight:600;font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;padding:2px 4px}.rp-table td{text-align:right;padding:2px 4px;border-top:1px solid rgba(255,255,255,.05)}.rp-table th:first-child,.rp-table td:first-child{text-align:left;width:42%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rp-legend{display:flex;flex-wrap:wrap;gap:4px 10px;margin:4px 0 0;font-size:10.5px;color:#cbd5e1}.rp-legend span:before{content:"";display:inline-block;width:7px;height:7px;border-radius:2px;background:var(--c);margin-right:4px}.rp-legend em{font-style:normal;color:#94a3b8}.rp-kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:4px 10px;margin:4px 0}.rp-kv dt{font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8}.rp-kv dd{margin:0;font-size:12px;color:#e2e8f0;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.rp-note{font-size:10px;color:#64748b;margin:4px 0 0}.ap-chip-link em{font-style:normal;color:#94a3b8;margin-left:4px}.rp-detail .ap-stats{grid-template-columns:repeat(3,1fr)}.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}
@@ -23,8 +23,15 @@ export type AgentSceneProps = {
23
23
  * "not authorized" in the HUD instead of falling back to the simulator.
24
24
  */
25
25
  token?: string;
26
+ /** Show the per-viewer "Clear view" HUD button (and Shift+C). Default true. The server is never touched. */
27
+ clearable?: boolean;
28
+ /**
29
+ * Controlled clear: an epoch-ms timestamp hides everything older for this viewer (as the HUD button does),
30
+ * `null` shows everything again, `undefined` (default) leaves it to the viewer. See also clearView() / showAllView().
31
+ */
32
+ clearedAt?: number | null;
26
33
  style?: CSSProperties;
27
34
  className?: string;
28
35
  };
29
- export declare function AgentScene({ theme, source, hud, sim, scope, run, token, style, className }: AgentSceneProps): import("react").JSX.Element;
36
+ export declare function AgentScene({ theme, source, hud, sim, scope, run, token, clearable, clearedAt, style, className }: AgentSceneProps): import("react").JSX.Element;
30
37
  export default AgentScene;
@@ -1,3 +1,4 @@
1
+ import { type ResSel } from "./resinfo";
1
2
  import { type Backlog, type PrimEdge, type PrimState, type PrimWorldEvent, type ResStat } from "./prims";
2
3
  export type { PrimState, PrimWorldEvent } from "./prims";
3
4
  export type AgentType = "planner" | "researcher" | "graph_scout" | "records_scout" | "data_scout" | "writer";
@@ -82,7 +83,17 @@ export type WorldEvent = {
82
83
  id: string;
83
84
  op: "read" | "write";
84
85
  nodes: string[];
86
+ kinds?: (string | null)[];
85
87
  ts: number;
88
+ } | {
89
+ type: "graph_nodes";
90
+ nodes: {
91
+ name: string;
92
+ kind?: string | null;
93
+ peers?: string[];
94
+ }[];
95
+ run_id?: string;
96
+ ts?: number;
86
97
  } | {
87
98
  type: "final";
88
99
  run_id: string;
@@ -189,6 +200,7 @@ export type WorldEvent = {
189
200
  kind: ResourceKind;
190
201
  }[];
191
202
  ts: number;
203
+ kind?: "model" | "mcp";
192
204
  } | {
193
205
  type: "mcp";
194
206
  run_id: string;
@@ -203,6 +215,8 @@ export type WorldEvent = {
203
215
  units?: number;
204
216
  unit?: string;
205
217
  device?: string;
218
+ error?: boolean;
219
+ status?: number;
206
220
  } | PrimWorldEvent;
207
221
  export type DecisionKind = "choice" | "score" | "noul";
208
222
  /** The decision that triggered a wait (docs/SPEC.md "Human approval"): a summary of its `decision` event. */
@@ -433,6 +447,9 @@ export type Instance = {
433
447
  /** backend service agent: requests / errors handled (from `service_stats`) */
434
448
  svcN?: number;
435
449
  svcErr?: number;
450
+ /** backend service agent: requests per route and per status class since first seen (Resource details layout) */
451
+ svcRoutes?: Map<string, number>;
452
+ svcCodes?: Map<string, number>;
436
453
  /** backend service agent: performance.now() of its last traffic (requests / messages in or out); see svcIdle */
437
454
  svcAt?: number;
438
455
  /** a long-running request of a service shown as its subagent: started / ended (epoch ms, end 0 while open) */
@@ -578,6 +595,8 @@ export type McpServer = {
578
595
  calls: number;
579
596
  inflight: number;
580
597
  resources: Map<string, McpResource>;
598
+ /** a named resource group's kind (mcp_register `kind`): "model" = only models (labelled "ML"); absent = MCP */
599
+ kind?: "model" | "mcp";
581
600
  };
582
601
  /** One MCP request/response: a packet flying instance → server ("call") or server → instance ("result"). */
583
602
  export type McpCall = {
@@ -602,6 +621,7 @@ export type McpPending = {
602
621
  since: number;
603
622
  };
604
623
  export declare const MCP_COLORS: Record<string, string>;
624
+ /** A graph node lit by a read / write. `area`: lit for an event that named no node (no name label). */
605
625
  export type Flare = {
606
626
  id: number;
607
627
  run: string;
@@ -609,8 +629,13 @@ export type Flare = {
609
629
  node: string;
610
630
  op: "read" | "write";
611
631
  start: number;
632
+ area?: boolean;
612
633
  };
613
634
  /** Finished (exit done/failed) - drawn dimmed until its run ends, then faded out with the whole run. */
635
+ /** The label prefix of an MCP-style server: "ML" for a resource group holding only models, else "MCP". */
636
+ export declare const mcpPrefix: (srv: Pick<McpServer, "kind">) => "ML" | "MCP";
637
+ /** "MCP · backend", "ML · payment-integrity scorer": the one server label every theme draws. */
638
+ export declare const mcpTitle: (srv: Pick<McpServer, "kind" | "name">) => string;
614
639
  export declare const isDone: (i: Instance) => boolean;
615
640
  /** Working: not finished and not fading out (HUD "alive", LOD budget, cluster counts). */
616
641
  export declare const isLive: (i: Instance) => boolean;
@@ -642,6 +667,8 @@ export declare const world: {
642
667
  mcpServers: Map<string, McpServer>;
643
668
  /** registered (not necessarily used) MCP servers: server -> backend name -> kind */
644
669
  mcpRegistry: Map<string, Map<string, ResourceKind>>;
670
+ /** resource group kinds from mcp_register (`kind`), so a server drawn later gets its ML / MCP label */
671
+ mcpKinds: Map<string, "model" | "mcp">;
645
672
  mcpCalls: McpCall[];
646
673
  /** in-flight MCP calls keyed `${instance}|${server}|${tool}`; resolvedAt kept briefly for a "snap back" effect */
647
674
  mcpPending: Map<string, McpPending>;
@@ -719,6 +746,8 @@ export declare const world: {
719
746
  archive: Map<string, Instance>;
720
747
  /** instance selected in the agent panel or by clicking a shape */
721
748
  selected: string | null;
749
+ /** a resource selected instead (MCP server / group, backend, agent -> server link): the Resource details panel */
750
+ selectedRes: ResSel | null;
722
751
  /** the server answered 401 for this scope/run/token (the HUD shows a notice; no simulator fallback) */
723
752
  unauthorized: boolean;
724
753
  /** desk-wide halts (global-scope guard denies, see Halt), keyed by the owning agent */
@@ -782,6 +811,8 @@ export declare function useWorld(): {
782
811
  mcpServers: Map<string, McpServer>;
783
812
  /** registered (not necessarily used) MCP servers: server -> backend name -> kind */
784
813
  mcpRegistry: Map<string, Map<string, ResourceKind>>;
814
+ /** resource group kinds from mcp_register (`kind`), so a server drawn later gets its ML / MCP label */
815
+ mcpKinds: Map<string, "model" | "mcp">;
785
816
  mcpCalls: McpCall[];
786
817
  /** in-flight MCP calls keyed `${instance}|${server}|${tool}`; resolvedAt kept briefly for a "snap back" effect */
787
818
  mcpPending: Map<string, McpPending>;
@@ -859,6 +890,8 @@ export declare function useWorld(): {
859
890
  archive: Map<string, Instance>;
860
891
  /** instance selected in the agent panel or by clicking a shape */
861
892
  selected: string | null;
893
+ /** a resource selected instead (MCP server / group, backend, agent -> server link): the Resource details panel */
894
+ selectedRes: ResSel | null;
862
895
  /** the server answered 401 for this scope/run/token (the HUD shows a notice; no simulator fallback) */
863
896
  unauthorized: boolean;
864
897
  /** desk-wide halts (global-scope guard denies, see Halt), keyed by the owning agent */
@@ -881,7 +914,27 @@ export declare function useWorld(): {
881
914
  export declare const hash01: (id: string, salt?: number) => number;
882
915
  /** high volume: most individual decision glyphs on screen at once (all agents) */
883
916
  export declare const HV_GLYPHS_MAX = 3;
917
+ /** epoch ms of this viewer's clear (0 = not cleared) */
918
+ export declare const viewClearedAt: () => number;
919
+ /** React hook: the clear timestamp (0 = showing everything) */
920
+ export declare function useClearedAt(): number;
921
+ /** Apply one world event (stream, replay or simulator). Honours this viewer's clear (see clearView). */
884
922
  export declare function apply(ev: WorldEvent): void;
923
+ /**
924
+ * Clear this viewer's view at `at` (epoch ms, default now): everything drawn so far is hidden (runs, agents,
925
+ * services, MCP servers, graph glow, events, counters) and only events with `ts >= at` draw from then on. Runs and
926
+ * agents still open at the clear re-appear on their next event. Connection-level code persists the timestamp.
927
+ */
928
+ export declare function clearWorldAt(at?: number): void;
929
+ /**
930
+ * Set the clear timestamp without touching what is drawn: for a world that is about to be (re)filled from a replay
931
+ * (page load with a persisted clear). 0 = no clear.
932
+ */
933
+ export declare function setViewClearedAt(at: number): void;
934
+ /** Undo the clear: empty the world and, in sim mode, replay this session's events (live mode re-reads the server). */
935
+ export declare function unclearWorld(replaySim: boolean): void;
936
+ /** forget the sim log (a fresh connection) */
937
+ export declare function resetSimLog(): void;
885
938
  export declare function tick(now?: number): void;
886
939
  /** 0..1 visibility for an instance: grows in on spawn, fades out after exit. */
887
940
  export declare function presence(i: Instance, now?: number): number;
@@ -897,6 +950,8 @@ export declare function roleScale(i: Instance): number;
897
950
  export declare function getInstance(id: string | null | undefined): Instance | undefined;
898
951
  /** Select an agent (panel list click or 3D click); null clears. */
899
952
  export declare function selectInstance(id: string | null): void;
953
+ /** Select a resource (server / backend / link) for the Resource details panel; null closes it. */
954
+ export declare function selectResource(sel: ResSel | null): void;
900
955
  export declare function setSimulated(v: boolean): void;
901
956
  /** Name the graph structure (e.g. when the server serves a real FalkorDB sample). */
902
957
  export declare function setGraphLabel(label: string): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentglow",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "description": "Live 3D views of agent systems (LangGraph, deepagents, any OpenTelemetry-instrumented agents) as a React component.",
5
5
  "keywords": [
6
6
  "claude-code",