vibeostheog 0.26.0 → 0.26.2
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/CHANGELOG.md +39 -0
- package/dist/assets/dashboard/assets/index-CspnmA46.js +3 -0
- package/dist/assets/dashboard/index.html +1 -1
- package/dist/assets/dashboard/vibeos-dashboard-config.js +1 -2
- package/dist/vibeOS.js +3439 -3519
- package/package.json +1 -1
- package/dist/assets/dashboard/assets/index-BAFoSUYT.css +0 -1
- package/dist/assets/dashboard/assets/index-BC32ZQ0q.css +0 -1
- package/dist/assets/dashboard/assets/index-BFPdi_Ph.css +0 -1
- package/dist/assets/dashboard/assets/index-BHjsjrCc.js +0 -5
- package/dist/assets/dashboard/assets/index-BUDvTrCq.css +0 -1
- package/dist/assets/dashboard/assets/index-BY7bffmm.js +0 -3
- package/dist/assets/dashboard/assets/index-BZu3dyXH.css +0 -1
- package/dist/assets/dashboard/assets/index-Brj9Ui6Z.js +0 -3
- package/dist/assets/dashboard/assets/index-C-ScsrcN.js +0 -3
- package/dist/assets/dashboard/assets/index-C5VfzSA8.js +0 -3
- package/dist/assets/dashboard/assets/index-C5tPTUjx.js +0 -3
- package/dist/assets/dashboard/assets/index-Cb3hwMDH.css +0 -1
- package/dist/assets/dashboard/assets/index-CjHF2vTf.css +0 -1
- package/dist/assets/dashboard/assets/index-CkX-loOf.js +0 -3
- package/dist/assets/dashboard/assets/index-D3bLrmaq.css +0 -1
- package/dist/assets/dashboard/assets/index-DGIMdqp_.css +0 -1
- package/dist/assets/dashboard/assets/index-DK4e4oaB.js +0 -3
- package/dist/assets/dashboard/assets/index-DhtwzMRd.js +0 -3
- package/dist/assets/dashboard/assets/index-DnK3sBqN.js +0 -3
- package/dist/assets/dashboard/assets/index-Dwg0W0mM.js +0 -3
- package/dist/assets/dashboard/assets/index-H09FCi_1.js +0 -5
- package/dist/assets/dashboard/assets/index-IZRaK1J1.js +0 -3
- package/dist/assets/dashboard/assets/index-VITT_Lum.js +0 -3
- package/dist/assets/dashboard/assets/index-Xf82CCxe.css +0 -1
- package/dist/assets/dashboard/assets/index-ZWfKo4FL.js +0 -3
- package/dist/assets/dashboard/assets/index-fhy-rD-W.css +0 -1
- package/dist/assets/dashboard/assets/index-mizr4ifp.js +0 -5
- package/dist/assets/dashboard/assets/index-rDxjSA11.css +0 -1
- package/dist/assets/dashboard/assets/index-xMN9Z-Zy.js +0 -3
|
@@ -1 +0,0 @@
|
|
|
1
|
-
*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#050507;--bg-glow:rgba(88,166,255,.12);--bg-warm:rgba(255,157,61,.08);--surface:#0d1016;--surface-2:#111622;--panel:rgba(15,19,27,.88);--panel-strong:rgba(18,23,34,.96);--border:#1e2530;--border-hover:#354153;--text:#d4d4d4;--text-dim:#6a6a6a;--text-bright:#f0f0f0;--green:#3fb950;--red:#f85149;--yellow:#d29922;--accent:#58a6ff;--accent-dim:rgba(88,166,255,.08);--accent-strong:rgba(88,166,255,.18);--glow:0 24px 80px rgba(0,0,0,.45),0 0 0 1px rgba(255,255,255,.02) inset;--glow-soft:0 16px 44px rgba(0,0,0,.32),0 0 32px rgba(88,166,255,.06);--radius-lg:18px;--radius-md:12px;--radius-sm:9px;--mono:"JetBrains Mono","Fira Code","Cascadia Code","SF Mono",Menlo,monospace;--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Helvetica,Arial,sans-serif}html{font-size:13px;background:radial-gradient(circle at 18% 8%,rgba(88,166,255,.14),transparent 28%),radial-gradient(circle at 82% 6%,rgba(255,157,61,.11),transparent 26%),radial-gradient(circle at 50% 108%,rgba(63,185,80,.08),transparent 28%),var(--bg)}body{font-family:var(--sans);background:radial-gradient(circle at 20% 0%,rgba(88,166,255,.08),transparent 24%),radial-gradient(circle at 90% 10%,rgba(255,157,61,.06),transparent 24%),linear-gradient(180deg,#ffffff05,#0000),var(--bg);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased;line-height:1.45}.app{max-width:1600px;margin:0 auto;padding:1.15rem 1.35rem}.header{display:flex;justify-content:space-between;align-items:center;padding-bottom:.5rem;margin-bottom:.75rem;border-bottom:1px solid rgba(255,255,255,.06)}.header-title{display:flex;align-items:baseline;gap:.5rem}.header-title h1{font-family:var(--sans);font-size:1.08rem;font-weight:700;color:var(--text-bright);letter-spacing:-.2px}.header-title h1:before{content:"";color:var(--red)}.header-subtitle{font-size:.72rem;color:var(--text-dim);font-family:var(--mono);margin-top:.15rem}.version{font-size:.7rem;color:var(--text-dim);font-family:var(--mono)}.header-indicators{display:flex;gap:.5rem;align-items:center}.indicator{font-family:var(--mono);font-size:.65rem;padding:1px 6px;text-transform:uppercase;font-weight:600;letter-spacing:.5px;border:1px solid rgba(255,255,255,.06);border-radius:999px;background:#ffffff05}.indicator.connected{color:var(--green)}.indicator.disconnected{color:var(--yellow)}.indicator.disabled{color:var(--red)}.indicator:before{content:"● ";font-size:.5rem}.indicator.flash:before{content:"⚡ ";font-size:.7rem}.nav-tabs{display:flex;gap:0;margin-bottom:1rem;border-bottom:1px solid var(--border)}.tab{font-family:var(--mono);background:transparent;border:none;color:var(--text-dim);padding:.4rem .75rem;cursor:pointer;font-size:.78rem;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s,border-color .15s;text-transform:uppercase;letter-spacing:.5px}.tab:hover{color:var(--text);border-bottom-color:var(--border-hover)}.tab.active{color:var(--text-bright);border-bottom-color:var(--green);font-weight:600}.content{display:flex;flex-direction:column;gap:.75rem}.grid-2col{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.card,.card-full{background:linear-gradient(180deg,#ffffff0a,#ffffff04),var(--panel);border:1px solid rgba(255,255,255,.06);padding:.8rem .9rem;border-radius:var(--radius-lg);box-shadow:var(--glow-soft)}.card-full{grid-column:1/-1}.card h3,.card-full h3{font-family:var(--sans);font-size:.78rem;font-weight:700;margin-bottom:.65rem;text-transform:uppercase;color:var(--text-dim);letter-spacing:1px}.card h3:before,.card-full h3:before{content:"── ";color:var(--border-hover)}.kv-table{width:100%;border-collapse:collapse;font-family:var(--mono)}.kv-table td{padding:.25rem 0;font-size:.78rem}.kv-table td:first-child{color:var(--text-dim);width:38%;white-space:nowrap}.kv-table td:last-child{color:var(--text);overflow-wrap:anywhere}.badge{display:inline-block;font-family:var(--mono);font-size:.65rem;padding:1px 5px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;line-height:1.4}.badge.slot{color:var(--green)}.badge.slot:before{content:"["}.badge.slot:after{content:"]"}.badge.on{color:var(--green)}.badge.on:before{content:"["}.badge.on:after{content:"]"}.badge.off{color:var(--red)}.badge.off:before{content:"["}.badge.off:after{content:"]"}code{font-family:var(--mono);font-size:.75rem;color:var(--text-bright)}pre{font-family:var(--mono);font-size:.72rem}.credit-bar{display:inline-block;width:55px;height:6px;background:var(--border);overflow:hidden;vertical-align:middle;border:1px solid var(--border-hover)}.credit-fill{height:100%;background:var(--green);transition:width .4s ease}.credit-label{margin-left:.4rem;font-size:.7rem;font-family:var(--mono);color:var(--text-dim)}.trend{font-size:.85rem;font-family:var(--mono)}.trend-up{color:var(--green)}.trend-down{color:var(--red)}.trend-flat{color:var(--text-dim)}.bar-chart{display:flex;flex-direction:column;gap:.3rem;margin-top:.5rem}.bar-row{display:flex;align-items:center;gap:.5rem}.bar-label{width:75px;font-size:.7rem;color:var(--text-dim);text-align:right;font-family:var(--mono)}.bar-track{flex:1;height:5px;background:var(--border);overflow:hidden}.bar-fill{height:100%;background:var(--accent);transition:width .4s ease}.bar-value{width:55px;font-size:.7rem;text-align:right;font-family:var(--mono);color:var(--text-dim)}.data-table{width:100%;border-collapse:collapse;font-size:.72rem;font-family:var(--mono)}.data-table th,.data-table td{padding:.3rem .4rem;text-align:left}.data-table th{color:var(--text-dim);font-weight:600;text-transform:uppercase;letter-spacing:.5px;font-size:.65rem;border-bottom:1px solid var(--border)}.data-table td{border-bottom:1px solid var(--border);color:var(--text)}.data-table tr:hover td{background:var(--accent-dim)}.data-table td:first-child{color:var(--text-bright)}.stress-bars{display:flex;gap:2px;align-items:flex-end;min-height:28px;padding:.3rem 0}.stress-bar{font-size:1.4rem;line-height:1;font-family:var(--mono)}.muted{color:var(--text-dim);font-size:.78rem;font-family:var(--mono)}.error{color:var(--red);font-size:.75rem;font-family:var(--mono)}.sep{color:var(--text-dim);margin:.5rem 0;font-family:var(--mono);font-size:.65rem;letter-spacing:2px}.control-group{margin-bottom:.65rem}.control-group h4{font-family:var(--mono);font-size:.65rem;color:var(--text-dim);margin-bottom:.3rem;text-transform:uppercase;letter-spacing:1px;border-bottom:1px solid var(--border);padding-bottom:.15rem}.bracket-row{display:flex;gap:.6rem;flex-wrap:wrap}.bracket-btn{font-family:var(--mono);font-size:.75rem;background:transparent;border:none;color:var(--text-dim);cursor:pointer;padding:.15rem 0;transition:color .15s;letter-spacing:.3px}.bracket-btn:before{content:"["}.bracket-btn:after{content:"]"}.bracket-btn:hover{color:var(--text)}.bracket-btn.on{color:var(--green);font-weight:600}.bracket-btn.off{color:var(--red)}.bracket-btn:disabled{opacity:.3;cursor:default}.result-box{margin-top:.6rem;padding:.5rem .6rem;border:1px solid rgba(255,255,255,.08);border-left:2px solid var(--accent);font-family:var(--mono);font-size:.7rem;color:var(--text-dim);display:flex;justify-content:space-between;align-items:center;background:linear-gradient(180deg,#58a6ff0f,#ffffff05);border-radius:var(--radius-sm)}.result-box code{font-size:.7rem;color:var(--text-dim);max-width:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dismiss-btn{background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:.85rem;padding:0 .2rem;font-family:var(--mono)}.dismiss-btn:hover{color:var(--text)}.reports-layout{display:grid;grid-template-columns:1fr 2fr;gap:.75rem;min-height:280px}.report-list{display:flex;flex-direction:column;gap:0}.report-item{padding:.4rem .5rem;cursor:pointer;border-left:2px solid transparent;transition:border-color .15s,background .15s}.report-item:hover{border-color:var(--border-hover)}.report-item.active{border-color:var(--green);background:var(--accent-dim)}.report-summary{font-family:var(--mono);font-size:.78rem;color:var(--text);margin-bottom:.2rem}.report-meta{display:flex;gap:.5rem;font-size:.65rem;color:var(--text-dim);font-family:var(--mono)}.report-type{text-transform:uppercase;letter-spacing:.5px}.report-viewer{background:var(--bg);border:1px solid var(--border);padding:.6rem .7rem;overflow:auto;min-height:200px}.report-content{font-family:var(--mono);font-size:.72rem;color:var(--text);white-space:pre-wrap;word-break:break-all}.search-hero{display:flex;justify-content:space-between;gap:.75rem;align-items:flex-start;border:1px solid rgba(255,255,255,.08);background:linear-gradient(135deg,#58a6ff1c,#ff9d3d0d 48%,#ffffff05);padding:.8rem .9rem;margin-bottom:.75rem;border-radius:var(--radius-lg);box-shadow:var(--glow-soft)}.search-hero-kicker{font-family:var(--mono);font-size:.62rem;text-transform:uppercase;color:var(--text-dim);letter-spacing:1px;margin-bottom:.2rem}.search-hero-title{font-family:var(--mono);font-size:.92rem;font-weight:700;color:var(--text-bright);margin-bottom:.25rem}.search-hero-copy{font-family:var(--mono);font-size:.72rem;line-height:1.45;color:var(--text-dim);max-width:62ch}.search-hero-meta{display:flex;gap:.35rem;flex-wrap:wrap;justify-content:flex-end}.search-stats{display:flex;gap:.35rem;flex-wrap:wrap;margin-top:.45rem}.search-answer-text{font-family:var(--mono);font-size:.72rem;line-height:1.5;color:var(--text);white-space:pre-wrap;word-break:break-word;margin:0}.search-output{display:grid;grid-template-columns:1.1fr 1.2fr;gap:.75rem;margin-top:.75rem}.search-answer,.search-results,.search-citations{background:var(--bg);border:1px solid var(--border);padding:.55rem .6rem}.search-answer h4,.search-results h4,.search-citations h4{font-family:var(--mono);font-size:.65rem;color:var(--text-dim);margin-bottom:.35rem;text-transform:uppercase;letter-spacing:1px}.search-list{display:flex;flex-direction:column;gap:.4rem}.search-item{display:block;color:inherit;text-decoration:none;border:1px solid var(--border);padding:.45rem .5rem;background:#ffffff03}.search-item:hover{border-color:var(--accent);background:var(--accent-dim)}.search-item-title{font-family:var(--mono);font-size:.74rem;color:var(--text-bright);margin-bottom:.1rem;display:flex;gap:.35rem;align-items:flex-start}.search-rank{color:var(--accent);font-weight:700}.search-item-meta,.search-item-snippet{font-family:var(--mono);font-size:.68rem;color:var(--text-dim)}.search-item-snippet{margin-top:.2rem;line-height:1.4}.citation-row{display:flex;gap:.35rem;flex-wrap:wrap;margin-bottom:.35rem}.citation-pill{display:inline-block;text-decoration:none;padding:.2rem .4rem;border:1px solid var(--border);color:var(--text);font-family:var(--mono);font-size:.65rem}.citation-pill:hover{border-color:var(--accent);color:var(--text-bright)}.blackbox-status{font-family:var(--mono);margin-top:.8rem}.blackbox-status td{font-size:.75rem}.field-label{display:block;margin:.35rem 0 .2rem;color:var(--text-dim);font-size:.65rem;text-transform:uppercase;letter-spacing:1px;font-family:var(--mono)}.text-input,.text-area{width:100%;background:var(--bg);color:var(--text-bright);border:1px solid var(--border);font-family:var(--mono);font-size:.75rem;padding:.45rem .5rem;margin-bottom:.35rem;outline:none}.text-input:focus,.text-area:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-dim)}.text-area{resize:vertical;min-height:72px}@media(max-width:900px){.grid-2col,.reports-layout,.search-output{grid-template-columns:1fr}.header{flex-direction:column;align-items:flex-start;gap:.5rem}.search-hero{flex-direction:column}.search-hero-meta{justify-content:flex-start}}.section-divider{border:none;border-top:1px solid var(--border);margin:.4rem 0;opacity:.6}.status-dot{color:var(--green);font-family:var(--mono)}.status-dot.off{color:var(--red)}.shell{display:flex;min-height:100vh;max-width:1600px;margin:0 auto}.shell .main{flex:1;min-width:0;padding:1rem 1.25rem;display:flex;flex-direction:column}.shell .main .header{margin-bottom:.5rem}.sidebar{width:76px;flex-shrink:0;border-right:1px solid rgba(255,255,255,.06);background:linear-gradient(180deg,#ffffff08,#00000014),var(--surface);padding:.7rem .45rem;display:flex;flex-direction:column;align-items:center;gap:.45rem}.sidebar-icon-button{width:48px;height:48px;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.07);border-radius:14px;background:linear-gradient(180deg,#ffffff0a,#ffffff03);color:var(--text-bright);cursor:pointer;box-shadow:var(--glow-soft)}.sidebar-icon-button:hover{border-color:#ffffff29;transform:translateY(-1px)}.sidebar-icon-button.active{border-color:#ff9d3d80;box-shadow:0 16px 28px #00000047,0 0 0 1px #ff9d3d24 inset}.sidebar-home-icon{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#ff9d3d47,#ff9d3d14);border:1px solid rgba(255,157,61,.36);border-radius:11px;color:#ffb36b;box-shadow:0 12px 24px #ff9d3d14,inset 0 0 0 1px #ffffff08}.column-badge{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border-hover);border-radius:999px;background:var(--surface);color:var(--text-bright);font-size:.72rem;font-weight:700;flex-shrink:0}.sidebar-project-icon{width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.07);border-radius:9px;color:var(--text-bright);font-size:.72rem;background:linear-gradient(180deg,#ffffff0d,#ffffff05);flex-shrink:0}.sidebar-add-button{color:var(--green);font-size:1rem}.sidebar-empty{display:none}.session-pane,.project-view{display:flex;flex-direction:column;gap:.6rem;height:100%}.session-head,.project-head{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:1px solid var(--border);padding-bottom:.5rem}.session-title{font-size:1rem;color:var(--text-bright);font-family:var(--mono)}.session-flow{display:flex;flex-direction:column;gap:2px;align-items:flex-end}.session-flow select,.flow-mini,.project-head select{background:var(--bg);border:1px solid var(--border);color:var(--text);font-family:var(--mono);font-size:.72rem;padding:2px 4px;border-radius:3px}.session-body{display:flex;flex-direction:column;gap:.5rem;flex:1;min-height:0}.session-thread{display:flex;flex-direction:column;gap:.5rem;overflow-y:auto;flex:1;padding-right:.25rem}.session-thread .msg{border:1px solid rgba(255,255,255,.08);border-radius:4px;padding:.55rem .6rem;background:#ffffff05}.session-thread .msg.user{border-left:2px solid var(--accent)}.session-thread .msg.assistant{border-left:2px solid var(--green)}.session-thread .msg.live{border-left-color:var(--yellow)}.session-thread .msg-role{font-size:.6rem;text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim);margin-bottom:.25rem}.session-thread .msg-content{color:var(--text);white-space:pre-wrap;font-size:.8rem;line-height:1.55}.session-thread .msg-content.mono{font-family:var(--mono);color:var(--text-dim);font-size:.72rem}.session-thread .run-trace{display:flex;flex-direction:column;gap:2px;margin-top:.4rem}.session-thread .run-step{display:flex;gap:.4rem;align-items:baseline;font-size:.72rem;padding:2px 4px;border-radius:3px;background:var(--bg)}.session-thread .run-step.skipped{opacity:.5}.session-thread .run-step-tool{color:var(--green);font-weight:600}.session-thread .run-step.skipped .run-step-tool{color:var(--yellow)}.run-step-label{color:var(--text)}.run-step-skip{color:var(--yellow);font-style:italic}.run-step-result{color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.run-spinner{color:var(--yellow);font-size:.72rem;margin-top:.3rem}.composer{border-top:1px solid var(--border);padding-top:.5rem;display:flex;flex-direction:column;gap:.4rem}.composer .text-area{min-height:64px}.composer-extra{font-size:.7rem;color:var(--text-dim)}.composer-extra summary{cursor:pointer;padding:.2rem 0}.composer-extra .text-area{min-height:48px;margin-top:.3rem}.composer-actions{display:flex;justify-content:space-between;align-items:center}.flow-save{background:var(--green);color:var(--bg);border:none;border-radius:3px;cursor:pointer;font-family:var(--mono);font-size:.74rem;font-weight:600;padding:.35rem .9rem}.flow-save:disabled{opacity:.4;cursor:not-allowed}.session-workspace{display:flex;flex-direction:column;gap:.85rem}.session-hero{display:flex;justify-content:space-between;gap:1rem;align-items:flex-end;border:1px solid rgba(255,255,255,.08);background:linear-gradient(135deg,#58a6ff1f,#ff9d3d0a 42%,#ffffff05);padding:.95rem 1rem;border-radius:var(--radius-lg);box-shadow:var(--glow-soft)}.session-hero-meta{display:flex;gap:.55rem;flex-wrap:wrap;font-size:.68rem;color:var(--text-dim);margin-top:.35rem}.session-hero-kpis{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr));gap:.55rem;min-width:420px}.session-kpi,.session-mini-kpi,.home-op-tile{border:1px solid rgba(255,255,255,.08);background:linear-gradient(180deg,#ffffff0a,#ffffff04);padding:.55rem .6rem;display:flex;flex-direction:column;gap:.25rem;border-radius:var(--radius-md)}.session-kpi strong,.session-mini-kpi strong,.home-op-value{font-size:.82rem;color:var(--text-bright)}.session-grid-4{display:grid;grid-template-columns:.9fr 1.3fr 1fr 1fr;gap:.75rem;align-items:start}.session-column{display:flex;flex-direction:column;gap:.7rem;min-height:640px}.session-thread-column{min-width:0}.session-thread{display:flex;flex-direction:column;gap:.75rem;min-height:360px;max-height:640px;overflow-y:auto}.session-state-stack,.session-timeline,.session-notes-list,.session-plan-list{display:flex;flex-direction:column;gap:.45rem}.session-state-row,.policy-row,.session-plan-item{display:flex;justify-content:space-between;gap:.75rem;padding:.5rem .55rem;background:linear-gradient(180deg,#ffffff08,#ffffff03);border:1px solid rgba(255,255,255,.08);border-radius:10px}.session-state-row span,.policy-row span{color:var(--text-dim);text-transform:uppercase;font-size:.64rem;letter-spacing:.8px}.session-state-row strong,.policy-row strong{font-size:.76rem;color:var(--text-bright);text-align:right}.session-chip-row{display:flex;gap:.35rem;flex-wrap:wrap}.session-chip{border:1px solid var(--border);background:var(--bg);color:var(--text-dim);padding:.18rem .4rem;font-size:.66rem;text-transform:uppercase;letter-spacing:.6px}.session-state-block{display:flex;flex-direction:column;gap:.35rem}.session-copy{font-size:.76rem;line-height:1.55;color:var(--text)}.session-note-item{background:#ffffff05;border:1px solid rgba(255,255,255,.08);padding:.45rem .5rem;font-size:.74rem;line-height:1.45;color:var(--text)}.session-kpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.session-plan-box,.policy-box,.session-search-box{border:1px solid rgba(255,255,255,.08);background:linear-gradient(180deg,#ffffff06,#0000000f);padding:.55rem .6rem;border-radius:var(--radius-md)}.session-search-results{display:flex;flex-direction:column;gap:.4rem;margin-top:.45rem}.session-plan-head{display:flex;justify-content:space-between;gap:.5rem;margin-bottom:.35rem;font-size:.74rem;color:var(--text-bright)}.mode-control-grid{display:grid;grid-template-columns:1fr 1fr;gap:.45rem}.mode-card-btn{display:flex;flex-direction:column;gap:.2rem;align-items:flex-start;text-align:left;border:1px solid rgba(255,255,255,.08);background:linear-gradient(180deg,#ffffff0a,#ffffff04);color:var(--text);padding:.55rem .6rem;cursor:pointer;font-family:var(--mono);font-size:.72rem;border-radius:12px;box-shadow:var(--glow-soft)}.mode-card-btn strong{color:var(--text-bright);font-size:.75rem}.mode-card-btn span{color:var(--text-dim);font-size:.66rem}.mode-card-btn:hover{border-color:var(--border-hover)}.mode-card-btn.active{border-color:var(--green);box-shadow:inset 0 0 0 1px #3fb95026}.mode-card-btn:disabled{opacity:.45;cursor:not-allowed}.session-action-grid{display:flex;gap:.45rem;flex-wrap:wrap}.session-plan-item{justify-content:flex-start;align-items:flex-start}.session-plan-item>span{min-width:22px;height:22px;border:1px solid var(--border);display:inline-flex;align-items:center;justify-content:center;color:var(--green);font-size:.7rem;background:var(--surface)}.home-ops-strip{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.6rem}.home-mode-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}.home-mode-card{display:flex;flex-direction:column;gap:.45rem;min-height:150px}.home-mode-card.active{border-color:var(--green);box-shadow:inset 0 0 0 1px #3fb95026}.home-mode-head{display:flex;justify-content:space-between;gap:.5rem;align-items:flex-start}.home-mode-name{font-size:.8rem;color:var(--text-bright)}.home-mode-pipeline{font-size:.66rem;color:var(--text-dim)}.home-mode-copy{font-size:.72rem;color:var(--text);line-height:1.5;flex:1}.home-mode-meta{display:flex;gap:.45rem;flex-wrap:wrap;font-size:.64rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.6px}.flow-editor{display:flex;flex-direction:column;gap:.5rem}.flow-toolbar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.flow-palette{display:flex;gap:3px;flex-wrap:wrap;flex:1}.flow-chip,.flow-pill-name{background:var(--bg);border:1px solid var(--border);color:var(--text);cursor:pointer;font-family:var(--mono);font-size:.68rem;padding:2px 6px;border-radius:3px}.flow-chip:hover{border-color:var(--green);color:var(--green)}.flow-hint{font-size:.72rem;color:var(--yellow)}.linkish,.flow-mini.link{background:transparent;border:none;color:var(--accent);cursor:pointer;font-family:var(--mono);font-size:.68rem;padding:0;text-decoration:underline}.flow-canvas{position:relative;min-height:340px;border:1px solid var(--border);border-radius:4px;background:var(--bg) repeating-linear-gradient(0deg,transparent,transparent 23px,var(--border) 24px),var(--bg) repeating-linear-gradient(90deg,transparent,transparent 23px,var(--border) 24px);background-blend-mode:normal;overflow:hidden;touch-action:none}.flow-edges{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.flow-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--text-dim);font-size:.75rem}.flow-node{position:absolute;background:var(--surface);border:1px solid var(--border-hover);border-radius:4px;font-size:.7rem;-webkit-user-select:none;user-select:none;box-shadow:0 1px 4px #0006}.flow-node.linking{border-color:var(--accent)}.flow-node-head{display:flex;justify-content:space-between;align-items:center;padding:3px 6px;border-bottom:1px solid var(--border);cursor:grab;background:var(--bg)}.flow-node-tool{color:var(--green);font-weight:600}.flow-node.tool-condition .flow-node-tool{color:var(--accent)}.flow-node.tool-direct .flow-node-tool{color:var(--text-dim)}.flow-node-x{background:transparent;border:none;color:var(--text-dim);cursor:pointer;font-size:.8rem;line-height:1}.flow-node-x:hover{color:var(--red)}.flow-node-body{display:flex;flex-direction:column;gap:3px;padding:4px 6px}.flow-mini{width:100%}.flow-preview{display:flex;gap:.5rem;align-items:baseline;font-size:.75rem}.flow-preview code{color:var(--green)}.flow-list-bar{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.flow-pill{display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:3px;overflow:hidden}.flow-pill.active{border-color:var(--green)}.flow-pill-name{border:none;border-radius:0}.flow-pill-x{background:transparent;border:none;color:var(--text-dim);cursor:pointer;padding:2px 5px}.flow-pill-x:hover{color:var(--red)}.mono{font-family:var(--mono)}.home-view{display:flex;flex-direction:column;gap:.9rem}.home-hero{display:flex;justify-content:space-between;gap:1rem;align-items:flex-end;border:1px solid rgba(255,255,255,.08);background:linear-gradient(135deg,#58a6ff24,#ff9d3d0d 42%,#ffffff05);padding:.95rem 1rem;border-radius:var(--radius-lg);box-shadow:var(--glow-soft)}.home-kicker{font-size:.64rem;text-transform:uppercase;letter-spacing:1px;color:var(--text-dim);margin-bottom:.25rem}.home-hero h2{font-size:1.2rem;color:var(--text-bright);margin-bottom:.2rem}.home-hero p{font-size:.76rem;color:var(--text-dim);max-width:64ch;line-height:1.5}.home-hero-actions{display:flex;gap:.45rem;align-items:center;flex-wrap:wrap}.shell-link{background:transparent;border:1px solid var(--border);color:var(--text);cursor:pointer;font-family:var(--mono);font-size:.72rem;padding:.35rem .7rem;border-radius:3px}.shell-link:hover{border-color:var(--green);color:var(--green)}.home-overview-grid,.home-detail-grid{display:grid;gap:.75rem}.home-overview-grid{grid-template-columns:1.1fr 1fr}.home-detail-grid{grid-template-columns:1.15fr .9fr;align-items:start}.home-summary-table{display:grid;grid-template-columns:1fr 1fr;gap:.35rem .9rem}.home-summary-row{display:flex;justify-content:space-between;gap:.5rem;padding:.3rem 0;border-bottom:1px solid var(--border)}.home-summary-label{color:var(--text-dim);font-size:.72rem;text-transform:uppercase;letter-spacing:.7px}.home-summary-value{color:var(--text-bright);font-size:.78rem}.home-recommendation{font-size:.84rem;line-height:1.55;color:var(--text-bright);margin-bottom:.85rem}.home-inline-grid{display:grid;grid-template-columns:1fr 1fr;gap:.65rem}.home-inline-value{font-size:.75rem;color:var(--text);line-height:1.4}.home-current-session,.home-sessions-card{grid-column:1}.home-todos-card,.home-savings-card{grid-column:2}.home-session-head{display:flex;justify-content:space-between;gap:.5rem;align-items:center;margin-bottom:.45rem}.home-session-title{font-size:.9rem;color:var(--text-bright)}.home-metric-strip{display:flex;gap:.6rem;flex-wrap:wrap;font-size:.68rem;color:var(--text-dim);margin:.4rem 0 .55rem}.home-tag-row{display:flex;gap:.35rem;flex-wrap:wrap;margin-top:.55rem}.home-tag{border:1px solid var(--border);padding:.15rem .35rem;font-size:.66rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.6px}.home-todo-list,.home-session-list{display:flex;flex-direction:column;gap:.45rem}.home-todo-item,.home-session-item{display:flex;justify-content:space-between;gap:.55rem;padding:.5rem .55rem;background:linear-gradient(180deg,#ffffff08,#ffffff03);border:1px solid rgba(255,255,255,.08);border-radius:11px}.home-todo-status{color:var(--yellow);font-size:.65rem;min-width:54px}.home-totals{display:flex;justify-content:space-between;font-size:.7rem;color:var(--text-dim);margin-top:.55rem}.home-money{font-size:1.45rem;color:var(--text-bright);font-weight:700}.home-money-sub{font-size:.72rem;color:var(--text-dim);margin-top:.2rem}.home-session-item.current{border-left:2px solid var(--green)}.home-session-item-title{font-size:.78rem;color:var(--text-bright);margin-bottom:.15rem}.home-session-item-meta{display:flex;flex-direction:column;gap:.2rem;font-size:.66rem;color:var(--text-dim);text-align:right}@media(max-width:760px){.shell{flex-direction:column}.sidebar{width:100%;border-right:none;border-bottom:1px solid var(--border)}.home-overview-grid,.home-detail-grid,.home-inline-grid,.home-summary-table{grid-template-columns:1fr}.home-current-session,.home-sessions-card,.home-todos-card,.home-savings-card{grid-column:auto}.home-hero{flex-direction:column;align-items:flex-start}}@media(max-width:1280px){.session-grid-4{grid-template-columns:1fr 1fr}.session-column{min-height:auto}.home-mode-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.home-ops-strip{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:920px){.session-hero{flex-direction:column;align-items:flex-start}.session-hero-kpis{min-width:0;width:100%;grid-template-columns:1fr}.session-grid-4,.home-mode-grid,.home-ops-strip,.mode-control-grid,.session-kpi-grid{grid-template-columns:1fr}}.home-controls-strip{display:flex;gap:1.5rem;align-items:center;padding:.6rem .85rem;background:var(--surface);border:1px solid var(--border);margin-bottom:.75rem;flex-wrap:wrap}.home-controls-strip{background:linear-gradient(180deg,#ffffff08,#ffffff03);border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-lg);box-shadow:var(--glow-soft)}.qc-group{display:flex;align-items:center;gap:.4rem}.qc-slot{font-family:var(--mono);font-size:.72rem;padding:2px 8px;border:1px solid var(--border);background:transparent;color:var(--text-dim);cursor:pointer}.qc-slot.active{color:var(--green);border-color:var(--green)}.qc-slot:hover{border-color:var(--border-hover);color:var(--text)}.qc-model{font-family:var(--mono);font-size:.72rem;color:var(--text)}.qc-pill{font-family:var(--mono);font-size:.68rem;padding:1px 6px;font-weight:600;text-transform:uppercase}.qc-pill.on{color:var(--green)}.qc-pill.off{color:var(--text-dim)}.create-form{display:flex;gap:4px;align-items:center;padding:4px 8px}.create-input{flex:1;font-family:var(--mono);font-size:.72rem;background:var(--bg);border:1px solid var(--accent);color:var(--text);padding:2px 4px;outline:none}.create-ok{font-family:var(--mono);font-size:.68rem;color:var(--green);background:transparent;border:1px solid var(--green);padding:1px 5px;cursor:pointer}.create-ok:disabled{opacity:.4;cursor:default}.create-cancel{background:transparent;border:none;color:var(--text-dim);cursor:pointer;font-size:.85rem;line-height:1}.session-thread{display:flex;flex-direction:column;gap:.75rem}.session-thread .msg.user{align-self:flex-end;background:var(--accent-dim);border:1px solid rgba(88,166,255,.15);margin-left:20%}.session-thread .msg.assistant{align-self:flex-start;background:var(--surface);border:1px solid var(--border);margin-right:20%}.run-trace-details{margin-top:.4rem}.run-trace-details summary{font-size:.68rem;color:var(--text-dim);cursor:pointer;padding:.2rem 0;list-style:none;-webkit-user-select:none;user-select:none}.run-trace-details summary::-webkit-details-marker{display:none}.run-trace-details summary:before{content:"+ "}.run-trace-details[open] summary:before{content:"- "}@keyframes vibe-pulse{0%,to{opacity:1}50%{opacity:.3}}.run-spinner{font-size:.75rem;color:var(--accent);font-family:var(--mono);animation:vibe-pulse 1.2s infinite}.shell.shell-4col{display:flex;min-height:100vh;max-width:1600px;margin:0 auto}.workspace{flex:1;min-width:0;padding:1rem 1.1rem 1rem .9rem;display:flex;flex-direction:column;gap:.75rem}.workspace-header{margin-bottom:0}.workspace-grid{display:grid;grid-template-columns:.72fr .82fr 2.25fr .92fr;gap:1rem;align-items:start}.workspace-column-sessions{min-width:200px}.workspace-column-chat,.workspace-column-controls{min-width:0}.workspace-column{min-width:0;border:1px solid rgba(255,255,255,.06);background:linear-gradient(180deg,#ffffff09,#ffffff03);padding:.2rem;border-radius:16px;box-shadow:var(--glow-soft)}.panel{padding:.8rem .85rem}.panel-head{display:flex;justify-content:space-between;gap:.75rem;align-items:flex-start;margin-bottom:.65rem}.panel-head h3{margin-bottom:.05rem;font-family:var(--sans);font-size:.98rem;font-weight:700}.panel-head-copy{color:var(--text-dim);font-size:.7rem;line-height:1.45}.panel-action{white-space:nowrap;padding:.25rem .55rem}.project-sessions-panel{min-height:100%}.project-sessions-panel,.control-rail,.session-workspace{background:transparent;border:none;padding:.7rem .75rem}.project-session-list{display:flex;flex-direction:column;gap:.4rem}.project-session-link{display:flex;justify-content:space-between;align-items:center;gap:.85rem;width:100%;border:1px solid rgba(255,255,255,.08);background:linear-gradient(180deg,#ffffff08,#ffffff03);color:var(--text);padding:.65rem .7rem;cursor:pointer;font-family:var(--sans);font-size:.78rem;text-align:left;border-radius:12px}.project-session-link:hover{border-color:var(--border-hover)}.project-session-link.active{border-color:var(--green);box-shadow:inset 0 0 0 1px #3fb95026}.project-session-link.current{background:#3fb9500a}.project-session-link-title{color:var(--text-bright);line-height:1.35}.project-session-link-meta{color:var(--text-dim);font-size:.64rem;text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}.control-rail{min-height:100%}.control-mode-summary{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:.55rem}.control-status-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:.75rem}.control-status{border:1px solid rgba(255,255,255,.08);background:linear-gradient(180deg,#ffffff0a,#ffffff04);padding:.5rem .55rem;border-radius:12px}.control-status strong{display:block;color:var(--text-bright);font-size:.8rem;line-height:1.35}.control-flow-header,.control-kpi-strip{display:grid;grid-template-columns:1fr auto;gap:.4rem .6rem;align-items:center;margin-bottom:.45rem}.control-kpi-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.control-kpi-strip>div{border:1px solid rgba(255,255,255,.08);background:linear-gradient(180deg,#ffffff0a,#ffffff04);padding:.48rem .5rem;border-radius:12px}.control-kpi-strip strong{display:block;color:var(--text-bright);font-size:.76rem}.control-flow-list{display:flex;flex-direction:column;gap:.35rem}.control-flow-step{display:flex;gap:.5rem;align-items:flex-start;border:1px solid rgba(255,255,255,.08);background:linear-gradient(180deg,#ffffff0a,#ffffff04);padding:.48rem .5rem;border-radius:12px}.control-flow-step>span{min-width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);color:var(--green);font-size:.68rem;background:var(--surface)}.control-flow-step strong{color:var(--text-bright);font-size:.74rem}.control-flow-step .muted{font-size:.66rem;margin-top:.05rem}.session-hero-compact{padding:.65rem .75rem}.session-title{font-family:var(--sans);font-size:1.05rem;font-weight:700;color:var(--text-bright)}.session-mini-grid{display:grid;grid-template-columns:1fr 1fr;gap:.55rem}.session-actions-row{display:flex;gap:.45rem;flex-wrap:wrap}.session-actions-row .shell-link{padding:.3rem .55rem}.column-badge-row{display:flex;align-items:center;gap:.45rem}@media(max-width:1280px){.workspace-grid{grid-template-columns:1fr 1fr}}@media(max-width:920px){.workspace-grid,.session-mini-grid,.control-status-grid,.control-kpi-strip{grid-template-columns:1fr}}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function n(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(r){if(r.ep)return;r.ep=!0;const i=n(r);fetch(r.href,i)}})();const pn=!1,bn=(e,t)=>e===t,gn=Symbol("solid-track"),at={equals:bn};let Ht=Gt;const Ee=1,ct=2,Jt={owned:null,cleanups:null,context:null,owner:null},wt={};var H=null;let kt=null,vn=null,B=null,le=null,je=null,_t=0;function rt(e,t){const n=B,s=H,r=e.length===0,i=t===void 0?s:t,o=r?Jt:{owned:null,cleanups:null,context:i?i.context:null,owner:i},l=r?e:()=>e(()=>Ce(()=>Qe(o)));H=o,B=null;try{return Oe(l,!0)}finally{B=n,H=s}}function z(e,t){t=t?Object.assign({},at,t):at;const n={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0},s=r=>(typeof r=="function"&&(r=r(n.value)),Wt(n,r));return[Zt.bind(n),s]}function $n(e,t,n){const s=pt(e,t,!0,Ee);He(s)}function re(e,t,n){const s=pt(e,t,!1,Ee);He(s)}function Kt(e,t,n){Ht=Pn;const s=pt(e,t,!1,Ee);s.user=!0,je?je.push(s):He(s)}function ae(e,t,n){n=n?Object.assign({},at,n):at;const s=pt(e,t,!0,0);return s.observers=null,s.observerSlots=null,s.comparator=n.equals||void 0,He(s),Zt.bind(s)}function Sn(e){return e&&typeof e=="object"&&"then"in e}function Lt(e,t,n){let s,r,i;typeof t=="function"?(s=e,r=t,i={}):(s=!0,r=e,i=t||{});let o=null,l=wt,f=!1,d="initialValue"in i,h=typeof s=="function"&&ae(s);const c=new Set,[k,A]=(i.storage||z)(i.initialValue),[D,U]=z(void 0),[Q,M]=z(void 0,{equals:!1}),[L,S]=z(d?"ready":"unresolved");function C(j,_,w,x){return o===j&&(o=null,x!==void 0&&(d=!0),(j===l||_===l)&&i.onHydrated&&queueMicrotask(()=>i.onHydrated(x,{value:_})),l=wt,Y(_,w)),_}function Y(j,_){Oe(()=>{_===void 0&&A(()=>j),S(_!==void 0?"errored":d?"ready":"unresolved"),U(_);for(const w of c.keys())w.decrement();c.clear()},!1)}function g(){const j=xn,_=k(),w=D();if(w!==void 0&&!o)throw w;return B&&B.user,_}function P(j=!0){if(j!==!1&&f)return;f=!1;const _=h?h():s;if(_==null||_===!1){C(o,Ce(k));return}let w;const x=l!==wt?l:Ce(()=>{try{return r(_,{value:k(),refetching:j})}catch(W){w=W}});if(w!==void 0){C(o,void 0,lt(w),_);return}else if(!Sn(x))return C(o,x,void 0,_),x;return o=x,"v"in x?(x.s===1?C(o,x.v,void 0,_):C(o,void 0,lt(x.v),_),x):(f=!0,queueMicrotask(()=>f=!1),Oe(()=>{S(d?"refreshing":"pending"),M()},!1),x.then(W=>C(x,W,void 0,_),W=>C(x,void 0,lt(W),_)))}Object.defineProperties(g,{state:{get:()=>L()},error:{get:()=>D()},loading:{get(){const j=L();return j==="pending"||j==="refreshing"}},latest:{get(){if(!d)return g();const j=D();if(j&&!o)throw j;return k()}}});let Z=H;return h?$n(()=>(Z=H,P(!1))):P(!1),[g,{refetch:j=>kn(Z,()=>P(j)),mutate:A}]}function Ce(e){if(B===null)return e();const t=B;B=null;try{return e()}finally{B=t}}function wn(e){Kt(()=>Ce(e))}function At(e){return H===null||(H.cleanups===null?H.cleanups=[e]:H.cleanups.push(e)),e}function kn(e,t){const n=H,s=B;H=e,B=null;try{return Oe(t,!0)}catch(r){Tt(r)}finally{H=n,B=s}}const[bi,gi]=z(!1);let xn;function Zt(){if(this.sources&&this.state)if(this.state===Ee)He(this);else{const e=le;le=null,Oe(()=>ut(this),!1),le=e}if(B){const e=this.observers;if(!e||e[e.length-1]!==B){const t=e?e.length:0;B.sources?(B.sources.push(this),B.sourceSlots.push(t)):(B.sources=[this],B.sourceSlots=[t]),e?(e.push(B),this.observerSlots.push(B.sources.length-1)):(this.observers=[B],this.observerSlots=[B.sources.length-1])}}return this.value}function Wt(e,t,n){let s=e.value;return(!e.comparator||!e.comparator(s,t))&&(e.value=t,e.observers&&e.observers.length&&Oe(()=>{for(let r=0;r<e.observers.length;r+=1){const i=e.observers[r],o=kt&&kt.running;o&&kt.disposed.has(i),(o?!i.tState:!i.state)&&(i.pure?le.push(i):je.push(i),i.observers&&Xt(i)),o||(i.state=Ee)}if(le.length>1e6)throw le=[],new Error},!1)),t}function He(e){if(!e.fn)return;Qe(e);const t=_t;yn(e,e.value,t)}function yn(e,t,n){let s;const r=H,i=B;B=H=e;try{s=e.fn(t)}catch(o){return e.pure&&(e.state=Ee,e.owned&&e.owned.forEach(Qe),e.owned=null),e.updatedAt=n+1,Tt(o)}finally{B=i,H=r}(!e.updatedAt||e.updatedAt<=n)&&(e.updatedAt!=null&&"observers"in e?Wt(e,s):e.value=s,e.updatedAt=n)}function pt(e,t,n,s=Ee,r){const i={fn:e,state:s,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:H,context:H?H.context:null,pure:n};return H===null||H!==Jt&&(H.owned?H.owned.push(i):H.owned=[i]),i}function dt(e){if(e.state===0)return;if(e.state===ct)return ut(e);if(e.suspense&&Ce(e.suspense.inFallback))return e.suspense.effects.push(e);const t=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<_t);)e.state&&t.push(e);for(let n=t.length-1;n>=0;n--)if(e=t[n],e.state===Ee)He(e);else if(e.state===ct){const s=le;le=null,Oe(()=>ut(e,t[0]),!1),le=s}}function Oe(e,t){if(le)return e();let n=!1;t||(le=[]),je?n=!0:je=[],_t++;try{const s=e();return Cn(n),s}catch(s){n||(je=null),le=null,Tt(s)}}function Cn(e){if(le&&(Gt(le),le=null),e)return;const t=je;je=null,t.length&&Oe(()=>Ht(t),!1)}function Gt(e){for(let t=0;t<e.length;t++)dt(e[t])}function Pn(e){let t,n=0;for(t=0;t<e.length;t++){const s=e[t];s.user?e[n++]=s:dt(s)}for(t=0;t<n;t++)dt(e[t])}function ut(e,t){e.state=0;for(let n=0;n<e.sources.length;n+=1){const s=e.sources[n];if(s.sources){const r=s.state;r===Ee?s!==t&&(!s.updatedAt||s.updatedAt<_t)&&dt(s):r===ct&&ut(s,t)}}}function Xt(e){for(let t=0;t<e.observers.length;t+=1){const n=e.observers[t];n.state||(n.state=ct,n.pure?le.push(n):je.push(n),n.observers&&Xt(n))}}function Qe(e){let t;if(e.sources)for(;e.sources.length;){const n=e.sources.pop(),s=e.sourceSlots.pop(),r=n.observers;if(r&&r.length){const i=r.pop(),o=n.observerSlots.pop();s<r.length&&(i.sourceSlots[o]=s,r[s]=i,n.observerSlots[s]=o)}}if(e.tOwned){for(t=e.tOwned.length-1;t>=0;t--)Qe(e.tOwned[t]);delete e.tOwned}if(e.owned){for(t=e.owned.length-1;t>=0;t--)Qe(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}e.state=0}function lt(e){return e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown error",{cause:e})}function Tt(e,t=H){throw lt(e)}const jn=Symbol("fallback");function Rt(e){for(let t=0;t<e.length;t++)e[t]()}function En(e,t,n={}){let s=[],r=[],i=[],o=0,l=t.length>1?[]:null;return At(()=>Rt(i)),()=>{let f=e()||[],d=f.length,h,c;return f[gn],Ce(()=>{let A,D,U,Q,M,L,S,C,Y;if(d===0)o!==0&&(Rt(i),i=[],s=[],r=[],o=0,l&&(l=[])),n.fallback&&(s=[jn],r[0]=rt(g=>(i[0]=g,n.fallback())),o=1);else if(o===0){for(r=new Array(d),c=0;c<d;c++)s[c]=f[c],r[c]=rt(k);o=d}else{for(U=new Array(d),Q=new Array(d),l&&(M=new Array(d)),L=0,S=Math.min(o,d);L<S&&s[L]===f[L];L++);for(S=o-1,C=d-1;S>=L&&C>=L&&s[S]===f[C];S--,C--)U[C]=r[S],Q[C]=i[S],l&&(M[C]=l[S]);for(A=new Map,D=new Array(C+1),c=C;c>=L;c--)Y=f[c],h=A.get(Y),D[c]=h===void 0?-1:h,A.set(Y,c);for(h=L;h<=S;h++)Y=s[h],c=A.get(Y),c!==void 0&&c!==-1?(U[c]=r[h],Q[c]=i[h],l&&(M[c]=l[h]),c=D[c],A.set(Y,c)):i[h]();for(c=L;c<d;c++)c in U?(r[c]=U[c],i[c]=Q[c],l&&(l[c]=M[c],l[c](c))):r[c]=rt(k);r=r.slice(0,o=d),s=f.slice(0)}return r});function k(A){if(i[c]=A,l){const[D,U]=z(c);return l[c]=U,t(f[c],D)}return t(f[c])}}}function I(e,t){return Ce(()=>e(t||{}))}const An=e=>`Stale read from <${e}>.`;function Pe(e){const t="fallback"in e&&{fallback:()=>e.fallback};return ae(En(()=>e.each,e.children,t||void 0))}function we(e){const t=e.keyed,n=ae(()=>e.when,void 0,void 0),s=t?n:ae(n,void 0,{equals:(r,i)=>!r==!i});return ae(()=>{const r=s();if(r){const i=e.children;return typeof i=="function"&&i.length>0?Ce(()=>i(t?r:()=>{if(!Ce(s))throw An("Show");return n()})):i}return e.fallback},void 0,void 0)}const ze=e=>ae(()=>e());function Tn(e,t,n){let s=n.length,r=t.length,i=s,o=0,l=0,f=t[r-1].nextSibling,d=null;for(;o<r||l<i;){if(t[o]===n[l]){o++,l++;continue}for(;t[r-1]===n[i-1];)r--,i--;if(r===o){const h=i<s?l?n[l-1].nextSibling:n[i-l]:f;for(;l<i;)e.insertBefore(n[l++],h)}else if(i===l)for(;o<r;)(!d||!d.has(t[o]))&&t[o].remove(),o++;else if(t[o]===n[i-1]&&n[l]===t[r-1]){const h=t[--r].nextSibling;e.insertBefore(n[l++],t[o++].nextSibling),e.insertBefore(n[--i],h),t[r]=n[i]}else{if(!d){d=new Map;let c=l;for(;c<i;)d.set(n[c],c++)}const h=d.get(t[o]);if(h!=null)if(l<h&&h<i){let c=o,k=1,A;for(;++c<r&&c<i&&!((A=d.get(t[c]))==null||A!==h+k);)k++;if(k>h-l){const D=t[o];for(;l<h;)e.insertBefore(n[l++],D)}else e.replaceChild(n[l++],t[o++])}else o++;else t[o++].remove()}}}const Bt="_$DX_DELEGATE";function Dn(e,t,n,s={}){let r;return rt(i=>{r=i,t===document?e():a(t,e(),t.firstChild?null:void 0,n)},s.owner),()=>{r(),t.textContent=""}}function E(e,t,n,s){let r;const i=()=>{const l=document.createElement("template");return l.innerHTML=e,l.content.firstChild},o=()=>(r||(r=i())).cloneNode(!0);return o.cloneNode=o,o}function Ye(e,t=window.document){const n=t[Bt]||(t[Bt]=new Set);for(let s=0,r=e.length;s<r;s++){const i=e[s];n.has(i)||(n.add(i),t.addEventListener(i,Nn))}}function et(e,t,n){n==null?e.removeAttribute(t):e.setAttribute(t,n)}function be(e,t){t==null?e.removeAttribute("class"):e.className=t}function Qt(e,t,n,s){Array.isArray(n)?(e[`$$${t}`]=n[0],e[`$$${t}Data`]=n[1]):e[`$$${t}`]=n}function On(e,t,n){if(!t)return n?et(e,"style"):t;const s=e.style;if(typeof t=="string")return s.cssText=t;typeof n=="string"&&(s.cssText=n=void 0),n||(n={}),t||(t={});let r,i;for(i in n)t[i]==null&&s.removeProperty(i),delete n[i];for(i in t)r=t[i],r!==n[i]&&(s.setProperty(i,r),n[i]=r);return n}function In(e,t,n){return Ce(()=>e(t,n))}function a(e,t,n,s){if(n!==void 0&&!s&&(s=[]),typeof t!="function")return ft(e,t,s,n);re(r=>ft(e,t(),r,n),s)}function Nn(e){let t=e.target;const n=`$$${e.type}`,s=e.target,r=e.currentTarget,i=f=>Object.defineProperty(e,"target",{configurable:!0,value:f}),o=()=>{const f=t[n];if(f&&!t.disabled){const d=t[`${n}Data`];if(d!==void 0?f.call(t,d,e):f.call(t,e),e.cancelBubble)return}return t.host&&typeof t.host!="string"&&!t.host._$host&&t.contains(e.target)&&i(t.host),!0},l=()=>{for(;o()&&(t=t._$host||t.parentNode||t.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t||document}}),e.composedPath){const f=e.composedPath();i(f[0]);for(let d=0;d<f.length-2&&(t=f[d],!!o());d++){if(t._$host){t=t._$host,l();break}if(t.parentNode===r)break}}else l();i(s)}function ft(e,t,n,s,r){for(;typeof n=="function";)n=n();if(t===n)return n;const i=typeof t,o=s!==void 0;if(e=o&&n[0]&&n[0].parentNode||e,i==="string"||i==="number"){if(i==="number"&&(t=t.toString(),t===n))return n;if(o){let l=n[0];l&&l.nodeType===3?l.data!==t&&(l.data=t):l=document.createTextNode(t),n=Ve(e,n,s,l)}else n!==""&&typeof n=="string"?n=e.firstChild.data=t:n=e.textContent=t}else if(t==null||i==="boolean")n=Ve(e,n,s);else{if(i==="function")return re(()=>{let l=t();for(;typeof l=="function";)l=l();n=ft(e,l,n,s)}),()=>n;if(Array.isArray(t)){const l=[],f=n&&Array.isArray(n);if(Ct(l,t,n,r))return re(()=>n=ft(e,l,n,s,!0)),()=>n;if(l.length===0){if(n=Ve(e,n,s),o)return n}else f?n.length===0?qt(e,l,s):Tn(e,n,l):(n&&Ve(e),qt(e,l));n=l}else if(t.nodeType){if(Array.isArray(n)){if(o)return n=Ve(e,n,s,t);Ve(e,n,null,t)}else n==null||n===""||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);n=t}}return n}function Ct(e,t,n,s){let r=!1;for(let i=0,o=t.length;i<o;i++){let l=t[i],f=n&&n[e.length],d;if(!(l==null||l===!0||l===!1))if((d=typeof l)=="object"&&l.nodeType)e.push(l);else if(Array.isArray(l))r=Ct(e,l,f)||r;else if(d==="function")if(s){for(;typeof l=="function";)l=l();r=Ct(e,Array.isArray(l)?l:[l],Array.isArray(f)?f:[f])||r}else e.push(l),r=!0;else{const h=String(l);f&&f.nodeType===3&&f.data===h?e.push(f):e.push(document.createTextNode(h))}}return r}function qt(e,t,n=null){for(let s=0,r=t.length;s<r;s++)e.insertBefore(t[s],n)}function Ve(e,t,n,s){if(n===void 0)return e.textContent="";const r=s||document.createTextNode("");if(t.length){let i=!1;for(let o=t.length-1;o>=0;o--){const l=t[o];if(r!==l){const f=l.parentNode===e;!i&&!o?f?e.replaceChild(r,l):e.insertBefore(r,n):f&&l.remove()}else i=!0}}else e.insertBefore(r,n);return[r]}function q(e){return JSON.parse(JSON.stringify(e))}function Be(){return new Date().toISOString()}function Ut(e){return`$${e.toFixed(2)}`}const st="proj_dashboard",Fe="sess_vibeultra_exec",xt="flow_tdd_live",Re={recommended_next_action:"Resolve the API wiring, run the TDD flow, then verify the desktop 4-column session workspace.",recommended_label:"TDD Flow Plan",reason:"The dashboard must expose a strict deterministic execution path before allowing further session work.",confidence:.92,flow:!0,steps:[{tool:"plan",label:"Resolve execution plan",reason:"Lock the next structured steps before any run."},{tool:"tdd",label:"Write failing expectation",reason:"Capture KPI, mode, and deterministic UI behavior in testable form."},{tool:"implement",label:"Wire API-backed session controls",reason:"Surface live mode, lock, policy, and plan data."},{tool:"web_search",label:"Ground research when needed",reason:"Only use structured search steps inside the session."},{tool:"verify",label:"Run preview and inspect layout",reason:"Confirm Home and 4-column workspace render operationally."}],signals:{deterministic_execution_policy:"strict-deterministic",requested_optimization_mode:"vibeultrax",effective_optimization_mode:"vibeultrax",effective_slot:"brain"},capabilities:{web_search:!0,tdd:!0,vibeultrax:!0}},u={status:{enabled:!0,active_slot:"brain",enforce:!0,flow_enforcer:!0,flow_extract_todos:!0,tdd_enforcer:!0,tdd_strict:!0,thinking:"full",current_model:"openai/gpt-5",current_provider:"OpenAI",current_quality_tier:"brain",credit_percent:72,version:"preview",backend_connected:!1,backendConnected:!1,backend_api_url:"https://api.vibetheog.com/api/v1",backend_health_url:"https://api.vibetheog.com/health",backend_health_checked_at:Be(),backend_health_age_ms:0,backend_health_latency_ms:null,backend_health_status:null,backend_health_error:"preview fallback",backend_version:null,api_fallback:!0,api_fallback_since:Be(),model_locked:!0,locked_slot:"brain",locked_model:"openai/gpt-5",optimization_mode:"vibeultrax",recommended_next_action:"Open the active session and run the TDD flow plan.",orchestration_plan:q(Re),tiers:null,label_modes:["vibeultrax","vibeqmax","vibemax","vibelitex","raw"],todos:{total:6,pending:4},current_project_fingerprint:"dashboard/home-4col",current_project_name:"Dashboard Control Center",reality_check_enabled:!0,reality_check_scope:"project",reality_check_project_id:st,reality_check_rules_count:3},savings:{lifetime:{delegation_usd:18.34,cache_usd:9.81,missed_context7_usd:2.15,total_warns:7},current_session:{delegation_usd:4.62,cache_usd:1.28,warns_count:1,tool_breakdown:{plan:2.1,tdd:1.7,web_search:.8,verify:1.3}},cache_hits_this_session:14,trend:"up",savings_rate_per_hour:3.9},capabilities:{web_search:{enabled:!0,provider:"api",fixture_mode:!0},compression:{enabled:!0,provider:"local"},tdd:{enabled:!0,provider:"local"},blackbox:{enabled:!0,provider:"local"},vibemax:{enabled:!0,provider:"local"},vibeqmax:{enabled:!0,provider:"local"},vibeultrax:{enabled:!0,provider:"local"},vibelitex:{enabled:!0,provider:"local"},raw:{enabled:!0,provider:"local"}},projects:[{id:st,name:"Dashboard Control Center",fingerprint:"dashboard/home-4col",default_flow_id:xt,created_at:"2026-07-03T12:30:00.000Z",updated_at:"2026-07-03T15:05:00.000Z"}],sessions:[{id:Fe,project_id:st,title:"Executive Home + Deterministic Session Rail",flow_id:xt,created_at:"2026-07-03T12:45:00.000Z",updated_at:"2026-07-03T15:06:00.000Z"}],flows:[{id:xt,scope:"project",project_id:st,name:"TDD Flow Plan",graph:{nodes:[{id:"plan",tool:"plan",label:"Resolve plan"},{id:"tdd",tool:"tdd",label:"Write failing expectation"},{id:"implement",tool:"implement",label:"Implement dashboard changes"},{id:"verify",tool:"verify",label:"Preview and validate"}],edges:[{from:"plan",to:"tdd"},{from:"tdd",to:"implement"},{from:"implement",to:"verify"}]},created_at:"2026-07-03T12:40:00.000Z",updated_at:"2026-07-03T15:02:00.000Z"}],messages:{[Fe]:[{id:"msg_user_1",role:"user",content:"Build the executive home, wire the 4-column operational session UI, and keep deterministic execution only.",plan:q(Re),results:null,created_at:"2026-07-03T12:46:00.000Z"},{id:"msg_assistant_1",role:"assistant",content:"Resolved plan: Home KPIs first, then session rail, then API wiring, then preview verification.",plan:q(Re),results:[{step:Re.steps[0],result:{ok:!0,state:"resolved"}},{step:Re.steps[1],result:{ok:!0,tests:"drafted"}},{step:Re.steps[2],result:{ok:!0,controls:"api-backed"}}],created_at:"2026-07-03T12:49:00.000Z"}]},reports:[{id:"report_preview_audit",type:"audit",summary:"Preview fallback is active because the backend is unavailable; UI remains interactive.",created:"2026-07-03T15:00:00.000Z",tags:["preview","dashboard","fallback"]}],sessionState:{status:"active",locked:!0,archived:!1,optimization_mode:"vibeultrax",recommendation:"Run the structured TDD flow once the API is healthy, or continue in preview mode for layout verification.",lifecycle:{created_at:"2026-07-03T12:45:00.000Z",paused_at:null,resumed_at:"2026-07-03T13:10:00.000Z",archived_at:null,checked_out_at:"2026-07-03T15:06:00.000Z"},notes:[{text:"Column 4 is the authority rail for mode, plan, lock, and policy."},{text:"Sub-regimes such as speed, audit, forensic, and longrun are not top-level vibe modes."}],tags:["home","session","deterministic","tdd","web-search"],template:{id:"tdd-flow-plan",label:"TDD Flow Plan",body:"Plan -> TDD -> Implement -> Verify",signature:"preview-template",revision:4,source:"preview"},blackbox:{enabled:!0,sub_regime:"audit",resolution:"strict deterministic",momentum:84,loop_count:3}}};function Ln(){return u.projects[0]}function Rn(){return u.sessions[0]}function ot(){const e=Rn(),t=Ln();return{title:e.title,session_id:e.id,status:u.sessionState.status,locked:u.sessionState.locked,archived:u.sessionState.archived,project_name:t.name,project_fingerprint:t.fingerprint,started_at:u.sessionState.lifecycle.created_at,cost_usd:2.41,delegation_savings_usd:u.savings.current_session.delegation_usd,cache_savings_usd:u.savings.current_session.cache_usd,notes_count:u.sessionState.notes.length,tags:q(u.sessionState.tags),template:q(u.sessionState.template),optimization_mode:u.sessionState.optimization_mode,orchestration_plan:q(Re),blackbox:q(u.sessionState.blackbox),recommendation:u.sessionState.recommendation,notes:q(u.sessionState.notes),lifecycle:q(u.sessionState.lifecycle),orchestration:{effective_optimization_mode:u.sessionState.optimization_mode,requested_optimization_mode:u.sessionState.optimization_mode,effective_slot:u.status.active_slot,deterministic_execution_policy:"strict-deterministic",resolved_plan_metadata:{source:"preview",strict:!0,generated_at:Be()},mode_capabilities:q(u.capabilities)}}}function Bn(){var s;const e=ot(),t=u.savings.lifetime.delegation_usd+u.savings.lifetime.cache_usd,n=e.delegation_savings_usd+e.cache_savings_usd;return{home:{title:"Executive Operational Home",subtitle:"Main KPIs, current deterministic session, and next structured action.",recommendation:"Open the active session and continue the TDD Flow Plan from the deterministic rail.",cards:[{label:"Active project",value:e.project_name},{label:"Active session",value:e.title},{label:"Vibe mode",value:"VibeUltraX"},{label:"Slot",value:u.status.active_slot},{label:"Model",value:u.status.current_model},{label:"Lock state",value:u.sessionState.locked?"locked":"mutable"},{label:"Backend",value:u.status.backend_connected?"live":"preview fallback"},{label:"Session cost",value:Ut(e.cost_usd)},{label:"Session savings",value:Ut(n)},{label:"Pending TODOs",value:String(((s=u.status.todos)==null?void 0:s.pending)||0)}]},savings:q(u.savings),todos:[{id:"todo_1",status:"pending",title:"Verify Home KPI density"},{id:"todo_2",status:"pending",title:"Validate 4-column desktop layout"},{id:"todo_3",status:"pending",title:"Confirm mode rail exposes all branded vibe modes"},{id:"todo_4",status:"pending",title:"Check blocked-state messaging for unsupported actions"}],current_session:e,template_editor:{enabled:!0,session_id:e.session_id,template:q(u.sessionState.template),templates:[q(u.sessionState.template)],can_edit:!1,can_version:!1,version:4,history:[]},sessions:[{session_id:e.session_id,is_current:!0,started_at:e.started_at,cost_usd:e.cost_usd,delegation_savings_usd:e.delegation_savings_usd,cache_savings_usd:e.cache_savings_usd,status:e.status,locked:e.locked,archived:e.archived,tags:q(e.tags),notes_count:e.notes_count,template_label:e.template.label||e.template.id,template_signature:e.template.signature||null,recommendation:e.recommendation}],templates:[q(u.sessionState.template)],session_actions:["start","pause","resume","lock","unlock","archive","undo"],totals:{total_sessions:u.sessions.length,total_savings_usd:t,current_session_savings_usd:n,pending_todos:4},status:q(u.status),blackbox:{sub_regime:u.sessionState.blackbox.sub_regime,resolution:u.sessionState.blackbox.resolution},backend_connected:u.status.backend_connected,backend_status:u.status.backend_connected?"online":"preview fallback",backend_health_url:u.status.backend_health_url,backend_version:u.status.backend_version}}function qn(){var n;if(typeof window>"u")return!1;const e=String(((n=window.localStorage)==null?void 0:n.getItem("vibeos.dashboard.preview"))||"").toLowerCase();if(e==="1"||e==="true"||e==="on")return!0;const t=window.location.hostname;return t==="127.0.0.1"||t==="localhost"}function Un(){return q(u.status)}function Mn(){return q(u.savings)}function Vn(){return q(u.capabilities)}function zn(){return q(u.projects)}function Fn(e){const t=e?u.sessions.filter(n=>n.project_id===e):u.sessions;return q(t)}function Hn(e){const t=e?u.flows.filter(n=>n.project_id===e||n.scope==="global"):u.flows;return q(t)}function Jn(e){return q(u.messages[e]||[])}function Kn(){return q(u.reports)}function Zn(){return Bn()}function Pt(e){return e!==Fe?{session:ot(),metrics:{},orchestration:null}:{session:ot(),metrics:{session_savings_usd:u.savings.current_session.delegation_usd+u.savings.current_session.cache_usd,session_cost_usd:2.41,strict_policy:"strict-deterministic",effective_slot:u.status.active_slot,requested_optimization_mode:u.sessionState.optimization_mode,effective_optimization_mode:u.sessionState.optimization_mode},orchestration:q(ot().orchestration)}}function Wn(e,t){return e==="mode"&&t?(u.status.optimization_mode=t,u.sessionState.optimization_mode=t,u.status.recommended_next_action=`Mode switched to ${t}. Continue with the structured TDD flow.`,{ok:!0,result:{optimization_mode:t}}):e==="set"&&t?(u.status.active_slot=t,u.status.current_quality_tier=t,u.status.model_locked=!0,u.status.locked_slot=t,{ok:!0,result:{active_slot:t}}):{ok:!0,result:{action:e,slot:t}}}function Gn(e,t){const n=u.sessions.find(s=>s.id===e)||u.sessions[0];return typeof t.title=="string"&&(n.title=t.title),"flow_id"in t&&(n.flow_id=t.flow_id??null),n.updated_at=Be(),q(n)}function Xn(e,t){return e!==Fe||(t==="lock"?(u.sessionState.locked=!0,u.status.model_locked=!0):t==="unlock"?(u.sessionState.locked=!1,u.status.model_locked=!1):t==="pause"?(u.sessionState.status="paused",u.sessionState.lifecycle.paused_at=Be()):t==="resume"||t==="start"?(u.sessionState.status="active",u.sessionState.lifecycle.resumed_at=Be()):t==="archive"?(u.sessionState.archived=!0,u.sessionState.status="archived",u.sessionState.lifecycle.archived_at=Be()):t==="undo"&&(u.sessionState.archived=!1,u.sessionState.status="active",u.sessionState.lifecycle.archived_at=null),u.sessionState.recommendation=`Last structured action: ${t}. Preview state updated locally.`),Pt(Fe)}function Qn(e){const t=e.trim()||"dashboard deterministic session";return{ok:!0,query:t,provider:"preview-fixture",results:[{id:"1",title:"Structured execution patterns for operational dashboards",url:"https://example.com/structured-execution",domain:"example.com",snippet:"Operational dashboards keep the execution plan, hard state, and KPI signals visible in the same workspace.",source:"preview",rank:1},{id:"2",title:"TDD planning in live orchestration UIs",url:"https://example.com/tdd-orchestration",domain:"example.com",snippet:"A deterministic control rail should expose the active plan before execution starts.",source:"preview",rank:2},{id:"3",title:"Session command centers with strict blocked-state messaging",url:"https://example.com/blocked-state",domain:"example.com",snippet:"Unsupported actions should fail explicitly when strict mode is active.",source:"preview",rank:3}],citations:[{id:1,title:"Structured execution patterns for operational dashboards",url:"https://example.com/structured-execution",domain:"example.com"},{id:2,title:"TDD planning in live orchestration UIs",url:"https://example.com/tdd-orchestration",domain:"example.com"},{id:3,title:"Session command centers with strict blocked-state messaging",url:"https://example.com/blocked-state",domain:"example.com"}],answer:`Preview search answer for "${t}": keep the Home screen KPI-dense, expose all branded vibe modes in column 4, render the resolved TDD flow plan before execution, and block unsupported actions under strict deterministic policy.`,meta:{resultCount:3,uniqueDomains:1}}}const Dt=typeof window<"u"?window:{},Xe=Dt.__VIBEOS_DASHBOARD_BASE__??"",jt=Dt.__VIBEOS_DASHBOARD_TOKEN__??"";let it=null;function Ot(){const e={"Content-Type":"application/json"};return jt&&(e.Authorization="Bearer "+jt),e}async function ce(e,t){const n=await fetch(Xe+e,{headers:Ot(),...t});if(!n.ok)throw new Error(`API ${n.status}: ${n.statusText}`);return n.json()}function ht(e){return String(e||"").trim().replace(/\/$/,"")}function mt(e){return ht(e).replace(/\/api\/v1$/,"")}function Yn(e){const t=ht(e);if(!t)return"";try{const n=new URL(t,typeof window<"u"?window.location.origin:"http://127.0.0.1");return n.pathname.endsWith("/health")&&(n.pathname=n.pathname.slice(0,-7)||"/"),mt(n.href)}catch{return mt(t.replace(/\/health$/,""))}}async function Yt(){const e=mt(Dt.__VIBEOS_BACKEND_API_BASE__);if(e)return e;if(Xe){const t=ht(Xe).replace(/\/api\/v1\/dashboard$/,"");if(t!==ht(Xe))return t}return it||(it=(async()=>{try{const t=await ce("/status"),n=mt(t.backend_api_url);if(n)return n;const s=Yn(t.backend_health_url);if(s)return s}catch{}return"https://api.vibetheog.com"})(),it)}async function en(e,t){const n=await Yt(),s=await fetch(n+e,{headers:Ot(),...t});if(!s.ok)throw new Error(`API ${s.status}: ${s.statusText}`);return s.json()}async function de(e,t){try{return await e()}catch(n){if(qn())return await t();throw n}}function tn(){return de(()=>ce("/status"),()=>Un())}function nn(){return de(()=>ce("/savings"),()=>Mn())}function es(){return de(()=>ce("/sessions"),()=>({sessions:[],total_sessions:0}))}function ts(){return de(()=>ce("/reports"),()=>Kn())}function sn(){return de(()=>ce("/capabilities"),()=>Vn())}function rn(){return de(()=>ce("/dashboard/home"),()=>Zn())}function ln(e){return de(()=>ce(`/sessions/${encodeURIComponent(e)}`),()=>Pt(e))}function on(e,t,n){const s={action:e};return t&&(s.slot=t),n&&(s.level=n),de(()=>ce("/trinity",{method:"POST",body:JSON.stringify(s)}),()=>Wn(e,t))}function ns(e,t){return de(()=>ce(`/sessions/${encodeURIComponent(e)}/action`,{method:"POST",body:JSON.stringify(t)}),()=>{const n=Xn(e,String(t.action||""));return{ok:!0,session:n.session,metrics:n.metrics,orchestration:n.orchestration??null}})}function ss(e="global",t){const n=new URLSearchParams;return n.set("scope",e),t&&n.set("project_id",t),ce(`/reality-check?${n.toString()}`)}function is(e){return ce("/reality-check",{method:"POST",body:JSON.stringify(e)})}function rs(e){return de(()=>ce("/web-search",{method:"POST",body:JSON.stringify(e)}),()=>Qn(e.query))}async function ls(e){const t=e||"https://api.vibetheog.com/health";try{return(await fetch(t,{signal:AbortSignal.timeout(3e3)})).ok}catch{return!1}}function an(e){let t=!1;if(jt){let r=null;const i=async()=>{try{const[o,l]=await Promise.all([ce("/status"),ce("/savings")]);t||e({status:o,savings:l})}catch{}};return i(),r=setInterval(i,3e3),()=>{t=!0,r&&clearInterval(r)}}let n=null;function s(){if(t)return;const r=new EventSource(Xe+"/events");r.onmessage=i=>{try{const o=JSON.parse(i.data);t||e(o)}catch{}},r.onerror=()=>{r.close(),t||(n=setTimeout(s,3e3))}}return s(),()=>{t=!0,n&&clearTimeout(n)}}function os(e,t){return en("/api/v1/blackbox/analyze",{method:"POST",body:JSON.stringify({session_id:e,project_id:t.project_id||null,user_text:t.userText||"",features:t.features||{},action:t.action||"explore",entropy:t.entropy??1,uncertainty:t.uncertainty??50,embedding:t.embedding||null,optimization_mode:t.optimizationMode||"auto"})})}async function me(e,t){return en(`/api/v1/orchestrator${e}`,t)}function cn(){return de(()=>me("/projects"),()=>({projects:zn()}))}function dn(e,t){return me("/projects",{method:"POST",body:JSON.stringify({name:e,fingerprint:t})})}function as(e,t){return me(`/projects/${e}`,{method:"PUT",body:JSON.stringify(t)})}function un(e){return me(`/projects/${e}`,{method:"DELETE"})}function fn(e){return de(()=>me(`/sessions${e?`?project_id=${encodeURIComponent(e)}`:""}`),()=>({sessions:Fn(e)}))}function cs(e,t,n){return me("/sessions",{method:"POST",body:JSON.stringify({project_id:e,title:t,flow_id:n??null})})}function ds(e,t){return de(()=>me(`/sessions/${e}`,{method:"PUT",body:JSON.stringify(t)}),()=>({session:Gn(e,t)}))}function us(e){return me(`/sessions/${e}`,{method:"DELETE"})}function hn(e){return de(()=>me(`/sessions/${e}/messages`),()=>({messages:Jn(e)}))}function fs(e){return de(()=>me(`/flows${e?`?project_id=${encodeURIComponent(e)}`:""}`),()=>({flows:Hn(e)}))}function hs(e,t,n="global",s){return me("/flows",{method:"POST",body:JSON.stringify({name:e,graph:t,scope:n,project_id:s})})}function ms(e,t){return me(`/flows/${e}`,{method:"PUT",body:JSON.stringify(t)})}function _s(e){return me(`/flows/${e}`,{method:"DELETE"})}function mn(e,t,n){const s=new AbortController;return(async()=>{var d,h,c;const r=await Yt(),i=await fetch(r+`/api/v1/orchestrator/sessions/${e}/run`,{method:"POST",headers:Ot(),body:JSON.stringify(t),signal:s.signal});if(!i.ok||!i.body){(d=n.onError)==null||d.call(n,new Error(`run failed: ${i.status}`));return}const o=i.body.getReader(),l=new TextDecoder;let f="";for(;;){const{done:k,value:A}=await o.read();if(k)break;f+=l.decode(A,{stream:!0});let D;for(;(D=f.indexOf(`
|
|
2
|
-
|
|
3
|
-
`))>=0;){const U=f.slice(0,D);f=f.slice(D+2);const Q=(h=U.match(/event: (.*)/))==null?void 0:h[1],M=U.slice(U.indexOf("data: ")+6);if(!(!Q||U.indexOf("data: ")<0))try{n.onEvent(Q,JSON.parse(M))}catch{}}}(c=n.onDone)==null||c.call(n)})().catch(r=>{var i;(r==null?void 0:r.name)!=="AbortError"&&((i=n.onError)==null||i.call(n,r))}),()=>s.abort()}const ps=Object.freeze(Object.defineProperty({__proto__:null,blackboxAnalyze:os,checkBackendHealth:ls,createFlow:hs,createProject:dn,createSession:cs,deleteFlow:_s,deleteProject:un,deleteSession:us,fetchCapabilities:sn,fetchDashboardHome:rn,fetchRealityCheck:ss,fetchReports:ts,fetchSavings:nn,fetchSessionDetail:ln,fetchSessions:es,fetchStatus:tn,listFlows:fs,listMessages:hn,listProjects:cn,listSessions:fn,openSSE:an,postSessionAction:ns,postTrinity:on,runSession:mn,saveRealityCheck:is,updateFlow:ms,updateProject:as,updateSession:ds,webSearch:rs},Symbol.toStringTag,{value:"Module"})),bs="home";function gs(e){const t=String((e==null?void 0:e.name)||"").trim(),n=String((e==null?void 0:e.fingerprint)||"").trim(),s=`${t} ${n}`.toLowerCase();if(/\b(cli|terminal|shell|console)\b/.test(s))return{glyph:"⌘",label:"CLI"};if(/\b(api|backend|server)\b/.test(s))return{glyph:"◫",label:"API"};if(/\b(web|site|frontend|dashboard|ui|home)\b/.test(s))return{glyph:"◩",label:"UI"};if(/\b(app|desktop|mobile)\b/.test(s))return{glyph:"▣",label:"App"};const r=t.split(/[^A-Za-z0-9]+/).filter(Boolean).slice(0,2).map(f=>{var d;return((d=f[0])==null?void 0:d.toUpperCase())||""}).join("");if(r)return{glyph:r,label:t||r};const i=n||t||"project",o=["◆","◈","◉","▣","⬢","◬"];let l=0;for(const f of i)l=l*31+f.charCodeAt(0)>>>0;return{glyph:o[l%o.length],label:t||"Project"}}var vs=E("<div class=create-form><input class=create-input><button class=create-ok>ok</button><button class=create-cancel>x");function $s(e){const[t,n]=z("");let s;return wn(()=>s==null?void 0:s.focus()),(()=>{var r=vs(),i=r.firstChild,o=i.nextSibling,l=o.nextSibling;i.$$keydown=d=>{d.key==="Enter"&&t().trim()&&e.onSubmit(t().trim()),d.key==="Escape"&&e.onCancel()},i.$$input=d=>n(d.currentTarget.value);var f=s;return typeof f=="function"?In(f,i):s=i,o.$$click=()=>{t().trim()&&e.onSubmit(t().trim())},Qt(l,"click",e.onCancel),re(d=>{var h=e.placeholder,c=!t().trim();return h!==d.e&&et(i,"placeholder",d.e=h),c!==d.t&&(o.disabled=d.t=c),d},{e:void 0,t:void 0}),re(()=>i.value=t()),r})()}Ye(["input","keydown","click"]);var Ss=E('<aside class=sidebar><div class=sidebar-brand><div class=sidebar-brand-mark>~</div><div><div class=sidebar-brand-title>opencode</div><div class=sidebar-brand-subtitle>dashboard home</div></div></div><button><span class=sidebar-icon>⌂</span> Home</button><div class=sidebar-home-card><div class=sidebar-section-label>main info</div><div class=sidebar-home-title></div><p class=sidebar-home-copy></p><div class=sidebar-home-metrics><span>mode </span><span>slot </span><span>model </span><span>backend </span></div><div class=sidebar-home-metrics><span>session </span><span>savings </span><span>todos </span></div></div><div class=sidebar-section-head><span class=sidebar-section-label>projects</span><button class=sidebar-add title="New project">+'),ws=E("<div class=sidebar-empty>no projects — click + to create one"),ks=E('<div class=sidebar-project><div class=sidebar-project-row><span class=sidebar-project-icon></span><button></button><button class=sidebar-delete title="Delete project">x');function Mt(e,t){return e.kind!==t.kind?!1:e.kind==="home"||e.kind==="status"?!0:e.kind==="project"&&t.kind==="project"?e.projectId===t.projectId:e.kind==="session"&&t.kind==="session"?e.sessionId===t.sessionId:!1}function xs(e){const t=`${e.name}|${e.fingerprint||e.id}`;let n=0;for(const r of t)n=n*33+r.charCodeAt(0)>>>0;return`hsl(${n%360} 72% 46%)`}function ys(e){return`$${Number(e||0).toFixed(2)}`}function Cs(e){const t=()=>{var s;return((s=e.home)==null?void 0:s.status)||e.status},n=()=>{var s;return((s=e.home)==null?void 0:s.current_session)||null};return(()=>{var s=Ss(),r=s.firstChild,i=r.nextSibling,o=i.nextSibling,l=o.firstChild,f=l.nextSibling,d=f.nextSibling,h=d.nextSibling,c=h.firstChild;c.firstChild;var k=c.nextSibling;k.firstChild;var A=k.nextSibling;A.firstChild;var D=A.nextSibling;D.firstChild;var U=h.nextSibling,Q=U.firstChild;Q.firstChild;var M=Q.nextSibling;M.firstChild;var L=M.nextSibling;L.firstChild;var S=o.nextSibling,C=S.firstChild,Y=C.nextSibling;return i.$$click=()=>e.onSelect({kind:"home"}),a(f,()=>{var g,P;return((P=(g=e.home)==null?void 0:g.home)==null?void 0:P.title)||e.currentProjectName||"Home"}),a(d,()=>{var g,P,Z,j;return((P=(g=e.home)==null?void 0:g.home)==null?void 0:P.recommendation)||((j=(Z=e.home)==null?void 0:Z.home)==null?void 0:j.subtitle)||"Operational dashboard summary."}),a(c,()=>{var g,P;return String(((g=t())==null?void 0:g.optimization_mode)||((P=t())==null?void 0:P.native_agent_mode)||"auto")},null),a(k,()=>{var g;return((g=t())==null?void 0:g.active_slot)||"brain"},null),a(A,()=>{var g;return(((g=t())==null?void 0:g.current_model)||"unknown").split("/").pop()},null),a(D,()=>{var g,P;return((g=t())==null?void 0:g.backend_connected)??((P=t())==null?void 0:P.backendConnected)?"live":"degraded"},null),a(Q,()=>{var g;return((g=n())==null?void 0:g.title)||"none"},null),a(M,()=>{var g;return ys((g=e.home)==null?void 0:g.totals.total_savings_usd)},null),a(L,()=>{var g,P,Z;return((g=e.home)==null?void 0:g.totals.pending_todos)??((Z=(P=e.status)==null?void 0:P.todos)==null?void 0:Z.pending)??0},null),Qt(Y,"click",e.onNewProject),a(s,I(we,{get when(){return e.creatingProject},get children(){return I($s,{placeholder:"project name",get onSubmit(){return e.onCreateProjectName},get onCancel(){return e.onCancelCreate}})}}),null),a(s,I(Pe,{get each(){return e.projects},get fallback(){return ws()},children:g=>{const P=gs(g),Z=xs(g);return(()=>{var j=ks(),_=j.firstChild,w=_.firstChild,x=w.nextSibling,W=x.nextSibling;return a(w,()=>P.glyph),x.$$click=()=>e.onSelect({kind:"project",projectId:g.id}),a(x,()=>g.name),W.$$click=()=>e.onDeleteProject(g.id),re(N=>{var ee=P.label,_e=`--project-icon-bg:${Z};--project-icon-fg:#f5f5f5;`,oe=`sidebar-item ${Mt(e.selection,{kind:"project",projectId:g.id})?"active":""}`;return ee!==N.e&&et(w,"title",N.e=ee),N.t=On(w,_e,N.t),oe!==N.a&&be(x,N.a=oe),N},{e:void 0,t:void 0,a:void 0}),j})()}}),null),re(()=>be(i,`sidebar-item pinned ${Mt(e.selection,{kind:"home"})?"active":""}`)),s})()}Ye(["click"]);const Ps="modulepreload",js=function(e){return"/"+e},Vt={},Es=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){let o=function(d){return Promise.all(d.map(h=>Promise.resolve(h).then(c=>({status:"fulfilled",value:c}),c=>({status:"rejected",reason:c}))))};document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),f=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));r=o(n.map(d=>{if(d=js(d),d in Vt)return;Vt[d]=!0;const h=d.endsWith(".css"),c=h?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${c}`))return;const k=document.createElement("link");if(k.rel=h?"stylesheet":Ps,h||(k.as="script"),k.crossOrigin="",k.href=d,f&&k.setAttribute("nonce",f),document.head.appendChild(k),h)return new Promise((A,D)=>{k.addEventListener("load",A),k.addEventListener("error",()=>D(new Error(`Unable to preload CSS for ${d}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})},As=["vibemax","vibeqmax","vibeultrax","vibelitex","raw"];function Ts(e){return As.includes(String(e||"").toLowerCase())}const Ge={vibeultrax:{id:"vibeultrax",index:1,name:"VibeUltraX",icon:"🏆",pipeline:["cheap","medium","brain"],thinking:"full",tdd:"quality",enforcement:"strict",flow:"strict",qualityVsBrain:107,costVsBrain:58,default:!0,desc:"Default mode. 3-model debate: cheap proposes, medium reviews, brain refines."},vibeqmax:{id:"vibeqmax",index:2,name:"VibeQMaX",icon:"⭐",pipeline:["brain"],thinking:"full",tdd:"quality",enforcement:"strict",flow:"strict",qualityVsBrain:100,costVsBrain:50,desc:"Brain tier only. Same quality as Raw Brain at half cost."},vibemax:{id:"vibemax",index:3,name:"VibeMaX",icon:"⚡",pipeline:["medium"],thinking:"off",tdd:"lazy",enforcement:"relaxed",flow:"audit",qualityVsBrain:75,costVsBrain:18,desc:"Medium tier auto-escalate. Speed-first."},vibelitex:{id:"vibelitex",index:4,name:"VibeLiteX",icon:"💡",pipeline:["medium"],thinking:"brief",tdd:"lazy",enforcement:"normal",flow:"audit",qualityVsBrain:65,costVsBrain:20,desc:"Local fallback. Medium tier with enforcement. No API required."},raw:{id:"raw",index:10,name:"Raw Brain",icon:"🧠",pipeline:["brain"],thinking:"full",tdd:"—",enforcement:"—",flow:"—",qualityVsBrain:100,costVsBrain:0,desc:"Pure v4 Pro baseline. No vibeOS overhead."}};function It(e){const t=String(e||"").toLowerCase().trim();if(Ts(t))return t;switch(t){case"litex":return"vibelitex";case"quality":return"vibeqmax";case"audit":case"forensic":return"vibeqmax";case"longrun":return"vibeqmax";case"speed":case"balanced":return"vibemax";case"budget":return"vibelitex";default:return"vibeultrax"}}const Ds=[Ge.vibeultrax,Ge.vibeqmax,Ge.vibemax,Ge.vibelitex];function Et(e){const t=It(e);return Ge[t]}function Os(){return Ds}var Is=E("<span class=run-step-skip>blocked — "),Ns=E("<code class=run-step-result>"),Ls=E("<div><span class=run-step-tool></span><span class=run-step-label>"),Rs=E('<div class="session-hero session-hero-compact"><div><div class=home-kicker>session workspace</div><h2 class=session-title></h2><div class=session-hero-meta><span>…</span><span>project </span><span></span><span></span></div></div><div class=session-hero-kpis><div class=session-kpi><span class=field-label>session savings</span><strong></strong></div><div class=session-kpi><span class=field-label>session cost</span><strong></strong></div><div class=session-kpi><span class=field-label>status</span><strong>'),Bs=E('<div class="msg assistant live"><div class=msg-role>resolved plan</div><div class="msg-content mono"></div><div class=session-plan-head><span class=muted></span><span>%</span></div><div class=run-trace>'),qs=E('<div class="msg-content mono">'),Us=E('<div class="msg assistant live"><div class=msg-role>running</div><div class=run-trace></div><span class=run-spinner>executing allowed structured steps only'),Ms=E("<div class=error>"),Vs=E('<div class=session-body><div class=session-thread></div><div class=composer><textarea class=text-area placeholder="Describe the next structured session task…"></textarea><div class=composer-actions><span class=muted>policy: strict deterministic · ⌘/Ctrl+Enter to run</span><button class=flow-save></button></div></div><div class=session-mini-grid><div class=session-state-block><span class=field-label>session state</span><div class=session-state-stack><div class=session-state-row><span>project</span><strong></strong></div><div class=session-state-row><span>status</span><strong></strong></div><div class=session-state-row><span>mode</span><strong></strong></div><div class=session-state-row><span>started</span><strong></strong></div><div class=session-state-row><span>lock</span><strong></strong></div></div></div><div class=session-state-block><span class=field-label>lifecycle</span><div class=session-timeline><span>created </span><span>paused </span><span>resumed </span><span>archived </span></div></div></div><div class=session-actions-row>'),zs=E('<div class="session-workspace card panel"><div class="panel-head session-head"><div><h3>Session Chat</h3><div class=panel-head-copy></div></div><div class=session-hero-meta><span>mode </span><span>slot </span><span>model </span><span>web search </span><span>savings/hr '),Fs=E("<p class=muted>Pick a session link from column 2 to open the chat and live run stream."),Hs=E("<div class=run-step><span class=run-step-tool></span><span class=run-step-label> · "),Js=E("<p class=muted>No chat yet. Use the composer below to run a structured session prompt."),Ks=E("<details class=run-trace-details><summary>structured steps (<!>)</summary><div class=run-trace>"),Zs=E("<div><div class=msg-role></div><div class=msg-content>"),Ws=E("<button class=shell-link>");function zt(e){const t=e.r;return(()=>{var n=Ls(),s=n.firstChild,r=s.nextSibling;return a(s,()=>{var i;return(i=t.step)==null?void 0:i.tool}),a(r,()=>{var i;return(i=t.step)==null?void 0:i.label}),a(n,I(we,{get when(){return t.skipped},get children(){var i=Is();return i.firstChild,a(i,()=>t.reason,null),i}}),null),a(n,I(we,{get when(){return ze(()=>!t.skipped)()&&t.result},get children(){var i=Ns();return a(i,()=>JSON.stringify(t.result).slice(0,160)),i}}),null),re(()=>be(n,`run-step ${t.skipped?"skipped":"done"}`)),n})()}function yt(e){return`$${Number(e||0).toFixed(2)}`}function We(e){if(!e)return"—";try{return new Date(e).toLocaleString()}catch{return e}}function Gs(e){const t=String(e||"").trim().toLowerCase();if(!t||t==="auto")return"auto";try{return Et(It(t)).name||t}catch{return t}}function Xs(e){const t=e==null?void 0:e.session,n=["start","pause","resume",t!=null&&t.locked?"unlock":"lock","archive","undo"];return[...new Set(n)]}function Qs(e){const[t,{mutate:n,refetch:s}]=Lt(()=>{var _;return((_=e.session)==null?void 0:_.id)||null},_=>_?ln(_):Promise.resolve({session:null})),[r,{refetch:i}]=Lt(()=>{var _;return((_=e.session)==null?void 0:_.id)||null},_=>_?hn(_):Promise.resolve({messages:[]})),[o,l]=z(""),[f,d]=z(!1),[h,c]=z(null),[k,A]=z(null),[D,U]=z([]),[Q,M]=z(null);let L=null;At(()=>L==null?void 0:L());const S=ae(()=>{var _;return(_=t())==null?void 0:_.session}),C=ae(()=>{var _,w;return k()||((_=S())==null?void 0:_.orchestration_plan)||((w=e.status)==null?void 0:w.orchestration_plan)||null}),Y=ae(()=>{var _,w;return String(((_=S())==null?void 0:_.optimization_mode)||((w=e.status)==null?void 0:w.optimization_mode)||"auto").toLowerCase()}),g=ae(()=>Gs(Y())),P=ae(()=>{var _,w;return((_=e.status)==null?void 0:_.backend_connected)??((w=e.status)==null?void 0:w.backendConnected)??!1}),Z=_=>{var W;const w=e.session,x=String(_||"").trim();if(!(!w||!x||f())){if((W=S())!=null&&W.locked){M("Session is locked. Unlock it before running a deterministic flow.");return}d(!0),M(null),A(null),U([]),L=mn(w.id,{prompt:x,query:x,execution_policy:"strict-deterministic"},{onEvent:(N,ee)=>{N==="plan"?A(ee.plan):N==="step"?U(_e=>[..._e,ee]):N==="done"?(d(!1),l(""),A(null),U([]),i(),s(),e.onRefresh()):N==="error"&&(M(ee.message||"run failed"),d(!1))},onError:N=>{M(N.message),d(!1)},onDone:()=>d(!1)})}};Kt(()=>{const _=e.runRequest,w=e.session;!_||!w||_.sessionId!==w.id||(l(_.prompt),e.onRunRequestHandled(),Z(_.prompt))});const j=async _=>{const w=e.session;if(w){c(_),M(null);try{const{postSessionAction:x}=await Es(async()=>{const{postSessionAction:N}=await Promise.resolve().then(()=>ps);return{postSessionAction:N}},void 0),W=await x(w.id,{action:_});n(N=>N&&{...N,session:W.session,metrics:W.metrics,orchestration:W.orchestration??null}),s(),e.onRefresh()}catch(x){M(x.message)}finally{c(null)}}};return(()=>{var _=zs(),w=_.firstChild,x=w.firstChild,W=x.firstChild,N=W.nextSibling,ee=x.nextSibling,_e=ee.firstChild;_e.firstChild;var oe=_e.nextSibling;oe.firstChild;var ke=oe.nextSibling;ke.firstChild;var Ae=ke.nextSibling;Ae.firstChild;var b=Ae.nextSibling;return b.firstChild,a(N,(()=>{var $=ze(()=>!!e.session);return()=>$()?e.session.title:"Select a session from column 2"})()),a(_e,()=>g()||"auto",null),a(oe,()=>{var $;return(($=e.status)==null?void 0:$.active_slot)||"brain"},null),a(ke,()=>{var $;return((($=e.status)==null?void 0:$.current_model)||"unknown").split("/").pop()},null),a(Ae,()=>{var $,O;return(O=($=e.capabilities)==null?void 0:$.web_search)!=null&&O.enabled?"on":"off"},null),a(b,()=>{var $;return yt(($=e.savings)==null?void 0:$.savings_rate_per_hour)},null),a(_,I(we,{get when(){return e.session},get fallback(){return Fs()},get children(){return[(()=>{var $=Rs(),O=$.firstChild,R=O.firstChild,J=R.nextSibling,se=J.nextSibling,G=se.firstChild,pe=G.firstChild,ue=G.nextSibling;ue.firstChild;var te=ue.nextSibling,xe=te.nextSibling,ye=O.nextSibling,ge=ye.firstChild,Ie=ge.firstChild,Te=Ie.nextSibling,ve=ge.nextSibling,Ne=ve.firstChild,v=Ne.nextSibling,V=ve.nextSibling,ne=V.firstChild,$e=ne.nextSibling;return a(J,()=>e.session.title),a(G,()=>e.session.id.slice(0,18),pe),a(ue,()=>{var X,F;return((X=e.project)==null?void 0:X.name)||((F=S())==null?void 0:F.project_name)||"selected"},null),a(te,()=>P()?"backend online":"backend degraded"),a(xe,(()=>{var X=ze(()=>{var F;return!!((F=S())!=null&&F.locked)});return()=>{var F;return X()?"locked":((F=S())==null?void 0:F.status)||"active"}})()),a(Te,()=>{var X,F;return yt((((X=S())==null?void 0:X.delegation_savings_usd)||0)+(((F=S())==null?void 0:F.cache_savings_usd)||0))}),a(v,()=>{var X;return yt((X=S())==null?void 0:X.cost_usd)}),a($e,(()=>{var X=ze(()=>{var F;return!!((F=S())!=null&&F.locked)});return()=>{var F;return X()?"locked":((F=S())==null?void 0:F.status)||"active"}})()),$})(),(()=>{var $=Vs(),O=$.firstChild,R=O.nextSibling,J=R.firstChild,se=J.nextSibling,G=se.firstChild,pe=G.nextSibling,ue=R.nextSibling,te=ue.firstChild,xe=te.firstChild,ye=xe.nextSibling,ge=ye.firstChild,Ie=ge.firstChild,Te=Ie.nextSibling,ve=ge.nextSibling,Ne=ve.firstChild,v=Ne.nextSibling,V=ve.nextSibling,ne=V.firstChild,$e=ne.nextSibling,X=V.nextSibling,F=X.firstChild,qe=F.nextSibling,Ue=X.nextSibling,Le=Ue.firstChild,bt=Le.nextSibling,gt=te.nextSibling,tt=gt.firstChild,vt=tt.nextSibling,Je=vt.firstChild;Je.firstChild;var Me=Je.nextSibling;Me.firstChild;var Ke=Me.nextSibling;Ke.firstChild;var nt=Ke.nextSibling;nt.firstChild;var $t=ue.nextSibling;return a(O,I(we,{get when(){return C()},get children(){var p=Bs(),T=p.firstChild,m=T.nextSibling,y=m.nextSibling,K=y.firstChild,fe=K.nextSibling,ie=fe.firstChild,he=y.nextSibling;return a(m,()=>C().recommended_label||"Structured plan"),a(K,()=>C().recommended_next_action||C().reason),a(fe,()=>Math.round(Number(C().confidence||0)*100),ie),a(he,I(Pe,{get each(){return C().steps||[]},children:(Se,De)=>(()=>{var Ze=Hs(),Nt=Ze.firstChild,St=Nt.nextSibling,_n=St.firstChild;return a(Nt,()=>De()+1),a(St,()=>Se.tool,_n),a(St,()=>Se.label,null),Ze})()})),p}}),null),a(O,I(Pe,{get each(){var p;return((p=r())==null?void 0:p.messages)||[]},get fallback(){return Js()},children:p=>(()=>{var T=Zs(),m=T.firstChild,y=m.nextSibling;return a(m,()=>p.role),a(y,()=>p.content||"(no summary)"),a(T,I(we,{get when(){return ze(()=>!!(p.role==="assistant"&&p.results))()&&p.results.length},get children(){var K=Ks(),fe=K.firstChild,ie=fe.firstChild,he=ie.nextSibling;he.nextSibling;var Se=fe.nextSibling;return a(fe,()=>p.results.length,he),a(Se,I(Pe,{get each(){return p.results},children:De=>I(zt,{r:De})})),K}}),null),re(()=>be(T,`msg ${p.role}`)),T})()}),null),a(O,I(we,{get when(){return f()},get children(){var p=Us(),T=p.firstChild,m=T.nextSibling;return a(p,I(we,{get when(){return k()},get children(){var y=qs();return a(y,()=>k().steps.map(K=>K.tool).join(" → ")),y}}),m),a(m,I(Pe,{get each(){return D()},children:y=>I(zt,{r:y})})),p}}),null),J.$$keydown=p=>{p.key==="Enter"&&(p.metaKey||p.ctrlKey)&&Z(o())},J.$$input=p=>l(p.currentTarget.value),pe.$$click=()=>Z(o()),a(pe,()=>f()?"running…":"run structured flow"),a(Te,()=>{var p,T;return((p=S())==null?void 0:p.project_name)||((T=e.project)==null?void 0:T.name)||"Current project"}),a(v,()=>{var p;return((p=S())==null?void 0:p.status)||"active"}),a($e,()=>g()||"auto"),a(qe,()=>{var p;return We((p=S())==null?void 0:p.started_at)}),a(bt,()=>{var p;return(p=S())!=null&&p.locked?"locked":"mutable"}),a(Je,()=>{var p,T;return We((T=(p=S())==null?void 0:p.lifecycle)==null?void 0:T.created_at)},null),a(Me,()=>{var p,T;return We((T=(p=S())==null?void 0:p.lifecycle)==null?void 0:T.paused_at)},null),a(Ke,()=>{var p,T;return We((T=(p=S())==null?void 0:p.lifecycle)==null?void 0:T.resumed_at)},null),a(nt,()=>{var p,T;return We((T=(p=S())==null?void 0:p.lifecycle)==null?void 0:T.archived_at)},null),a($t,I(Pe,{get each(){return Xs(t())},children:p=>(()=>{var T=Ws();return T.$$click=()=>void j(p),a(T,()=>h()===p?"…":p),re(()=>T.disabled=h()===p),T})()})),a($,I(we,{get when(){return Q()},get children(){var p=Ms();return a(p,Q),p}}),null),re(()=>{var p;return pe.disabled=f()||!o().trim()||((p=S())==null?void 0:p.locked)}),re(()=>J.value=o()),$})()]}}),null),_})()}Ye(["input","keydown","click"]);var Ys=E("<div class=project-session-list>"),ei=E('<div class="card panel project-sessions-panel"><div class=panel-head><div><h3>Project Sessions</h3><div class=panel-head-copy>'),ti=E("<p class=muted>Pick a project from column 1 to see its sessions."),ni=E("<p class=muted>No sessions in this project yet."),si=E("<button><span class=project-session-link-title></span><span class=project-session-link-meta>");function ii(e,t){return t===e.id?"current":""}function ri(e){return(()=>{var t=ei(),n=t.firstChild,s=n.firstChild,r=s.firstChild,i=r.nextSibling;return a(i,()=>{var o;return((o=e.project)==null?void 0:o.name)||"Select a project"}),a(t,I(we,{get when(){return e.project},get fallback(){return ti()},get children(){var o=Ys();return a(o,I(Pe,{get each(){return e.sessions},get fallback(){return ni()},children:l=>(()=>{var f=si(),d=f.firstChild,h=d.nextSibling;return f.$$click=()=>e.onSelectSession(l),a(d,()=>l.title),a(h,(()=>{var c=ze(()=>e.currentSessionId===l.id);return()=>c()?"current":l.id.slice(0,8)})()),re(()=>be(f,`project-session-link ${e.selectedSessionId===l.id?"active":""} ${ii(l,e.currentSessionId)}`)),f})()})),o}}),null),t})()}Ye(["click"]);var li=E("<div class=result-box><code></code><button class=dismiss-btn>x"),oi=E('<div class="card panel control-rail"><div class=panel-head><div><h3>Control Rail</h3><div class=panel-head-copy>deterministic session authority</div></div><span></span></div><div class=control-status-grid><div class=control-status><span class=field-label>vibe status</span><strong></strong></div><div class=control-status><span class=field-label>api token</span><strong></strong></div><div class=control-status><span class=field-label>connect</span><strong></strong></div><div class=control-status><span class=field-label>thinking</span><strong></strong></div></div><div class=control-group><h4>Vibe Mode</h4><div class=mode-control-grid></div></div><div class=control-group><h4>Flow</h4><div class=control-flow-header><span class=muted></span><span></span></div><div class=control-flow-list></div></div><div class=control-group><h4>Create Plan / TDD</h4><div class=session-action-grid><button class=shell-link>create plan</button><button class=shell-link>tdd</button></div><p class=muted>Runs the active session with a structured prompt. No loose command launching.</p><p class=muted>web search <!> · tdd </p></div><div class=control-group><h4>KPI</h4><div class=control-kpi-strip><div><span class=field-label>slot</span><strong></strong></div><div><span class=field-label>model</span><strong></strong></div><div><span class=field-label>savings/hr</span><strong></strong></div><div><span class=field-label>todos</span><strong></strong></div></div><div class=control-kpi-strip><div><span class=field-label>session</span><strong></strong></div><div><span class=field-label>backend</span><strong></strong></div><div><span class=field-label>lock</span><strong></strong></div><div><span class=field-label>flow</span><strong>'),ai=E("<button><strong></strong><span>"),ci=E("<p class=muted>No resolved plan yet. Use the chat or create a plan from here."),di=E("<div class=control-flow-step><span></span><div><strong></strong><div class=muted> · ");const ui=Os();function fi(e){return`$${Number(e||0).toFixed(2)}`}function hi(e){const t=String(e||"").trim().toLowerCase();if(!t||t==="auto")return"auto";try{return Et(t).name||Et(It(t)).name||t}catch{return t}}function mi(e){const[t,n]=z(null),[s,r]=z(null),i=ae(()=>{var h,c;return String(((h=e.status)==null?void 0:h.optimization_mode)||((c=e.status)==null?void 0:c.native_agent_mode)||"auto").toLowerCase()}),o=ae(()=>hi(i())),l=ae(()=>{var h,c;return((c=(h=e.status)==null?void 0:h.orchestration_plan)==null?void 0:c.steps)||[]}),f=ae(()=>{var h,c;return((h=e.status)==null?void 0:h.backend_connected)??((c=e.status)==null?void 0:c.backendConnected)??!1}),d=async h=>{if(!t()){n(`mode:${h}`),r(null);try{const c=await on("mode",h);r(c.ok?String(c.result||`mode:${h}`):String(c.error||"failed")),e.onRefresh()}catch(c){r(c.message)}finally{n(null)}}};return(()=>{var h=oi(),c=h.firstChild,k=c.firstChild,A=k.nextSibling,D=c.nextSibling,U=D.firstChild,Q=U.firstChild,M=Q.nextSibling,L=U.nextSibling,S=L.firstChild,C=S.nextSibling,Y=L.nextSibling,g=Y.firstChild,P=g.nextSibling,Z=Y.nextSibling,j=Z.firstChild,_=j.nextSibling,w=D.nextSibling,x=w.firstChild,W=x.nextSibling,N=w.nextSibling,ee=N.firstChild,_e=ee.nextSibling,oe=_e.firstChild,ke=oe.nextSibling,Ae=_e.nextSibling,b=N.nextSibling,$=b.firstChild,O=$.nextSibling,R=O.firstChild,J=R.nextSibling,se=O.nextSibling,G=se.nextSibling,pe=G.firstChild,ue=pe.nextSibling;ue.nextSibling;var te=b.nextSibling,xe=te.firstChild,ye=xe.nextSibling,ge=ye.firstChild,Ie=ge.firstChild,Te=Ie.nextSibling,ve=ge.nextSibling,Ne=ve.firstChild,v=Ne.nextSibling,V=ve.nextSibling,ne=V.firstChild,$e=ne.nextSibling,X=V.nextSibling,F=X.firstChild,qe=F.nextSibling,Ue=ye.nextSibling,Le=Ue.firstChild,bt=Le.firstChild,gt=bt.nextSibling,tt=Le.nextSibling,vt=tt.firstChild,Je=vt.nextSibling,Me=tt.nextSibling,Ke=Me.firstChild,nt=Ke.nextSibling,$t=Me.nextSibling,p=$t.firstChild,T=p.nextSibling;return a(A,()=>f()?"LIVE":"DEGRADED"),a(M,o),a(C,()=>f()?"valid":"invalid"),a(P,()=>f()?"live":"degraded"),a(_,()=>{var m;return((m=e.status)==null?void 0:m.thinking)||"brief"}),a(W,I(Pe,{each:ui,children:m=>(()=>{var y=ai(),K=y.firstChild,fe=K.nextSibling;return y.$$click=()=>void d(m.id),a(K,()=>m.name),a(fe,()=>m.pipeline.join(" → ")),re(ie=>{var Ze;var he=`mode-card-btn ${((Ze=e.status)==null?void 0:Ze.optimization_mode)===m.id?"active":""}`,Se=t()===`mode:${m.id}`||m.id==="raw",De=m.desc;return he!==ie.e&&be(y,ie.e=he),Se!==ie.t&&(y.disabled=ie.t=Se),De!==ie.a&&et(y,"title",ie.a=De),ie},{e:void 0,t:void 0,a:void 0}),y})()})),a(oe,()=>{var m;return((m=e.currentProject)==null?void 0:m.name)||"No project selected"}),a(ke,()=>{var m;return(m=e.status)!=null&&m.flow_enforcer?"ON":"OFF"}),a(Ae,I(Pe,{get each(){return l()},get fallback(){return ci()},children:(m,y)=>(()=>{var K=di(),fe=K.firstChild,ie=fe.nextSibling,he=ie.firstChild,Se=he.nextSibling,De=Se.firstChild;return a(fe,()=>y()+1),a(he,()=>m.label),a(Se,()=>m.tool,De),a(Se,()=>m.reason,null),K})()})),R.$$click=()=>{n("plan"),e.onCreatePlan(),e.onRefresh(),n(null)},J.$$click=()=>{n("tdd"),e.onStartTdd(),e.onRefresh(),n(null)},a(G,()=>{var m,y;return(y=(m=e.capabilities)==null?void 0:m.web_search)!=null&&y.enabled?"on":"off"},ue),a(G,()=>{var m,y;return(y=(m=e.capabilities)==null?void 0:m.tdd)!=null&&y.enabled?"on":"off"},null),a(Te,()=>{var m;return((m=e.status)==null?void 0:m.active_slot)||"brain"}),a(v,()=>{var m;return(((m=e.status)==null?void 0:m.current_model)||"unknown").split("/").pop()}),a($e,()=>{var m;return fi((m=e.savings)==null?void 0:m.savings_rate_per_hour)}),a(qe,()=>{var m,y,K;return((y=(m=e.status)==null?void 0:m.todos)==null?void 0:y.pending)??((K=e.home)==null?void 0:K.totals.pending_todos)??0}),a(gt,()=>{var m;return((m=e.session)==null?void 0:m.title)||"none"}),a(Je,()=>{var m;return(m=e.status)!=null&&m.backend_connected?"online":"degraded"}),a(nt,()=>{var m;return(m=e.status)!=null&&m.model_locked?"locked":"open"}),a(T,()=>{var m;return(m=e.status)!=null&&m.flow_enforcer?"on":"off"}),a(h,I(we,{get when(){return s()},get children(){var m=li(),y=m.firstChild,K=y.nextSibling;return a(y,()=>s()),K.$$click=()=>r(null),m}}),null),re(m=>{var he;var y=`badge ${f()?"on":"off"}`,K=`badge ${(he=e.status)!=null&&he.flow_enforcer?"on":"off"}`,fe=!e.session||t()==="plan",ie=!e.session||t()==="tdd";return y!==m.e&&be(A,m.e=y),K!==m.t&&be(ke,m.t=K),fe!==m.a&&(R.disabled=m.a=fe),ie!==m.o&&(J.disabled=m.o=ie),m},{e:void 0,t:void 0,a:void 0,o:void 0}),h})()}Ye(["click"]);var _i=E('<div class="shell shell-4col"><main class=workspace><header class="header workspace-header"><div class=header-title><div><h1></h1><div class=header-subtitle></div></div><span class=version></span></div><div class=header-indicators><span></span><span></span><span></span><span></span></div></header><section class=workspace-grid><div class="workspace-column workspace-column-sessions"></div><div class="workspace-column workspace-column-chat"></div><div class="workspace-column workspace-column-controls">');function pi(){const[e,t]=z(null),[n,s]=z(null),[r,i]=z(null),[o,l]=z(null),[f,d]=z(!1),[h,c]=z({kind:bs}),[k,A]=z([]),[D,U]=z({}),[Q,M]=z(!1),[L,S]=z(null),C=()=>tn().then(b=>{t(b),d(!0)}).catch(()=>d(!1)),Y=()=>nn().then(b=>{s(b),d(!0)}).catch(()=>d(!1)),g=()=>sn().then(i).catch(()=>{}),P=()=>rn().then(l).catch(()=>{}),Z=()=>cn().then(b=>A(b.projects)).catch(()=>{}),j=()=>fn().then(b=>{var O;const $={};for(const R of b.sessions)($[O=R.project_id]||($[O]=[])).push(R);U($)}).catch(()=>{}),_=an(b=>{t(b.status),s(b.savings),d(!0)});C(),Y(),g(),Z(),j(),P(),At(_);const w=()=>M(!0),x=async b=>{M(!1);const $=await dn(b);await Z(),await P(),c({kind:"project",projectId:$.project.id})},W=()=>M(!1),N=async b=>{confirm("Delete this project and all its sessions?")&&(await un(b),await Z(),await j(),await P(),h().projectId===b&&c({kind:"home"}))},ee=()=>{var R,J,se,G,pe,ue;const b=h();if(b.kind==="project"||b.kind==="session")return k().find(te=>te.id===b.projectId)||null;const $=((J=(R=o())==null?void 0:R.current_session)==null?void 0:J.project_fingerprint)||((se=e())==null?void 0:se.current_project_fingerprint)||"",O=((pe=(G=o())==null?void 0:G.current_session)==null?void 0:pe.project_name)||((ue=e())==null?void 0:ue.current_project_name)||"";return k().find(te=>te.fingerprint&&te.fingerprint===$)||k().find(te=>te.name===O)||null},_e=()=>{const b=ee();return b?D()[b.id]||[]:[]},oe=()=>{var J,se;const b=h();if(b.kind==="session")return(D()[b.projectId]||[]).find(G=>G.id===b.sessionId)||null;const $=((se=(J=o())==null?void 0:J.current_session)==null?void 0:se.session_id)||"";if(!$)return null;const O=ee();if(!O)return null;const R=(D()[O.id]||[]).find(G=>G.id===$)||null;return R&&R.project_id===O.id?R:null},ke=()=>{const b=e();if(!b)return{label:"API OFF",tone:"disconnected",title:"backend status unavailable"};const $=b.backend_connected??b.backendConnected,O=b.backend_api_url||b.backend_health_url||"unknown target",R=b.backend_health_checked_at?new Date(b.backend_health_checked_at).toLocaleTimeString():null;if($){const se=typeof b.backend_health_age_ms=="number"?` ${Math.max(0,Math.round(b.backend_health_age_ms/1e3))}s`:"",G=typeof b.backend_health_latency_ms=="number"?` ${b.backend_health_latency_ms}ms`:"";return{label:`⚡ BACKEND${se}`,tone:"connected",title:`${O}${G}${R?` · checked ${R}`:""}`}}const J=b.backend_health_error||(typeof b.backend_health_status=="number"?`HTTP ${b.backend_health_status}`:"unreachable");return{label:"API OFF",tone:"disconnected",title:`${O} · ${J}${R?` · checked ${R}`:""}`}},Ae=b=>{const $=oe();$&&S({sessionId:$.id,prompt:b})};return(()=>{var b=_i(),$=b.firstChild,O=$.firstChild,R=O.firstChild,J=R.firstChild,se=J.firstChild,G=se.nextSibling,pe=J.nextSibling,ue=R.nextSibling,te=ue.firstChild,xe=te.nextSibling,ye=xe.nextSibling,ge=ye.nextSibling,Ie=O.nextSibling,Te=Ie.firstChild,ve=Te.nextSibling,Ne=ve.nextSibling;return a(b,I(Cs,{get home(){return o()},get status(){return e()},get projects(){return k()},get selection(){return h()},get currentProjectName(){var v,V,ne,$e;return((v=ee())==null?void 0:v.name)||((ne=(V=o())==null?void 0:V.current_session)==null?void 0:ne.project_name)||(($e=e())==null?void 0:$e.current_project_name)||null},get creatingProject(){return Q()},onSelect:c,onNewProject:w,onCreateProjectName:x,onCancelCreate:W,onDeleteProject:N}),$),a(se,()=>{var v,V,ne;return((v=ee())==null?void 0:v.name)||((ne=(V=o())==null?void 0:V.current_session)==null?void 0:ne.project_name)||"Home"}),a(G,()=>{var v,V,ne;return((v=oe())==null?void 0:v.title)||((ne=(V=o())==null?void 0:V.home)==null?void 0:ne.subtitle)||"OpenCode-style operational dashboard"}),a(pe,()=>{var v;return((v=e())==null?void 0:v.version)??"..."}),a(te,()=>f()?"LIVE":"connecting"),a(xe,()=>ke().label),a(ye,()=>{var v,V;return((v=e())==null?void 0:v.backend_connected)??((V=e())==null?void 0:V.backendConnected)?"API LIVE":"API DEGRADED"}),a(ge,()=>{var v;return((v=e())==null?void 0:v.enabled)===!1?"OFF":"ON"}),a(Te,I(ri,{get project(){return ee()},get sessions(){return _e()},get selectedSessionId(){var v;return((v=oe())==null?void 0:v.id)||null},get currentSessionId(){var v,V;return((V=(v=o())==null?void 0:v.current_session)==null?void 0:V.session_id)||null},onSelectSession:v=>c({kind:"session",projectId:v.project_id,sessionId:v.id})})),a(ve,I(Qs,{get session(){return oe()},get project(){return ee()},get status(){return e()},get capabilities(){return r()},get savings(){return n()},get runRequest(){return L()},onRunRequestHandled:()=>S(null),onRefresh:()=>{C(),Y(),P(),j()}})),a(Ne,I(mi,{get status(){return e()},get capabilities(){return r()},get home(){return o()},get savings(){return n()},get session(){return oe()},get currentProject(){return ee()},onRefresh:()=>{C(),Y(),P()},onCreatePlan:()=>Ae("Create a concise structured plan for this session. Show the plan before execution, keep it deterministic, and include TDD steps if they are required."),onStartTdd:()=>Ae("Start TDD for this session. Produce failing tests first, then implement the minimum fix, then verify the result.")})),re(v=>{var qe,Ue,Le;var V=`indicator ${f()?"connected":"disconnected"}`,ne=`indicator flash ${ke().tone}`,$e=ke().title,X=`indicator ${((qe=e())==null?void 0:qe.backend_connected)??((Ue=e())==null?void 0:Ue.backendConnected)?"connected":"disconnected"}`,F=`indicator ${((Le=e())==null?void 0:Le.enabled)===!1?"disabled":"connected"}`;return V!==v.e&&be(te,v.e=V),ne!==v.t&&be(xe,v.t=ne),$e!==v.a&&et(xe,"title",v.a=$e),X!==v.o&&be(ye,v.o=X),F!==v.i&&be(ge,v.i=F),v},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),b})()}const Ft=document.getElementById("app");Ft&&Dn(()=>I(pi,{}),Ft);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#050505;--surface:#0c0c0c;--border:#1a1a1a;--border-hover:#2a2a2a;--text:#d4d4d4;--text-dim:#6a6a6a;--text-bright:#f0f0f0;--green:#3fb950;--red:#f85149;--yellow:#d29922;--accent:#58a6ff;--accent-dim:rgba(88,166,255,.08);--mono:"JetBrains Mono","Fira Code","Cascadia Code","SF Mono",Menlo,monospace;--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif}html{font-size:13px;background:var(--bg)}body{font-family:var(--sans);background:var(--bg);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased;line-height:1.45}.app{max-width:1100px;margin:0 auto;padding:1.25rem 1.5rem}.header{display:flex;justify-content:space-between;align-items:center;padding-bottom:.5rem;margin-bottom:.75rem;border-bottom:1px solid var(--border)}.header-title{display:flex;align-items:baseline;gap:.5rem}.header-title h1{font-family:var(--sans);font-size:1.08rem;font-weight:700;color:var(--text-bright);letter-spacing:-.2px}.header-title h1:before{content:"";color:var(--red)}.header-subtitle{font-size:.72rem;color:var(--text-dim);font-family:var(--mono);margin-top:.15rem}.version{font-size:.7rem;color:var(--text-dim);font-family:var(--mono)}.header-indicators{display:flex;gap:.5rem;align-items:center}.indicator{font-family:var(--mono);font-size:.65rem;padding:1px 6px;text-transform:uppercase;font-weight:600;letter-spacing:.5px}.indicator.connected{color:var(--green)}.indicator.disconnected{color:var(--yellow)}.indicator.disabled{color:var(--red)}.indicator:before{content:"● ";font-size:.5rem}.indicator.flash:before{content:"⚡ ";font-size:.7rem}.nav-tabs{display:flex;gap:0;margin-bottom:1rem;border-bottom:1px solid var(--border)}.tab{font-family:var(--mono);background:transparent;border:none;color:var(--text-dim);padding:.4rem .75rem;cursor:pointer;font-size:.78rem;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s,border-color .15s;text-transform:uppercase;letter-spacing:.5px}.tab:hover{color:var(--text);border-bottom-color:var(--border-hover)}.tab.active{color:var(--text-bright);border-bottom-color:var(--green);font-weight:600}.content{display:flex;flex-direction:column;gap:.75rem}.grid-2col{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.card,.card-full{background:var(--surface);border:1px solid var(--border);padding:.75rem .85rem}.card-full{grid-column:1/-1}.card h3,.card-full h3{font-family:var(--sans);font-size:.78rem;font-weight:700;margin-bottom:.65rem;text-transform:uppercase;color:var(--text-dim);letter-spacing:1px}.card h3:before,.card-full h3:before{content:"── ";color:var(--border-hover)}.kv-table{width:100%;border-collapse:collapse;font-family:var(--mono)}.kv-table td{padding:.25rem 0;font-size:.78rem}.kv-table td:first-child{color:var(--text-dim);width:38%;white-space:nowrap}.kv-table td:last-child{color:var(--text);overflow-wrap:anywhere}.badge{display:inline-block;font-family:var(--mono);font-size:.65rem;padding:1px 5px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;line-height:1.4}.badge.slot{color:var(--green)}.badge.slot:before{content:"["}.badge.slot:after{content:"]"}.badge.on{color:var(--green)}.badge.on:before{content:"["}.badge.on:after{content:"]"}.badge.off{color:var(--red)}.badge.off:before{content:"["}.badge.off:after{content:"]"}code{font-family:var(--mono);font-size:.75rem;color:var(--text-bright)}pre{font-family:var(--mono);font-size:.72rem}.credit-bar{display:inline-block;width:55px;height:6px;background:var(--border);overflow:hidden;vertical-align:middle;border:1px solid var(--border-hover)}.credit-fill{height:100%;background:var(--green);transition:width .4s ease}.credit-label{margin-left:.4rem;font-size:.7rem;font-family:var(--mono);color:var(--text-dim)}.trend{font-size:.85rem;font-family:var(--mono)}.trend-up{color:var(--green)}.trend-down{color:var(--red)}.trend-flat{color:var(--text-dim)}.bar-chart{display:flex;flex-direction:column;gap:.3rem;margin-top:.5rem}.bar-row{display:flex;align-items:center;gap:.5rem}.bar-label{width:75px;font-size:.7rem;color:var(--text-dim);text-align:right;font-family:var(--mono)}.bar-track{flex:1;height:5px;background:var(--border);overflow:hidden}.bar-fill{height:100%;background:var(--accent);transition:width .4s ease}.bar-value{width:55px;font-size:.7rem;text-align:right;font-family:var(--mono);color:var(--text-dim)}.data-table{width:100%;border-collapse:collapse;font-size:.72rem;font-family:var(--mono)}.data-table th,.data-table td{padding:.3rem .4rem;text-align:left}.data-table th{color:var(--text-dim);font-weight:600;text-transform:uppercase;letter-spacing:.5px;font-size:.65rem;border-bottom:1px solid var(--border)}.data-table td{border-bottom:1px solid var(--border);color:var(--text)}.data-table tr:hover td{background:var(--accent-dim)}.data-table td:first-child{color:var(--text-bright)}.stress-bars{display:flex;gap:2px;align-items:flex-end;min-height:28px;padding:.3rem 0}.stress-bar{font-size:1.4rem;line-height:1;font-family:var(--mono)}.muted{color:var(--text-dim);font-size:.78rem;font-family:var(--mono)}.error{color:var(--red);font-size:.75rem;font-family:var(--mono)}.sep{color:var(--text-dim);margin:.5rem 0;font-family:var(--mono);font-size:.65rem;letter-spacing:2px}.control-group{margin-bottom:.65rem}.control-group h4{font-family:var(--mono);font-size:.65rem;color:var(--text-dim);margin-bottom:.3rem;text-transform:uppercase;letter-spacing:1px;border-bottom:1px solid var(--border);padding-bottom:.15rem}.bracket-row{display:flex;gap:.6rem;flex-wrap:wrap}.bracket-btn{font-family:var(--mono);font-size:.75rem;background:transparent;border:none;color:var(--text-dim);cursor:pointer;padding:.15rem 0;transition:color .15s;letter-spacing:.3px}.bracket-btn:before{content:"["}.bracket-btn:after{content:"]"}.bracket-btn:hover{color:var(--text)}.bracket-btn.on{color:var(--green);font-weight:600}.bracket-btn.off{color:var(--red)}.bracket-btn:disabled{opacity:.3;cursor:default}.result-box{margin-top:.6rem;padding:.5rem .6rem;border:1px solid var(--border);border-left:2px solid var(--accent);font-family:var(--mono);font-size:.7rem;color:var(--text-dim);display:flex;justify-content:space-between;align-items:center}.result-box code{font-size:.7rem;color:var(--text-dim);max-width:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dismiss-btn{background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:.85rem;padding:0 .2rem;font-family:var(--mono)}.dismiss-btn:hover{color:var(--text)}.reports-layout{display:grid;grid-template-columns:1fr 2fr;gap:.75rem;min-height:280px}.report-list{display:flex;flex-direction:column;gap:0}.report-item{padding:.4rem .5rem;cursor:pointer;border-left:2px solid transparent;transition:border-color .15s,background .15s}.report-item:hover{border-color:var(--border-hover)}.report-item.active{border-color:var(--green);background:var(--accent-dim)}.report-summary{font-family:var(--mono);font-size:.78rem;color:var(--text);margin-bottom:.2rem}.report-meta{display:flex;gap:.5rem;font-size:.65rem;color:var(--text-dim);font-family:var(--mono)}.report-type{text-transform:uppercase;letter-spacing:.5px}.report-viewer{background:var(--bg);border:1px solid var(--border);padding:.6rem .7rem;overflow:auto;min-height:200px}.report-content{font-family:var(--mono);font-size:.72rem;color:var(--text);white-space:pre-wrap;word-break:break-all}.search-hero{display:flex;justify-content:space-between;gap:.75rem;align-items:flex-start;border:1px solid var(--border);background:linear-gradient(180deg,#58a6ff14,#ffffff03);padding:.7rem .8rem;margin-bottom:.75rem}.search-hero-kicker{font-family:var(--mono);font-size:.62rem;text-transform:uppercase;color:var(--text-dim);letter-spacing:1px;margin-bottom:.2rem}.search-hero-title{font-family:var(--mono);font-size:.92rem;font-weight:700;color:var(--text-bright);margin-bottom:.25rem}.search-hero-copy{font-family:var(--mono);font-size:.72rem;line-height:1.45;color:var(--text-dim);max-width:62ch}.search-hero-meta{display:flex;gap:.35rem;flex-wrap:wrap;justify-content:flex-end}.search-stats{display:flex;gap:.35rem;flex-wrap:wrap;margin-top:.45rem}.search-answer-text{font-family:var(--mono);font-size:.72rem;line-height:1.5;color:var(--text);white-space:pre-wrap;word-break:break-word;margin:0}.search-output{display:grid;grid-template-columns:1.1fr 1.2fr;gap:.75rem;margin-top:.75rem}.search-answer,.search-results,.search-citations{background:var(--bg);border:1px solid var(--border);padding:.55rem .6rem}.search-answer h4,.search-results h4,.search-citations h4{font-family:var(--mono);font-size:.65rem;color:var(--text-dim);margin-bottom:.35rem;text-transform:uppercase;letter-spacing:1px}.search-list{display:flex;flex-direction:column;gap:.4rem}.search-item{display:block;color:inherit;text-decoration:none;border:1px solid var(--border);padding:.45rem .5rem;background:#ffffff03}.search-item:hover{border-color:var(--accent);background:var(--accent-dim)}.search-item-title{font-family:var(--mono);font-size:.74rem;color:var(--text-bright);margin-bottom:.1rem;display:flex;gap:.35rem;align-items:flex-start}.search-rank{color:var(--accent);font-weight:700}.search-item-meta,.search-item-snippet{font-family:var(--mono);font-size:.68rem;color:var(--text-dim)}.search-item-snippet{margin-top:.2rem;line-height:1.4}.citation-row{display:flex;gap:.35rem;flex-wrap:wrap;margin-bottom:.35rem}.citation-pill{display:inline-block;text-decoration:none;padding:.2rem .4rem;border:1px solid var(--border);color:var(--text);font-family:var(--mono);font-size:.65rem}.citation-pill:hover{border-color:var(--accent);color:var(--text-bright)}.blackbox-status{font-family:var(--mono);margin-top:.8rem}.blackbox-status td{font-size:.75rem}.field-label{display:block;margin:.35rem 0 .2rem;color:var(--text-dim);font-size:.65rem;text-transform:uppercase;letter-spacing:1px;font-family:var(--mono)}.text-input,.text-area{width:100%;background:var(--bg);color:var(--text-bright);border:1px solid var(--border);font-family:var(--mono);font-size:.75rem;padding:.45rem .5rem;margin-bottom:.35rem;outline:none}.text-input:focus,.text-area:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-dim)}.text-area{resize:vertical;min-height:72px}@media(max-width:900px){.grid-2col,.reports-layout,.search-output{grid-template-columns:1fr}.header{flex-direction:column;align-items:flex-start;gap:.5rem}.search-hero{flex-direction:column}.search-hero-meta{justify-content:flex-start}}.section-divider{border:none;border-top:1px solid var(--border);margin:.4rem 0;opacity:.6}.status-dot{color:var(--green);font-family:var(--mono)}.status-dot.off{color:var(--red)}.shell{display:flex;min-height:100vh;max-width:1400px;margin:0 auto}.shell .main{flex:1;min-width:0;padding:1rem 1.25rem;display:flex;flex-direction:column}.shell .main .header{margin-bottom:.5rem}.sidebar{width:230px;flex-shrink:0;border-right:1px solid var(--border);background:var(--surface);padding:.75rem .5rem;display:flex;flex-direction:column;gap:2px;font-size:.78rem}.sidebar-brand{display:flex;align-items:center;gap:.6rem;padding:.25rem .4rem .8rem;border-bottom:1px solid var(--border);margin-bottom:.4rem}.sidebar-brand-mark{color:var(--red);font-size:1.05rem;font-weight:700}.sidebar-home-icon{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#ff9d3d38,#ff9d3d14);border:1px solid rgba(255,157,61,.28);border-radius:8px;color:#ffb36b;box-shadow:inset 0 0 0 1px #ffffff08}.sidebar-brand-title{font-size:.84rem;color:var(--text-bright);text-transform:lowercase}.sidebar-brand-subtitle{font-size:.64rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.8px}.sidebar-column-label{display:flex;align-items:flex-start;gap:.55rem;border:1px solid var(--border);background:linear-gradient(180deg,#ffffff08,#58a6ff0d);padding:.6rem .65rem;margin:.45rem 0 .65rem}.sidebar-column-num,.column-badge{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border-hover);border-radius:999px;background:var(--surface);color:var(--text-bright);font-size:.72rem;font-weight:700;flex-shrink:0}.sidebar-column-title{font-size:.86rem;color:var(--text-bright);font-weight:700}.sidebar-column-copy{font-size:.67rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.55px;margin-top:.15rem}.sidebar-section-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;font-size:.6rem;padding:.35rem .4rem .2rem}.sidebar-section-head{display:flex;align-items:center;justify-content:space-between;margin-top:.4rem}.sidebar-item{display:block;width:100%;text-align:left;background:transparent;border:none;cursor:pointer;color:var(--text);font-family:var(--sans);font-size:.78rem;padding:.34rem .45rem;border-radius:4px}.sidebar-item:hover{background:var(--bg)}.sidebar-item.active{background:var(--accent-dim);color:var(--text-bright);border-left:2px solid var(--green)}.sidebar-item.pinned{font-weight:600}.sidebar-home-button{display:flex;align-items:center;gap:.55rem;width:100%;margin:.1rem 0 .3rem;padding:.55rem;background:linear-gradient(180deg,#ff9d3d1a,#ffffff05);border:1px solid rgba(255,157,61,.22);border-radius:8px}.sidebar-home-button:hover{background:linear-gradient(180deg,#ff9d3d24,#ffffff08)}.sidebar-home-button.active{background:linear-gradient(180deg,#ff9d3d2e,#58a6ff0a);border-color:#ff9d3d61;border-left:2px solid rgba(255,157,61,.8)}.sidebar-home-button-icon{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;background:#ffffff0f;color:#ffb36b;font-size:.9rem;flex-shrink:0}.sidebar-home-button-copy{display:flex;flex-direction:column;align-items:flex-start;line-height:1.15}.sidebar-home-button-title{color:var(--text-bright);font-size:.8rem}.sidebar-home-button-subtitle{color:var(--text-dim);font-size:.62rem;text-transform:uppercase;letter-spacing:.6px;margin-top:.1rem}.sidebar-item.session{font-size:.74rem;color:var(--text-dim)}.sidebar-item.session.active{color:var(--text-bright)}.sidebar-icon{color:var(--green);margin-right:2px}.sidebar-caret{color:var(--text-dim);display:inline-block;width:.8rem}.sidebar-project-row{display:flex;align-items:center}.sidebar-project-icon{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:4px;color:var(--text-bright);font-size:.7rem;background:var(--bg);margin-right:.3rem;flex-shrink:0}.sidebar-sessions{margin-left:.85rem;border-left:1px solid var(--border);padding-left:.2rem}.sidebar-add{background:transparent;border:1px solid var(--border);color:var(--text-dim);cursor:pointer;border-radius:3px;width:18px;height:18px;line-height:1;font-size:.85rem;flex-shrink:0}.sidebar-add:hover{color:var(--green);border-color:var(--border-hover)}.sidebar-empty{color:var(--text-dim);font-size:.68rem;padding:.2rem .5rem;font-style:italic}.sidebar-empty.sub{padding-left:.6rem}.sidebar-context-card{border:1px solid var(--border);background:var(--bg);padding:.45rem .5rem;margin:.5rem 0 .35rem;display:flex;flex-direction:column;gap:.2rem}.sidebar-context-main{font-size:.74rem;color:var(--text-bright);line-height:1.4;word-break:break-word}.sidebar-inline-link{background:transparent;border:none;color:var(--accent);cursor:pointer;text-align:left;font-family:var(--mono);font-size:.69rem;padding:0}.sidebar-inline-link:hover{text-decoration:underline}.session-pane,.project-view{display:flex;flex-direction:column;gap:.6rem;height:100%}.session-head,.project-head{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:1px solid var(--border);padding-bottom:.5rem}.session-title{font-size:1rem;color:var(--text-bright);font-family:var(--mono)}.session-flow{display:flex;flex-direction:column;gap:2px;align-items:flex-end}.session-flow select,.flow-mini,.project-head select{background:var(--bg);border:1px solid var(--border);color:var(--text);font-family:var(--mono);font-size:.72rem;padding:2px 4px;border-radius:3px}.session-body{display:flex;flex-direction:column;gap:.5rem;flex:1;min-height:0}.thread{display:flex;flex-direction:column;gap:.5rem;overflow-y:auto;flex:1;padding-right:.25rem}.msg{border:1px solid rgba(255,255,255,.08);border-radius:4px;padding:.55rem .6rem;background:#ffffff05}.msg.user{border-left:2px solid var(--accent)}.msg.assistant{border-left:2px solid var(--green)}.msg.live{border-left-color:var(--yellow)}.msg-role{font-size:.6rem;text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim);margin-bottom:.25rem}.msg-content{color:var(--text);white-space:pre-wrap;font-size:.8rem;line-height:1.55}.msg-content.mono{font-family:var(--mono);color:var(--text-dim);font-size:.72rem}.run-trace{display:flex;flex-direction:column;gap:2px;margin-top:.4rem}.run-step{display:flex;gap:.4rem;align-items:baseline;font-size:.72rem;padding:2px 4px;border-radius:3px;background:var(--bg)}.run-step.skipped{opacity:.5}.run-step-tool{color:var(--green);font-weight:600}.run-step.skipped .run-step-tool{color:var(--yellow)}.run-step-label{color:var(--text)}.run-step-skip{color:var(--yellow);font-style:italic}.run-step-result{color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.run-spinner{color:var(--yellow);font-size:.72rem;margin-top:.3rem}.composer{border-top:1px solid var(--border);padding-top:.5rem;display:flex;flex-direction:column;gap:.4rem}.composer .text-area{min-height:64px}.composer-extra{font-size:.7rem;color:var(--text-dim)}.composer-extra summary{cursor:pointer;padding:.2rem 0}.composer-extra .text-area{min-height:48px;margin-top:.3rem}.composer-actions{display:flex;justify-content:space-between;align-items:center}.flow-save{background:var(--green);color:var(--bg);border:none;border-radius:3px;cursor:pointer;font-family:var(--mono);font-size:.74rem;font-weight:600;padding:.35rem .9rem}.flow-save:disabled{opacity:.4;cursor:not-allowed}.session-workspace{display:flex;flex-direction:column;gap:.85rem}.session-hero{display:flex;justify-content:space-between;gap:1rem;align-items:flex-end;border:1px solid var(--border);background:linear-gradient(180deg,#ffffff05,#58a6ff14);padding:.95rem 1rem}.session-hero-meta{display:flex;gap:.55rem;flex-wrap:wrap;font-size:.68rem;color:var(--text-dim);margin-top:.35rem}.session-hero-kpis{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr));gap:.55rem;min-width:420px}.session-kpi,.session-mini-kpi,.home-op-tile{border:1px solid rgba(255,255,255,.08);background:#ffffff05;padding:.55rem .6rem;display:flex;flex-direction:column;gap:.25rem}.session-kpi strong,.session-mini-kpi strong,.home-op-value{font-size:.82rem;color:var(--text-bright)}.session-grid-4{display:grid;grid-template-columns:.9fr 1.3fr 1fr 1fr;gap:.75rem;align-items:start}.session-column{display:flex;flex-direction:column;gap:.7rem;min-height:640px}.session-thread-column{min-width:0}.session-thread{display:flex;flex-direction:column;gap:.75rem;min-height:360px;max-height:640px;overflow-y:auto}.session-state-stack,.session-timeline,.session-notes-list,.session-plan-list{display:flex;flex-direction:column;gap:.45rem}.session-state-row,.policy-row,.session-plan-item{display:flex;justify-content:space-between;gap:.75rem;padding:.5rem .55rem;background:#ffffff05;border:1px solid rgba(255,255,255,.08)}.session-state-row span,.policy-row span{color:var(--text-dim);text-transform:uppercase;font-size:.64rem;letter-spacing:.8px}.session-state-row strong,.policy-row strong{font-size:.76rem;color:var(--text-bright);text-align:right}.session-chip-row{display:flex;gap:.35rem;flex-wrap:wrap}.session-chip{border:1px solid var(--border);background:var(--bg);color:var(--text-dim);padding:.18rem .4rem;font-size:.66rem;text-transform:uppercase;letter-spacing:.6px}.session-state-block{display:flex;flex-direction:column;gap:.35rem}.session-copy{font-size:.76rem;line-height:1.55;color:var(--text)}.session-note-item{background:#ffffff05;border:1px solid rgba(255,255,255,.08);padding:.45rem .5rem;font-size:.74rem;line-height:1.45;color:var(--text)}.session-kpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.session-plan-box,.policy-box,.session-search-box{border:1px solid var(--border);background:var(--bg);padding:.55rem .6rem}.session-search-results{display:flex;flex-direction:column;gap:.4rem;margin-top:.45rem}.session-plan-head{display:flex;justify-content:space-between;gap:.5rem;margin-bottom:.35rem;font-size:.74rem;color:var(--text-bright)}.mode-control-grid{display:grid;grid-template-columns:1fr 1fr;gap:.45rem}.mode-card-btn{display:flex;flex-direction:column;gap:.2rem;align-items:flex-start;text-align:left;border:1px solid var(--border);background:var(--bg);color:var(--text);padding:.55rem .6rem;cursor:pointer;font-family:var(--mono);font-size:.72rem}.mode-card-btn strong{color:var(--text-bright);font-size:.75rem}.mode-card-btn span{color:var(--text-dim);font-size:.66rem}.mode-card-btn:hover{border-color:var(--border-hover)}.mode-card-btn.active{border-color:var(--green);box-shadow:inset 0 0 0 1px #3fb95026}.mode-card-btn:disabled{opacity:.45;cursor:not-allowed}.session-action-grid{display:flex;gap:.45rem;flex-wrap:wrap}.session-plan-item{justify-content:flex-start;align-items:flex-start}.session-plan-item>span{min-width:22px;height:22px;border:1px solid var(--border);display:inline-flex;align-items:center;justify-content:center;color:var(--green);font-size:.7rem;background:var(--surface)}.home-ops-strip{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.6rem}.home-mode-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}.home-mode-card{display:flex;flex-direction:column;gap:.45rem;min-height:150px}.home-mode-card.active{border-color:var(--green);box-shadow:inset 0 0 0 1px #3fb95026}.home-mode-head{display:flex;justify-content:space-between;gap:.5rem;align-items:flex-start}.home-mode-name{font-size:.8rem;color:var(--text-bright)}.home-mode-pipeline{font-size:.66rem;color:var(--text-dim)}.home-mode-copy{font-size:.72rem;color:var(--text);line-height:1.5;flex:1}.home-mode-meta{display:flex;gap:.45rem;flex-wrap:wrap;font-size:.64rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.6px}.flow-editor{display:flex;flex-direction:column;gap:.5rem}.flow-toolbar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.flow-palette{display:flex;gap:3px;flex-wrap:wrap;flex:1}.flow-chip,.flow-pill-name{background:var(--bg);border:1px solid var(--border);color:var(--text);cursor:pointer;font-family:var(--mono);font-size:.68rem;padding:2px 6px;border-radius:3px}.flow-chip:hover{border-color:var(--green);color:var(--green)}.flow-hint{font-size:.72rem;color:var(--yellow)}.linkish,.flow-mini.link{background:transparent;border:none;color:var(--accent);cursor:pointer;font-family:var(--mono);font-size:.68rem;padding:0;text-decoration:underline}.flow-canvas{position:relative;min-height:340px;border:1px solid var(--border);border-radius:4px;background:var(--bg) repeating-linear-gradient(0deg,transparent,transparent 23px,var(--border) 24px),var(--bg) repeating-linear-gradient(90deg,transparent,transparent 23px,var(--border) 24px);background-blend-mode:normal;overflow:hidden;touch-action:none}.flow-edges{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.flow-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--text-dim);font-size:.75rem}.flow-node{position:absolute;background:var(--surface);border:1px solid var(--border-hover);border-radius:4px;font-size:.7rem;-webkit-user-select:none;user-select:none;box-shadow:0 1px 4px #0006}.flow-node.linking{border-color:var(--accent)}.flow-node-head{display:flex;justify-content:space-between;align-items:center;padding:3px 6px;border-bottom:1px solid var(--border);cursor:grab;background:var(--bg)}.flow-node-tool{color:var(--green);font-weight:600}.flow-node.tool-condition .flow-node-tool{color:var(--accent)}.flow-node.tool-direct .flow-node-tool{color:var(--text-dim)}.flow-node-x{background:transparent;border:none;color:var(--text-dim);cursor:pointer;font-size:.8rem;line-height:1}.flow-node-x:hover{color:var(--red)}.flow-node-body{display:flex;flex-direction:column;gap:3px;padding:4px 6px}.flow-mini{width:100%}.flow-preview{display:flex;gap:.5rem;align-items:baseline;font-size:.75rem}.flow-preview code{color:var(--green)}.flow-list-bar{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.flow-pill{display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:3px;overflow:hidden}.flow-pill.active{border-color:var(--green)}.flow-pill-name{border:none;border-radius:0}.flow-pill-x{background:transparent;border:none;color:var(--text-dim);cursor:pointer;padding:2px 5px}.flow-pill-x:hover{color:var(--red)}.mono{font-family:var(--mono)}.home-view{display:flex;flex-direction:column;gap:.9rem}.home-hero{display:flex;justify-content:space-between;gap:1rem;align-items:flex-end;border:1px solid var(--border);background:linear-gradient(180deg,#ffffff05,#58a6ff14);padding:.95rem 1rem}.home-kicker{font-size:.64rem;text-transform:uppercase;letter-spacing:1px;color:var(--text-dim);margin-bottom:.25rem}.home-hero h2{font-size:1.2rem;color:var(--text-bright);margin-bottom:.2rem}.home-hero p{font-size:.76rem;color:var(--text-dim);max-width:64ch;line-height:1.5}.home-hero-actions{display:flex;gap:.45rem;align-items:center;flex-wrap:wrap}.shell-link{background:transparent;border:1px solid var(--border);color:var(--text);cursor:pointer;font-family:var(--mono);font-size:.72rem;padding:.35rem .7rem;border-radius:3px}.shell-link:hover{border-color:var(--green);color:var(--green)}.home-overview-grid,.home-detail-grid{display:grid;gap:.75rem}.home-overview-grid{grid-template-columns:1.1fr 1fr}.home-detail-grid{grid-template-columns:1.15fr .9fr;align-items:start}.home-summary-table{display:grid;grid-template-columns:1fr 1fr;gap:.35rem .9rem}.home-summary-row{display:flex;justify-content:space-between;gap:.5rem;padding:.3rem 0;border-bottom:1px solid var(--border)}.home-summary-label{color:var(--text-dim);font-size:.72rem;text-transform:uppercase;letter-spacing:.7px}.home-summary-value{color:var(--text-bright);font-size:.78rem}.home-recommendation{font-size:.84rem;line-height:1.55;color:var(--text-bright);margin-bottom:.85rem}.home-inline-grid{display:grid;grid-template-columns:1fr 1fr;gap:.65rem}.home-inline-value{font-size:.75rem;color:var(--text);line-height:1.4}.home-current-session,.home-sessions-card{grid-column:1}.home-todos-card,.home-savings-card{grid-column:2}.home-session-head{display:flex;justify-content:space-between;gap:.5rem;align-items:center;margin-bottom:.45rem}.home-session-title{font-size:.9rem;color:var(--text-bright)}.home-metric-strip{display:flex;gap:.6rem;flex-wrap:wrap;font-size:.68rem;color:var(--text-dim);margin:.4rem 0 .55rem}.home-tag-row{display:flex;gap:.35rem;flex-wrap:wrap;margin-top:.55rem}.home-tag{border:1px solid var(--border);padding:.15rem .35rem;font-size:.66rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.6px}.home-todo-list,.home-session-list{display:flex;flex-direction:column;gap:.45rem}.home-todo-item,.home-session-item{display:flex;justify-content:space-between;gap:.55rem;padding:.5rem .55rem;background:#ffffff05;border:1px solid rgba(255,255,255,.08)}.home-todo-status{color:var(--yellow);font-size:.65rem;min-width:54px}.home-totals{display:flex;justify-content:space-between;font-size:.7rem;color:var(--text-dim);margin-top:.55rem}.home-money{font-size:1.45rem;color:var(--text-bright);font-weight:700}.home-money-sub{font-size:.72rem;color:var(--text-dim);margin-top:.2rem}.home-session-item.current{border-left:2px solid var(--green)}.home-session-item-title{font-size:.78rem;color:var(--text-bright);margin-bottom:.15rem}.home-session-item-meta{display:flex;flex-direction:column;gap:.2rem;font-size:.66rem;color:var(--text-dim);text-align:right}@media(max-width:760px){.shell{flex-direction:column}.sidebar{width:100%;border-right:none;border-bottom:1px solid var(--border)}.home-overview-grid,.home-detail-grid,.home-inline-grid,.home-summary-table{grid-template-columns:1fr}.home-current-session,.home-sessions-card,.home-todos-card,.home-savings-card{grid-column:auto}.home-hero{flex-direction:column;align-items:flex-start}}@media(max-width:1280px){.session-grid-4{grid-template-columns:1fr 1fr}.session-column{min-height:auto}.home-mode-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.home-ops-strip{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:920px){.session-hero{flex-direction:column;align-items:flex-start}.session-hero-kpis{min-width:0;width:100%;grid-template-columns:1fr}.session-grid-4,.home-mode-grid,.home-ops-strip,.mode-control-grid,.session-kpi-grid{grid-template-columns:1fr}}.home-controls-strip{display:flex;gap:1.5rem;align-items:center;padding:.6rem .85rem;background:var(--surface);border:1px solid var(--border);margin-bottom:.75rem;flex-wrap:wrap}.qc-group{display:flex;align-items:center;gap:.4rem}.qc-slot{font-family:var(--mono);font-size:.72rem;padding:2px 8px;border:1px solid var(--border);background:transparent;color:var(--text-dim);cursor:pointer}.qc-slot.active{color:var(--green);border-color:var(--green)}.qc-slot:hover{border-color:var(--border-hover);color:var(--text)}.qc-model{font-family:var(--mono);font-size:.72rem;color:var(--text)}.qc-pill{font-family:var(--mono);font-size:.68rem;padding:1px 6px;font-weight:600;text-transform:uppercase}.qc-pill.on{color:var(--green)}.qc-pill.off{color:var(--text-dim)}.create-form{display:flex;gap:4px;align-items:center;padding:4px 8px}.create-input{flex:1;font-family:var(--mono);font-size:.72rem;background:var(--bg);border:1px solid var(--accent);color:var(--text);padding:2px 4px;outline:none}.create-ok{font-family:var(--mono);font-size:.68rem;color:var(--green);background:transparent;border:1px solid var(--green);padding:1px 5px;cursor:pointer}.create-ok:disabled{opacity:.4;cursor:default}.create-cancel{background:transparent;border:none;color:var(--text-dim);cursor:pointer;font-size:.85rem;line-height:1}.sidebar-delete{background:transparent;border:none;color:var(--text-dim);cursor:pointer;font-size:.7rem;padding:0 3px;line-height:1;opacity:.4}.sidebar-delete:hover{color:var(--red);opacity:1}.sidebar-session-row{display:flex;align-items:center}.sidebar-session-row .sidebar-item{flex:1}.thread{display:flex;flex-direction:column;gap:.75rem}.msg.user{align-self:flex-end;background:var(--accent-dim);border:1px solid rgba(88,166,255,.15);margin-left:20%}.msg.assistant{align-self:flex-start;background:var(--surface);border:1px solid var(--border);margin-right:20%}.run-trace-details{margin-top:.4rem}.run-trace-details summary{font-size:.68rem;color:var(--text-dim);cursor:pointer;padding:.2rem 0;list-style:none;-webkit-user-select:none;user-select:none}.run-trace-details summary::-webkit-details-marker{display:none}.run-trace-details summary:before{content:"+ "}.run-trace-details[open] summary:before{content:"- "}@keyframes vibe-pulse{0%,to{opacity:1}50%{opacity:.3}}.run-spinner{font-size:.75rem;color:var(--accent);font-family:var(--mono);animation:vibe-pulse 1.2s infinite}.shell.shell-4col{display:flex;min-height:100vh;max-width:1600px;margin:0 auto}.workspace{flex:1;min-width:0;padding:1rem 1.1rem 1rem .9rem;display:flex;flex-direction:column;gap:.75rem}.workspace-header{margin-bottom:0}.workspace-grid{display:grid;grid-template-columns:1.05fr 1fr 1.35fr 1.1fr;gap:1rem;align-items:start}.workspace-column{min-width:0;border:1px solid rgba(255,255,255,.06);background:linear-gradient(180deg,#ffffff08,#ffffff03);padding:.2rem}.panel{padding:.8rem .85rem}.panel-head{display:flex;justify-content:space-between;gap:.75rem;align-items:flex-start;margin-bottom:.65rem}.panel-head h3{margin-bottom:.05rem;font-family:var(--sans);font-size:.98rem;font-weight:700}.panel-head-copy{color:var(--text-dim);font-size:.7rem;line-height:1.45}.panel-action{white-space:nowrap;padding:.25rem .55rem}.sidebar-home-card{border:1px solid rgba(88,166,255,.16);background:linear-gradient(180deg,#ffffff08,#58a6ff12);padding:.6rem .65rem;margin:.45rem 0 .55rem}.sidebar-home-title{color:var(--text-bright);font-family:var(--sans);font-size:.92rem;line-height:1.35;margin-bottom:.2rem}.sidebar-home-copy{color:var(--text-dim);font-size:.72rem;line-height:1.45;margin-bottom:.45rem}.sidebar-home-metrics{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.35rem;font-size:.64rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.55px}.sidebar-home-metrics span{border:1px solid var(--border);padding:.14rem .35rem;background:#ffffff03}.sidebar-project-icon{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:4px;color:var(--project-icon-fg,var(--text-bright));background:var(--project-icon-bg,var(--bg));margin-right:.35rem;flex-shrink:0;font-size:.72rem;font-weight:700}.sidebar-project-row{display:flex;align-items:center;gap:.15rem}.sidebar-project-row .sidebar-item{flex:1}.project-sessions-panel{min-height:100%}.project-sessions-panel,.control-rail,.session-workspace{background:transparent;border:none;padding:.7rem .75rem}.project-session-list{display:flex;flex-direction:column;gap:.4rem}.project-session-link{display:flex;justify-content:space-between;align-items:center;gap:.85rem;width:100%;border:1px solid rgba(255,255,255,.08);background:#ffffff05;color:var(--text);padding:.65rem .7rem;cursor:pointer;font-family:var(--sans);font-size:.78rem;text-align:left}.project-session-link:hover{border-color:var(--border-hover)}.project-session-link.active{border-color:var(--green);box-shadow:inset 0 0 0 1px #3fb95026}.project-session-link.current{background:#3fb9500a}.project-session-link-title{color:var(--text-bright);line-height:1.35}.project-session-link-meta{color:var(--text-dim);font-size:.64rem;text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}.control-rail{min-height:100%}.control-mode-summary{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:.55rem}.control-status-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:.75rem}.control-status{border:1px solid rgba(255,255,255,.08);background:#ffffff05;padding:.5rem .55rem}.control-status strong{display:block;color:var(--text-bright);font-size:.8rem;line-height:1.35}.control-flow-header,.control-kpi-strip{display:grid;grid-template-columns:1fr auto;gap:.4rem .6rem;align-items:center;margin-bottom:.45rem}.control-kpi-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.control-kpi-strip>div{border:1px solid rgba(255,255,255,.08);background:#ffffff05;padding:.48rem .5rem}.control-kpi-strip strong{display:block;color:var(--text-bright);font-size:.76rem}.control-flow-list{display:flex;flex-direction:column;gap:.35rem}.control-flow-step{display:flex;gap:.5rem;align-items:flex-start;border:1px solid rgba(255,255,255,.08);background:#ffffff05;padding:.48rem .5rem}.control-flow-step>span{min-width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);color:var(--green);font-size:.68rem;background:var(--surface)}.control-flow-step strong{color:var(--text-bright);font-size:.74rem}.control-flow-step .muted{font-size:.66rem;margin-top:.05rem}.session-hero-compact{padding:.65rem .75rem}.session-title{font-family:var(--sans);font-size:1.05rem;font-weight:700;color:var(--text-bright)}.session-mini-grid{display:grid;grid-template-columns:1fr 1fr;gap:.55rem}.session-actions-row{display:flex;gap:.45rem;flex-wrap:wrap}.session-actions-row .shell-link{padding:.3rem .55rem}.column-badge-row{display:flex;align-items:center;gap:.45rem}@media(max-width:1280px){.workspace-grid{grid-template-columns:1fr 1fr}}@media(max-width:920px){.workspace-grid,.session-mini-grid,.control-status-grid,.control-kpi-strip{grid-template-columns:1fr}}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))s(i);new MutationObserver(i=>{for(const l of i)if(l.type==="childList")for(const o of l.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function n(i){const l={};return i.integrity&&(l.integrity=i.integrity),i.referrerPolicy&&(l.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?l.credentials="include":i.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function s(i){if(i.ep)return;i.ep=!0;const l=n(i);fetch(i.href,l)}})();const En=!1,Dn=(e,t)=>e===t,On=Symbol("solid-track"),$t={equals:Dn};let sn=cn;const Ee=1,St=2,ln={owned:null,cleanups:null,context:null,owner:null},Ot={};var H=null;let It=null,In=null,R=null,ie=null,Te=null,Pt=0;function pt(e,t){const n=R,s=H,i=e.length===0,l=t===void 0?s:t,o=i?ln:{owned:null,cleanups:null,context:l?l.context:null,owner:l},r=i?e:()=>e(()=>xe(()=>at(o)));H=o,R=null;try{return Le(r,!0)}finally{R=n,H=s}}function L(e,t){t=t?Object.assign({},$t,t):$t;const n={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0},s=i=>(typeof i=="function"&&(i=i(n.value)),an(n,i));return[on.bind(n),s]}function Nn(e,t,n){const s=jt(e,t,!0,Ee);Xe(s)}function te(e,t,n){const s=jt(e,t,!1,Ee);Xe(s)}function rn(e,t,n){sn=Vn;const s=jt(e,t,!1,Ee);s.user=!0,Te?Te.push(s):Xe(s)}function se(e,t,n){n=n?Object.assign({},$t,n):$t;const s=jt(e,t,!0,0);return s.observers=null,s.observerSlots=null,s.comparator=n.equals||void 0,Xe(s),on.bind(s)}function Rn(e){return e&&typeof e=="object"&&"then"in e}function Kt(e,t,n){let s,i,l;typeof t=="function"?(s=e,i=t,l={}):(s=!0,i=e,l=t||{});let o=null,r=Ot,f=!1,c="initialValue"in l,_=typeof s=="function"&&se(s);const u=new Set,[w,O]=(l.storage||L)(l.initialValue),[I,g]=L(void 0),[k,q]=L(void 0,{equals:!1}),[P,S]=L(c?"ready":"unresolved");function A(j,m,y,C){return o===j&&(o=null,C!==void 0&&(c=!0),(j===r||m===r)&&l.onHydrated&&queueMicrotask(()=>l.onHydrated(C,{value:m})),r=Ot,X(m,y)),m}function X(j,m){Le(()=>{m===void 0&&O(()=>j),S(m!==void 0?"errored":c?"ready":"unresolved"),g(m);for(const y of u.keys())y.decrement();u.clear()},!1)}function le(){const j=qn,m=w(),y=I();if(y!==void 0&&!o)throw y;return R&&R.user,m}function v(j=!0){if(j!==!1&&f)return;f=!1;const m=_?_():s;if(m==null||m===!1){A(o,xe(w));return}let y;const C=r!==Ot?r:xe(()=>{try{return i(m,{value:w(),refetching:j})}catch(V){y=V}});if(y!==void 0){A(o,void 0,bt(y),m);return}else if(!Rn(C))return A(o,C,void 0,m),C;return o=C,"v"in C?(C.s===1?A(o,C.v,void 0,m):A(o,void 0,bt(C.v),m),C):(f=!0,queueMicrotask(()=>f=!1),Le(()=>{S(c?"refreshing":"pending"),q()},!1),C.then(V=>A(C,V,void 0,m),V=>A(C,void 0,bt(V),m)))}Object.defineProperties(le,{state:{get:()=>P()},error:{get:()=>I()},loading:{get(){const j=P();return j==="pending"||j==="refreshing"}},latest:{get(){if(!c)return le();const j=I();if(j&&!o)throw j;return w()}}});let D=H;return _?Nn(()=>(D=H,v(!1))):v(!1),[le,{refetch:j=>Bn(D,()=>v(j)),mutate:O}]}function xe(e){if(R===null)return e();const t=R;R=null;try{return e()}finally{R=t}}function Ln(e){rn(()=>xe(e))}function Ut(e){return H===null||(H.cleanups===null?H.cleanups=[e]:H.cleanups.push(e)),e}function Bn(e,t){const n=H,s=R;H=e,R=null;try{return Le(t,!0)}catch(i){Mt(i)}finally{H=n,R=s}}const[Di,Oi]=L(!1);let qn;function on(){if(this.sources&&this.state)if(this.state===Ee)Xe(this);else{const e=ie;ie=null,Le(()=>kt(this),!1),ie=e}if(R){const e=this.observers;if(!e||e[e.length-1]!==R){const t=e?e.length:0;R.sources?(R.sources.push(this),R.sourceSlots.push(t)):(R.sources=[this],R.sourceSlots=[t]),e?(e.push(R),this.observerSlots.push(R.sources.length-1)):(this.observers=[R],this.observerSlots=[R.sources.length-1])}}return this.value}function an(e,t,n){let s=e.value;return(!e.comparator||!e.comparator(s,t))&&(e.value=t,e.observers&&e.observers.length&&Le(()=>{for(let i=0;i<e.observers.length;i+=1){const l=e.observers[i],o=It&&It.running;o&&It.disposed.has(l),(o?!l.tState:!l.state)&&(l.pure?ie.push(l):Te.push(l),l.observers&&dn(l)),o||(l.state=Ee)}if(ie.length>1e6)throw ie=[],new Error},!1)),t}function Xe(e){if(!e.fn)return;at(e);const t=Pt;Un(e,e.value,t)}function Un(e,t,n){let s;const i=H,l=R;R=H=e;try{s=e.fn(t)}catch(o){return e.pure&&(e.state=Ee,e.owned&&e.owned.forEach(at),e.owned=null),e.updatedAt=n+1,Mt(o)}finally{R=l,H=i}(!e.updatedAt||e.updatedAt<=n)&&(e.updatedAt!=null&&"observers"in e?an(e,s):e.value=s,e.updatedAt=n)}function jt(e,t,n,s=Ee,i){const l={fn:e,state:s,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:H,context:H?H.context:null,pure:n};return H===null||H!==ln&&(H.owned?H.owned.push(l):H.owned=[l]),l}function wt(e){if(e.state===0)return;if(e.state===St)return kt(e);if(e.suspense&&xe(e.suspense.inFallback))return e.suspense.effects.push(e);const t=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<Pt);)e.state&&t.push(e);for(let n=t.length-1;n>=0;n--)if(e=t[n],e.state===Ee)Xe(e);else if(e.state===St){const s=ie;ie=null,Le(()=>kt(e,t[0]),!1),ie=s}}function Le(e,t){if(ie)return e();let n=!1;t||(ie=[]),Te?n=!0:Te=[],Pt++;try{const s=e();return Mn(n),s}catch(s){n||(Te=null),ie=null,Mt(s)}}function Mn(e){if(ie&&(cn(ie),ie=null),e)return;const t=Te;Te=null,t.length&&Le(()=>sn(t),!1)}function cn(e){for(let t=0;t<e.length;t++)wt(e[t])}function Vn(e){let t,n=0;for(t=0;t<e.length;t++){const s=e[t];s.user?e[n++]=s:wt(s)}for(t=0;t<n;t++)wt(e[t])}function kt(e,t){e.state=0;for(let n=0;n<e.sources.length;n+=1){const s=e.sources[n];if(s.sources){const i=s.state;i===Ee?s!==t&&(!s.updatedAt||s.updatedAt<Pt)&&wt(s):i===St&&kt(s,t)}}}function dn(e){for(let t=0;t<e.observers.length;t+=1){const n=e.observers[t];n.state||(n.state=St,n.pure?ie.push(n):Te.push(n),n.observers&&dn(n))}}function at(e){let t;if(e.sources)for(;e.sources.length;){const n=e.sources.pop(),s=e.sourceSlots.pop(),i=n.observers;if(i&&i.length){const l=i.pop(),o=n.observerSlots.pop();s<i.length&&(l.sourceSlots[o]=s,i[s]=l,n.observerSlots[s]=o)}}if(e.tOwned){for(t=e.tOwned.length-1;t>=0;t--)at(e.tOwned[t]);delete e.tOwned}if(e.owned){for(t=e.owned.length-1;t>=0;t--)at(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}e.state=0}function bt(e){return e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown error",{cause:e})}function Mt(e,t=H){throw bt(e)}const zn=Symbol("fallback");function Zt(e){for(let t=0;t<e.length;t++)e[t]()}function Fn(e,t,n={}){let s=[],i=[],l=[],o=0,r=t.length>1?[]:null;return Ut(()=>Zt(l)),()=>{let f=e()||[],c=f.length,_,u;return f[On],xe(()=>{let O,I,g,k,q,P,S,A,X;if(c===0)o!==0&&(Zt(l),l=[],s=[],i=[],o=0,r&&(r=[])),n.fallback&&(s=[zn],i[0]=pt(le=>(l[0]=le,n.fallback())),o=1);else if(o===0){for(i=new Array(c),u=0;u<c;u++)s[u]=f[u],i[u]=pt(w);o=c}else{for(g=new Array(c),k=new Array(c),r&&(q=new Array(c)),P=0,S=Math.min(o,c);P<S&&s[P]===f[P];P++);for(S=o-1,A=c-1;S>=P&&A>=P&&s[S]===f[A];S--,A--)g[A]=i[S],k[A]=l[S],r&&(q[A]=r[S]);for(O=new Map,I=new Array(A+1),u=A;u>=P;u--)X=f[u],_=O.get(X),I[u]=_===void 0?-1:_,O.set(X,u);for(_=P;_<=S;_++)X=s[_],u=O.get(X),u!==void 0&&u!==-1?(g[u]=i[_],k[u]=l[_],r&&(q[u]=r[_]),u=I[u],O.set(X,u)):l[_]();for(u=P;u<c;u++)u in g?(i[u]=g[u],l[u]=k[u],r&&(r[u]=q[u],r[u](u))):i[u]=pt(w);i=i.slice(0,o=c),s=f.slice(0)}return i});function w(O){if(l[u]=O,r){const[I,g]=L(u);return r[u]=g,t(f[u],I)}return t(f[u])}}}function N(e,t){return xe(()=>e(t||{}))}const Hn=e=>`Stale read from <${e}>.`;function Ae(e){const t="fallback"in e&&{fallback:()=>e.fallback};return se(Fn(()=>e.each,e.children,t||void 0))}function Se(e){const t=e.keyed,n=se(()=>e.when,void 0,void 0),s=t?n:se(n,void 0,{equals:(i,l)=>!i==!l});return se(()=>{const i=s();if(i){const l=e.children;return typeof l=="function"&&l.length>0?xe(()=>l(t?i:()=>{if(!xe(s))throw Hn("Show");return n()})):l}return e.fallback},void 0,void 0)}const We=e=>se(()=>e());function Jn(e,t,n){let s=n.length,i=t.length,l=s,o=0,r=0,f=t[i-1].nextSibling,c=null;for(;o<i||r<l;){if(t[o]===n[r]){o++,r++;continue}for(;t[i-1]===n[l-1];)i--,l--;if(i===o){const _=l<s?r?n[r-1].nextSibling:n[l-r]:f;for(;r<l;)e.insertBefore(n[r++],_)}else if(l===r)for(;o<i;)(!c||!c.has(t[o]))&&t[o].remove(),o++;else if(t[o]===n[l-1]&&n[r]===t[i-1]){const _=t[--i].nextSibling;e.insertBefore(n[r++],t[o++].nextSibling),e.insertBefore(n[--l],_),t[i]=n[l]}else{if(!c){c=new Map;let u=r;for(;u<l;)c.set(n[u],u++)}const _=c.get(t[o]);if(_!=null)if(r<_&&_<l){let u=o,w=1,O;for(;++u<i&&u<l&&!((O=c.get(t[u]))==null||O!==_+w);)w++;if(w>_-r){const I=t[o];for(;r<_;)e.insertBefore(n[r++],I)}else e.replaceChild(n[r++],t[o++])}else o++;else t[o++].remove()}}}const Wt="_$DX_DELEGATE";function Kn(e,t,n,s={}){let i;return pt(l=>{i=l,t===document?e():a(t,e(),t.firstChild?null:void 0,n)},s.owner),()=>{i(),t.textContent=""}}function E(e,t,n,s){let i;const l=()=>{const r=document.createElement("template");return r.innerHTML=e,r.content.firstChild},o=()=>(i||(i=l())).cloneNode(!0);return o.cloneNode=o,o}function ct(e,t=window.document){const n=t[Wt]||(t[Wt]=new Set);for(let s=0,i=e.length;s<i;s++){const l=e[s];n.has(l)||(n.add(l),t.addEventListener(l,Gn))}}function dt(e,t,n){n==null?e.removeAttribute(t):e.setAttribute(t,n)}function be(e,t){t==null?e.removeAttribute("class"):e.className=t}function un(e,t,n,s){Array.isArray(n)?(e[`$$${t}`]=n[0],e[`$$${t}Data`]=n[1]):e[`$$${t}`]=n}function Zn(e,t,n){if(!t)return n?dt(e,"style"):t;const s=e.style;if(typeof t=="string")return s.cssText=t;typeof n=="string"&&(s.cssText=n=void 0),n||(n={}),t||(t={});let i,l;for(l in n)t[l]==null&&s.removeProperty(l),delete n[l];for(l in t)i=t[l],i!==n[l]&&(s.setProperty(l,i),n[l]=i);return n}function Wn(e,t,n){return xe(()=>e(t,n))}function a(e,t,n,s){if(n!==void 0&&!s&&(s=[]),typeof t!="function")return yt(e,t,s,n);te(i=>yt(e,t(),i,n),s)}function Gn(e){let t=e.target;const n=`$$${e.type}`,s=e.target,i=e.currentTarget,l=f=>Object.defineProperty(e,"target",{configurable:!0,value:f}),o=()=>{const f=t[n];if(f&&!t.disabled){const c=t[`${n}Data`];if(c!==void 0?f.call(t,c,e):f.call(t,e),e.cancelBubble)return}return t.host&&typeof t.host!="string"&&!t.host._$host&&t.contains(e.target)&&l(t.host),!0},r=()=>{for(;o()&&(t=t._$host||t.parentNode||t.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t||document}}),e.composedPath){const f=e.composedPath();l(f[0]);for(let c=0;c<f.length-2&&(t=f[c],!!o());c++){if(t._$host){t=t._$host,r();break}if(t.parentNode===i)break}}else r();l(s)}function yt(e,t,n,s,i){for(;typeof n=="function";)n=n();if(t===n)return n;const l=typeof t,o=s!==void 0;if(e=o&&n[0]&&n[0].parentNode||e,l==="string"||l==="number"){if(l==="number"&&(t=t.toString(),t===n))return n;if(o){let r=n[0];r&&r.nodeType===3?r.data!==t&&(r.data=t):r=document.createTextNode(t),n=Ze(e,n,s,r)}else n!==""&&typeof n=="string"?n=e.firstChild.data=t:n=e.textContent=t}else if(t==null||l==="boolean")n=Ze(e,n,s);else{if(l==="function")return te(()=>{let r=t();for(;typeof r=="function";)r=r();n=yt(e,r,n,s)}),()=>n;if(Array.isArray(t)){const r=[],f=n&&Array.isArray(n);if(Rt(r,t,n,i))return te(()=>n=yt(e,r,n,s,!0)),()=>n;if(r.length===0){if(n=Ze(e,n,s),o)return n}else f?n.length===0?Gt(e,r,s):Jn(e,n,r):(n&&Ze(e),Gt(e,r));n=r}else if(t.nodeType){if(Array.isArray(n)){if(o)return n=Ze(e,n,s,t);Ze(e,n,null,t)}else n==null||n===""||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);n=t}}return n}function Rt(e,t,n,s){let i=!1;for(let l=0,o=t.length;l<o;l++){let r=t[l],f=n&&n[e.length],c;if(!(r==null||r===!0||r===!1))if((c=typeof r)=="object"&&r.nodeType)e.push(r);else if(Array.isArray(r))i=Rt(e,r,f)||i;else if(c==="function")if(s){for(;typeof r=="function";)r=r();i=Rt(e,Array.isArray(r)?r:[r],Array.isArray(f)?f:[f])||i}else e.push(r),i=!0;else{const _=String(r);f&&f.nodeType===3&&f.data===_?e.push(f):e.push(document.createTextNode(_))}}return i}function Gt(e,t,n=null){for(let s=0,i=t.length;s<i;s++)e.insertBefore(t[s],n)}function Ze(e,t,n,s){if(n===void 0)return e.textContent="";const i=s||document.createTextNode("");if(t.length){let l=!1;for(let o=t.length-1;o>=0;o--){const r=t[o];if(i!==r){const f=r.parentNode===e;!l&&!o?f?e.replaceChild(i,r):e.insertBefore(i,n):f&&r.remove()}else l=!0}}else e.insertBefore(i,n);return[i]}function B(e){return JSON.parse(JSON.stringify(e))}function ze(){return new Date().toISOString()}function Xt(e){return`$${e.toFixed(2)}`}const mt="proj_dashboard",Ge="sess_vibeultra_exec",Nt="flow_tdd_live",Ve={recommended_next_action:"Resolve the API wiring, run the TDD flow, then verify the desktop 4-column session workspace.",recommended_label:"TDD Flow Plan",reason:"The dashboard must expose a strict deterministic execution path before allowing further session work.",confidence:.92,flow:!0,steps:[{tool:"plan",label:"Resolve execution plan",reason:"Lock the next structured steps before any run."},{tool:"tdd",label:"Write failing expectation",reason:"Capture KPI, mode, and deterministic UI behavior in testable form."},{tool:"implement",label:"Wire API-backed session controls",reason:"Surface live mode, lock, policy, and plan data."},{tool:"web_search",label:"Ground research when needed",reason:"Only use structured search steps inside the session."},{tool:"verify",label:"Run preview and inspect layout",reason:"Confirm Home and 4-column workspace render operationally."}],signals:{deterministic_execution_policy:"strict-deterministic",requested_optimization_mode:"vibeultrax",effective_optimization_mode:"vibeultrax",effective_slot:"brain"},capabilities:{web_search:!0,tdd:!0,vibeultrax:!0}},d={status:{enabled:!0,active_slot:"brain",enforce:!0,flow_enforcer:!0,flow_extract_todos:!0,tdd_enforcer:!0,tdd_strict:!0,thinking:"full",current_model:"openai/gpt-5",current_provider:"OpenAI",current_quality_tier:"brain",credit_percent:72,version:"preview",backend_connected:!1,backendConnected:!1,backend_api_url:"https://api.vibetheog.com/api/v1",backend_health_url:"https://api.vibetheog.com/health",backend_health_checked_at:ze(),backend_health_age_ms:0,backend_health_latency_ms:null,backend_health_status:null,backend_health_error:"preview fallback",backend_version:null,api_fallback:!0,api_fallback_since:ze(),model_locked:!0,locked_slot:"brain",locked_model:"openai/gpt-5",optimization_mode:"vibeultrax",recommended_next_action:"Open the active session and run the TDD flow plan.",orchestration_plan:B(Ve),tiers:null,label_modes:["vibeultrax","vibeqmax","vibemax","vibelitex","raw"],todos:{total:6,pending:4},current_project_fingerprint:"dashboard/home-4col",current_project_name:"Dashboard Control Center",reality_check_enabled:!0,reality_check_scope:"project",reality_check_project_id:mt,reality_check_rules_count:3},savings:{lifetime:{delegation_usd:18.34,cache_usd:9.81,missed_context7_usd:2.15,total_warns:7},current_session:{delegation_usd:4.62,cache_usd:1.28,warns_count:1,tool_breakdown:{plan:2.1,tdd:1.7,web_search:.8,verify:1.3}},cache_hits_this_session:14,trend:"up",savings_rate_per_hour:3.9},capabilities:{web_search:{enabled:!0,provider:"api",fixture_mode:!0},compression:{enabled:!0,provider:"local"},tdd:{enabled:!0,provider:"local"},blackbox:{enabled:!0,provider:"local"},vibemax:{enabled:!0,provider:"local"},vibeqmax:{enabled:!0,provider:"local"},vibeultrax:{enabled:!0,provider:"local"},vibelitex:{enabled:!0,provider:"local"},raw:{enabled:!0,provider:"local"}},projects:[{id:mt,name:"Dashboard Control Center",fingerprint:"dashboard/home-4col",default_flow_id:Nt,created_at:"2026-07-03T12:30:00.000Z",updated_at:"2026-07-03T15:05:00.000Z"}],sessions:[{id:Ge,project_id:mt,title:"Executive Home + Deterministic Session Rail",flow_id:Nt,created_at:"2026-07-03T12:45:00.000Z",updated_at:"2026-07-03T15:06:00.000Z"}],flows:[{id:Nt,scope:"project",project_id:mt,name:"TDD Flow Plan",graph:{nodes:[{id:"plan",tool:"plan",label:"Resolve plan"},{id:"tdd",tool:"tdd",label:"Write failing expectation"},{id:"implement",tool:"implement",label:"Implement dashboard changes"},{id:"verify",tool:"verify",label:"Preview and validate"}],edges:[{from:"plan",to:"tdd"},{from:"tdd",to:"implement"},{from:"implement",to:"verify"}]},created_at:"2026-07-03T12:40:00.000Z",updated_at:"2026-07-03T15:02:00.000Z"}],messages:{[Ge]:[{id:"msg_user_1",role:"user",content:"Build the executive home, wire the 4-column operational session UI, and keep deterministic execution only.",plan:B(Ve),results:null,created_at:"2026-07-03T12:46:00.000Z"},{id:"msg_assistant_1",role:"assistant",content:"Resolved plan: Home KPIs first, then session rail, then API wiring, then preview verification.",plan:B(Ve),results:[{step:Ve.steps[0],result:{ok:!0,state:"resolved"}},{step:Ve.steps[1],result:{ok:!0,tests:"drafted"}},{step:Ve.steps[2],result:{ok:!0,controls:"api-backed"}}],created_at:"2026-07-03T12:49:00.000Z"}]},reports:[{id:"report_preview_audit",type:"audit",summary:"Preview fallback is active because the backend is unavailable; UI remains interactive.",created:"2026-07-03T15:00:00.000Z",tags:["preview","dashboard","fallback"]}],sessionState:{status:"active",locked:!0,archived:!1,optimization_mode:"vibeultrax",recommendation:"Run the structured TDD flow once the API is healthy, or continue in preview mode for layout verification.",lifecycle:{created_at:"2026-07-03T12:45:00.000Z",paused_at:null,resumed_at:"2026-07-03T13:10:00.000Z",archived_at:null,checked_out_at:"2026-07-03T15:06:00.000Z"},notes:[{text:"Column 4 is the authority rail for mode, plan, lock, and policy."},{text:"Sub-regimes such as speed, audit, forensic, and longrun are not top-level vibe modes."}],tags:["home","session","deterministic","tdd","web-search"],template:{id:"tdd-flow-plan",label:"TDD Flow Plan",body:"Plan -> TDD -> Implement -> Verify",signature:"preview-template",revision:4,source:"preview"},blackbox:{enabled:!0,sub_regime:"audit",resolution:"strict deterministic",momentum:84,loop_count:3}}};function Xn(){return d.projects[0]}function Qn(){return d.sessions[0]}function gt(){const e=Qn(),t=Xn();return{title:e.title,session_id:e.id,status:d.sessionState.status,locked:d.sessionState.locked,archived:d.sessionState.archived,project_name:t.name,project_fingerprint:t.fingerprint,started_at:d.sessionState.lifecycle.created_at,cost_usd:2.41,delegation_savings_usd:d.savings.current_session.delegation_usd,cache_savings_usd:d.savings.current_session.cache_usd,notes_count:d.sessionState.notes.length,tags:B(d.sessionState.tags),template:B(d.sessionState.template),optimization_mode:d.sessionState.optimization_mode,orchestration_plan:B(Ve),blackbox:B(d.sessionState.blackbox),recommendation:d.sessionState.recommendation,notes:B(d.sessionState.notes),lifecycle:B(d.sessionState.lifecycle),orchestration:{effective_optimization_mode:d.sessionState.optimization_mode,requested_optimization_mode:d.sessionState.optimization_mode,effective_slot:d.status.active_slot,deterministic_execution_policy:"strict-deterministic",resolved_plan_metadata:{source:"preview",strict:!0,generated_at:ze()},mode_capabilities:B(d.capabilities)}}}function Yn(){var s;const e=gt(),t=d.savings.lifetime.delegation_usd+d.savings.lifetime.cache_usd,n=e.delegation_savings_usd+e.cache_savings_usd;return{home:{title:"Executive Operational Home",subtitle:"Main KPIs, current deterministic session, and next structured action.",recommendation:"Open the active session and continue the TDD Flow Plan from the deterministic rail.",cards:[{label:"Active project",value:e.project_name},{label:"Active session",value:e.title},{label:"Vibe mode",value:"VibeUltraX"},{label:"Slot",value:d.status.active_slot},{label:"Model",value:d.status.current_model},{label:"Lock state",value:d.sessionState.locked?"locked":"mutable"},{label:"Backend",value:d.status.backend_connected?"live":"preview fallback"},{label:"Session cost",value:Xt(e.cost_usd)},{label:"Session savings",value:Xt(n)},{label:"Pending TODOs",value:String(((s=d.status.todos)==null?void 0:s.pending)||0)}]},savings:B(d.savings),todos:[{id:"todo_1",status:"pending",title:"Verify Home KPI density"},{id:"todo_2",status:"pending",title:"Validate 4-column desktop layout"},{id:"todo_3",status:"pending",title:"Confirm mode rail exposes all branded vibe modes"},{id:"todo_4",status:"pending",title:"Check blocked-state messaging for unsupported actions"}],current_session:e,template_editor:{enabled:!0,session_id:e.session_id,template:B(d.sessionState.template),templates:[B(d.sessionState.template)],can_edit:!1,can_version:!1,version:4,history:[]},sessions:[{session_id:e.session_id,is_current:!0,started_at:e.started_at,cost_usd:e.cost_usd,delegation_savings_usd:e.delegation_savings_usd,cache_savings_usd:e.cache_savings_usd,status:e.status,locked:e.locked,archived:e.archived,tags:B(e.tags),notes_count:e.notes_count,template_label:e.template.label||e.template.id,template_signature:e.template.signature||null,recommendation:e.recommendation}],templates:[B(d.sessionState.template)],session_actions:["start","pause","resume","lock","unlock","archive","undo"],totals:{total_sessions:d.sessions.length,total_savings_usd:t,current_session_savings_usd:n,pending_todos:4},status:B(d.status),blackbox:{sub_regime:d.sessionState.blackbox.sub_regime,resolution:d.sessionState.blackbox.resolution},backend_connected:d.status.backend_connected,backend_status:d.status.backend_connected?"online":"preview fallback",backend_health_url:d.status.backend_health_url,backend_version:d.status.backend_version}}function es(){var n;if(typeof window>"u")return!1;const e=String(((n=window.localStorage)==null?void 0:n.getItem("vibeos.dashboard.preview"))||"").toLowerCase();if(e==="1"||e==="true"||e==="on")return!0;const t=window.location.hostname;return t==="127.0.0.1"||t==="localhost"}function ts(){return B(d.status)}function ns(){return B(d.savings)}function ss(){return B(d.capabilities)}function is(){return B(d.projects)}function ls(e){const t=e?d.sessions.filter(n=>n.project_id===e):d.sessions;return B(t)}function rs(e){const t=e?d.flows.filter(n=>n.project_id===e||n.scope==="global"):d.flows;return B(t)}function os(e){return B(d.messages[e]||[])}function as(){return B(d.reports)}function cs(){return Yn()}function Lt(e){return e!==Ge?{session:gt(),metrics:{},orchestration:null}:{session:gt(),metrics:{session_savings_usd:d.savings.current_session.delegation_usd+d.savings.current_session.cache_usd,session_cost_usd:2.41,strict_policy:"strict-deterministic",effective_slot:d.status.active_slot,requested_optimization_mode:d.sessionState.optimization_mode,effective_optimization_mode:d.sessionState.optimization_mode},orchestration:B(gt().orchestration)}}function ds(e,t){return e==="mode"&&t?(d.status.optimization_mode=t,d.sessionState.optimization_mode=t,d.status.recommended_next_action=`Mode switched to ${t}. Continue with the structured TDD flow.`,{ok:!0,result:{optimization_mode:t}}):e==="set"&&t?(d.status.active_slot=t,d.status.current_quality_tier=t,d.status.model_locked=!0,d.status.locked_slot=t,{ok:!0,result:{active_slot:t}}):{ok:!0,result:{action:e,slot:t}}}function us(e,t){const n=d.sessions.find(s=>s.id===e)||d.sessions[0];return typeof t.title=="string"&&(n.title=t.title),"flow_id"in t&&(n.flow_id=t.flow_id??null),n.updated_at=ze(),B(n)}function fs(e,t){return e!==Ge||(t==="lock"?(d.sessionState.locked=!0,d.status.model_locked=!0):t==="unlock"?(d.sessionState.locked=!1,d.status.model_locked=!1):t==="pause"?(d.sessionState.status="paused",d.sessionState.lifecycle.paused_at=ze()):t==="resume"||t==="start"?(d.sessionState.status="active",d.sessionState.lifecycle.resumed_at=ze()):t==="archive"?(d.sessionState.archived=!0,d.sessionState.status="archived",d.sessionState.lifecycle.archived_at=ze()):t==="undo"&&(d.sessionState.archived=!1,d.sessionState.status="active",d.sessionState.lifecycle.archived_at=null),d.sessionState.recommendation=`Last structured action: ${t}. Preview state updated locally.`),Lt(Ge)}function hs(e){const t=e.trim()||"dashboard deterministic session";return{ok:!0,query:t,provider:"preview-fixture",results:[{id:"1",title:"Structured execution patterns for operational dashboards",url:"https://example.com/structured-execution",domain:"example.com",snippet:"Operational dashboards keep the execution plan, hard state, and KPI signals visible in the same workspace.",source:"preview",rank:1},{id:"2",title:"TDD planning in live orchestration UIs",url:"https://example.com/tdd-orchestration",domain:"example.com",snippet:"A deterministic control rail should expose the active plan before execution starts.",source:"preview",rank:2},{id:"3",title:"Session command centers with strict blocked-state messaging",url:"https://example.com/blocked-state",domain:"example.com",snippet:"Unsupported actions should fail explicitly when strict mode is active.",source:"preview",rank:3}],citations:[{id:1,title:"Structured execution patterns for operational dashboards",url:"https://example.com/structured-execution",domain:"example.com"},{id:2,title:"TDD planning in live orchestration UIs",url:"https://example.com/tdd-orchestration",domain:"example.com"},{id:3,title:"Session command centers with strict blocked-state messaging",url:"https://example.com/blocked-state",domain:"example.com"}],answer:`Preview search answer for "${t}": keep the Home screen KPI-dense, expose all branded vibe modes in column 4, render the resolved TDD flow plan before execution, and block unsupported actions under strict deterministic policy.`,meta:{resultCount:3,uniqueDomains:1}}}const Vt=typeof window<"u"?window:{},ot=Vt.__VIBEOS_DASHBOARD_BASE__??"",Bt=Vt.__VIBEOS_DASHBOARD_TOKEN__??"";let _t=null;function zt(){const e={"Content-Type":"application/json"};return Bt&&(e.Authorization="Bearer "+Bt),e}async function oe(e,t){const n=await fetch(ot+e,{headers:zt(),...t});if(!n.ok)throw new Error(`API ${n.status}: ${n.statusText}`);return n.json()}function xt(e){return String(e||"").trim().replace(/\/$/,"")}function Ct(e){return xt(e).replace(/\/api\/v1$/,"")}function ms(e){const t=xt(e);if(!t)return"";try{const n=new URL(t,typeof window<"u"?window.location.origin:"http://127.0.0.1");return n.pathname.endsWith("/health")&&(n.pathname=n.pathname.slice(0,-7)||"/"),Ct(n.href)}catch{return Ct(t.replace(/\/health$/,""))}}async function fn(){const e=Ct(Vt.__VIBEOS_BACKEND_API_BASE__);if(e)return e;if(ot){const t=xt(ot).replace(/\/api\/v1\/dashboard$/,"");if(t!==xt(ot))return t}return _t||(_t=(async()=>{try{const t=await oe("/status"),n=Ct(t.backend_api_url);if(n)return n;const s=ms(t.backend_health_url);if(s)return s}catch{}return"https://api.vibetheog.com"})(),_t)}async function hn(e,t){const n=await fn(),s=await fetch(n+e,{headers:zt(),...t});if(!s.ok)throw new Error(`API ${s.status}: ${s.statusText}`);return s.json()}async function ae(e,t){try{return await e()}catch(n){if(es())return await t();throw n}}function mn(){return ae(()=>oe("/status"),()=>ts())}function _n(){return ae(()=>oe("/savings"),()=>ns())}function _s(){return ae(()=>oe("/sessions"),()=>({sessions:[],total_sessions:0}))}function ps(){return ae(()=>oe("/reports"),()=>as())}function pn(){return ae(()=>oe("/capabilities"),()=>ss())}function bn(){return ae(()=>oe("/dashboard/home"),()=>cs())}function gn(e){return ae(()=>oe(`/sessions/${encodeURIComponent(e)}`),()=>Lt(e))}function vt(e,t,n,s){const i={action:e};return t&&(i.slot=t),n&&(i.level=n),s&&(i.token=s),ae(()=>oe("/trinity",{method:"POST",body:JSON.stringify(i)}),()=>ds(e,t))}function bs(e,t){return ae(()=>oe(`/sessions/${encodeURIComponent(e)}/action`,{method:"POST",body:JSON.stringify(t)}),()=>{const n=fs(e,String(t.action||""));return{ok:!0,session:n.session,metrics:n.metrics,orchestration:n.orchestration??null}})}function gs(e="global",t){const n=new URLSearchParams;return n.set("scope",e),t&&n.set("project_id",t),oe(`/reality-check?${n.toString()}`)}function vs(e){return oe("/reality-check",{method:"POST",body:JSON.stringify(e)})}function $s(e){return ae(()=>oe("/web-search",{method:"POST",body:JSON.stringify(e)}),()=>hs(e.query))}async function Ss(e){const t=e||"https://api.vibetheog.com/health";try{return(await fetch(t,{signal:AbortSignal.timeout(3e3)})).ok}catch{return!1}}function vn(e){let t=!1;if(Bt){let i=null;const l=async()=>{try{const[o,r]=await Promise.all([oe("/status"),oe("/savings")]);t||e({status:o,savings:r})}catch{}};return l(),i=setInterval(l,3e3),()=>{t=!0,i&&clearInterval(i)}}let n=null;function s(){if(t)return;const i=new EventSource(ot+"/events");i.onmessage=l=>{try{const o=JSON.parse(l.data);t||e(o)}catch{}},i.onerror=()=>{i.close(),t||(n=setTimeout(s,3e3))}}return s(),()=>{t=!0,n&&clearTimeout(n)}}function ws(e,t){return hn("/api/v1/blackbox/analyze",{method:"POST",body:JSON.stringify({session_id:e,project_id:t.project_id||null,user_text:t.userText||"",features:t.features||{},action:t.action||"explore",entropy:t.entropy??1,uncertainty:t.uncertainty??50,embedding:t.embedding||null,optimization_mode:t.optimizationMode||"auto"})})}async function ue(e,t){return hn(`/api/v1/orchestrator${e}`,t)}function $n(){return ae(()=>ue("/projects"),()=>({projects:is()}))}function Sn(e,t){return ue("/projects",{method:"POST",body:JSON.stringify({name:e,fingerprint:t})})}function ks(e,t){return ue(`/projects/${e}`,{method:"PUT",body:JSON.stringify(t)})}function wn(e){return ue(`/projects/${e}`,{method:"DELETE"})}function kn(e){return ae(()=>ue(`/sessions${e?`?project_id=${encodeURIComponent(e)}`:""}`),()=>({sessions:ls(e)}))}function ys(e,t,n){return ue("/sessions",{method:"POST",body:JSON.stringify({project_id:e,title:t,flow_id:n??null})})}function xs(e,t){return ae(()=>ue(`/sessions/${e}`,{method:"PUT",body:JSON.stringify(t)}),()=>({session:us(e,t)}))}function Cs(e){return ue(`/sessions/${e}`,{method:"DELETE"})}function yn(e){return ae(()=>ue(`/sessions/${e}/messages`),()=>({messages:os(e)}))}function Ps(e){return ae(()=>ue(`/flows${e?`?project_id=${encodeURIComponent(e)}`:""}`),()=>({flows:rs(e)}))}function js(e,t,n="global",s){return ue("/flows",{method:"POST",body:JSON.stringify({name:e,graph:t,scope:n,project_id:s})})}function As(e,t){return ue(`/flows/${e}`,{method:"PUT",body:JSON.stringify(t)})}function Ts(e){return ue(`/flows/${e}`,{method:"DELETE"})}function xn(e,t,n){const s=new AbortController;return(async()=>{var c,_,u;const i=await fn(),l=await fetch(i+`/api/v1/orchestrator/sessions/${e}/run`,{method:"POST",headers:zt(),body:JSON.stringify(t),signal:s.signal});if(!l.ok||!l.body){(c=n.onError)==null||c.call(n,new Error(`run failed: ${l.status}`));return}const o=l.body.getReader(),r=new TextDecoder;let f="";for(;;){const{done:w,value:O}=await o.read();if(w)break;f+=r.decode(O,{stream:!0});let I;for(;(I=f.indexOf(`
|
|
2
|
-
|
|
3
|
-
`))>=0;){const g=f.slice(0,I);f=f.slice(I+2);const k=(_=g.match(/event: (.*)/))==null?void 0:_[1],q=g.slice(g.indexOf("data: ")+6);if(!(!k||g.indexOf("data: ")<0))try{n.onEvent(k,JSON.parse(q))}catch{}}}(u=n.onDone)==null||u.call(n)})().catch(i=>{var l;(i==null?void 0:i.name)!=="AbortError"&&((l=n.onError)==null||l.call(n,i))}),()=>s.abort()}const Es=Object.freeze(Object.defineProperty({__proto__:null,blackboxAnalyze:ws,checkBackendHealth:Ss,createFlow:js,createProject:Sn,createSession:ys,deleteFlow:Ts,deleteProject:wn,deleteSession:Cs,fetchCapabilities:pn,fetchDashboardHome:bn,fetchRealityCheck:gs,fetchReports:ps,fetchSavings:_n,fetchSessionDetail:gn,fetchSessions:_s,fetchStatus:mn,listFlows:Ps,listMessages:yn,listProjects:$n,listSessions:kn,openSSE:vn,postSessionAction:bs,postTrinity:vt,runSession:xn,saveRealityCheck:vs,updateFlow:As,updateProject:ks,updateSession:xs,webSearch:$s},Symbol.toStringTag,{value:"Module"})),Ds="home";function Os(e){const t=String((e==null?void 0:e.name)||"").trim(),n=String((e==null?void 0:e.fingerprint)||"").trim(),s=`${t} ${n}`.toLowerCase();if(/\b(cli|terminal|shell|console)\b/.test(s))return{glyph:"⌘",label:"CLI"};if(/\b(api|backend|server)\b/.test(s))return{glyph:"◫",label:"API"};if(/\b(web|site|frontend|dashboard|ui|home)\b/.test(s))return{glyph:"◩",label:"UI"};if(/\b(app|desktop|mobile)\b/.test(s))return{glyph:"▣",label:"App"};const i=t.split(/[^A-Za-z0-9]+/).filter(Boolean).slice(0,2).map(f=>{var c;return((c=f[0])==null?void 0:c.toUpperCase())||""}).join("");if(i)return{glyph:i,label:t||i};const l=n||t||"project",o=["◆","◈","◉","▣","⬢","◬"];let r=0;for(const f of l)r=r*31+f.charCodeAt(0)>>>0;return{glyph:o[r%o.length],label:t||"Project"}}var Is=E("<div class=create-form><input class=create-input><button class=create-ok>ok</button><button class=create-cancel>x");function Ns(e){const[t,n]=L("");let s;return Ln(()=>s==null?void 0:s.focus()),(()=>{var i=Is(),l=i.firstChild,o=l.nextSibling,r=o.nextSibling;l.$$keydown=c=>{c.key==="Enter"&&t().trim()&&e.onSubmit(t().trim()),c.key==="Escape"&&e.onCancel()},l.$$input=c=>n(c.currentTarget.value);var f=s;return typeof f=="function"?Wn(f,l):s=l,o.$$click=()=>{t().trim()&&e.onSubmit(t().trim())},un(r,"click",e.onCancel),te(c=>{var _=e.placeholder,u=!t().trim();return _!==c.e&&dt(l,"placeholder",c.e=_),u!==c.t&&(o.disabled=c.t=u),c},{e:void 0,t:void 0}),te(()=>l.value=t()),i})()}ct(["input","keydown","click"]);var Rs=E('<aside class=sidebar><div class=sidebar-brand><div class=sidebar-brand-mark>~</div><div><div class=sidebar-brand-title>opencode</div><div class=sidebar-brand-subtitle>dashboard home</div></div></div><div class=sidebar-column-label><span class=sidebar-column-num>1</span><div><div class=sidebar-column-title>Home / Projects</div><div class=sidebar-column-copy>scan first, no clutter</div></div></div><button><span class=sidebar-icon>⌂</span> Home</button><div class=sidebar-home-card><div class=sidebar-section-label>main info</div><div class=sidebar-home-title></div><p class=sidebar-home-copy></p><div class=sidebar-home-metrics><span>mode </span><span>slot </span><span>model </span><span>backend </span></div><div class=sidebar-home-metrics><span>session </span><span>savings </span><span>todos </span></div></div><div class=sidebar-section-head><span class=sidebar-section-label>projects</span><button class=sidebar-add title="New project">+'),Ls=E("<div class=sidebar-empty>no projects — click + to create one"),Bs=E('<div class=sidebar-project><div class=sidebar-project-row><span class=sidebar-project-icon></span><button></button><button class=sidebar-delete title="Delete project">x');function Qt(e,t){return e.kind!==t.kind?!1:e.kind==="home"||e.kind==="status"?!0:e.kind==="project"&&t.kind==="project"?e.projectId===t.projectId:e.kind==="session"&&t.kind==="session"?e.sessionId===t.sessionId:!1}function qs(e){const t=`${e.name}|${e.fingerprint||e.id}`;let n=0;for(const i of t)n=n*33+i.charCodeAt(0)>>>0;return`hsl(${n%360} 72% 46%)`}function Us(e){return`$${Number(e||0).toFixed(2)}`}function Ms(e){const t=()=>{var s;return((s=e.home)==null?void 0:s.status)||e.status},n=()=>{var s;return((s=e.home)==null?void 0:s.current_session)||null};return(()=>{var s=Rs(),i=s.firstChild,l=i.nextSibling,o=l.nextSibling,r=o.nextSibling,f=r.firstChild,c=f.nextSibling,_=c.nextSibling,u=_.nextSibling,w=u.firstChild;w.firstChild;var O=w.nextSibling;O.firstChild;var I=O.nextSibling;I.firstChild;var g=I.nextSibling;g.firstChild;var k=u.nextSibling,q=k.firstChild;q.firstChild;var P=q.nextSibling;P.firstChild;var S=P.nextSibling;S.firstChild;var A=r.nextSibling,X=A.firstChild,le=X.nextSibling;return o.$$click=()=>e.onSelect({kind:"home"}),a(c,()=>{var v,D;return((D=(v=e.home)==null?void 0:v.home)==null?void 0:D.title)||e.currentProjectName||"Home"}),a(_,()=>{var v,D,j,m;return((D=(v=e.home)==null?void 0:v.home)==null?void 0:D.recommendation)||((m=(j=e.home)==null?void 0:j.home)==null?void 0:m.subtitle)||"Operational dashboard summary."}),a(w,()=>{var v,D;return String(((v=t())==null?void 0:v.optimization_mode)||((D=t())==null?void 0:D.native_agent_mode)||"auto")},null),a(O,()=>{var v;return((v=t())==null?void 0:v.active_slot)||"brain"},null),a(I,()=>{var v;return(((v=t())==null?void 0:v.current_model)||"unknown").split("/").pop()},null),a(g,()=>{var v,D;return((v=t())==null?void 0:v.backend_connected)??((D=t())==null?void 0:D.backendConnected)?"live":"degraded"},null),a(q,()=>{var v;return((v=n())==null?void 0:v.title)||"none"},null),a(P,()=>{var v;return Us((v=e.home)==null?void 0:v.totals.total_savings_usd)},null),a(S,()=>{var v,D,j;return((v=e.home)==null?void 0:v.totals.pending_todos)??((j=(D=e.status)==null?void 0:D.todos)==null?void 0:j.pending)??0},null),un(le,"click",e.onNewProject),a(s,N(Se,{get when(){return e.creatingProject},get children(){return N(Ns,{placeholder:"project name",get onSubmit(){return e.onCreateProjectName},get onCancel(){return e.onCancelCreate}})}}),null),a(s,N(Ae,{get each(){return e.projects},get fallback(){return Ls()},children:v=>{const D=Os(v),j=qs(v);return(()=>{var m=Bs(),y=m.firstChild,C=y.firstChild,V=C.nextSibling,Z=V.nextSibling;return a(C,()=>D.glyph),V.$$click=()=>e.onSelect({kind:"project",projectId:v.id}),a(V,()=>v.name),Z.$$click=()=>e.onDeleteProject(v.id),te(J=>{var we=D.label,ce=`--project-icon-bg:${j};--project-icon-fg:#f5f5f5;`,fe=`sidebar-item ${Qt(e.selection,{kind:"project",projectId:v.id})?"active":""}`;return we!==J.e&&dt(C,"title",J.e=we),J.t=Zn(C,ce,J.t),fe!==J.a&&be(V,J.a=fe),J},{e:void 0,t:void 0,a:void 0}),m})()}}),null),te(()=>be(o,`sidebar-item pinned ${Qt(e.selection,{kind:"home"})?"active":""}`)),s})()}ct(["click"]);const Vs="modulepreload",zs=function(e){return"/"+e},Yt={},Fs=function(t,n,s){let i=Promise.resolve();if(n&&n.length>0){let o=function(c){return Promise.all(c.map(_=>Promise.resolve(_).then(u=>({status:"fulfilled",value:u}),u=>({status:"rejected",reason:u}))))};document.getElementsByTagName("link");const r=document.querySelector("meta[property=csp-nonce]"),f=(r==null?void 0:r.nonce)||(r==null?void 0:r.getAttribute("nonce"));i=o(n.map(c=>{if(c=zs(c),c in Yt)return;Yt[c]=!0;const _=c.endsWith(".css"),u=_?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${u}`))return;const w=document.createElement("link");if(w.rel=_?"stylesheet":Vs,_||(w.as="script"),w.crossOrigin="",w.href=c,f&&w.setAttribute("nonce",f),document.head.appendChild(w),_)return new Promise((O,I)=>{w.addEventListener("load",O),w.addEventListener("error",()=>I(new Error(`Unable to preload CSS for ${c}`)))})}))}function l(o){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=o,window.dispatchEvent(r),!r.defaultPrevented)throw o}return i.then(o=>{for(const r of o||[])r.status==="rejected"&&l(r.reason);return t().catch(l)})},Hs=["vibemax","vibeqmax","vibeultrax","vibelitex","raw"];function Js(e){return Hs.includes(String(e||"").toLowerCase())}const rt={vibeultrax:{id:"vibeultrax",index:1,name:"VibeUltraX",icon:"🏆",pipeline:["cheap","medium","brain"],thinking:"full",tdd:"quality",enforcement:"strict",flow:"strict",qualityVsBrain:107,costVsBrain:58,default:!0,desc:"Default mode. 3-model debate: cheap proposes, medium reviews, brain refines."},vibeqmax:{id:"vibeqmax",index:2,name:"VibeQMaX",icon:"⭐",pipeline:["brain"],thinking:"full",tdd:"quality",enforcement:"strict",flow:"strict",qualityVsBrain:100,costVsBrain:50,desc:"Brain tier only. Same quality as Raw Brain at half cost."},vibemax:{id:"vibemax",index:3,name:"VibeMaX",icon:"⚡",pipeline:["medium"],thinking:"off",tdd:"lazy",enforcement:"relaxed",flow:"audit",qualityVsBrain:75,costVsBrain:18,desc:"Medium tier auto-escalate. Speed-first."},vibelitex:{id:"vibelitex",index:4,name:"VibeLiteX",icon:"💡",pipeline:["medium"],thinking:"brief",tdd:"lazy",enforcement:"normal",flow:"audit",qualityVsBrain:65,costVsBrain:20,desc:"Local fallback. Medium tier with enforcement. No API required."},raw:{id:"raw",index:10,name:"Raw Brain",icon:"🧠",pipeline:["brain"],thinking:"full",tdd:"—",enforcement:"—",flow:"—",qualityVsBrain:100,costVsBrain:0,desc:"Pure v4 Pro baseline. No vibeOS overhead."}};function Ft(e){const t=String(e||"").toLowerCase().trim();if(Js(t))return t;switch(t){case"litex":return"vibelitex";case"quality":return"vibeqmax";case"audit":case"forensic":return"vibeqmax";case"longrun":return"vibeqmax";case"speed":case"balanced":return"vibemax";case"budget":return"vibelitex";default:return"vibeultrax"}}const Ks=[rt.vibeultrax,rt.vibeqmax,rt.vibemax,rt.vibelitex];function qt(e){const t=Ft(e);return rt[t]}function Zs(){return Ks}var Ws=E("<span class=run-step-skip>blocked — "),Gs=E("<code class=run-step-result>"),Xs=E("<div><span class=run-step-tool></span><span class=run-step-label>"),Qs=E('<div class="session-hero session-hero-compact"><div><div class=home-kicker>session workspace</div><h2 class=session-title></h2><div class=session-hero-meta><span>…</span><span>project </span><span></span><span></span></div></div><div class=session-hero-kpis><div class=session-kpi><span class=field-label>session savings</span><strong></strong></div><div class=session-kpi><span class=field-label>session cost</span><strong></strong></div><div class=session-kpi><span class=field-label>status</span><strong>'),Ys=E('<div class="msg assistant live"><div class=msg-role>resolved plan</div><div class="msg-content mono"></div><div class=session-plan-head><span class=muted></span><span>%</span></div><div class=run-trace>'),ei=E('<div class="msg-content mono">'),ti=E('<div class="msg assistant live"><div class=msg-role>running</div><div class=run-trace></div><span class=run-spinner>executing allowed structured steps only'),ni=E("<div class=error>"),si=E('<div class=session-body><div class=session-thread></div><div class=composer><textarea class=text-area placeholder="Describe the next structured session task…"></textarea><div class=composer-actions><span class=muted>policy: strict deterministic · ⌘/Ctrl+Enter to run</span><button class=flow-save></button></div></div><div class=session-mini-grid><div class=session-state-block><span class=field-label>session state</span><div class=session-state-stack><div class=session-state-row><span>project</span><strong></strong></div><div class=session-state-row><span>status</span><strong></strong></div><div class=session-state-row><span>mode</span><strong></strong></div><div class=session-state-row><span>started</span><strong></strong></div><div class=session-state-row><span>lock</span><strong></strong></div></div></div><div class=session-state-block><span class=field-label>lifecycle</span><div class=session-timeline><span>created </span><span>paused </span><span>resumed </span><span>archived </span></div></div></div><div class=session-actions-row>'),ii=E('<div class="session-workspace card panel"><div class="panel-head session-head"><div><div class=column-badge-row><span class=column-badge>3</span><h3>Session Chat</h3></div><div class=panel-head-copy> · live thread + structured run</div></div><div class=session-hero-meta><span>mode </span><span>slot </span><span>model </span><span>backend '),li=E("<p class=muted>Pick a session link from column 2 to open the chat and live run stream."),ri=E("<div class=run-step><span class=run-step-tool></span><span class=run-step-label> · "),oi=E("<p class=muted>No chat yet. Use the composer below to run a structured session prompt."),ai=E("<details class=run-trace-details><summary>structured steps (<!>)</summary><div class=run-trace>"),ci=E("<div><div class=msg-role></div><div class=msg-content>"),di=E("<button class=shell-link>");function en(e){const t=e.r;return(()=>{var n=Xs(),s=n.firstChild,i=s.nextSibling;return a(s,()=>{var l;return(l=t.step)==null?void 0:l.tool}),a(i,()=>{var l;return(l=t.step)==null?void 0:l.label}),a(n,N(Se,{get when(){return t.skipped},get children(){var l=Ws();return l.firstChild,a(l,()=>t.reason,null),l}}),null),a(n,N(Se,{get when(){return We(()=>!t.skipped)()&&t.result},get children(){var l=Gs();return a(l,()=>JSON.stringify(t.result).slice(0,160)),l}}),null),te(()=>be(n,`run-step ${t.skipped?"skipped":"done"}`)),n})()}function tn(e){return`$${Number(e||0).toFixed(2)}`}function lt(e){if(!e)return"—";try{return new Date(e).toLocaleString()}catch{return e}}function ui(e){const t=String(e||"").trim().toLowerCase();if(!t||t==="auto")return"auto";try{return qt(Ft(t)).name||t}catch{return t}}function fi(e){const t=e==null?void 0:e.session,n=["start","pause","resume",t!=null&&t.locked?"unlock":"lock","archive","undo"];return[...new Set(n)]}function hi(e){const[t,{mutate:n,refetch:s}]=Kt(()=>{var m;return((m=e.session)==null?void 0:m.id)||null},m=>m?gn(m):Promise.resolve({session:null})),[i,{refetch:l}]=Kt(()=>{var m;return((m=e.session)==null?void 0:m.id)||null},m=>m?yn(m):Promise.resolve({messages:[]})),[o,r]=L(""),[f,c]=L(!1),[_,u]=L(null),[w,O]=L(null),[I,g]=L([]),[k,q]=L(null);let P=null;Ut(()=>P==null?void 0:P());const S=se(()=>{var m;return(m=t())==null?void 0:m.session}),A=se(()=>{var m,y;return w()||((m=S())==null?void 0:m.orchestration_plan)||((y=e.status)==null?void 0:y.orchestration_plan)||null}),X=se(()=>{var m,y;return String(((m=S())==null?void 0:m.optimization_mode)||((y=e.status)==null?void 0:y.optimization_mode)||"auto").toLowerCase()}),le=se(()=>ui(X())),v=se(()=>{var m,y;return((m=e.status)==null?void 0:m.backend_connected)??((y=e.status)==null?void 0:y.backendConnected)??!1}),D=m=>{var V;const y=e.session,C=String(m||"").trim();if(!(!y||!C||f())){if((V=S())!=null&&V.locked){q("Session is locked. Unlock it before running a deterministic flow.");return}P==null||P(),c(!0),q(null),O(null),g([]),P=xn(y.id,{prompt:C,query:C,execution_policy:"strict-deterministic"},{onEvent:(Z,J)=>{Z==="plan"?O(J.plan):Z==="step"?g(we=>[...we,J]):Z==="done"?(c(!1),P=null,r(""),O(null),g([]),l(),s(),e.onRefresh()):Z==="error"&&(q(J.message||"run failed"),c(!1),P=null)},onError:Z=>{q(Z.message),c(!1),P=null},onDone:()=>c(!1)})}};rn(()=>{const m=e.runRequest,y=e.session;!m||!y||m.sessionId!==y.id||(r(m.prompt),e.onRunRequestHandled(),D(m.prompt))});const j=async m=>{const y=e.session;if(y){u(m),q(null);try{const{postSessionAction:C}=await Fs(async()=>{const{postSessionAction:Z}=await Promise.resolve().then(()=>Es);return{postSessionAction:Z}},void 0),V=await C(y.id,{action:m});n(Z=>Z&&{...Z,session:V.session,metrics:V.metrics,orchestration:V.orchestration??null}),s(),e.onRefresh()}catch(C){q(C.message)}finally{u(null)}}};return(()=>{var m=ii(),y=m.firstChild,C=y.firstChild,V=C.firstChild,Z=V.nextSibling,J=Z.firstChild,we=C.nextSibling,ce=we.firstChild;ce.firstChild;var fe=ce.nextSibling;fe.firstChild;var De=fe.nextSibling;De.firstChild;var b=De.nextSibling;return b.firstChild,a(Z,(()=>{var x=We(()=>!!e.session);return()=>x()?e.session.title:"Select a session from column 2"})(),J),a(ce,()=>le()||"auto",null),a(fe,()=>{var x;return((x=e.status)==null?void 0:x.active_slot)||"brain"},null),a(De,()=>{var x;return(((x=e.status)==null?void 0:x.current_model)||"unknown").split("/").pop()},null),a(b,()=>v()?"live":"degraded",null),a(m,N(Se,{get when(){return e.session},get fallback(){return li()},get children(){return[(()=>{var x=Qs(),z=x.firstChild,F=z.firstChild,G=F.nextSibling,ne=G.nextSibling,Q=ne.firstChild,he=Q.firstChild,re=Q.nextSibling;re.firstChild;var Y=re.nextSibling,me=Y.nextSibling,ke=z.nextSibling,ge=ke.firstChild,Be=ge.firstChild,Ce=Be.nextSibling,ve=ge.nextSibling,Oe=ve.firstChild,$=Oe.nextSibling,U=ve.nextSibling,ee=U.firstChild,_e=ee.nextSibling;return a(G,()=>e.session.title),a(Q,()=>e.session.id.slice(0,18),he),a(re,()=>{var W,M;return((W=e.project)==null?void 0:W.name)||((M=S())==null?void 0:M.project_name)||"selected"},null),a(Y,()=>v()?"backend online":"backend degraded"),a(me,(()=>{var W=We(()=>{var M;return!!((M=S())!=null&&M.locked)});return()=>{var M;return W()?"locked":((M=S())==null?void 0:M.status)||"active"}})()),a(Ce,()=>{var W,M;return tn((((W=S())==null?void 0:W.delegation_savings_usd)||0)+(((M=S())==null?void 0:M.cache_savings_usd)||0))}),a($,()=>{var W;return tn((W=S())==null?void 0:W.cost_usd)}),a(_e,(()=>{var W=We(()=>{var M;return!!((M=S())!=null&&M.locked)});return()=>{var M;return W()?"locked":((M=S())==null?void 0:M.status)||"active"}})()),x})(),(()=>{var x=si(),z=x.firstChild,F=z.nextSibling,G=F.firstChild,ne=G.nextSibling,Q=ne.firstChild,he=Q.nextSibling,re=F.nextSibling,Y=re.firstChild,me=Y.firstChild,ke=me.nextSibling,ge=ke.firstChild,Be=ge.firstChild,Ce=Be.nextSibling,ve=ge.nextSibling,Oe=ve.firstChild,$=Oe.nextSibling,U=ve.nextSibling,ee=U.firstChild,_e=ee.nextSibling,W=U.nextSibling,M=W.firstChild,Fe=M.nextSibling,Ie=W.nextSibling,He=Ie.firstChild,ut=He.nextSibling,At=Y.nextSibling,Tt=At.firstChild,ft=Tt.nextSibling,Je=ft.firstChild;Je.firstChild;var Qe=Je.nextSibling;Qe.firstChild;var Ye=Qe.nextSibling;Ye.firstChild;var et=Ye.nextSibling;et.firstChild;var Et=re.nextSibling;return a(z,N(Se,{get when(){return A()},get children(){var p=Ys(),T=p.firstChild,ye=T.nextSibling,$e=ye.nextSibling,Pe=$e.firstChild,Ne=Pe.nextSibling,tt=Ne.firstChild,Ke=$e.nextSibling;return a(ye,()=>A().recommended_label||"Structured plan"),a(Pe,()=>A().recommended_next_action||A().reason),a(Ne,()=>Math.round(Number(A().confidence||0)*100),tt),a(Ke,N(Ae,{get each(){return A().steps||[]},children:(qe,nt)=>(()=>{var ht=ri(),st=ht.firstChild,it=st.nextSibling,Dt=it.firstChild;return a(st,()=>nt()+1),a(it,()=>qe.tool,Dt),a(it,()=>qe.label,null),ht})()})),p}}),null),a(z,N(Ae,{get each(){var p;return((p=i())==null?void 0:p.messages)||[]},get fallback(){return oi()},children:p=>(()=>{var T=ci(),ye=T.firstChild,$e=ye.nextSibling;return a(ye,()=>p.role),a($e,()=>p.content||"(no summary)"),a(T,N(Se,{get when(){return We(()=>!!(p.role==="assistant"&&p.results))()&&p.results.length},get children(){var Pe=ai(),Ne=Pe.firstChild,tt=Ne.firstChild,Ke=tt.nextSibling;Ke.nextSibling;var qe=Ne.nextSibling;return a(Ne,()=>p.results.length,Ke),a(qe,N(Ae,{get each(){return p.results},children:nt=>N(en,{r:nt})})),Pe}}),null),te(()=>be(T,`msg ${p.role}`)),T})()}),null),a(z,N(Se,{get when(){return f()},get children(){var p=ti(),T=p.firstChild,ye=T.nextSibling;return a(p,N(Se,{get when(){return w()},get children(){var $e=ei();return a($e,()=>w().steps.map(Pe=>Pe.tool).join(" → ")),$e}}),ye),a(ye,N(Ae,{get each(){return I()},children:$e=>N(en,{r:$e})})),p}}),null),G.$$keydown=p=>{p.key==="Enter"&&(p.metaKey||p.ctrlKey)&&D(o())},G.$$input=p=>r(p.currentTarget.value),he.$$click=()=>D(o()),a(he,()=>f()?"running…":"run structured flow"),a(Ce,()=>{var p,T;return((p=S())==null?void 0:p.project_name)||((T=e.project)==null?void 0:T.name)||"Current project"}),a($,()=>{var p;return((p=S())==null?void 0:p.status)||"active"}),a(_e,()=>le()||"auto"),a(Fe,()=>{var p;return lt((p=S())==null?void 0:p.started_at)}),a(ut,()=>{var p;return(p=S())!=null&&p.locked?"locked":"mutable"}),a(Je,()=>{var p,T;return lt((T=(p=S())==null?void 0:p.lifecycle)==null?void 0:T.created_at)},null),a(Qe,()=>{var p,T;return lt((T=(p=S())==null?void 0:p.lifecycle)==null?void 0:T.paused_at)},null),a(Ye,()=>{var p,T;return lt((T=(p=S())==null?void 0:p.lifecycle)==null?void 0:T.resumed_at)},null),a(et,()=>{var p,T;return lt((T=(p=S())==null?void 0:p.lifecycle)==null?void 0:T.archived_at)},null),a(Et,N(Ae,{get each(){return fi(t())},children:p=>(()=>{var T=di();return T.$$click=()=>void j(p),a(T,()=>_()===p?"…":p),te(()=>T.disabled=_()===p),T})()})),a(x,N(Se,{get when(){return k()},get children(){var p=ni();return a(p,k),p}}),null),te(()=>{var p;return he.disabled=f()||!o().trim()||((p=S())==null?void 0:p.locked)}),te(()=>G.value=o()),x})()]}}),null),m})()}ct(["input","keydown","click"]);var mi=E("<div class=project-session-list>"),_i=E('<div class="card panel project-sessions-panel"><div class=panel-head><div><div class=column-badge-row><span class=column-badge>2</span><h3>Project Sessions</h3></div><div class=panel-head-copy> · links only'),pi=E("<p class=muted>Pick a project from column 1 to see its sessions."),bi=E("<p class=muted>No sessions in this project yet."),gi=E("<button><span class=project-session-link-title></span><span class=project-session-link-meta>");function vi(e,t){return t===e.id?"current":""}function $i(e){return(()=>{var t=_i(),n=t.firstChild,s=n.firstChild,i=s.firstChild,l=i.nextSibling,o=l.firstChild;return a(l,()=>{var r;return((r=e.project)==null?void 0:r.name)||"Select a project"},o),a(t,N(Se,{get when(){return e.project},get fallback(){return pi()},get children(){var r=mi();return a(r,N(Ae,{get each(){return e.sessions},get fallback(){return bi()},children:f=>(()=>{var c=gi(),_=c.firstChild,u=_.nextSibling;return c.$$click=()=>e.onSelectSession(f),a(_,()=>f.title),a(u,(()=>{var w=We(()=>e.currentSessionId===f.id);return()=>w()?"current":f.id.slice(0,8)})()),te(()=>be(c,`project-session-link ${e.selectedSessionId===f.id?"active":""} ${vi(f,e.currentSessionId)}`)),c})()})),r}}),null),t})()}ct(["click"]);var Si=E("<div class=result-box><code></code><button class=dismiss-btn>x"),wi=E('<div class="card panel control-rail"><div class=panel-head><div><div class=column-badge-row><span class=column-badge>4</span><h3>Control Rail</h3></div><div class=panel-head-copy>mode first, then token, flow, plan, TDD</div></div><span></span></div><div class=control-group><h4>Vibe Mode</h4><div class=control-mode-summary><div class=control-status><span class=field-label>active mode</span><strong></strong></div><div class=control-status><span class=field-label>thinking</span><strong></strong></div></div><div class=mode-control-grid></div></div><div class=control-status-grid><div class=control-status><span class=field-label>api token</span><strong></strong></div><div class=control-status><span class=field-label>connect</span><strong></strong></div><div class=control-status><span class=field-label>slot</span><strong></strong></div><div class=control-status><span class=field-label>model</span><strong></strong></div></div><div class=control-group><h4>API Token</h4><input class=text-input placeholder="paste api token"><div class=session-action-grid><button class=shell-link>apply token</button><button class=shell-link>invalidate</button></div><p class=muted>Set or clear the runtime token. Connection state below reflects the live backend, not decoration.</p></div><div class=control-group><h4>Flow</h4><div class=control-flow-header><span class=muted></span><span></span></div><div class=control-flow-list></div></div><div class=control-group><h4>Create Plan / TDD</h4><div class=session-action-grid><button class=shell-link>create plan</button><button class=shell-link>tdd</button></div><p class=muted>Runs the active session with a structured prompt. No loose command launching.</p><p class=muted>web search <!> · tdd </p></div><div class=control-group><h4>KPI</h4><div class=control-kpi-strip><div><span class=field-label>slot</span><strong></strong></div><div><span class=field-label>model</span><strong></strong></div><div><span class=field-label>savings/hr</span><strong></strong></div><div><span class=field-label>todos</span><strong></strong></div></div><div class=control-kpi-strip><div><span class=field-label>session</span><strong></strong></div><div><span class=field-label>backend</span><strong></strong></div><div><span class=field-label>lock</span><strong></strong></div><div><span class=field-label>flow</span><strong>'),ki=E("<button><strong></strong><span>"),yi=E("<p class=muted>No resolved plan yet. Use the chat or create a plan from here."),xi=E("<div class=control-flow-step><span></span><div><strong></strong><div class=muted> · ");const Ci=Zs();function Pi(e){return`$${Number(e||0).toFixed(2)}`}function ji(e){const t=String(e||"").trim().toLowerCase();if(!t||t==="auto")return"auto";try{return qt(t).name||qt(Ft(t)).name||t}catch{return t}}function Ai(e){const[t,n]=L(null),[s,i]=L(null),[l,o]=L(""),r=se(()=>{var g,k;return String(((g=e.status)==null?void 0:g.optimization_mode)||((k=e.status)==null?void 0:k.native_agent_mode)||"auto").toLowerCase()}),f=se(()=>ji(r())),c=se(()=>{var g,k;return((k=(g=e.status)==null?void 0:g.orchestration_plan)==null?void 0:k.steps)||[]}),_=se(()=>{var g,k;return((g=e.status)==null?void 0:g.backend_connected)??((k=e.status)==null?void 0:k.backendConnected)??!1}),u=se(()=>{var g;return((g=e.status)==null?void 0:g.api_fallback)===!0?"fallback":_()?"live":"unknown"}),w=async g=>{if(!t()){n(`mode:${g}`),i(null);try{const k=await vt("mode",g);i(k.ok?String(k.result||`mode:${g}`):String(k.error||"failed")),e.onRefresh()}catch(k){i(k.message)}finally{n(null)}}},O=async()=>{const g=l().trim();if(!(!g||t())){n("token"),i(null);try{const k=await vt("api-token","",void 0,g);i(k.ok?"API token updated":String(k.error||"failed")),o(""),e.onRefresh()}catch(k){i(k.message)}finally{n(null)}}},I=async()=>{if(!t()){n("token"),i(null);try{const g=await vt("api-token","",void 0,"invalidate");i(g.ok?"API token invalidated":String(g.error||"failed")),o(""),e.onRefresh()}catch(g){i(g.message)}finally{n(null)}}};return(()=>{var g=wi(),k=g.firstChild,q=k.firstChild,P=q.nextSibling,S=k.nextSibling,A=S.firstChild,X=A.nextSibling,le=X.firstChild,v=le.firstChild,D=v.nextSibling,j=le.nextSibling,m=j.firstChild,y=m.nextSibling,C=X.nextSibling,V=S.nextSibling,Z=V.firstChild,J=Z.firstChild,we=J.nextSibling,ce=Z.nextSibling,fe=ce.firstChild,De=fe.nextSibling,b=ce.nextSibling,x=b.firstChild,z=x.nextSibling,F=b.nextSibling,G=F.firstChild,ne=G.nextSibling,Q=V.nextSibling,he=Q.firstChild,re=he.nextSibling,Y=re.nextSibling,me=Y.firstChild,ke=me.nextSibling,ge=Q.nextSibling,Be=ge.firstChild,Ce=Be.nextSibling,ve=Ce.firstChild,Oe=ve.nextSibling,$=Ce.nextSibling,U=ge.nextSibling,ee=U.firstChild,_e=ee.nextSibling,W=_e.firstChild,M=W.nextSibling,Fe=_e.nextSibling,Ie=Fe.nextSibling,He=Ie.firstChild,ut=He.nextSibling;ut.nextSibling;var At=U.nextSibling,Tt=At.firstChild,ft=Tt.nextSibling,Je=ft.firstChild,Qe=Je.firstChild,Ye=Qe.nextSibling,et=Je.nextSibling,Et=et.firstChild,p=Et.nextSibling,T=et.nextSibling,ye=T.firstChild,$e=ye.nextSibling,Pe=T.nextSibling,Ne=Pe.firstChild,tt=Ne.nextSibling,Ke=ft.nextSibling,qe=Ke.firstChild,nt=qe.firstChild,ht=nt.nextSibling,st=qe.nextSibling,it=st.firstChild,Dt=it.nextSibling,Ht=st.nextSibling,Cn=Ht.firstChild,Pn=Cn.nextSibling,jn=Ht.nextSibling,An=jn.firstChild,Tn=An.nextSibling;return a(P,()=>_()?"LIVE":"DEGRADED"),a(D,f),a(y,()=>{var h;return((h=e.status)==null?void 0:h.thinking)||"brief"}),a(C,N(Ae,{each:Ci,children:h=>(()=>{var K=ki(),de=K.firstChild,Ue=de.nextSibling;return K.$$click=()=>void w(h.id),a(de,()=>h.name),a(Ue,()=>h.pipeline.join(" → ")),te(pe=>{var Jt;var Re=`mode-card-btn ${((Jt=e.status)==null?void 0:Jt.optimization_mode)===h.id?"active":""}`,je=t()===`mode:${h.id}`||h.id==="raw",Me=h.desc;return Re!==pe.e&&be(K,pe.e=Re),je!==pe.t&&(K.disabled=pe.t=je),Me!==pe.a&&dt(K,"title",pe.a=Me),pe},{e:void 0,t:void 0,a:void 0}),K})()})),a(we,u),a(De,()=>_()?"live":"degraded"),a(z,()=>{var h;return((h=e.status)==null?void 0:h.active_slot)||"brain"}),a(ne,()=>{var h;return(((h=e.status)==null?void 0:h.current_model)||"unknown").split("/").pop()}),re.$$input=h=>o(h.currentTarget.value),me.$$click=()=>void O(),ke.$$click=()=>void I(),a(ve,()=>{var h;return((h=e.currentProject)==null?void 0:h.name)||"No project selected"}),a(Oe,()=>{var h;return(h=e.status)!=null&&h.flow_enforcer?"ON":"OFF"}),a($,N(Ae,{get each(){return c()},get fallback(){return yi()},children:(h,K)=>(()=>{var de=xi(),Ue=de.firstChild,pe=Ue.nextSibling,Re=pe.firstChild,je=Re.nextSibling,Me=je.firstChild;return a(Ue,()=>K()+1),a(Re,()=>h.label),a(je,()=>h.tool,Me),a(je,()=>h.reason,null),de})()})),W.$$click=()=>{n("plan"),e.onCreatePlan(),e.onRefresh(),n(null)},M.$$click=()=>{n("tdd"),e.onStartTdd(),e.onRefresh(),n(null)},a(Ie,()=>{var h,K;return(K=(h=e.capabilities)==null?void 0:h.web_search)!=null&&K.enabled?"on":"off"},ut),a(Ie,()=>{var h,K;return(K=(h=e.capabilities)==null?void 0:h.tdd)!=null&&K.enabled?"on":"off"},null),a(Ye,()=>{var h;return((h=e.status)==null?void 0:h.active_slot)||"brain"}),a(p,()=>{var h;return(((h=e.status)==null?void 0:h.current_model)||"unknown").split("/").pop()}),a($e,()=>{var h;return Pi((h=e.savings)==null?void 0:h.savings_rate_per_hour)}),a(tt,()=>{var h,K,de;return((K=(h=e.status)==null?void 0:h.todos)==null?void 0:K.pending)??((de=e.home)==null?void 0:de.totals.pending_todos)??0}),a(ht,()=>{var h;return((h=e.session)==null?void 0:h.title)||"none"}),a(Dt,()=>{var h;return(h=e.status)!=null&&h.backend_connected?"online":"degraded"}),a(Pn,()=>{var h;return(h=e.status)!=null&&h.model_locked?"locked":"open"}),a(Tn,()=>{var h;return(h=e.status)!=null&&h.flow_enforcer?"on":"off"}),a(g,N(Se,{get when(){return s()},get children(){var h=Si(),K=h.firstChild,de=K.nextSibling;return a(K,()=>s()),de.$$click=()=>i(null),h}}),null),te(h=>{var Me;var K=`badge ${_()?"on":"off"}`,de=!l().trim()||t()==="token",Ue=t()==="token",pe=`badge ${(Me=e.status)!=null&&Me.flow_enforcer?"on":"off"}`,Re=!e.session||t()==="plan",je=!e.session||t()==="tdd";return K!==h.e&&be(P,h.e=K),de!==h.t&&(me.disabled=h.t=de),Ue!==h.a&&(ke.disabled=h.a=Ue),pe!==h.o&&be(Oe,h.o=pe),Re!==h.i&&(W.disabled=h.i=Re),je!==h.n&&(M.disabled=h.n=je),h},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),te(()=>re.value=l()),g})()}ct(["input","click"]);var Ti=E('<div class="shell shell-4col"><main class=workspace><header class="header workspace-header"><div class=header-title><div><h1></h1><div class=header-subtitle></div></div><span class=version></span></div><div class=header-indicators><span></span><span></span><span></span><span></span></div></header><section class=workspace-grid><div class="workspace-column workspace-column-sessions"></div><div class="workspace-column workspace-column-chat"></div><div class="workspace-column workspace-column-controls">');function Ei(){const[e,t]=L(null),[n,s]=L(null),[i,l]=L(null),[o,r]=L(null),[f,c]=L(!1),[_,u]=L({kind:Ds}),[w,O]=L([]),[I,g]=L({}),[k,q]=L(!1),[P,S]=L(null),A=()=>mn().then(b=>{t(b),c(!0)}).catch(()=>c(!1)),X=()=>_n().then(b=>{s(b),c(!0)}).catch(()=>c(!1)),le=()=>pn().then(l).catch(()=>{}),v=()=>bn().then(r).catch(()=>{}),D=()=>$n().then(b=>O(b.projects)).catch(()=>{}),j=()=>kn().then(b=>{var z;const x={};for(const F of b.sessions)(x[z=F.project_id]||(x[z]=[])).push(F);g(x)}).catch(()=>{}),m=vn(b=>{t(b.status),s(b.savings),c(!0)});A(),X(),le(),D(),j(),v(),Ut(m);const y=()=>q(!0),C=async b=>{q(!1);const x=await Sn(b);await D(),await v(),u({kind:"project",projectId:x.project.id})},V=()=>q(!1),Z=async b=>{confirm("Delete this project and all its sessions?")&&(await wn(b),await D(),await j(),await v(),_().projectId===b&&u({kind:"home"}))},J=()=>{var F,G,ne,Q,he,re;const b=_();if(b.kind==="project"||b.kind==="session")return w().find(Y=>Y.id===b.projectId)||null;const x=((G=(F=o())==null?void 0:F.current_session)==null?void 0:G.project_fingerprint)||((ne=e())==null?void 0:ne.current_project_fingerprint)||"",z=((he=(Q=o())==null?void 0:Q.current_session)==null?void 0:he.project_name)||((re=e())==null?void 0:re.current_project_name)||"";return w().find(Y=>Y.fingerprint&&Y.fingerprint===x)||w().find(Y=>Y.name===z)||null},we=()=>{const b=J();return b?I()[b.id]||[]:[]},ce=()=>{var G,ne;const b=_();if(b.kind==="session")return(I()[b.projectId]||[]).find(Q=>Q.id===b.sessionId)||null;const x=((ne=(G=o())==null?void 0:G.current_session)==null?void 0:ne.session_id)||"";if(!x)return null;const z=J();if(!z)return null;const F=(I()[z.id]||[]).find(Q=>Q.id===x)||null;return F&&F.project_id===z.id?F:null},fe=()=>{const b=e();if(!b)return{label:"API OFF",tone:"disconnected",title:"backend status unavailable"};const x=b.backend_connected??b.backendConnected,z=b.backend_api_url||b.backend_health_url||"unknown target",F=b.backend_health_checked_at?new Date(b.backend_health_checked_at).toLocaleTimeString():null;if(x){const ne=typeof b.backend_health_age_ms=="number"?` ${Math.max(0,Math.round(b.backend_health_age_ms/1e3))}s`:"",Q=typeof b.backend_health_latency_ms=="number"?` ${b.backend_health_latency_ms}ms`:"";return{label:`⚡ BACKEND${ne}`,tone:"connected",title:`${z}${Q}${F?` · checked ${F}`:""}`}}const G=b.backend_health_error||(typeof b.backend_health_status=="number"?`HTTP ${b.backend_health_status}`:"unreachable");return{label:"API OFF",tone:"disconnected",title:`${z} · ${G}${F?` · checked ${F}`:""}`}},De=b=>{const x=ce();x&&S({sessionId:x.id,prompt:b})};return(()=>{var b=Ti(),x=b.firstChild,z=x.firstChild,F=z.firstChild,G=F.firstChild,ne=G.firstChild,Q=ne.nextSibling,he=G.nextSibling,re=F.nextSibling,Y=re.firstChild,me=Y.nextSibling,ke=me.nextSibling,ge=ke.nextSibling,Be=z.nextSibling,Ce=Be.firstChild,ve=Ce.nextSibling,Oe=ve.nextSibling;return a(b,N(Ms,{get home(){return o()},get status(){return e()},get projects(){return w()},get selection(){return _()},get currentProjectName(){var $,U,ee,_e;return(($=J())==null?void 0:$.name)||((ee=(U=o())==null?void 0:U.current_session)==null?void 0:ee.project_name)||((_e=e())==null?void 0:_e.current_project_name)||null},get creatingProject(){return k()},onSelect:u,onNewProject:y,onCreateProjectName:C,onCancelCreate:V,onDeleteProject:Z}),x),a(ne,()=>{var $,U,ee;return(($=J())==null?void 0:$.name)||((ee=(U=o())==null?void 0:U.current_session)==null?void 0:ee.project_name)||"Home"}),a(Q,()=>{var $,U,ee;return(($=ce())==null?void 0:$.title)||((ee=(U=o())==null?void 0:U.home)==null?void 0:ee.subtitle)||"OpenCode-style operational dashboard"}),a(he,()=>{var $;return(($=e())==null?void 0:$.version)??"..."}),a(Y,()=>f()?"LIVE":"connecting"),a(me,()=>fe().label),a(ke,()=>{var $,U;return(($=e())==null?void 0:$.backend_connected)??((U=e())==null?void 0:U.backendConnected)?"API LIVE":"API DEGRADED"}),a(ge,()=>{var $;return(($=e())==null?void 0:$.enabled)===!1?"OFF":"ON"}),a(Ce,N($i,{get project(){return J()},get sessions(){return we()},get selectedSessionId(){var $;return(($=ce())==null?void 0:$.id)||null},get currentSessionId(){var $,U;return((U=($=o())==null?void 0:$.current_session)==null?void 0:U.session_id)||null},onSelectSession:$=>u({kind:"session",projectId:$.project_id,sessionId:$.id})})),a(ve,N(hi,{get session(){return ce()},get project(){return J()},get status(){return e()},get capabilities(){return i()},get savings(){return n()},get runRequest(){return P()},onRunRequestHandled:()=>S(null),onRefresh:()=>{A(),X(),v(),j()}})),a(Oe,N(Ai,{get status(){return e()},get capabilities(){return i()},get home(){return o()},get savings(){return n()},get session(){return ce()},get currentProject(){return J()},onRefresh:()=>{A(),X(),v()},onCreatePlan:()=>De("Create a concise structured plan for this session. Show the plan before execution, keep it deterministic, and include TDD steps if they are required."),onStartTdd:()=>De("Start TDD for this session. Produce failing tests first, then implement the minimum fix, then verify the result.")})),te($=>{var Fe,Ie,He;var U=`indicator ${f()?"connected":"disconnected"}`,ee=`indicator flash ${fe().tone}`,_e=fe().title,W=`indicator ${((Fe=e())==null?void 0:Fe.backend_connected)??((Ie=e())==null?void 0:Ie.backendConnected)?"connected":"disconnected"}`,M=`indicator ${((He=e())==null?void 0:He.enabled)===!1?"disabled":"connected"}`;return U!==$.e&&be(Y,$.e=U),ee!==$.t&&be(me,$.t=ee),_e!==$.a&&dt(me,"title",$.a=_e),W!==$.o&&be(ke,$.o=W),M!==$.i&&be(ge,$.i=M),$},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),b})()}const nn=document.getElementById("app");nn&&Kn(()=>N(Ei,{}),nn);
|