@selvakumaresra/specship 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/commands/ss-design-implement.md +5 -0
- package/commands/ss-design-loop.md +125 -0
- package/dist/bin/specship.js +66 -0
- package/dist/bin/specship.js.map +1 -1
- package/dist/designer/artifact-store.js +54 -0
- package/dist/designer/browser.js +141 -0
- package/dist/designer/cdp-ensure.js +60 -0
- package/dist/designer/cdp-env.js +18 -0
- package/dist/designer/cdp-trace.js +599 -0
- package/dist/designer/cross-platform.js +74 -0
- package/dist/designer/designer-controller.js +1413 -0
- package/dist/designer/file-panel.js +39 -0
- package/dist/designer/interstitials.js +97 -0
- package/dist/designer/oopif-reader.js +176 -0
- package/dist/designer/package-meta.js +18 -0
- package/dist/designer/preview-host.js +50 -0
- package/dist/designer/repo-root.js +31 -0
- package/dist/designer/run-state.js +353 -0
- package/dist/designer/session-store.js +59 -0
- package/dist/designer/ui-anchors.js +651 -0
- package/dist/installer/index.d.ts +5 -0
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +3 -2
- package/dist/installer/index.js.map +1 -1
- package/dist/installer/instructions-template.d.ts +17 -0
- package/dist/installer/instructions-template.d.ts.map +1 -1
- package/dist/installer/instructions-template.js +31 -1
- package/dist/installer/instructions-template.js.map +1 -1
- package/dist/installer/targets/claude.d.ts +19 -0
- package/dist/installer/targets/claude.d.ts.map +1 -1
- package/dist/installer/targets/claude.js +98 -1
- package/dist/installer/targets/claude.js.map +1 -1
- package/dist/installer/targets/shared.d.ts +14 -0
- package/dist/installer/targets/shared.d.ts.map +1 -1
- package/dist/installer/targets/shared.js +49 -0
- package/dist/installer/targets/shared.js.map +1 -1
- package/dist/installer/targets/types.d.ts +8 -0
- package/dist/installer/targets/types.d.ts.map +1 -1
- package/dist/mcp/designer-tools.d.ts +33 -0
- package/dist/mcp/designer-tools.d.ts.map +1 -0
- package/dist/mcp/designer-tools.js +313 -0
- package/dist/mcp/designer-tools.js.map +1 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +22 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/web/{chunk-JT7P3DEK.js → chunk-2YUJNZ2Y.js} +3 -3
- package/dist/web/{chunk-JN6W7HCN.js → chunk-45QHGCB4.js} +1 -1
- package/dist/web/{chunk-RAAMPHPJ.js → chunk-A5R3MJMO.js} +1 -1
- package/dist/web/{chunk-2DHIGIOI.js → chunk-ASZ77FMZ.js} +1 -1
- package/dist/web/{chunk-TWXZK6XM.js → chunk-B3YPFY6A.js} +1 -1
- package/dist/web/chunk-D5OCNEJA.js +2 -0
- package/dist/web/{chunk-3SEJX2BK.js → chunk-FHZHD2ZG.js} +1 -1
- package/dist/web/chunk-GR72OOCN.js +1 -0
- package/dist/web/{chunk-DA6SNNAF.js → chunk-GWPVKJIY.js} +1 -1
- package/dist/web/{chunk-YAWCRPHV.js → chunk-NZEZCT65.js} +1 -1
- package/dist/web/{chunk-BCZM5AXU.js → chunk-UBOZGQNK.js} +1 -1
- package/dist/web/{chunk-BPECIDVO.js → chunk-WCKHQIYN.js} +1 -1
- package/dist/web/{chunk-JFYVCXK3.js → chunk-WLIMNDS3.js} +1 -1
- package/dist/web/{chunk-LV4G6QFG.js → chunk-YAMRN47K.js} +1 -1
- package/dist/web/index.html +1 -1
- package/dist/web/main-R53HA54V.js +1 -0
- package/dist/web/sw.js +69 -0
- package/dist/workflows/defaults/claude-design-implement.yaml +138 -49
- package/hooks/hooks.json +11 -0
- package/package.json +7 -3
- package/selectors.json +41 -0
- package/dist/web/chunk-2OKMB4KX.js +0 -2
- package/dist/web/chunk-4N5DWG46.js +0 -1
- package/dist/web/main-WVI3YTDU.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as q}from"./chunk-EMGMOEVR.js";import{a as Q}from"./chunk-X2HTISHL.js";import{a as N}from"./chunk-UYC52MBC.js";import{a as R}from"./chunk-WDU3WICG.js";import{a as $,b as j}from"./chunk-HZA6NEAB.js";import{
|
|
1
|
+
import{a as q}from"./chunk-EMGMOEVR.js";import{a as Q}from"./chunk-X2HTISHL.js";import{a as N}from"./chunk-UYC52MBC.js";import{a as R}from"./chunk-WDU3WICG.js";import{a as $,b as j}from"./chunk-HZA6NEAB.js";import{c as V}from"./chunk-GR72OOCN.js";import{c as M}from"./chunk-SHPTC4RL.js";import{a as L}from"./chunk-7RNS77UP.js";import{a as O}from"./chunk-E44X4RH2.js";import{Aa as p,Ga as S,I as C,Ia as b,Ka as c,M as v,N as g,Ta as D,Ua as I,Va as l,W as y,Wa as u,Xa as x,ea as n,ka as z,lb as h,qa as P,ra as _,sa as f,ua as F,va as w,wa as k,xa as s,ya as r,za as o,zb as A}from"./chunk-PDN6QYGJ.js";import{a as E,b as T}from"./chunk-Q7L6LLAK.js";var H=(i,t)=>t.id;function J(i,t){i&1&&p(0,"app-pick-project-empty",0)}function K(i,t){if(i&1){let e=S();r(0,"button",10),b("click",function(){let d=v(e).$implicit,m=c(2);return g(m.toggleFilter(d))}),r(1,"span",11),l(2),o(),r(3,"span",12),l(4),o()()}if(i&2){let e=t.$implicit,a=c(2);D("background",a.stateFilter()[e]?a.STATE[e].bg:"var(--bg-panel)")("color",a.stateFilter()[e]?a.STATE[e].color:"var(--text-muted)")("border-color",a.stateFilter()[e]?"transparent":"var(--border-subtle)"),n(2),u(e),n(2),u(a.counts()[e])}}function U(i,t){if(i&1&&(r(0,"span",13),l(1),o(),r(2,"button",14),p(3,"app-icon",15),l(4," Re-verify all "),o(),r(5,"button",14),p(6,"app-icon",16),l(7," Open all "),o()),i&2){let e=c(2);n(),x("",e.selectedCount()," selected"),n(2),s("size",12),n(3),s("size",12)}}function W(i,t){i&1&&p(0,"app-empty",8)}function X(i,t){if(i&1&&(r(0,"app-pill",28),l(1),o()),i&2){let e=c().$implicit;n(),u(e.driftAxis)}}function Y(i,t){i&1&&(r(0,"button",37),p(1,"app-icon",39),l(2," Fix "),o()),i&2&&(n(),s("size",12))}function Z(i,t){i&1&&(r(0,"button",37),p(1,"app-icon",15),l(2," Re-verify "),o()),i&2&&(n(),s("size",12))}function ee(i,t){i&1&&(r(0,"button",37),p(1,"app-icon",40),l(2," Re-attach "),o()),i&2&&(n(),s("size",12))}function te(i,t){if(i&1){let e=S();r(0,"div",32)(1,"div",33)(2,"div")(3,"div",34),l(4,"Spec"),o(),r(5,"div",35),l(6),o()(),r(7,"div")(8,"div",34),l(9,"Target"),o(),r(10,"div",35),l(11),o()(),r(12,"div")(13,"div",34),l(14,"Provenance"),o(),r(15,"div",35),l(16),o()(),r(17,"div")(18,"div",34),l(19,"Drift axis"),o(),r(20,"div",35),l(21),o()(),r(22,"div")(23,"div",34),l(24,"Age"),o(),r(25,"div",35),l(26),o()()(),r(27,"div",36),_(28,Y,3,1,"button",37),_(29,Z,3,1,"button",37),_(30,ee,3,1,"button",37),r(31,"button",38),b("click",function(){v(e);let d=c().$implicit,m=c(3);return g(m.openSpec(d.specId))}),l(32," Open spec "),o(),r(33,"button",38),b("click",function(){v(e);let d=c().$implicit,m=c(3);return g(m.showInGraph(d.specId))}),l(34," Show in graph "),o()()()}if(i&2){let e=c().$implicit,a=c(3);n(6),u(e.specId),n(5),u(e.targetQualifiedName),n(5),u(e.provenance),n(5),u(e.driftAxis??"\u2014"),n(5),u(a.ageOf(e)),n(2),f(e.state==="drifted"?28:-1),n(),f(e.state==="broken"?29:-1),n(),f(e.state==="orphaned"?30:-1)}}function ie(i,t){if(i&1){let e=S();r(0,"div",18)(1,"div",19)(2,"input",20),b("click",function(d){let m=v(e).$implicit,B=c(3);return g(B.toggleSelect(m.id,d))})("change",function(d){return d.stopPropagation()}),o(),r(3,"div",21),b("click",function(){let d=v(e).$implicit,m=c(3);return g(m.toggleExpand(d.id))}),r(4,"div",22),p(5,"app-state-pill",23),o(),r(6,"span",24),l(7),o(),r(8,"span",25),l(9),o(),p(10,"app-icon",26),r(11,"span",27),l(12),o(),_(13,X,2,1,"app-pill",28),r(14,"span",29),l(15),o(),r(16,"span",30),l(17),o(),p(18,"app-icon",31),o()(),_(19,te,35,8,"div",32),o()}if(i&2){let e=t.$implicit,a=c(3);D("border-bottom","1px solid var(--border-subtle)"),n(),I("selected",a.isSelected(e.id)),n(),s("checked",a.isSelected(e.id)),P("aria-label","Select "+e.specId),n(3),s("state",e.state),n(2),x(" ",e.specId," "),n(2),x(" ",e.specTitle??""," "),n(),s("size",13),n(2),x(" ",e.targetQualifiedName," "),n(),f(e.driftAxis?13:-1),n(2),x(" ",e.provenance," "),n(2),x(" ",a.ageOf(e)," "),n(),s("name",a.isExpanded(e.id)?"chevronDown":"chevronRight")("size",13),n(),f(a.isExpanded(e.id)?19:-1)}}function ne(i,t){if(i&1&&(r(0,"div",9),w(1,ie,20,17,"div",17,H),o()),i&2){let e=c(2);n(),k(e.visibleLinks())}}function re(i,t){if(i&1&&(r(0,"div",1)(1,"div",2),p(2,"app-page-head",3),o(),r(3,"div",4),p(4,"app-icon",5),w(5,K,5,8,"button",6,F),p(7,"div",7),_(8,U,8,3),o(),_(9,W,1,0,"app-empty",8)(10,ne,3,0,"div",9),o()),i&2){let e=c();n(2),s("sub",e.resource.state().loading?"loading\u2026":e.allLinks().length+" links need attention"),n(2),s("size",13),n(),k(e.states),n(3),f(e.selectedCount()>0?8:-1),n(),f(e.visibleLinks().length===0?9:10)}}var G=class i{api=C(O);projects=C(L);router=C(M);stateFilter=y({drifted:!0,broken:!0,orphaned:!0});resource=V(this.api,()=>`/api/drift?state=drifted,broken,orphaned${this.projects.projectQuery("&")}`);selected=y(new Set);expanded=y(new Set);allLinks=h(()=>this.resource.state().data?.links??[]);visibleLinks=h(()=>{let t=this.stateFilter();return this.allLinks().filter(e=>t[e.state])});counts=h(()=>{let t={drifted:0,broken:0,orphaned:0};for(let e of this.allLinks())e.state in t&&t[e.state]++;return t});selectedCount=h(()=>this.selected().size);states=["drifted","broken","orphaned"];STATE=$;toggleFilter(t){this.stateFilter.update(e=>T(E({},e),{[t]:!e[t]}))}toggleSelect(t,e){e.stopPropagation(),this.selected.update(a=>{let d=new Set(a);return d.has(t)?d.delete(t):d.add(t),d})}isSelected(t){return this.selected().has(t)}toggleExpand(t){this.expanded.update(e=>{let a=new Set(e);return a.has(t)?a.delete(t):a.add(t),a})}isExpanded(t){return this.expanded().has(t)}ageOf(t){if(!t.updatedAt)return"";let e=Date.now()-t.updatedAt;return e<6e4?"just now":e<36e5?Math.round(e/6e4)+"m":e<864e5?Math.round(e/36e5)+"h":Math.round(e/864e5)+"d"}openSpec(t){this.router.navigate(["/specs"],{queryParams:{sel:t}})}showInGraph(t){this.router.navigate(["/graph"],{queryParams:{focus:"spec:"+t}})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=z({type:i,selectors:[["app-drift"]],decls:2,vars:1,consts:[["surface","The drift queue"],[1,"page","col"],[2,"padding","16px 18px 0"],["icon","drift","title","Drift queue",3,"sub"],[1,"filter-bar","row","gap-8"],["name","filter",2,"color","var(--text-muted)",3,"size"],["type","button",1,"filter-chip","row","gap-6",3,"background","color","border-color"],[1,"grow"],["icon","check","title","All links in good standing \u2728","body","Nothing has drifted. Every spec link points at code that still matches."],[1,"scroll-y","list-frame"],["type","button",1,"filter-chip","row","gap-6",3,"click"],[2,"text-transform","capitalize"],[1,"tabular",2,"opacity","0.7"],[1,"secondary",2,"font-size","12px"],["type","button",1,"btn","btn-secondary","btn-sm"],["name","refresh",3,"size"],["name","reveal",3,"size"],[1,"drift-row-wrap",3,"border-bottom"],[1,"drift-row-wrap"],[1,"drift-row","row","gap-10"],["type","checkbox",1,"drift-checkbox",3,"click","change","checked"],[1,"row","gap-10","grow",2,"min-width","0","cursor","pointer",3,"click"],[2,"width","92px","flex-shrink","0"],[3,"state"],[1,"mono",2,"font-size","12px","color","var(--node-spec)","flex-shrink","0","width","130px","overflow","hidden","text-overflow","ellipsis","white-space","nowrap"],[1,"secondary",2,"font-size","12.5px","overflow","hidden","text-overflow","ellipsis","white-space","nowrap","flex","0 1 220px"],["name","arrowRight",2,"color","var(--text-muted)","flex-shrink","0",3,"size"],[1,"mono","grow",2,"font-size","11.5px","color","var(--text-secondary)","overflow","hidden","text-overflow","ellipsis","white-space","nowrap"],["color","var(--warn)","bg","var(--warn-soft)"],[1,"mono","muted",2,"font-size","11px","flex-shrink","0","width","48px","text-align","right"],[1,"mono","muted","tabular",2,"font-size","11px","flex-shrink","0","width","32px","text-align","right"],[2,"color","var(--text-muted)","flex-shrink","0",3,"name","size"],[1,"drift-detail"],[1,"row",2,"gap","22px","padding","10px 0","flex-wrap","wrap"],[1,"muted",2,"font-size","10.5px"],[1,"mono",2,"font-size","12.5px","margin-top","1px"],[1,"row","gap-8"],["type","button",1,"btn","btn-primary","btn-sm"],["type","button",1,"btn","btn-secondary","btn-sm",3,"click"],["name","wrench",3,"size"],["name","graph",3,"size"]],template:function(e,a){e&1&&_(0,J,1,0,"app-pick-project-empty",0)(1,re,11,4,"div",1),e&2&&f(a.resource.state().noProject?0:1)},dependencies:[R,A,N,q,j,Q],styles:["[_nghost-%COMP%]{display:contents}.page[_ngcontent-%COMP%]{flex:1;min-height:0}.filter-bar[_ngcontent-%COMP%]{padding:0 18px 12px;flex-wrap:wrap;align-items:center}.filter-chip[_ngcontent-%COMP%]{height:26px;padding:0 10px;border-radius:999px;border:1px solid var(--border-subtle);font-size:11.5px;font-weight:500;cursor:pointer;font-family:inherit;align-items:center;transition:background .12s,color .12s}.list-frame[_ngcontent-%COMP%]{flex:1;border-top:1px solid var(--border-subtle);margin:0}.drift-row[_ngcontent-%COMP%]{padding:10px 14px;cursor:default;align-items:center;transition:background 80ms;background:transparent}.drift-row[_ngcontent-%COMP%]:not(.selected):hover{background:var(--bg-hover)}.drift-row.selected[_ngcontent-%COMP%]{background:var(--accent-soft)}.drift-checkbox[_ngcontent-%COMP%]{accent-color:var(--accent);width:14px;height:14px;flex-shrink:0;cursor:pointer}.drift-detail[_ngcontent-%COMP%]{padding:0 14px 14px 50px;background:var(--bg-canvas)}"],changeDetection:0})};export{G as Drift};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as j}from"./chunk-7RNS77UP.js";import{a as A,b as R}from"./chunk-E44X4RH2.js";import{E as u,I as i,R as b,W as o,X as v,lb as g}from"./chunk-PDN6QYGJ.js";import{a as y,b as m}from"./chunk-Q7L6LLAK.js";var w="specship.lastOnline",l=class r{onlineSig=o(!0);lastOnlineAtSig=o(null);online=this.onlineSig.asReadonly();lastOnlineAt=this.lastOnlineAtSig.asReadonly();lastOnlineLabel=g(()=>{let t=this.lastOnlineAtSig();if(t===null)return null;let e=Date.now()-t;return e<1e4?"just now":e<6e4?`${Math.round(e/1e3)}s ago`:e<36e5?`${Math.round(e/6e4)}m ago`:e<864e5?`${Math.round(e/36e5)}h ago`:`${Math.round(e/864e5)}d ago`});constructor(){if(typeof localStorage<"u")try{let t=localStorage.getItem(w),e=t?Number(t):NaN;Number.isFinite(e)&&this.lastOnlineAtSig.set(e)}catch{}typeof window<"u"&&window.addEventListener("offline",()=>this.onlineSig.set(!1))}noteSuccess(){let t=Date.now();if(this.lastOnlineAtSig.set(t),typeof localStorage<"u")try{localStorage.setItem(w,String(t))}catch{}this.onlineSig()||this.onlineSig.set(!0)}noteOffline(){this.onlineSig()&&this.onlineSig.set(!1)}static \u0275fac=function(e){return new(e||r)};static \u0275prov=u({token:r,factory:r.\u0275fac,providedIn:"root"})};var f=class r{api=i(A);projects=i(j);connection=i(l);tickSig=o(0);loadingSig=o(!1);errorSig=o(null);lastRefreshSig=o(null);tick=this.tickSig.asReadonly();loading=this.loadingSig.asReadonly();error=this.errorSig.asReadonly();lastRefreshAt=this.lastRefreshSig.asReadonly();lastRefreshLabel=g(()=>{let t=this.lastRefreshSig();if(t===null)return null;let e=Date.now()-t;return e<5e3?"just now":e<6e4?`${Math.round(e/1e3)}s ago`:e<36e5?`${Math.round(e/6e4)}m ago`:`${Math.round(e/36e5)}h ago`});async triggerGlobalRefresh(){if(!this.loadingSig()){if(!this.connection.online()){this.errorSig.set("Offline \u2014 reconnect to refresh");return}this.loadingSig.set(!0),this.errorSig.set(null);try{let t=this.projects.projectQuery(),e=await this.api.post(`/api/refresh${t}`,{});(e.syncError||e.ingestError)&&this.errorSig.set([e.syncError,e.ingestError].filter(Boolean).join(" \xB7 ")),this.lastRefreshSig.set(Date.now()),this.tickSig.update(d=>d+1)}catch(t){this.errorSig.set(t instanceof Error?t.message:String(t))}finally{this.loadingSig.set(!1)}}}notifyLocalChange(){this.lastRefreshSig.set(Date.now()),this.tickSig.update(t=>t+1)}static \u0275fac=function(e){return new(e||r)};static \u0275prov=u({token:r,factory:r.\u0275fac,providedIn:"root"})};var _="specship.cache:";function M(r){if(typeof localStorage>"u")return null;try{let t=localStorage.getItem(_+r);if(!t)return null;let e=JSON.parse(t);if(e&&typeof e.ts=="number"&&"data"in e)return e}catch{}return null}function O(r,t){let e=Date.now();if(typeof localStorage>"u")return e;try{localStorage.setItem(_+r,JSON.stringify({data:t,ts:e}))}catch{}return e}function K(r,t){let e=o({data:null,loading:!0,error:null,source:"init",noProject:!1,stale:!1,cachedAt:null}),d=i(b),E=i(f),h=i(l),S=o(0),D=()=>{let a=t();if(!a){e.set({data:null,loading:!1,error:null,source:"init",noProject:!1,stale:!1,cachedAt:null});return}s&&s.abort(),s=new AbortController,e.update(n=>m(y({},n),{loading:!0,error:null,noProject:!1})),r.get(a,s.signal).then(n=>{let c=O(a,n);h.noteSuccess(),e.set({data:n,loading:!1,error:null,source:"api",noProject:!1,stale:!1,cachedAt:c})}).catch(n=>{if(n instanceof Error&&n.name==="AbortError")return;if(n instanceof R){h.noteSuccess();let p=n.status===409&&(n.code==="no_project"||n.code==="no_primary");e.set({data:null,loading:!1,error:p?null:n,source:"api",noProject:p,stale:!1,cachedAt:null});return}h.noteOffline();let c=M(a);c?e.set({data:c.data,loading:!1,error:null,source:"api",noProject:!1,stale:!0,cachedAt:c.ts}):e.set({data:null,loading:!1,error:n instanceof Error?n:new Error(String(n)),source:"api",noProject:!1,stale:!0,cachedAt:null})})},s=null;return v(()=>{t(),S(),E.tick(),D()}),d.onDestroy(()=>{s?.abort()}),{state:e,refetch:()=>S.update(a=>a+1)}}export{l as a,f as b,K as c};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as le}from"./chunk-SEXBRGYK.js";import{a as re}from"./chunk-G7VZT5KB.js";import{a as ae}from"./chunk-X2HTISHL.js";import{a as oe}from"./chunk-DTRN7FZR.js";import{a as ne,b as H}from"./chunk-4N5DWG46.js";import{a as Z,d as ee}from"./chunk-SHPTC4RL.js";import"./chunk-7RNS77UP.js";import{a as te}from"./chunk-E44X4RH2.js";import{Aa as x,C as j,Ga as $,I as M,Ia as E,Ka as d,M as D,N as I,R as F,Ta as C,Ua as z,Va as l,W as S,Wa as u,X as B,Xa as g,Ya as V,Za as J,aa as L,bb as Y,ea as o,gb as k,hb as K,ib as w,ka as W,lb as h,qa as A,ra as p,sa as m,ua as G,va as P,vb as Q,wa as O,xa as _,ya as a,yb as X,za as r,zb as ie}from"./chunk-PDN6QYGJ.js";import"./chunk-Q7L6LLAK.js";function se(i,t){let n=!t?.manualCleanup?t?.injector?.get(F)??M(F):null,s=_e(t?.equal),c;t?.requireSync?c=S({kind:0},{equal:s}):c=S({kind:1,value:t?.initialValue},{equal:s});let v,y=i.subscribe({next:f=>c.set({kind:1,value:f}),error:f=>{c.set({kind:2,error:f}),v?.()},complete:()=>{v?.()}});if(t?.requireSync&&c().kind===0)throw new j(601,!1);return v=n?.onDestroy(y.unsubscribe.bind(y)),h(()=>{let f=c();switch(f.kind){case 1:return f.value;case 2:throw f.error;case 0:throw new j(601,!1)}},{equal:t?.equal})}function _e(i=Object.is){return(t,e)=>t.kind===1&&e.kind===1&&i(t.value,e.value)}var xe=()=>["/sessions"],pe=(i,t)=>t.prompt.id,ge=(i,t)=>t.id,de=(i,t)=>t.name;function fe(i,t){if(i&1&&(a(0,"app-pill",7),l(1),r()),i&2){let e=d();_("color","var(--node-spec)")("bg","var(--node-spec-soft)"),o(),u(e.session().last_model)}}function ve(i,t){if(i&1&&l(0),i&2){let e=d(),n=d();J(" \xB7 ",n.fmtClock(e.started_at)," \u2013 ",n.fmtClock(e.ended_at)," (",n.fmtDurationSec(e.started_at,e.ended_at),") ")}}function be(i,t){if(i&1&&(a(0,"div",10),l(1),p(2,ve,1,3),r()),i&2){let e=t;o(),g("",e.project_path," "),o(),m(e.started_at&&e.ended_at?2:-1)}}function he(i,t){i&1&&(a(0,"div",14),l(1,"Loading session\u2026"),r())}function Ce(i,t){if(i&1){let e=$();a(0,"div",15)(1,"div",18),l(2,"Couldn't load session"),r(),a(3,"div",19),l(4),r(),a(5,"button",20),E("click",function(){D(e);let s=d();return I(s.forceRefresh())}),l(6,"Retry"),r()()}if(i&2){let e,n=d();o(4),u((e=n.resource.state().error)==null?null:e.message)}}function ye(i,t){i&1&&(a(0,"app-pill",59),x(1,"app-icon",72),l(2,"subagent "),r()),i&2&&(_("color","var(--node-route)")("bg","var(--node-route-soft)"),o(),_("size",10))}function ke(i,t){if(i&1&&x(0,"app-icon",60),i&2){let e=d().$implicit;_("size",12)("title",e.slashCommand)}}function Me(i,t){if(i&1&&l(0),i&2){let e=d().$implicit;g(" ",e.prompt.text.length>140?e.prompt.text.slice(0,140)+"\u2026":e.prompt.text," ")}}function Se(i,t){i&1&&(a(0,"span",62),l(1,"(assistant-only turn)"),r())}function we(i,t){if(i&1&&(a(0,"span",66),l(1),r()),i&2){let e=d().$implicit,n=d(2);o(),u(n.fmtDurationMs(e.prompt.durationMs))}}function Pe(i,t){if(i&1&&(a(0,"section",73)(1,"div",74),l(2,"User prompt"),r(),a(3,"pre",80),l(4),r()()),i&2){let e=d(2).$implicit;o(4),u(e.prompt.text)}}function Oe(i,t){if(i&1&&(a(0,"section",73)(1,"div",74),l(2,"Assistant response"),r(),x(3,"div",81),r()),i&2){let e=d(2).$implicit,n=d(2);o(3),_("innerHTML",n.renderAssistant(e.prompt.assistant_text),L)}}function Ee(i,t){if(i&1&&(a(0,"section",73)(1,"details",82)(2,"summary",83),l(3," Extended thinking "),a(4,"span",84),l(5,"(click to expand)"),r()(),x(6,"div",85),r()()),i&2){let e=d(2).$implicit,n=d(2);o(6),_("innerHTML",n.renderAssistant(e.prompt.thinking_text),L)}}function Te(i,t){if(i&1&&(a(0,"div",76)(1,"div",77),l(2,"Duration"),r(),a(3,"div",78),l(4),r()()),i&2){let e=d(2).$implicit,n=d(2);o(4),u(n.fmtDurationMs(e.prompt.durationMs))}}function De(i,t){if(i&1&&(a(0,"div",76)(1,"div",77),l(2,"Model"),r(),a(3,"div",78),l(4),r()()),i&2){let e=d(2).$implicit;o(4),u(e.prompt.model)}}function Ie(i,t){if(i&1&&(a(0,"div",87)(1,"span",88),l(2),r()()),i&2){let e=t.$implicit;_("title",e),o(2),u(e)}}function ze(i,t){if(i&1&&(a(0,"section",73)(1,"div",74),l(2),r(),a(3,"div",86),P(4,Ie,3,2,"div",87,G),r()()),i&2){let e=d(2).$implicit;o(2),g("Files touched \xB7 ",e.filesTouched.length),o(2),O(e.filesTouched)}}function Re(i,t){i&1&&l(0," \u203A ")}function Fe(i,t){if(i&1&&(a(0,"span",94),l(1),r()),i&2){let e=d().$implicit;o(),u(e.input_summary)}}function $e(i,t){if(i&1&&(a(0,"span",95),l(1),r()),i&2){let e=d().$implicit,n=d(5);o(),u(n.fmtBytes(e.result_length))}}function Be(i,t){if(i&1&&(a(0,"pre",96),l(1),r()),i&2){let e=d().$implicit,n=d(5);o(),u(n.formatToolInput(e.input_json))}}function Ne(i,t){if(i&1){let e=$();a(0,"div",90)(1,"button",91),E("click",function(){let s=D(e).$implicit,c=d(5);return I(c.toggleToolInput(s.id))}),a(2,"span",92),p(3,Re,1,0),r(),a(4,"span",93),l(5),r(),p(6,Fe,2,1,"span",94),x(7,"span",31),p(8,$e,2,1,"span",95),r(),p(9,Be,2,1,"pre",96),r()}if(i&2){let e=t.$implicit,n=d(5);o(),z("has-input",!!e.input_json)("expanded",n.isToolInputExpanded(e.id)),_("disabled",!e.input_json),A("aria-expanded",n.isToolInputExpanded(e.id)),o(),z("open",n.isToolInputExpanded(e.id)),o(),m(e.input_json?3:-1),o(),C("color",n.toolColor(e.tool_name)),o(),u(e.tool_name),o(),m(e.input_summary?6:-1),o(2),m(e.result_length?8:-1),o(),m(e.input_json&&n.isToolInputExpanded(e.id)?9:-1)}}function je(i,t){if(i&1&&(a(0,"section",73)(1,"div",74),l(2),r(),a(3,"div",89),P(4,Ne,10,15,"div",90,ge),r()()),i&2){let e=d(2).$implicit,n=d(2);o(2),V("Tool calls \xB7 ",e.tools.length," \xB7 returned ",n.fmtBytes(e.toolBytes)),o(2),O(e.tools)}}function Le(i,t){if(i&1&&(a(0,"div",71),p(1,Pe,5,1,"section",73),p(2,Oe,4,1,"section",73),p(3,Ee,7,1,"section",73),a(4,"section",73)(5,"div",74),l(6,"Token breakdown"),r(),a(7,"div",75)(8,"div",76)(9,"div",77),l(10,"Input"),r(),a(11,"div",78),l(12),r()(),a(13,"div",76)(14,"div",77),l(15,"Output"),r(),a(16,"div",78),l(17),r()(),a(18,"div",76)(19,"div",77),l(20,"Cache write"),r(),a(21,"div",78),l(22),r()(),a(23,"div",76)(24,"div",77),l(25,"Cache read"),r(),a(26,"div",78),l(27),r()(),a(28,"div",76)(29,"div",77),l(30,"Cost"),r(),a(31,"div",79),l(32),r()(),p(33,Te,5,1,"div",76),p(34,De,5,1,"div",76),r()(),p(35,ze,6,1,"section",73),p(36,je,6,2,"section",73),r()),i&2){let e=d().$implicit,n=d(2);o(),m(e.prompt.text?1:-1),o(),m(e.prompt.assistant_text?2:-1),o(),m(e.prompt.thinking_text?3:-1),o(9),u(n.fmtTokens(e.prompt.input_tokens)),o(5),u(n.fmtTokens(e.prompt.output_tokens)),o(5),u(n.fmtTokens(e.prompt.cache_creation_tokens)),o(5),u(n.fmtTokens(e.prompt.cache_read_tokens)),o(5),g("$",e.prompt.cost_usd.toFixed(4)),o(),m(e.prompt.durationMs?33:-1),o(),m(e.prompt.model?34:-1),o(),m(e.filesTouched.length>0?35:-1),o(),m(e.tools.length>0?36:-1)}}function Ae(i,t){if(i&1){let e=$();a(0,"div",34)(1,"button",56),E("click",function(){let s=D(e).$implicit,c=d(2);return I(c.toggleExpand(s.prompt.id))}),a(2,"span",57),l(3),r(),x(4,"span",58),k(5,"number"),p(6,ye,3,3,"app-pill",59),p(7,ke,1,2,"app-icon",60),a(8,"span",61),p(9,Me,1,1)(10,Se,2,0,"span",62),r(),a(11,"span",63),x(12,"app-icon",64),a(13,"span",65),l(14),r()(),p(15,we,2,1,"span",66),a(16,"span",67),l(17),r(),a(18,"span",68),l(19),k(20,"number"),r(),a(21,"span",69),l(22),r(),x(23,"app-icon",70),r(),p(24,Le,37,12,"div",71),r()}if(i&2){let e=t.$implicit,n=d(2);o(),z("expanded",n.isExpanded(e.prompt.id)),A("aria-expanded",n.isExpanded(e.prompt.id)),o(2),u(n.fmtClock(e.prompt.ts)),o(),C("background",n.cacheColor(e.prompt.cache_read_tokens>0?e.prompt.cache_read_tokens/(e.prompt.input_tokens+e.prompt.cache_creation_tokens+e.prompt.cache_read_tokens||1):0)),_("title","Cache: "+K(5,22,e.prompt.cache_read_tokens)),o(2),m(e.prompt.is_sidechain===1?6:-1),o(),m(e.slashCommand?7:-1),o(2),m(e.prompt.text?9:10),o(3),_("size",11),o(2),u(e.tools.length),o(),m(e.prompt.durationMs?15:-1),o(2),u(n.fmtTokens(e.totalTokens)),o(),C("color",n.cacheColor(e.totalTokens>0?(e.prompt.cache_read_tokens||0)/e.totalTokens:0)),o(),g(" ",e.totalTokens>0?w(20,24,(e.prompt.cache_read_tokens||0)/e.totalTokens*100,"1.0-0"):0,"% "),o(2),C("color",e.prompt.cost_usd>2.5?"var(--error)":"var(--text-primary)"),o(),g("$",e.prompt.cost_usd.toFixed(2)),o(),_("size",14),o(),m(n.isExpanded(e.prompt.id)?24:-1)}}function Ve(i,t){i&1&&(a(0,"div",17),l(1,"No prompts logged for this session yet."),r())}function He(i,t){if(i&1&&(a(0,"span",102),l(1),r()),i&2){let e=d().$implicit;o(),g("\xD7",e.count)}}function qe(i,t){if(i&1&&(a(0,"span",99),x(1,"app-icon",101),l(2),p(3,He,2,1,"span",102),r()),i&2){let e=t.$implicit;o(),_("size",10),o(),g("",e.name," "),o(),m(e.count>1?3:-1)}}function Ue(i,t){if(i&1&&(a(0,"span",102),l(1),r()),i&2){let e=d().$implicit;o(),g("\xD7",e.count)}}function We(i,t){if(i&1&&(a(0,"span",100),x(1,"app-icon",103),l(2),p(3,Ue,2,1,"span",102),r()),i&2){let e=t.$implicit;o(),_("size",10),o(),g("",e.name," "),o(),m(e.count>1?3:-1)}}function Ge(i,t){if(i&1&&(a(0,"div",97)(1,"div",36),l(2,"Commands & skills"),r(),a(3,"div",98),P(4,qe,4,3,"span",99,de),P(6,We,4,3,"span",100,de),r()()),i&2){let e=d();o(4),O(e.slashCommands),o(2),O(e.skills)}}function Je(i,t){if(i&1&&(a(0,"div",36),l(1),r(),x(2,"app-h-bars",104),a(3,"div",105),l(4,"bar = call count"),r()),i&2){let e=d(),n=d(2);o(),g("Tools used \xB7 ",e.byTool.length),o(),_("items",e.byTool)("fmt",n.fmtTokensFn)("color",n.toolBarColor)}}function Ye(i,t){if(i&1&&(p(0,Ge,8,0,"div",97),p(1,Je,5,4)),i&2){let e=t;m(e.slashCommands.length||e.skills.length?0:-1),o(),m(e.byTool.length?1:-1)}}function Ke(i,t){if(i&1&&(a(0,"div",43)(1,"span",108),l(2),r(),a(3,"div",31),x(4,"app-bar",109),r(),a(5,"span",110),l(6),r()()),i&2){let e=t.$implicit,n=d(3);o(2),u(n.fmtClock(e.prompt.ts)),o(2),_("frac",e.prompt.cost_usd/n.maxPromptCost())("color",e.prompt.cost_usd>2.5?"var(--error)":"var(--accent)"),o(2),g("$",e.prompt.cost_usd.toFixed(2))}}function Qe(i,t){if(i&1&&(a(0,"div",106),l(1,"Cost per prompt"),r(),a(2,"div",107),P(3,Ke,7,4,"div",43,pe),r()),i&2){let e=d(2);o(3),O(e.groups())}}function Xe(i,t){if(i&1){let e=$();a(0,"div",16)(1,"div",21)(2,"div",22)(3,"div",23)(4,"div",24),l(5,"Cost"),r(),a(6,"div",25),l(7),r()(),a(8,"div",23)(9,"div",24),l(10,"Prompts"),r(),a(11,"div",26),l(12),r()(),a(13,"div",23)(14,"div",24),l(15,"Window"),r(),a(16,"div",27),l(17),r()(),a(18,"div",23)(19,"div",24),l(20,"Cache hit"),r(),a(21,"div",26),l(22),k(23,"number"),r()(),a(24,"div",23)(25,"div",24),l(26,"Tool calls"),r(),a(27,"div",26),l(28),r()()(),a(29,"div",28)(30,"span",29),l(31),r(),a(32,"span",30),l(33,"click a prompt for full detail"),r(),x(34,"div",31),a(35,"button",32),E("click",function(){D(e);let s=d();return I(s.expandAll())}),l(36,"Expand all"),r(),a(37,"button",32),E("click",function(){D(e);let s=d();return I(s.collapseAll())}),l(38,"Collapse all"),r()(),a(39,"div",33),P(40,Ae,25,27,"div",34,pe,!1,Ve,2,0,"div",17),r()(),a(43,"div",35)(44,"div",36),l(45,"Token mix"),r(),a(46,"div",37),x(47,"div",38)(48,"div",39)(49,"div",40)(50,"div",41),r(),a(51,"div",42)(52,"div",43),x(53,"span",44),a(54,"span",45),l(55,"Input"),r(),a(56,"span",46),l(57),r(),a(58,"span",47),l(59),k(60,"number"),r()(),a(61,"div",43),x(62,"span",48),a(63,"span",45),l(64,"Output"),r(),a(65,"span",46),l(66),r(),a(67,"span",47),l(68),k(69,"number"),r()(),a(70,"div",43),x(71,"span",49),a(72,"span",45),l(73,"Cache write"),r(),a(74,"span",46),l(75),r(),a(76,"span",47),l(77),k(78,"number"),r()(),a(79,"div",43),x(80,"span",50),a(81,"span",45),l(82,"Cache read"),r(),a(83,"span",46),l(84),r(),a(85,"span",47),l(86),k(87,"number"),r()()(),a(88,"div",51)(89,"div",43),x(90,"app-icon",52),a(91,"span",53),l(92,"Cache effectiveness"),r()(),a(93,"div",54)(94,"span",55),l(95),k(96,"number"),r(),a(97,"span",53),l(98,"of input served from cache"),r()()(),p(99,Ye,2,2),p(100,Qe,5,0),r()()}if(i&2){let e,n=t,s=d();o(7),g("$",n.total_cost_usd.toFixed(2)),o(5),u(n.prompt_count),o(5),V(" ",s.fmtClock(n.started_at)," \u2013 ",s.fmtClock(n.ended_at).split(" ").pop()," "),o(4),C("color",s.cacheColor(s.cacheReadRate())),o(),g(" ",w(23,34,s.cacheReadRate()*100,"1.0-0"),"% "),o(6),u(s.totalToolCalls()),o(3),g("Prompt timeline \xB7 ",s.groups().length),o(9),O(s.groups()),o(7),C("width",s.tokPct("input"),"%"),_("title","Input: "+s.fmtTokens(n.total_input_tokens)),o(),C("width",s.tokPct("output"),"%"),_("title","Output: "+s.fmtTokens(n.total_output_tokens)),o(),C("width",s.tokPct("cacheWrite"),"%"),_("title","Cache write: "+s.fmtTokens(n.total_cache_creation_tokens)),o(),C("width",s.tokPct("cacheRead"),"%"),_("title","Cache read: "+s.fmtTokens(n.total_cache_read_tokens)),o(7),u(s.fmtTokens(n.total_input_tokens)),o(2),g("",w(60,37,s.tokPct("input"),"1.0-0"),"%"),o(7),u(s.fmtTokens(n.total_output_tokens)),o(2),g("",w(69,40,s.tokPct("output"),"1.0-0"),"%"),o(7),u(s.fmtTokens(n.total_cache_creation_tokens)),o(2),g("",w(78,43,s.tokPct("cacheWrite"),"1.0-0"),"%"),o(7),u(s.fmtTokens(n.total_cache_read_tokens)),o(2),g("",w(87,46,s.tokPct("cacheRead"),"1.0-0"),"%"),o(4),_("size",13),o(5),g("",w(96,49,s.cacheReadRate()*100,"1.0-0"),"%"),o(4),m((e=s.summaryData())?99:-1,e),o(),m(s.groups().length>0?100:-1)}}function Ze(i,t){i&1&&(a(0,"div",17),l(1,"Session not found."),r())}var et=5e3,tt=/<command-name>([^<]+)<\/command-name>/,nt=new Set(["Read","Edit","Write","NotebookEdit","MultiEdit"]),ce=class i{api=M(te);route=M(Z);sanitizer=M(X);destroyRef=M(F);refresh=M(ne);liveMode=S("idle");idSig=se(this.route.paramMap,{initialValue:this.route.snapshot.paramMap});id=h(()=>this.idSig().get("id")??"");localRefreshing=S(!1);expandedIds=S(new Set);expandedToolInputs=S(new Set);resource=H(this.api,()=>{let t=this.id();return t?`/api/claude/session/${encodeURIComponent(t)}`:null});summary=H(this.api,()=>{let t=this.id();return t?`/api/claude/session/${encodeURIComponent(t)}/summary`:null});session=h(()=>this.resource.state().data?.session??null);prompts=h(()=>this.resource.state().data?.prompts??[]);toolCalls=h(()=>this.resource.state().data?.toolCalls??[]);summaryData=h(()=>this.summary.state().data??null);groups=h(()=>{let t=this.prompts(),e=this.toolCalls(),n=new Map;for(let s of e){let c=n.get(s.prompt_id)??[];c.push(s),n.set(s.prompt_id,c)}return t.map(s=>{let c=n.get(s.id)??[],v=(s.input_tokens||0)+(s.output_tokens||0)+(s.cache_creation_tokens||0)+(s.cache_read_tokens||0),y=c.reduce((b,R)=>b+(R.result_length||0),0),f=s.text?tt.exec(s.text):null,T=f?f[1].trim():null,q=c.length>0?Math.max(...c.map(b=>b.ts||0)):0,me=q>s.ts?q-s.ts:0,N=new Map;for(let b of c)N.set(b.tool_name,(N.get(b.tool_name)??0)+1);let ue=Array.from(N.entries()).map(([b,R])=>({name:b,count:R,color:this.toolColor(b)})).sort((b,R)=>R.count-b.count),U=new Set;for(let b of c)nt.has(b.tool_name)&&b.input_summary&&U.add(b.input_summary);return{prompt:s,tools:c,totalTokens:v,toolBytes:y,slashCommand:T,durationMs:me,toolBreakdown:ue,filesTouched:Array.from(U)}})});totalToolCalls=h(()=>this.toolCalls().length);totalTokens=h(()=>{let t=this.session();return t&&(t.total_input_tokens||0)+(t.total_output_tokens||0)+(t.total_cache_creation_tokens||0)+(t.total_cache_read_tokens||0)||1});maxPromptCost=h(()=>{let t=this.groups();return Math.max(1e-4,...t.map(e=>e.prompt.cost_usd||0))});toolBarColor=t=>{let e=t.name;return e==="Read"?"var(--node-spec)":e==="Edit"||e==="Write"||e==="MultiEdit"?"var(--accent)":e==="Bash"?"var(--warn)":e==="Grep"||e==="Glob"?"var(--node-test)":e==="Task"?"var(--node-route)":e.startsWith("mcp__")?"var(--success)":"var(--node-code)"};cacheReadRate=h(()=>{let t=this.session();if(!t)return 0;let e=(t.total_input_tokens||0)+(t.total_cache_creation_tokens||0)+(t.total_cache_read_tokens||0);return e>0?(t.total_cache_read_tokens||0)/e:0});constructor(){B(()=>{!this.resource.state().loading&&this.localRefreshing()&&this.localRefreshing.set(!1)});let t=null,e=null,n=()=>{e!==null&&(clearInterval(e),e=null)},s=()=>{e===null&&(e=setInterval(()=>{typeof document<"u"&&document.visibilityState==="visible"&&this.resource.refetch()},et))},c=()=>{t&&(t(),t=null)},v=f=>{f&&(c(),t=this.api.openEventStream(`/api/claude/session/${encodeURIComponent(f)}/events`,T=>{T==="prompt_added"||T==="tool_call_added"?this.resource.refetch():T==="snapshot"?(this.liveMode.set("live"),n()):T==="stream_error"&&(this.liveMode.set("polling"),s())},()=>{this.liveMode.set("polling"),s()},["prompt_added","tool_call_added","snapshot","stream_error"]))},y=()=>{if(!(typeof document>"u"))if(document.visibilityState==="visible"){this.resource.refetch();let f=this.id();f&&this.liveMode()==="polling"&&v(f)}else n()};B(()=>{let f=this.id();if(c(),n(),!f){this.liveMode.set("idle");return}v(f)}),typeof document<"u"&&document.addEventListener("visibilitychange",y),this.destroyRef.onDestroy(()=>{c(),n(),this.liveMode.set("idle"),typeof document<"u"&&document.removeEventListener("visibilitychange",y)})}async forceRefresh(){this.localRefreshing.set(!0),await this.refresh.triggerGlobalRefresh()}isExpanded(t){return this.expandedIds().has(t)}toggleExpand(t){this.expandedIds.update(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n})}expandAll(){this.expandedIds.set(new Set(this.prompts().map(t=>t.id)))}collapseAll(){this.expandedIds.set(new Set)}isToolInputExpanded(t){return this.expandedToolInputs().has(t)}toggleToolInput(t){this.expandedToolInputs.update(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n})}renderAssistant(t){return this.sanitizer.bypassSecurityTrustHtml(re(t??""))}formatToolInput(t){if(!t)return"";try{return JSON.stringify(JSON.parse(t),null,2)}catch{return t}}fmtBytes(t){return t?t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} kB`:`${(t/(1024*1024)).toFixed(1)} MB`:"0"}fmtTokens(t){return t<1e3?`${t}`:t<1e6?`${(t/1e3).toFixed(1)}k`:`${(t/1e6).toFixed(2)}M`}fmtTokensFn=t=>this.fmtTokens(t);fmtClock(t){if(!t)return"";try{let e=new Date(t),n=new Date;n.setHours(0,0,0,0);let s=864e5,c=n.getTime()-new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime(),v=e.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"});return c===0?v:c===s?"Yest "+v:e.toLocaleDateString([],{month:"short",day:"numeric"})+" "+v}catch{return String(t)}}fmtDurationSec(t,e){if(!t||!e)return"";let n=Math.round((e-t)/1e3);if(n<60)return`${n}s`;let s=Math.floor(n/60),c=n%60;if(s<60)return`${s}m ${c}s`;let v=Math.floor(s/60),y=s%60;return`${v}h ${y}m`}fmtDurationMs(t){if(!t||t<=0)return"";if(t<1e3)return`${t}ms`;let e=t/1e3;if(e<60)return`${e.toFixed(e<10?1:0)}s`;let n=Math.floor(e/60),s=Math.round(e%60);if(n<60)return`${n}m ${s}s`;let c=Math.floor(n/60),v=n%60;return`${c}h ${v}m`}basename(t){if(!t)return"";if(t.length<=40)return t;let e=t.split("/");return e.length<=2?t:"\u2026/"+e.slice(-2).join("/")}toolColor(t){return t==="Read"?"var(--node-spec)":t==="Edit"||t==="Write"||t==="MultiEdit"||t==="NotebookEdit"?"var(--accent)":t==="Bash"?"var(--warn)":t==="Grep"||t==="Glob"?"var(--node-test)":t==="Task"?"var(--node-route)":t.startsWith("mcp__")?"var(--success)":"var(--text-secondary)"}cacheColor(t){return t>=.7?"var(--success)":t>=.5?"var(--warn)":"var(--error)"}tokPct(t){let e=this.session();if(!e)return 0;let n=this.totalTokens();return(t==="input"?e.total_input_tokens||0:t==="output"?e.total_output_tokens||0:t==="cacheWrite"?e.total_cache_creation_tokens||0:e.total_cache_read_tokens||0)/n*100}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=W({type:i,selectors:[["app-session-detail"]],decls:22,vars:20,consts:[[1,"sd-root"],[1,"page-head"],[1,"back-link","btn","btn-ghost","btn-sm",3,"routerLink"],["name","chevronLeft",3,"size"],[1,"title-block"],[1,"title"],[1,"mono","session-id"],[3,"color","bg"],[1,"live-pill",3,"title"],[1,"dot"],[1,"sub"],[1,"page-actions"],["type","button","aria-label","Refresh session detail",1,"btn","btn-secondary","btn-sm","refresh-btn",3,"click","disabled"],["name","refresh",3,"size"],[1,"loading"],[1,"error"],[1,"sd-body"],[1,"empty"],[1,"error-title"],[1,"error-detail"],[1,"btn","btn-secondary","btn-sm",3,"click"],[1,"scroll-y","sd-main"],[1,"stat-strip"],[1,"stat"],[1,"stat-lbl"],[1,"stat-val","cost"],[1,"stat-val","mono"],[1,"stat-val","mono",2,"font-size","12px"],[1,"row","gap-8",2,"justify-content","space-between","margin-bottom","8px"],[1,"eyebrow"],[1,"muted",2,"font-size","11px"],[1,"grow"],["type","button",1,"btn","btn-ghost","btn-sm",3,"click"],[1,"col","gap-6",2,"padding-bottom","16px"],[1,"prompt","card"],[1,"scroll-y","sd-rail"],[1,"eyebrow",2,"margin-bottom","10px"],[1,"tok-bar",2,"margin-bottom","10px"],[1,"tok-seg",2,"background","var(--node-spec)",3,"title"],[1,"tok-seg",2,"background","var(--node-code)",3,"title"],[1,"tok-seg",2,"background","var(--warn)",3,"title"],[1,"tok-seg",2,"background","var(--node-route)",3,"title"],[1,"col","gap-6",2,"margin-bottom","20px"],[1,"row","gap-8"],[2,"width","9px","height","9px","border-radius","2px","background","var(--node-spec)","flex-shrink","0"],[1,"muted","grow",2,"font-size","11.5px"],[1,"mono","tabular",2,"font-size","11.5px"],[1,"mono","tabular","muted",2,"font-size","10px","width","32px","text-align","right"],[2,"width","9px","height","9px","border-radius","2px","background","var(--node-code)","flex-shrink","0"],[2,"width","9px","height","9px","border-radius","2px","background","var(--warn)","flex-shrink","0"],[2,"width","9px","height","9px","border-radius","2px","background","var(--node-route)","flex-shrink","0"],[1,"cache-card",2,"margin-bottom","20px"],["name","database",2,"color","var(--success)",3,"size"],[1,"muted",2,"font-size","10.5px"],[1,"row",2,"align-items","baseline","gap","8px","margin-top","4px"],[1,"tabular",2,"font-size","24px","font-weight","700","color","var(--success)"],["type","button",1,"prompt-head","row","gap-10",3,"click"],[1,"mono","muted",2,"font-size","10.5px","width","52px","flex-shrink","0"],[2,"width","8px","height","8px","border-radius","50%","flex-shrink","0",3,"title"],[2,"flex-shrink","0",3,"color","bg"],["name","command",2,"color","var(--node-code)","flex-shrink","0",3,"size","title"],[1,"grow",2,"font-size","12.5px","overflow","hidden","text-overflow","ellipsis","white-space","nowrap","min-width","0"],[1,"muted"],[1,"row","gap-4",2,"flex-shrink","0"],["name","wrench",2,"color","var(--text-muted)",3,"size"],[1,"mono","tabular","muted",2,"font-size","11px"],["title","Wall-clock duration for this prompt",1,"mono","tabular","muted",2,"font-size","11px","width","44px","text-align","right","flex-shrink","0"],[1,"mono","tabular","muted",2,"font-size","11px","width","50px","text-align","right","flex-shrink","0"],[1,"mono","tabular",2,"font-size","11px","width","38px","text-align","right","flex-shrink","0"],[1,"mono","tabular",2,"font-size","13px","font-weight","600","width","54px","text-align","right","flex-shrink","0"],["name","chevronRight",2,"color","var(--text-muted)","flex-shrink","0",3,"size"],[1,"prompt-body"],["name","bot",3,"size"],[1,"prompt-section"],[1,"section-lbl"],[1,"kv-row"],[1,"kv"],[1,"kv-lbl"],[1,"kv-val","mono"],[1,"kv-val","mono","cost"],[1,"prompt-pre"],[1,"assistant-body","md-content",3,"innerHTML"],[1,"thinking-details"],[1,"section-lbl","thinking-summary"],[1,"muted","xs"],[1,"thinking-body","md-content",3,"innerHTML"],[1,"files-touched"],[1,"file-row",3,"title"],[1,"file-path","mono"],[1,"tools"],[1,"tool-block"],["type","button",1,"tool-row",3,"click","disabled"],["aria-hidden","true",1,"tool-chevron","mono"],[1,"tool-name","mono"],[1,"tool-input","mono"],[1,"tool-bytes","mono","muted"],[1,"tool-input-json","mono"],[2,"margin-bottom","20px"],[1,"row","gap-6",2,"flex-wrap","wrap"],[1,"pill",2,"color","var(--node-code)","background","var(--node-code-soft)","font-family","var(--font-mono)","font-weight","500"],[1,"pill",2,"color","var(--node-test)","background","var(--node-test-soft)","font-family","var(--font-mono)","font-weight","500"],["name","command",3,"size"],[2,"opacity","0.7"],["name","sparkles",3,"size"],["valueKey","calls",3,"items","fmt","color"],[1,"muted",2,"font-size","10px","margin-top","8px"],[1,"eyebrow",2,"margin","20px 0 10px"],[1,"col","gap-5"],[1,"mono","muted",2,"font-size","10px","width","44px","flex-shrink","0"],[3,"frac","color"],[1,"mono","tabular",2,"font-size","10.5px","width","40px","text-align","right"]],template:function(e,n){if(e&1&&(a(0,"div",0)(1,"header",1)(2,"a",2),x(3,"app-icon",3),l(4," Sessions "),r(),a(5,"div",4)(6,"div",5)(7,"span",6),l(8),r(),p(9,fe,2,3,"app-pill",7),a(10,"span",8),x(11,"span",9),l(12),r()(),p(13,be,3,2,"div",10),r(),a(14,"div",11)(15,"button",12),E("click",function(){return n.forceRefresh()}),x(16,"app-icon",13),l(17),r()()(),p(18,he,2,0,"div",14)(19,Ce,7,1,"div",15)(20,Xe,101,52,"div",16)(21,Ze,2,0,"div",17),r()),e&2){let s,c,v;o(2),_("routerLink",Y(19,xe)),o(),_("size",14),o(5),u(n.id().slice(0,12)),o(),m((s=n.session())!=null&&s.last_model?9:-1),o(),z("live",n.liveMode()==="live")("polling",n.liveMode()==="polling")("idle",n.liveMode()==="idle"),_("title",n.liveMode()==="live"?"Live \u2014 new prompts push as Claude Code writes them":n.liveMode()==="polling"?"Polling \u2014 SSE unavailable, refetching every 5s":"Idle \u2014 live updates paused"),o(2),g(" ",n.liveMode()==="live"?"Live":n.liveMode()==="polling"?"Polling":"Idle"," "),o(),m((c=n.session())?13:-1,c),o(2),z("spinning",n.localRefreshing()||n.refresh.loading()),_("disabled",n.refresh.loading()),o(),_("size",13),o(),g(" ",n.localRefreshing()||n.refresh.loading()?"Refreshing\u2026":"Refresh"," "),o(),m(n.resource.state().loading&&!n.session()?18:n.resource.state().error?19:(v=n.session())?20:21,v)}},dependencies:[ee,ie,ae,oe,le,Q],styles:['@charset "UTF-8";[_nghost-%COMP%]{display:contents}.sd-root[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;min-height:0;padding:16px 18px 0}.page-head[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px;flex-wrap:wrap}.back-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;color:var(--text-muted);text-decoration:none}.title-block[_ngcontent-%COMP%]{flex:1;min-width:250px}.title[_ngcontent-%COMP%]{font-size:var(--fs-title);font-weight:600;letter-spacing:-.01em;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.session-id[_ngcontent-%COMP%]{color:var(--accent);font-size:14px}.live-pill[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:999px;white-space:nowrap;cursor:help}.live-pill[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{width:7px;height:7px;border-radius:50%;flex-shrink:0}.live-pill.live[_ngcontent-%COMP%]{color:var(--success);background:var(--success-soft)}.live-pill.live[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{background:var(--success);animation:_ngcontent-%COMP%_live-pulse 1.6s ease-in-out infinite}.live-pill.polling[_ngcontent-%COMP%]{color:var(--warn);background:var(--warn-soft)}.live-pill.polling[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{background:var(--warn)}.live-pill.idle[_ngcontent-%COMP%]{color:var(--text-muted);background:var(--bg-canvas)}.live-pill.idle[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{background:var(--text-muted)}@keyframes _ngcontent-%COMP%_live-pulse{0%,to{opacity:.4;transform:scale(.85)}50%{opacity:1;transform:scale(1.05)}}.sub[_ngcontent-%COMP%]{color:var(--text-secondary);font-size:12px;margin-top:2px}.page-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.refresh-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px}.refresh-btn.spinning[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spin .9s linear infinite;color:var(--accent)}.refresh-btn[_ngcontent-%COMP%]:disabled{cursor:progress;opacity:.8}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.sd-body[_ngcontent-%COMP%]{flex:1;display:flex;min-height:0;gap:0}.sd-main[_ngcontent-%COMP%]{flex:1;min-width:0;padding:0 0 18px}.sd-rail[_ngcontent-%COMP%]{width:290px;flex-shrink:0;border-left:1px solid var(--border-subtle);background:var(--bg-panel);padding:16px}.stat-strip[_ngcontent-%COMP%]{display:flex;gap:24px;padding:12px 0;border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);margin-bottom:16px}.stat[_ngcontent-%COMP%] .stat-lbl[_ngcontent-%COMP%]{font-size:10.5px;color:var(--text-muted)}.stat[_ngcontent-%COMP%] .stat-val[_ngcontent-%COMP%]{font-size:16px;font-weight:600;margin-top:2px;color:var(--text-primary);font-variant-numeric:tabular-nums}.stat-val.cost[_ngcontent-%COMP%]{color:var(--accent)}.tok-bar[_ngcontent-%COMP%]{display:flex;height:10px;border-radius:999px;overflow:hidden}.tok-seg[_ngcontent-%COMP%]{height:100%}.cache-card[_ngcontent-%COMP%]{background:var(--success-soft);border:1px solid rgba(70,194,107,.25);border-radius:8px;padding:10px 12px}.prompt.card[_ngcontent-%COMP%]{background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:9px;overflow:hidden;transition:border-color .12s}.prompt.card[_ngcontent-%COMP%]:hover{border-color:var(--border-strong)}.prompt-head[_ngcontent-%COMP%]{width:100%;padding:11px 12px;background:transparent;border:0;text-align:left;cursor:pointer;color:inherit;font-family:inherit}.prompt-head[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.prompt-head[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.prompt-body[_ngcontent-%COMP%]{border-top:1px solid var(--border-subtle);padding:14px 16px;background:var(--bg-canvas)}.prompt-section[_ngcontent-%COMP%]{margin-bottom:14px}.prompt-section[_ngcontent-%COMP%]:last-child{margin-bottom:0}.section-lbl[_ngcontent-%COMP%]{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:6px}.prompt-pre[_ngcontent-%COMP%]{margin:0;padding:10px 12px;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:7px;font-family:var(--font-mono);font-size:11.5px;line-height:1.55;color:var(--text-primary);white-space:pre-wrap;word-break:break-word;max-height:280px;overflow-y:auto}.kv-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:10px 18px}.kv[_ngcontent-%COMP%] .kv-lbl[_ngcontent-%COMP%]{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.kv[_ngcontent-%COMP%] .kv-val[_ngcontent-%COMP%]{font-size:12.5px;font-weight:600;margin-top:2px;color:var(--text-primary);font-variant-numeric:tabular-nums}.kv-val.cost[_ngcontent-%COMP%]{color:var(--accent)}.tools[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:3px}.tool-block[_ngcontent-%COMP%]{display:flex;flex-direction:column}.tool-row[_ngcontent-%COMP%]{appearance:none;background:var(--bg-panel);border:1px solid var(--border-subtle);color:inherit;font-family:inherit;text-align:left;display:flex;align-items:center;gap:8px;width:100%;padding:5px 10px;border-radius:6px;font-size:11.5px;cursor:pointer}.tool-row[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--bg-hover)}.tool-row[_ngcontent-%COMP%]:disabled{cursor:default}.tool-row[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.tool-row.expanded[_ngcontent-%COMP%]{border-bottom-left-radius:0;border-bottom-right-radius:0}.tool-chevron[_ngcontent-%COMP%]{width:10px;color:var(--text-muted);transition:transform .12s;font-size:12px;flex-shrink:0;display:inline-block}.tool-chevron.open[_ngcontent-%COMP%]{transform:rotate(90deg);color:var(--accent)}.tool-name[_ngcontent-%COMP%]{font-weight:600;flex-shrink:0}.tool-input[_ngcontent-%COMP%]{color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:11px}.tool-bytes[_ngcontent-%COMP%]{font-size:10.5px;flex-shrink:0}.tool-input-json[_ngcontent-%COMP%]{margin:0;padding:10px 14px;background:var(--bg-canvas);border:1px solid var(--border-subtle);border-top:0;border-radius:0 0 6px 6px;font-family:var(--font-mono);font-size:11px;line-height:1.5;color:var(--text-primary);white-space:pre-wrap;word-break:break-word;max-height:320px;overflow-y:auto}.assistant-body[_ngcontent-%COMP%]{padding:10px 14px;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:7px;font-size:12.5px;line-height:1.55;color:var(--text-primary);max-height:480px;overflow-y:auto;overflow-wrap:anywhere}.thinking-details[_ngcontent-%COMP%]{background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:7px;padding:8px 12px}.thinking-summary[_ngcontent-%COMP%]{cursor:pointer;list-style:none;display:flex;align-items:center;gap:6px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.thinking-summary[_ngcontent-%COMP%]::-webkit-details-marker{display:none}.thinking-summary[_ngcontent-%COMP%]:before{content:"\\203a";display:inline-block;transition:transform .12s;font-size:14px;color:var(--text-muted)}.thinking-details[open][_ngcontent-%COMP%] .thinking-summary[_ngcontent-%COMP%]:before{transform:rotate(90deg);color:var(--accent)}.thinking-body[_ngcontent-%COMP%]{margin-top:10px;padding:8px 0 0;border-top:1px dashed var(--border-subtle);font-size:12px;line-height:1.55;color:var(--text-secondary);max-height:320px;overflow-y:auto;overflow-wrap:anywhere}.files-touched[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:3px;font-size:11.5px;max-height:180px;overflow-y:auto;padding:6px 10px;background:var(--bg-canvas);border:1px solid var(--border-subtle);border-radius:6px}.files-touched[_ngcontent-%COMP%] .file-row[_ngcontent-%COMP%]{display:flex;align-items:center;min-width:0}.files-touched[_ngcontent-%COMP%] .file-path[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary)}.loading[_ngcontent-%COMP%]{padding:40px 18px;text-align:center;color:var(--text-muted);font-size:13px}.error[_ngcontent-%COMP%]{padding:16px;margin:12px 0;border-radius:8px;border:1px solid rgba(255,90,90,.35);background:var(--error-soft);color:var(--error);display:flex;flex-direction:column;gap:8px;align-items:flex-start}.error-title[_ngcontent-%COMP%]{font-weight:600;font-size:13px}.error-detail[_ngcontent-%COMP%]{font-size:12px;color:var(--text-secondary)}.empty[_ngcontent-%COMP%]{padding:30px 18px;color:var(--text-muted);font-size:12.5px;text-align:center}.md-content[_ngcontent-%COMP%] .md-h1[_ngcontent-%COMP%]{font-size:14px;font-weight:650;color:var(--text-primary);letter-spacing:-.01em;margin:0 0 8px}.md-content[_ngcontent-%COMP%] .md-h2[_ngcontent-%COMP%]{font-size:12.5px;font-weight:650;color:var(--text-primary);margin:14px 0 4px;padding-bottom:3px;border-bottom:1px solid var(--border-subtle)}.md-content[_ngcontent-%COMP%] .md-h3[_ngcontent-%COMP%]{font-size:12px;font-weight:650;color:var(--text-primary);margin:12px 0 4px}.md-content[_ngcontent-%COMP%] .md-p[_ngcontent-%COMP%]{font-size:12.5px;line-height:1.6;color:var(--text-primary);margin:0 0 4px;overflow-wrap:anywhere}.md-content[_ngcontent-%COMP%] .md-p[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{color:var(--text-primary);font-weight:650}.md-content[_ngcontent-%COMP%] .md-list[_ngcontent-%COMP%], .md-content[_ngcontent-%COMP%] .md-ol[_ngcontent-%COMP%]{padding:0;margin:4px 0 6px}.md-content[_ngcontent-%COMP%] .md-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%], .md-content[_ngcontent-%COMP%] .md-ol[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{position:relative;padding:2px 0 2px 20px;font-size:12.5px;line-height:1.55;color:var(--text-primary);overflow-wrap:anywhere}.md-content[_ngcontent-%COMP%] .md-list[_ngcontent-%COMP%]{list-style:none}.md-content[_ngcontent-%COMP%] .md-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:before{content:"\\2022";position:absolute;left:4px;top:1px;color:var(--text-faint)}.md-content[_ngcontent-%COMP%] .md-spacer[_ngcontent-%COMP%]{height:5px}.md-content[_ngcontent-%COMP%] .md-inline-code[_ngcontent-%COMP%]{font-size:11px;background:var(--bg-canvas);padding:1px 5px;border-radius:3px;border:1px solid var(--border-subtle);color:var(--node-spec)}.md-content[_ngcontent-%COMP%] .md-blockquote[_ngcontent-%COMP%]{margin:5px 0;padding:6px 10px;border-left:3px solid var(--accent);background:var(--accent-soft);color:var(--text-secondary);font-size:12px;line-height:1.5;border-radius:0 5px 5px 0}.md-content[_ngcontent-%COMP%] .md-pre[_ngcontent-%COMP%]{position:relative;margin:6px 0 8px;padding:10px 12px;background:var(--bg-canvas);border:1px solid var(--border-subtle);border-radius:6px;overflow-x:auto}.md-content[_ngcontent-%COMP%] .md-pre[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{display:block;font-size:11px;line-height:1.5;color:var(--text-primary);white-space:pre}.md-content[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child{margin-top:0}'],changeDetection:0})};export{ce as SessionDetail};
|
|
1
|
+
import{a as le}from"./chunk-SEXBRGYK.js";import{a as re}from"./chunk-G7VZT5KB.js";import{a as ae}from"./chunk-X2HTISHL.js";import{a as oe}from"./chunk-DTRN7FZR.js";import{b as ne,c as H}from"./chunk-GR72OOCN.js";import{a as Z,d as ee}from"./chunk-SHPTC4RL.js";import"./chunk-7RNS77UP.js";import{a as te}from"./chunk-E44X4RH2.js";import{Aa as x,C as j,Ga as $,I as M,Ia as E,Ka as d,M as D,N as I,R as F,Ta as C,Ua as z,Va as l,W as S,Wa as u,X as B,Xa as g,Ya as V,Za as J,aa as L,bb as Y,ea as o,gb as k,hb as K,ib as w,ka as W,lb as h,qa as A,ra as p,sa as m,ua as G,va as P,vb as Q,wa as O,xa as _,ya as a,yb as X,za as r,zb as ie}from"./chunk-PDN6QYGJ.js";import"./chunk-Q7L6LLAK.js";function se(i,t){let n=!t?.manualCleanup?t?.injector?.get(F)??M(F):null,s=_e(t?.equal),c;t?.requireSync?c=S({kind:0},{equal:s}):c=S({kind:1,value:t?.initialValue},{equal:s});let v,y=i.subscribe({next:f=>c.set({kind:1,value:f}),error:f=>{c.set({kind:2,error:f}),v?.()},complete:()=>{v?.()}});if(t?.requireSync&&c().kind===0)throw new j(601,!1);return v=n?.onDestroy(y.unsubscribe.bind(y)),h(()=>{let f=c();switch(f.kind){case 1:return f.value;case 2:throw f.error;case 0:throw new j(601,!1)}},{equal:t?.equal})}function _e(i=Object.is){return(t,e)=>t.kind===1&&e.kind===1&&i(t.value,e.value)}var xe=()=>["/sessions"],pe=(i,t)=>t.prompt.id,ge=(i,t)=>t.id,de=(i,t)=>t.name;function fe(i,t){if(i&1&&(a(0,"app-pill",7),l(1),r()),i&2){let e=d();_("color","var(--node-spec)")("bg","var(--node-spec-soft)"),o(),u(e.session().last_model)}}function ve(i,t){if(i&1&&l(0),i&2){let e=d(),n=d();J(" \xB7 ",n.fmtClock(e.started_at)," \u2013 ",n.fmtClock(e.ended_at)," (",n.fmtDurationSec(e.started_at,e.ended_at),") ")}}function be(i,t){if(i&1&&(a(0,"div",10),l(1),p(2,ve,1,3),r()),i&2){let e=t;o(),g("",e.project_path," "),o(),m(e.started_at&&e.ended_at?2:-1)}}function he(i,t){i&1&&(a(0,"div",14),l(1,"Loading session\u2026"),r())}function Ce(i,t){if(i&1){let e=$();a(0,"div",15)(1,"div",18),l(2,"Couldn't load session"),r(),a(3,"div",19),l(4),r(),a(5,"button",20),E("click",function(){D(e);let s=d();return I(s.forceRefresh())}),l(6,"Retry"),r()()}if(i&2){let e,n=d();o(4),u((e=n.resource.state().error)==null?null:e.message)}}function ye(i,t){i&1&&(a(0,"app-pill",59),x(1,"app-icon",72),l(2,"subagent "),r()),i&2&&(_("color","var(--node-route)")("bg","var(--node-route-soft)"),o(),_("size",10))}function ke(i,t){if(i&1&&x(0,"app-icon",60),i&2){let e=d().$implicit;_("size",12)("title",e.slashCommand)}}function Me(i,t){if(i&1&&l(0),i&2){let e=d().$implicit;g(" ",e.prompt.text.length>140?e.prompt.text.slice(0,140)+"\u2026":e.prompt.text," ")}}function Se(i,t){i&1&&(a(0,"span",62),l(1,"(assistant-only turn)"),r())}function we(i,t){if(i&1&&(a(0,"span",66),l(1),r()),i&2){let e=d().$implicit,n=d(2);o(),u(n.fmtDurationMs(e.prompt.durationMs))}}function Pe(i,t){if(i&1&&(a(0,"section",73)(1,"div",74),l(2,"User prompt"),r(),a(3,"pre",80),l(4),r()()),i&2){let e=d(2).$implicit;o(4),u(e.prompt.text)}}function Oe(i,t){if(i&1&&(a(0,"section",73)(1,"div",74),l(2,"Assistant response"),r(),x(3,"div",81),r()),i&2){let e=d(2).$implicit,n=d(2);o(3),_("innerHTML",n.renderAssistant(e.prompt.assistant_text),L)}}function Ee(i,t){if(i&1&&(a(0,"section",73)(1,"details",82)(2,"summary",83),l(3," Extended thinking "),a(4,"span",84),l(5,"(click to expand)"),r()(),x(6,"div",85),r()()),i&2){let e=d(2).$implicit,n=d(2);o(6),_("innerHTML",n.renderAssistant(e.prompt.thinking_text),L)}}function Te(i,t){if(i&1&&(a(0,"div",76)(1,"div",77),l(2,"Duration"),r(),a(3,"div",78),l(4),r()()),i&2){let e=d(2).$implicit,n=d(2);o(4),u(n.fmtDurationMs(e.prompt.durationMs))}}function De(i,t){if(i&1&&(a(0,"div",76)(1,"div",77),l(2,"Model"),r(),a(3,"div",78),l(4),r()()),i&2){let e=d(2).$implicit;o(4),u(e.prompt.model)}}function Ie(i,t){if(i&1&&(a(0,"div",87)(1,"span",88),l(2),r()()),i&2){let e=t.$implicit;_("title",e),o(2),u(e)}}function ze(i,t){if(i&1&&(a(0,"section",73)(1,"div",74),l(2),r(),a(3,"div",86),P(4,Ie,3,2,"div",87,G),r()()),i&2){let e=d(2).$implicit;o(2),g("Files touched \xB7 ",e.filesTouched.length),o(2),O(e.filesTouched)}}function Re(i,t){i&1&&l(0," \u203A ")}function Fe(i,t){if(i&1&&(a(0,"span",94),l(1),r()),i&2){let e=d().$implicit;o(),u(e.input_summary)}}function $e(i,t){if(i&1&&(a(0,"span",95),l(1),r()),i&2){let e=d().$implicit,n=d(5);o(),u(n.fmtBytes(e.result_length))}}function Be(i,t){if(i&1&&(a(0,"pre",96),l(1),r()),i&2){let e=d().$implicit,n=d(5);o(),u(n.formatToolInput(e.input_json))}}function Ne(i,t){if(i&1){let e=$();a(0,"div",90)(1,"button",91),E("click",function(){let s=D(e).$implicit,c=d(5);return I(c.toggleToolInput(s.id))}),a(2,"span",92),p(3,Re,1,0),r(),a(4,"span",93),l(5),r(),p(6,Fe,2,1,"span",94),x(7,"span",31),p(8,$e,2,1,"span",95),r(),p(9,Be,2,1,"pre",96),r()}if(i&2){let e=t.$implicit,n=d(5);o(),z("has-input",!!e.input_json)("expanded",n.isToolInputExpanded(e.id)),_("disabled",!e.input_json),A("aria-expanded",n.isToolInputExpanded(e.id)),o(),z("open",n.isToolInputExpanded(e.id)),o(),m(e.input_json?3:-1),o(),C("color",n.toolColor(e.tool_name)),o(),u(e.tool_name),o(),m(e.input_summary?6:-1),o(2),m(e.result_length?8:-1),o(),m(e.input_json&&n.isToolInputExpanded(e.id)?9:-1)}}function je(i,t){if(i&1&&(a(0,"section",73)(1,"div",74),l(2),r(),a(3,"div",89),P(4,Ne,10,15,"div",90,ge),r()()),i&2){let e=d(2).$implicit,n=d(2);o(2),V("Tool calls \xB7 ",e.tools.length," \xB7 returned ",n.fmtBytes(e.toolBytes)),o(2),O(e.tools)}}function Le(i,t){if(i&1&&(a(0,"div",71),p(1,Pe,5,1,"section",73),p(2,Oe,4,1,"section",73),p(3,Ee,7,1,"section",73),a(4,"section",73)(5,"div",74),l(6,"Token breakdown"),r(),a(7,"div",75)(8,"div",76)(9,"div",77),l(10,"Input"),r(),a(11,"div",78),l(12),r()(),a(13,"div",76)(14,"div",77),l(15,"Output"),r(),a(16,"div",78),l(17),r()(),a(18,"div",76)(19,"div",77),l(20,"Cache write"),r(),a(21,"div",78),l(22),r()(),a(23,"div",76)(24,"div",77),l(25,"Cache read"),r(),a(26,"div",78),l(27),r()(),a(28,"div",76)(29,"div",77),l(30,"Cost"),r(),a(31,"div",79),l(32),r()(),p(33,Te,5,1,"div",76),p(34,De,5,1,"div",76),r()(),p(35,ze,6,1,"section",73),p(36,je,6,2,"section",73),r()),i&2){let e=d().$implicit,n=d(2);o(),m(e.prompt.text?1:-1),o(),m(e.prompt.assistant_text?2:-1),o(),m(e.prompt.thinking_text?3:-1),o(9),u(n.fmtTokens(e.prompt.input_tokens)),o(5),u(n.fmtTokens(e.prompt.output_tokens)),o(5),u(n.fmtTokens(e.prompt.cache_creation_tokens)),o(5),u(n.fmtTokens(e.prompt.cache_read_tokens)),o(5),g("$",e.prompt.cost_usd.toFixed(4)),o(),m(e.prompt.durationMs?33:-1),o(),m(e.prompt.model?34:-1),o(),m(e.filesTouched.length>0?35:-1),o(),m(e.tools.length>0?36:-1)}}function Ae(i,t){if(i&1){let e=$();a(0,"div",34)(1,"button",56),E("click",function(){let s=D(e).$implicit,c=d(2);return I(c.toggleExpand(s.prompt.id))}),a(2,"span",57),l(3),r(),x(4,"span",58),k(5,"number"),p(6,ye,3,3,"app-pill",59),p(7,ke,1,2,"app-icon",60),a(8,"span",61),p(9,Me,1,1)(10,Se,2,0,"span",62),r(),a(11,"span",63),x(12,"app-icon",64),a(13,"span",65),l(14),r()(),p(15,we,2,1,"span",66),a(16,"span",67),l(17),r(),a(18,"span",68),l(19),k(20,"number"),r(),a(21,"span",69),l(22),r(),x(23,"app-icon",70),r(),p(24,Le,37,12,"div",71),r()}if(i&2){let e=t.$implicit,n=d(2);o(),z("expanded",n.isExpanded(e.prompt.id)),A("aria-expanded",n.isExpanded(e.prompt.id)),o(2),u(n.fmtClock(e.prompt.ts)),o(),C("background",n.cacheColor(e.prompt.cache_read_tokens>0?e.prompt.cache_read_tokens/(e.prompt.input_tokens+e.prompt.cache_creation_tokens+e.prompt.cache_read_tokens||1):0)),_("title","Cache: "+K(5,22,e.prompt.cache_read_tokens)),o(2),m(e.prompt.is_sidechain===1?6:-1),o(),m(e.slashCommand?7:-1),o(2),m(e.prompt.text?9:10),o(3),_("size",11),o(2),u(e.tools.length),o(),m(e.prompt.durationMs?15:-1),o(2),u(n.fmtTokens(e.totalTokens)),o(),C("color",n.cacheColor(e.totalTokens>0?(e.prompt.cache_read_tokens||0)/e.totalTokens:0)),o(),g(" ",e.totalTokens>0?w(20,24,(e.prompt.cache_read_tokens||0)/e.totalTokens*100,"1.0-0"):0,"% "),o(2),C("color",e.prompt.cost_usd>2.5?"var(--error)":"var(--text-primary)"),o(),g("$",e.prompt.cost_usd.toFixed(2)),o(),_("size",14),o(),m(n.isExpanded(e.prompt.id)?24:-1)}}function Ve(i,t){i&1&&(a(0,"div",17),l(1,"No prompts logged for this session yet."),r())}function He(i,t){if(i&1&&(a(0,"span",102),l(1),r()),i&2){let e=d().$implicit;o(),g("\xD7",e.count)}}function qe(i,t){if(i&1&&(a(0,"span",99),x(1,"app-icon",101),l(2),p(3,He,2,1,"span",102),r()),i&2){let e=t.$implicit;o(),_("size",10),o(),g("",e.name," "),o(),m(e.count>1?3:-1)}}function Ue(i,t){if(i&1&&(a(0,"span",102),l(1),r()),i&2){let e=d().$implicit;o(),g("\xD7",e.count)}}function We(i,t){if(i&1&&(a(0,"span",100),x(1,"app-icon",103),l(2),p(3,Ue,2,1,"span",102),r()),i&2){let e=t.$implicit;o(),_("size",10),o(),g("",e.name," "),o(),m(e.count>1?3:-1)}}function Ge(i,t){if(i&1&&(a(0,"div",97)(1,"div",36),l(2,"Commands & skills"),r(),a(3,"div",98),P(4,qe,4,3,"span",99,de),P(6,We,4,3,"span",100,de),r()()),i&2){let e=d();o(4),O(e.slashCommands),o(2),O(e.skills)}}function Je(i,t){if(i&1&&(a(0,"div",36),l(1),r(),x(2,"app-h-bars",104),a(3,"div",105),l(4,"bar = call count"),r()),i&2){let e=d(),n=d(2);o(),g("Tools used \xB7 ",e.byTool.length),o(),_("items",e.byTool)("fmt",n.fmtTokensFn)("color",n.toolBarColor)}}function Ye(i,t){if(i&1&&(p(0,Ge,8,0,"div",97),p(1,Je,5,4)),i&2){let e=t;m(e.slashCommands.length||e.skills.length?0:-1),o(),m(e.byTool.length?1:-1)}}function Ke(i,t){if(i&1&&(a(0,"div",43)(1,"span",108),l(2),r(),a(3,"div",31),x(4,"app-bar",109),r(),a(5,"span",110),l(6),r()()),i&2){let e=t.$implicit,n=d(3);o(2),u(n.fmtClock(e.prompt.ts)),o(2),_("frac",e.prompt.cost_usd/n.maxPromptCost())("color",e.prompt.cost_usd>2.5?"var(--error)":"var(--accent)"),o(2),g("$",e.prompt.cost_usd.toFixed(2))}}function Qe(i,t){if(i&1&&(a(0,"div",106),l(1,"Cost per prompt"),r(),a(2,"div",107),P(3,Ke,7,4,"div",43,pe),r()),i&2){let e=d(2);o(3),O(e.groups())}}function Xe(i,t){if(i&1){let e=$();a(0,"div",16)(1,"div",21)(2,"div",22)(3,"div",23)(4,"div",24),l(5,"Cost"),r(),a(6,"div",25),l(7),r()(),a(8,"div",23)(9,"div",24),l(10,"Prompts"),r(),a(11,"div",26),l(12),r()(),a(13,"div",23)(14,"div",24),l(15,"Window"),r(),a(16,"div",27),l(17),r()(),a(18,"div",23)(19,"div",24),l(20,"Cache hit"),r(),a(21,"div",26),l(22),k(23,"number"),r()(),a(24,"div",23)(25,"div",24),l(26,"Tool calls"),r(),a(27,"div",26),l(28),r()()(),a(29,"div",28)(30,"span",29),l(31),r(),a(32,"span",30),l(33,"click a prompt for full detail"),r(),x(34,"div",31),a(35,"button",32),E("click",function(){D(e);let s=d();return I(s.expandAll())}),l(36,"Expand all"),r(),a(37,"button",32),E("click",function(){D(e);let s=d();return I(s.collapseAll())}),l(38,"Collapse all"),r()(),a(39,"div",33),P(40,Ae,25,27,"div",34,pe,!1,Ve,2,0,"div",17),r()(),a(43,"div",35)(44,"div",36),l(45,"Token mix"),r(),a(46,"div",37),x(47,"div",38)(48,"div",39)(49,"div",40)(50,"div",41),r(),a(51,"div",42)(52,"div",43),x(53,"span",44),a(54,"span",45),l(55,"Input"),r(),a(56,"span",46),l(57),r(),a(58,"span",47),l(59),k(60,"number"),r()(),a(61,"div",43),x(62,"span",48),a(63,"span",45),l(64,"Output"),r(),a(65,"span",46),l(66),r(),a(67,"span",47),l(68),k(69,"number"),r()(),a(70,"div",43),x(71,"span",49),a(72,"span",45),l(73,"Cache write"),r(),a(74,"span",46),l(75),r(),a(76,"span",47),l(77),k(78,"number"),r()(),a(79,"div",43),x(80,"span",50),a(81,"span",45),l(82,"Cache read"),r(),a(83,"span",46),l(84),r(),a(85,"span",47),l(86),k(87,"number"),r()()(),a(88,"div",51)(89,"div",43),x(90,"app-icon",52),a(91,"span",53),l(92,"Cache effectiveness"),r()(),a(93,"div",54)(94,"span",55),l(95),k(96,"number"),r(),a(97,"span",53),l(98,"of input served from cache"),r()()(),p(99,Ye,2,2),p(100,Qe,5,0),r()()}if(i&2){let e,n=t,s=d();o(7),g("$",n.total_cost_usd.toFixed(2)),o(5),u(n.prompt_count),o(5),V(" ",s.fmtClock(n.started_at)," \u2013 ",s.fmtClock(n.ended_at).split(" ").pop()," "),o(4),C("color",s.cacheColor(s.cacheReadRate())),o(),g(" ",w(23,34,s.cacheReadRate()*100,"1.0-0"),"% "),o(6),u(s.totalToolCalls()),o(3),g("Prompt timeline \xB7 ",s.groups().length),o(9),O(s.groups()),o(7),C("width",s.tokPct("input"),"%"),_("title","Input: "+s.fmtTokens(n.total_input_tokens)),o(),C("width",s.tokPct("output"),"%"),_("title","Output: "+s.fmtTokens(n.total_output_tokens)),o(),C("width",s.tokPct("cacheWrite"),"%"),_("title","Cache write: "+s.fmtTokens(n.total_cache_creation_tokens)),o(),C("width",s.tokPct("cacheRead"),"%"),_("title","Cache read: "+s.fmtTokens(n.total_cache_read_tokens)),o(7),u(s.fmtTokens(n.total_input_tokens)),o(2),g("",w(60,37,s.tokPct("input"),"1.0-0"),"%"),o(7),u(s.fmtTokens(n.total_output_tokens)),o(2),g("",w(69,40,s.tokPct("output"),"1.0-0"),"%"),o(7),u(s.fmtTokens(n.total_cache_creation_tokens)),o(2),g("",w(78,43,s.tokPct("cacheWrite"),"1.0-0"),"%"),o(7),u(s.fmtTokens(n.total_cache_read_tokens)),o(2),g("",w(87,46,s.tokPct("cacheRead"),"1.0-0"),"%"),o(4),_("size",13),o(5),g("",w(96,49,s.cacheReadRate()*100,"1.0-0"),"%"),o(4),m((e=s.summaryData())?99:-1,e),o(),m(s.groups().length>0?100:-1)}}function Ze(i,t){i&1&&(a(0,"div",17),l(1,"Session not found."),r())}var et=5e3,tt=/<command-name>([^<]+)<\/command-name>/,nt=new Set(["Read","Edit","Write","NotebookEdit","MultiEdit"]),ce=class i{api=M(te);route=M(Z);sanitizer=M(X);destroyRef=M(F);refresh=M(ne);liveMode=S("idle");idSig=se(this.route.paramMap,{initialValue:this.route.snapshot.paramMap});id=h(()=>this.idSig().get("id")??"");localRefreshing=S(!1);expandedIds=S(new Set);expandedToolInputs=S(new Set);resource=H(this.api,()=>{let t=this.id();return t?`/api/claude/session/${encodeURIComponent(t)}`:null});summary=H(this.api,()=>{let t=this.id();return t?`/api/claude/session/${encodeURIComponent(t)}/summary`:null});session=h(()=>this.resource.state().data?.session??null);prompts=h(()=>this.resource.state().data?.prompts??[]);toolCalls=h(()=>this.resource.state().data?.toolCalls??[]);summaryData=h(()=>this.summary.state().data??null);groups=h(()=>{let t=this.prompts(),e=this.toolCalls(),n=new Map;for(let s of e){let c=n.get(s.prompt_id)??[];c.push(s),n.set(s.prompt_id,c)}return t.map(s=>{let c=n.get(s.id)??[],v=(s.input_tokens||0)+(s.output_tokens||0)+(s.cache_creation_tokens||0)+(s.cache_read_tokens||0),y=c.reduce((b,R)=>b+(R.result_length||0),0),f=s.text?tt.exec(s.text):null,T=f?f[1].trim():null,q=c.length>0?Math.max(...c.map(b=>b.ts||0)):0,me=q>s.ts?q-s.ts:0,N=new Map;for(let b of c)N.set(b.tool_name,(N.get(b.tool_name)??0)+1);let ue=Array.from(N.entries()).map(([b,R])=>({name:b,count:R,color:this.toolColor(b)})).sort((b,R)=>R.count-b.count),U=new Set;for(let b of c)nt.has(b.tool_name)&&b.input_summary&&U.add(b.input_summary);return{prompt:s,tools:c,totalTokens:v,toolBytes:y,slashCommand:T,durationMs:me,toolBreakdown:ue,filesTouched:Array.from(U)}})});totalToolCalls=h(()=>this.toolCalls().length);totalTokens=h(()=>{let t=this.session();return t&&(t.total_input_tokens||0)+(t.total_output_tokens||0)+(t.total_cache_creation_tokens||0)+(t.total_cache_read_tokens||0)||1});maxPromptCost=h(()=>{let t=this.groups();return Math.max(1e-4,...t.map(e=>e.prompt.cost_usd||0))});toolBarColor=t=>{let e=t.name;return e==="Read"?"var(--node-spec)":e==="Edit"||e==="Write"||e==="MultiEdit"?"var(--accent)":e==="Bash"?"var(--warn)":e==="Grep"||e==="Glob"?"var(--node-test)":e==="Task"?"var(--node-route)":e.startsWith("mcp__")?"var(--success)":"var(--node-code)"};cacheReadRate=h(()=>{let t=this.session();if(!t)return 0;let e=(t.total_input_tokens||0)+(t.total_cache_creation_tokens||0)+(t.total_cache_read_tokens||0);return e>0?(t.total_cache_read_tokens||0)/e:0});constructor(){B(()=>{!this.resource.state().loading&&this.localRefreshing()&&this.localRefreshing.set(!1)});let t=null,e=null,n=()=>{e!==null&&(clearInterval(e),e=null)},s=()=>{e===null&&(e=setInterval(()=>{typeof document<"u"&&document.visibilityState==="visible"&&this.resource.refetch()},et))},c=()=>{t&&(t(),t=null)},v=f=>{f&&(c(),t=this.api.openEventStream(`/api/claude/session/${encodeURIComponent(f)}/events`,T=>{T==="prompt_added"||T==="tool_call_added"?this.resource.refetch():T==="snapshot"?(this.liveMode.set("live"),n()):T==="stream_error"&&(this.liveMode.set("polling"),s())},()=>{this.liveMode.set("polling"),s()},["prompt_added","tool_call_added","snapshot","stream_error"]))},y=()=>{if(!(typeof document>"u"))if(document.visibilityState==="visible"){this.resource.refetch();let f=this.id();f&&this.liveMode()==="polling"&&v(f)}else n()};B(()=>{let f=this.id();if(c(),n(),!f){this.liveMode.set("idle");return}v(f)}),typeof document<"u"&&document.addEventListener("visibilitychange",y),this.destroyRef.onDestroy(()=>{c(),n(),this.liveMode.set("idle"),typeof document<"u"&&document.removeEventListener("visibilitychange",y)})}async forceRefresh(){this.localRefreshing.set(!0),await this.refresh.triggerGlobalRefresh()}isExpanded(t){return this.expandedIds().has(t)}toggleExpand(t){this.expandedIds.update(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n})}expandAll(){this.expandedIds.set(new Set(this.prompts().map(t=>t.id)))}collapseAll(){this.expandedIds.set(new Set)}isToolInputExpanded(t){return this.expandedToolInputs().has(t)}toggleToolInput(t){this.expandedToolInputs.update(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n})}renderAssistant(t){return this.sanitizer.bypassSecurityTrustHtml(re(t??""))}formatToolInput(t){if(!t)return"";try{return JSON.stringify(JSON.parse(t),null,2)}catch{return t}}fmtBytes(t){return t?t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} kB`:`${(t/(1024*1024)).toFixed(1)} MB`:"0"}fmtTokens(t){return t<1e3?`${t}`:t<1e6?`${(t/1e3).toFixed(1)}k`:`${(t/1e6).toFixed(2)}M`}fmtTokensFn=t=>this.fmtTokens(t);fmtClock(t){if(!t)return"";try{let e=new Date(t),n=new Date;n.setHours(0,0,0,0);let s=864e5,c=n.getTime()-new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime(),v=e.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"});return c===0?v:c===s?"Yest "+v:e.toLocaleDateString([],{month:"short",day:"numeric"})+" "+v}catch{return String(t)}}fmtDurationSec(t,e){if(!t||!e)return"";let n=Math.round((e-t)/1e3);if(n<60)return`${n}s`;let s=Math.floor(n/60),c=n%60;if(s<60)return`${s}m ${c}s`;let v=Math.floor(s/60),y=s%60;return`${v}h ${y}m`}fmtDurationMs(t){if(!t||t<=0)return"";if(t<1e3)return`${t}ms`;let e=t/1e3;if(e<60)return`${e.toFixed(e<10?1:0)}s`;let n=Math.floor(e/60),s=Math.round(e%60);if(n<60)return`${n}m ${s}s`;let c=Math.floor(n/60),v=n%60;return`${c}h ${v}m`}basename(t){if(!t)return"";if(t.length<=40)return t;let e=t.split("/");return e.length<=2?t:"\u2026/"+e.slice(-2).join("/")}toolColor(t){return t==="Read"?"var(--node-spec)":t==="Edit"||t==="Write"||t==="MultiEdit"||t==="NotebookEdit"?"var(--accent)":t==="Bash"?"var(--warn)":t==="Grep"||t==="Glob"?"var(--node-test)":t==="Task"?"var(--node-route)":t.startsWith("mcp__")?"var(--success)":"var(--text-secondary)"}cacheColor(t){return t>=.7?"var(--success)":t>=.5?"var(--warn)":"var(--error)"}tokPct(t){let e=this.session();if(!e)return 0;let n=this.totalTokens();return(t==="input"?e.total_input_tokens||0:t==="output"?e.total_output_tokens||0:t==="cacheWrite"?e.total_cache_creation_tokens||0:e.total_cache_read_tokens||0)/n*100}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=W({type:i,selectors:[["app-session-detail"]],decls:22,vars:20,consts:[[1,"sd-root"],[1,"page-head"],[1,"back-link","btn","btn-ghost","btn-sm",3,"routerLink"],["name","chevronLeft",3,"size"],[1,"title-block"],[1,"title"],[1,"mono","session-id"],[3,"color","bg"],[1,"live-pill",3,"title"],[1,"dot"],[1,"sub"],[1,"page-actions"],["type","button","aria-label","Refresh session detail",1,"btn","btn-secondary","btn-sm","refresh-btn",3,"click","disabled"],["name","refresh",3,"size"],[1,"loading"],[1,"error"],[1,"sd-body"],[1,"empty"],[1,"error-title"],[1,"error-detail"],[1,"btn","btn-secondary","btn-sm",3,"click"],[1,"scroll-y","sd-main"],[1,"stat-strip"],[1,"stat"],[1,"stat-lbl"],[1,"stat-val","cost"],[1,"stat-val","mono"],[1,"stat-val","mono",2,"font-size","12px"],[1,"row","gap-8",2,"justify-content","space-between","margin-bottom","8px"],[1,"eyebrow"],[1,"muted",2,"font-size","11px"],[1,"grow"],["type","button",1,"btn","btn-ghost","btn-sm",3,"click"],[1,"col","gap-6",2,"padding-bottom","16px"],[1,"prompt","card"],[1,"scroll-y","sd-rail"],[1,"eyebrow",2,"margin-bottom","10px"],[1,"tok-bar",2,"margin-bottom","10px"],[1,"tok-seg",2,"background","var(--node-spec)",3,"title"],[1,"tok-seg",2,"background","var(--node-code)",3,"title"],[1,"tok-seg",2,"background","var(--warn)",3,"title"],[1,"tok-seg",2,"background","var(--node-route)",3,"title"],[1,"col","gap-6",2,"margin-bottom","20px"],[1,"row","gap-8"],[2,"width","9px","height","9px","border-radius","2px","background","var(--node-spec)","flex-shrink","0"],[1,"muted","grow",2,"font-size","11.5px"],[1,"mono","tabular",2,"font-size","11.5px"],[1,"mono","tabular","muted",2,"font-size","10px","width","32px","text-align","right"],[2,"width","9px","height","9px","border-radius","2px","background","var(--node-code)","flex-shrink","0"],[2,"width","9px","height","9px","border-radius","2px","background","var(--warn)","flex-shrink","0"],[2,"width","9px","height","9px","border-radius","2px","background","var(--node-route)","flex-shrink","0"],[1,"cache-card",2,"margin-bottom","20px"],["name","database",2,"color","var(--success)",3,"size"],[1,"muted",2,"font-size","10.5px"],[1,"row",2,"align-items","baseline","gap","8px","margin-top","4px"],[1,"tabular",2,"font-size","24px","font-weight","700","color","var(--success)"],["type","button",1,"prompt-head","row","gap-10",3,"click"],[1,"mono","muted",2,"font-size","10.5px","width","52px","flex-shrink","0"],[2,"width","8px","height","8px","border-radius","50%","flex-shrink","0",3,"title"],[2,"flex-shrink","0",3,"color","bg"],["name","command",2,"color","var(--node-code)","flex-shrink","0",3,"size","title"],[1,"grow",2,"font-size","12.5px","overflow","hidden","text-overflow","ellipsis","white-space","nowrap","min-width","0"],[1,"muted"],[1,"row","gap-4",2,"flex-shrink","0"],["name","wrench",2,"color","var(--text-muted)",3,"size"],[1,"mono","tabular","muted",2,"font-size","11px"],["title","Wall-clock duration for this prompt",1,"mono","tabular","muted",2,"font-size","11px","width","44px","text-align","right","flex-shrink","0"],[1,"mono","tabular","muted",2,"font-size","11px","width","50px","text-align","right","flex-shrink","0"],[1,"mono","tabular",2,"font-size","11px","width","38px","text-align","right","flex-shrink","0"],[1,"mono","tabular",2,"font-size","13px","font-weight","600","width","54px","text-align","right","flex-shrink","0"],["name","chevronRight",2,"color","var(--text-muted)","flex-shrink","0",3,"size"],[1,"prompt-body"],["name","bot",3,"size"],[1,"prompt-section"],[1,"section-lbl"],[1,"kv-row"],[1,"kv"],[1,"kv-lbl"],[1,"kv-val","mono"],[1,"kv-val","mono","cost"],[1,"prompt-pre"],[1,"assistant-body","md-content",3,"innerHTML"],[1,"thinking-details"],[1,"section-lbl","thinking-summary"],[1,"muted","xs"],[1,"thinking-body","md-content",3,"innerHTML"],[1,"files-touched"],[1,"file-row",3,"title"],[1,"file-path","mono"],[1,"tools"],[1,"tool-block"],["type","button",1,"tool-row",3,"click","disabled"],["aria-hidden","true",1,"tool-chevron","mono"],[1,"tool-name","mono"],[1,"tool-input","mono"],[1,"tool-bytes","mono","muted"],[1,"tool-input-json","mono"],[2,"margin-bottom","20px"],[1,"row","gap-6",2,"flex-wrap","wrap"],[1,"pill",2,"color","var(--node-code)","background","var(--node-code-soft)","font-family","var(--font-mono)","font-weight","500"],[1,"pill",2,"color","var(--node-test)","background","var(--node-test-soft)","font-family","var(--font-mono)","font-weight","500"],["name","command",3,"size"],[2,"opacity","0.7"],["name","sparkles",3,"size"],["valueKey","calls",3,"items","fmt","color"],[1,"muted",2,"font-size","10px","margin-top","8px"],[1,"eyebrow",2,"margin","20px 0 10px"],[1,"col","gap-5"],[1,"mono","muted",2,"font-size","10px","width","44px","flex-shrink","0"],[3,"frac","color"],[1,"mono","tabular",2,"font-size","10.5px","width","40px","text-align","right"]],template:function(e,n){if(e&1&&(a(0,"div",0)(1,"header",1)(2,"a",2),x(3,"app-icon",3),l(4," Sessions "),r(),a(5,"div",4)(6,"div",5)(7,"span",6),l(8),r(),p(9,fe,2,3,"app-pill",7),a(10,"span",8),x(11,"span",9),l(12),r()(),p(13,be,3,2,"div",10),r(),a(14,"div",11)(15,"button",12),E("click",function(){return n.forceRefresh()}),x(16,"app-icon",13),l(17),r()()(),p(18,he,2,0,"div",14)(19,Ce,7,1,"div",15)(20,Xe,101,52,"div",16)(21,Ze,2,0,"div",17),r()),e&2){let s,c,v;o(2),_("routerLink",Y(19,xe)),o(),_("size",14),o(5),u(n.id().slice(0,12)),o(),m((s=n.session())!=null&&s.last_model?9:-1),o(),z("live",n.liveMode()==="live")("polling",n.liveMode()==="polling")("idle",n.liveMode()==="idle"),_("title",n.liveMode()==="live"?"Live \u2014 new prompts push as Claude Code writes them":n.liveMode()==="polling"?"Polling \u2014 SSE unavailable, refetching every 5s":"Idle \u2014 live updates paused"),o(2),g(" ",n.liveMode()==="live"?"Live":n.liveMode()==="polling"?"Polling":"Idle"," "),o(),m((c=n.session())?13:-1,c),o(2),z("spinning",n.localRefreshing()||n.refresh.loading()),_("disabled",n.refresh.loading()),o(),_("size",13),o(),g(" ",n.localRefreshing()||n.refresh.loading()?"Refreshing\u2026":"Refresh"," "),o(),m(n.resource.state().loading&&!n.session()?18:n.resource.state().error?19:(v=n.session())?20:21,v)}},dependencies:[ee,ie,ae,oe,le,Q],styles:['@charset "UTF-8";[_nghost-%COMP%]{display:contents}.sd-root[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;min-height:0;padding:16px 18px 0}.page-head[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px;flex-wrap:wrap}.back-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;color:var(--text-muted);text-decoration:none}.title-block[_ngcontent-%COMP%]{flex:1;min-width:250px}.title[_ngcontent-%COMP%]{font-size:var(--fs-title);font-weight:600;letter-spacing:-.01em;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.session-id[_ngcontent-%COMP%]{color:var(--accent);font-size:14px}.live-pill[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:999px;white-space:nowrap;cursor:help}.live-pill[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{width:7px;height:7px;border-radius:50%;flex-shrink:0}.live-pill.live[_ngcontent-%COMP%]{color:var(--success);background:var(--success-soft)}.live-pill.live[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{background:var(--success);animation:_ngcontent-%COMP%_live-pulse 1.6s ease-in-out infinite}.live-pill.polling[_ngcontent-%COMP%]{color:var(--warn);background:var(--warn-soft)}.live-pill.polling[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{background:var(--warn)}.live-pill.idle[_ngcontent-%COMP%]{color:var(--text-muted);background:var(--bg-canvas)}.live-pill.idle[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{background:var(--text-muted)}@keyframes _ngcontent-%COMP%_live-pulse{0%,to{opacity:.4;transform:scale(.85)}50%{opacity:1;transform:scale(1.05)}}.sub[_ngcontent-%COMP%]{color:var(--text-secondary);font-size:12px;margin-top:2px}.page-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.refresh-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px}.refresh-btn.spinning[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_spin .9s linear infinite;color:var(--accent)}.refresh-btn[_ngcontent-%COMP%]:disabled{cursor:progress;opacity:.8}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.sd-body[_ngcontent-%COMP%]{flex:1;display:flex;min-height:0;gap:0}.sd-main[_ngcontent-%COMP%]{flex:1;min-width:0;padding:0 0 18px}.sd-rail[_ngcontent-%COMP%]{width:290px;flex-shrink:0;border-left:1px solid var(--border-subtle);background:var(--bg-panel);padding:16px}.stat-strip[_ngcontent-%COMP%]{display:flex;gap:24px;padding:12px 0;border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);margin-bottom:16px}.stat[_ngcontent-%COMP%] .stat-lbl[_ngcontent-%COMP%]{font-size:10.5px;color:var(--text-muted)}.stat[_ngcontent-%COMP%] .stat-val[_ngcontent-%COMP%]{font-size:16px;font-weight:600;margin-top:2px;color:var(--text-primary);font-variant-numeric:tabular-nums}.stat-val.cost[_ngcontent-%COMP%]{color:var(--accent)}.tok-bar[_ngcontent-%COMP%]{display:flex;height:10px;border-radius:999px;overflow:hidden}.tok-seg[_ngcontent-%COMP%]{height:100%}.cache-card[_ngcontent-%COMP%]{background:var(--success-soft);border:1px solid rgba(70,194,107,.25);border-radius:8px;padding:10px 12px}.prompt.card[_ngcontent-%COMP%]{background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:9px;overflow:hidden;transition:border-color .12s}.prompt.card[_ngcontent-%COMP%]:hover{border-color:var(--border-strong)}.prompt-head[_ngcontent-%COMP%]{width:100%;padding:11px 12px;background:transparent;border:0;text-align:left;cursor:pointer;color:inherit;font-family:inherit}.prompt-head[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.prompt-head[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.prompt-body[_ngcontent-%COMP%]{border-top:1px solid var(--border-subtle);padding:14px 16px;background:var(--bg-canvas)}.prompt-section[_ngcontent-%COMP%]{margin-bottom:14px}.prompt-section[_ngcontent-%COMP%]:last-child{margin-bottom:0}.section-lbl[_ngcontent-%COMP%]{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:6px}.prompt-pre[_ngcontent-%COMP%]{margin:0;padding:10px 12px;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:7px;font-family:var(--font-mono);font-size:11.5px;line-height:1.55;color:var(--text-primary);white-space:pre-wrap;word-break:break-word;max-height:280px;overflow-y:auto}.kv-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:10px 18px}.kv[_ngcontent-%COMP%] .kv-lbl[_ngcontent-%COMP%]{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.kv[_ngcontent-%COMP%] .kv-val[_ngcontent-%COMP%]{font-size:12.5px;font-weight:600;margin-top:2px;color:var(--text-primary);font-variant-numeric:tabular-nums}.kv-val.cost[_ngcontent-%COMP%]{color:var(--accent)}.tools[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:3px}.tool-block[_ngcontent-%COMP%]{display:flex;flex-direction:column}.tool-row[_ngcontent-%COMP%]{appearance:none;background:var(--bg-panel);border:1px solid var(--border-subtle);color:inherit;font-family:inherit;text-align:left;display:flex;align-items:center;gap:8px;width:100%;padding:5px 10px;border-radius:6px;font-size:11.5px;cursor:pointer}.tool-row[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--bg-hover)}.tool-row[_ngcontent-%COMP%]:disabled{cursor:default}.tool-row[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.tool-row.expanded[_ngcontent-%COMP%]{border-bottom-left-radius:0;border-bottom-right-radius:0}.tool-chevron[_ngcontent-%COMP%]{width:10px;color:var(--text-muted);transition:transform .12s;font-size:12px;flex-shrink:0;display:inline-block}.tool-chevron.open[_ngcontent-%COMP%]{transform:rotate(90deg);color:var(--accent)}.tool-name[_ngcontent-%COMP%]{font-weight:600;flex-shrink:0}.tool-input[_ngcontent-%COMP%]{color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:11px}.tool-bytes[_ngcontent-%COMP%]{font-size:10.5px;flex-shrink:0}.tool-input-json[_ngcontent-%COMP%]{margin:0;padding:10px 14px;background:var(--bg-canvas);border:1px solid var(--border-subtle);border-top:0;border-radius:0 0 6px 6px;font-family:var(--font-mono);font-size:11px;line-height:1.5;color:var(--text-primary);white-space:pre-wrap;word-break:break-word;max-height:320px;overflow-y:auto}.assistant-body[_ngcontent-%COMP%]{padding:10px 14px;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:7px;font-size:12.5px;line-height:1.55;color:var(--text-primary);max-height:480px;overflow-y:auto;overflow-wrap:anywhere}.thinking-details[_ngcontent-%COMP%]{background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:7px;padding:8px 12px}.thinking-summary[_ngcontent-%COMP%]{cursor:pointer;list-style:none;display:flex;align-items:center;gap:6px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.thinking-summary[_ngcontent-%COMP%]::-webkit-details-marker{display:none}.thinking-summary[_ngcontent-%COMP%]:before{content:"\\203a";display:inline-block;transition:transform .12s;font-size:14px;color:var(--text-muted)}.thinking-details[open][_ngcontent-%COMP%] .thinking-summary[_ngcontent-%COMP%]:before{transform:rotate(90deg);color:var(--accent)}.thinking-body[_ngcontent-%COMP%]{margin-top:10px;padding:8px 0 0;border-top:1px dashed var(--border-subtle);font-size:12px;line-height:1.55;color:var(--text-secondary);max-height:320px;overflow-y:auto;overflow-wrap:anywhere}.files-touched[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:3px;font-size:11.5px;max-height:180px;overflow-y:auto;padding:6px 10px;background:var(--bg-canvas);border:1px solid var(--border-subtle);border-radius:6px}.files-touched[_ngcontent-%COMP%] .file-row[_ngcontent-%COMP%]{display:flex;align-items:center;min-width:0}.files-touched[_ngcontent-%COMP%] .file-path[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-secondary)}.loading[_ngcontent-%COMP%]{padding:40px 18px;text-align:center;color:var(--text-muted);font-size:13px}.error[_ngcontent-%COMP%]{padding:16px;margin:12px 0;border-radius:8px;border:1px solid rgba(255,90,90,.35);background:var(--error-soft);color:var(--error);display:flex;flex-direction:column;gap:8px;align-items:flex-start}.error-title[_ngcontent-%COMP%]{font-weight:600;font-size:13px}.error-detail[_ngcontent-%COMP%]{font-size:12px;color:var(--text-secondary)}.empty[_ngcontent-%COMP%]{padding:30px 18px;color:var(--text-muted);font-size:12.5px;text-align:center}.md-content[_ngcontent-%COMP%] .md-h1[_ngcontent-%COMP%]{font-size:14px;font-weight:650;color:var(--text-primary);letter-spacing:-.01em;margin:0 0 8px}.md-content[_ngcontent-%COMP%] .md-h2[_ngcontent-%COMP%]{font-size:12.5px;font-weight:650;color:var(--text-primary);margin:14px 0 4px;padding-bottom:3px;border-bottom:1px solid var(--border-subtle)}.md-content[_ngcontent-%COMP%] .md-h3[_ngcontent-%COMP%]{font-size:12px;font-weight:650;color:var(--text-primary);margin:12px 0 4px}.md-content[_ngcontent-%COMP%] .md-p[_ngcontent-%COMP%]{font-size:12.5px;line-height:1.6;color:var(--text-primary);margin:0 0 4px;overflow-wrap:anywhere}.md-content[_ngcontent-%COMP%] .md-p[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{color:var(--text-primary);font-weight:650}.md-content[_ngcontent-%COMP%] .md-list[_ngcontent-%COMP%], .md-content[_ngcontent-%COMP%] .md-ol[_ngcontent-%COMP%]{padding:0;margin:4px 0 6px}.md-content[_ngcontent-%COMP%] .md-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%], .md-content[_ngcontent-%COMP%] .md-ol[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{position:relative;padding:2px 0 2px 20px;font-size:12.5px;line-height:1.55;color:var(--text-primary);overflow-wrap:anywhere}.md-content[_ngcontent-%COMP%] .md-list[_ngcontent-%COMP%]{list-style:none}.md-content[_ngcontent-%COMP%] .md-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:before{content:"\\2022";position:absolute;left:4px;top:1px;color:var(--text-faint)}.md-content[_ngcontent-%COMP%] .md-spacer[_ngcontent-%COMP%]{height:5px}.md-content[_ngcontent-%COMP%] .md-inline-code[_ngcontent-%COMP%]{font-size:11px;background:var(--bg-canvas);padding:1px 5px;border-radius:3px;border:1px solid var(--border-subtle);color:var(--node-spec)}.md-content[_ngcontent-%COMP%] .md-blockquote[_ngcontent-%COMP%]{margin:5px 0;padding:6px 10px;border-left:3px solid var(--accent);background:var(--accent-soft);color:var(--text-secondary);font-size:12px;line-height:1.5;border-radius:0 5px 5px 0}.md-content[_ngcontent-%COMP%] .md-pre[_ngcontent-%COMP%]{position:relative;margin:6px 0 8px;padding:10px 12px;background:var(--bg-canvas);border:1px solid var(--border-subtle);border-radius:6px;overflow-x:auto}.md-content[_ngcontent-%COMP%] .md-pre[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{display:block;font-size:11px;line-height:1.5;color:var(--text-primary);white-space:pre}.md-content[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child{margin-top:0}'],changeDetection:0})};export{ce as SessionDetail};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as D}from"./chunk-X2HTISHL.js";import{a as $}from"./chunk-UYC52MBC.js";import{a as R}from"./chunk-WDU3WICG.js";import{
|
|
1
|
+
import{a as D}from"./chunk-X2HTISHL.js";import{a as $}from"./chunk-UYC52MBC.js";import{a as R}from"./chunk-WDU3WICG.js";import{c as I}from"./chunk-GR72OOCN.js";import{c as F}from"./chunk-SHPTC4RL.js";import{a as O}from"./chunk-7RNS77UP.js";import{a as z}from"./chunk-E44X4RH2.js";import{Aa as c,Ga as h,I as k,Ia as m,Ka as p,M as f,N as u,Va as l,W,Wa as y,Xa as b,bb as _,ea as o,ka as P,lb as V,ra as w,sa as x,ua as M,va as v,wa as C,xa as s,ya as i,za as r,zb as j}from"./chunk-PDN6QYGJ.js";import{a as S,b as T}from"./chunk-Q7L6LLAK.js";var g=()=>[],A=(t,n)=>n.workflow.name,N=(t,n)=>n.name;function L(t,n){t&1&&c(0,"app-pick-project-empty",0)}function G(t,n){if(t&1&&(i(0,"code",15),l(1),r()),t&2){let e=n.$implicit;o(),y(e)}}function H(t,n){if(t&1&&(i(0,"code",17),l(1),r()),t&2){let e=n.$implicit;o(),b("$",e.name)}}function Q(t,n){if(t&1&&(i(0,"span",16),l(1,"inputs"),r(),v(2,H,2,1,"code",17,N)),t&2){let e=p().$implicit;o(2),C(e.workflow.inputs??_(0,g))}}function Y(t,n){if(t&1){let e=h();i(0,"div",4)(1,"div",6)(2,"span",7),l(3),r(),i(4,"app-pill",8),l(5),r(),c(6,"span",9),i(7,"button",10),m("click",function(){let d=f(e).$implicit,E=p(2);return u(E.openModal(d))}),c(8,"app-icon",11),l(9," Run "),r()(),i(10,"div",12),l(11),r(),i(12,"div",13)(13,"span",14),l(14,"requires"),r(),v(15,G,2,1,"code",15,M),w(17,Q,4,1),r()()}if(t&2){let e=n.$implicit,a=p(2);o(3),y(e.workflow.name),o(),s("color",a.scopeColor[e.scope])("bg",a.scopeBg[e.scope]),o(),y(e.scope),o(3),s("size",12),o(3),y(e.workflow.description||"\u2014"),o(4),C(e.workflow.requires??_(7,g)),o(2),x((e.workflow.inputs??_(8,g)).length>0?17:-1)}}function J(t,n){t&1&&(i(0,"span",33),l(1," *"),r())}function K(t,n){if(t&1){let e=h();i(0,"div",31)(1,"label",32),l(2),w(3,J,2,0,"span",33),r(),i(4,"input",34),m("input",function(d){let E=f(e).$implicit,B=p(4);return u(B.setVal(E.name,d.target.value))}),r()()}if(t&2){let e=n.$implicit,a=p(4);o(2),b(" ",e.name," "),o(),x(e.required?3:-1),o(),s("placeholder",e.description||e.name)("value",a.modalVals()[e.name]||"")}}function U(t,n){if(t&1&&v(0,K,5,4,"div",31,N),t&2){let e=p();C(e.workflow.inputs??_(0,g))}}function X(t,n){t&1&&(i(0,"div",27),l(1,"No inputs required."),r())}function Z(t,n){if(t&1&&(i(0,"app-pill"),c(1,"app-icon",35),l(2),r()),t&2){let e=n.$implicit;o(),s("size",10),o(),b(" ",e," ")}}function ee(t,n){if(t&1&&(i(0,"div",28),v(1,Z,3,2,"app-pill",null,M),r()),t&2){let e=p();o(),C(e.workflow.requires??_(0,g))}}function te(t,n){if(t&1){let e=h();i(0,"div",18),m("mousedown",function(){f(e);let d=p(2);return u(d.closeModal())}),i(1,"div",19),m("mousedown",function(d){return d.stopPropagation()}),i(2,"div",20),c(3,"app-icon",21),i(4,"span",22),l(5),r(),i(6,"button",23),m("click",function(){f(e);let d=p(2);return u(d.closeModal())}),c(7,"app-icon",24),r()(),i(8,"div",25)(9,"div",26),l(10),r(),w(11,U,2,1)(12,X,2,0,"div",27),w(13,ee,3,1,"div",28),r(),i(14,"div",29)(15,"button",30),m("click",function(){f(e);let d=p(2);return u(d.closeModal())}),l(16,"Cancel"),r(),i(17,"button",10),m("click",function(){f(e);let d=p(2);return u(d.launchRun())}),c(18,"app-icon",11),l(19," Launch run "),r()()()()}if(t&2){let e=n;o(3),s("size",16),o(2),y(e.workflow.name),o(2),s("size",14),o(3),b(" ",e.workflow.description," "),o(),x((e.workflow.inputs??_(7,g)).length>0?11:12),o(2),x((e.workflow.requires??_(8,g)).length>0?13:-1),o(5),s("size",13)}}function ne(t,n){if(t&1&&(i(0,"div",1),c(1,"app-page-head",2),i(2,"div",3),v(3,Y,18,9,"div",4,A),r()(),w(5,te,20,9,"div",5)),t&2){let e,a=p();o(3),C(a.entries()),o(2),x((e=a.modalEntry())?5:-1,e)}}var q=class t{api=k(z);projects=k(O);router=k(F);resource=I(this.api,()=>`/api/workflows${this.projects.projectQuery()}`);entries=V(()=>this.resource.state().data?.workflows??[]);modalEntry=W(null);modalVals=W({});scopeColor={bundled:"var(--node-spec)",global:"var(--node-code)",project:"var(--node-route)"};scopeBg={bundled:"color-mix(in srgb, var(--node-spec) 14%, transparent)",global:"color-mix(in srgb, var(--node-code) 14%, transparent)",project:"color-mix(in srgb, var(--node-route) 14%, transparent)"};openModal(n){this.modalVals.set({}),this.modalEntry.set(n)}closeModal(){this.modalEntry.set(null)}setVal(n,e){this.modalVals.update(a=>T(S({},a),{[n]:e}))}async launchRun(){this.modalEntry()&&(this.closeModal(),this.router.navigate(["/runs"]))}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=P({type:t,selectors:[["app-workflows"]],decls:2,vars:1,consts:[["surface","Workflows"],[1,"scroll-y","wf-page"],["icon","workflow","title","Workflows","sub","Run a YAML-defined DAG of agent, shell and approval steps"],[1,"wf-grid"],[1,"card","card-pad","wf-card"],[1,"wf-overlay"],[1,"row","gap-8"],[1,"mono","wf-name"],[3,"color","bg"],[1,"grow"],["type","button",1,"btn","btn-primary","btn-sm",3,"click"],["name","play",3,"size"],[1,"secondary","wf-desc"],[1,"row","gap-6","wf-footer"],[1,"muted",2,"font-size","10.5px"],[1,"mono","wf-req-chip"],[1,"muted",2,"font-size","10.5px","margin-left","6px"],[1,"mono","wf-inp-chip"],[1,"wf-overlay",3,"mousedown"],[1,"wf-modal",3,"mousedown"],[1,"row","gap-10","wf-modal-head"],["name","workflow",2,"color","var(--accent)",3,"size"],[1,"mono","grow",2,"font-weight","600"],["type","button",1,"btn","btn-ghost","btn-xs",3,"click"],["name","x",3,"size"],[1,"wf-modal-body"],[1,"secondary",2,"font-size","12.5px","margin-bottom","16px","line-height","1.55"],[1,"muted",2,"font-size","12px","padding","8px 0"],[1,"row","gap-6",2,"margin-top","6px","margin-bottom","4px"],[1,"row","gap-8","wf-modal-foot"],["type","button",1,"btn","btn-ghost","btn-sm",3,"click"],[2,"margin-bottom","12px"],[1,"eyebrow",2,"display","block","margin-bottom","5px"],[2,"color","var(--error)"],[1,"input","mono",2,"width","100%",3,"input","placeholder","value"],["name","check",3,"size"]],template:function(e,a){e&1&&w(0,L,1,0,"app-pick-project-empty",0)(1,ne,6,1),e&2&&x(a.resource.state().noProject?0:1)},dependencies:[R,$,D,j],styles:["[_nghost-%COMP%]{display:contents}.wf-page[_ngcontent-%COMP%]{flex:1;padding:18px}.wf-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.wf-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:10px}.wf-name[_ngcontent-%COMP%]{font-size:13.5px;font-weight:600}.wf-desc[_ngcontent-%COMP%]{font-size:12.5px;line-height:1.5;min-height:36px}.wf-footer[_ngcontent-%COMP%]{flex-wrap:wrap;border-top:1px solid var(--border-subtle);padding-top:10px}.wf-req-chip[_ngcontent-%COMP%]{font-size:10.5px;color:var(--text-secondary);background:var(--bg-canvas);padding:1px 6px;border-radius:4px;font-family:var(--font-mono)}.wf-inp-chip[_ngcontent-%COMP%]{font-size:10.5px;color:var(--node-spec);background:var(--node-spec-soft);padding:1px 6px;border-radius:4px;font-family:var(--font-mono)}.wf-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;background:#00000080;z-index:90;display:grid;place-items:center}.wf-modal[_ngcontent-%COMP%]{width:460px;background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:12px;box-shadow:var(--shadow-pop)}.wf-modal-head[_ngcontent-%COMP%]{padding:14px 16px;border-bottom:1px solid var(--border-subtle)}.wf-modal-body[_ngcontent-%COMP%]{padding:16px}.wf-modal-foot[_ngcontent-%COMP%]{padding:12px 16px;border-top:1px solid var(--border-subtle);justify-content:flex-end}"],changeDetection:0})};export{q as Workflows};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as I}from"./chunk-X2HTISHL.js";import{a as W}from"./chunk-UYC52MBC.js";import{a as F}from"./chunk-WDU3WICG.js";import{a as z,b as D}from"./chunk-HZA6NEAB.js";import{a as A}from"./chunk-SUZYBYDW.js";import{
|
|
1
|
+
import{a as I}from"./chunk-X2HTISHL.js";import{a as W}from"./chunk-UYC52MBC.js";import{a as F}from"./chunk-WDU3WICG.js";import{a as z,b as D}from"./chunk-HZA6NEAB.js";import{a as A}from"./chunk-SUZYBYDW.js";import{c as P}from"./chunk-GR72OOCN.js";import{c as E}from"./chunk-SHPTC4RL.js";import{a as M}from"./chunk-7RNS77UP.js";import{a as O}from"./chunk-E44X4RH2.js";import{Aa as c,Ga as h,I as m,Ia as C,Ka as l,M as _,N as f,Va as a,W as b,Wa as y,Xa as p,ea as s,ka as R,lb as w,ra as x,sa as g,va as k,wa as S,xa as v,ya as r,za as i,zb as T}from"./chunk-PDN6QYGJ.js";import"./chunk-Q7L6LLAK.js";var N=(o,e)=>e.id;function V(o,e){o&1&&c(0,"app-pick-project-empty",0)}function $(o,e){o&1&&(r(0,"div",15),a(1,"No runs yet. Start one from the Workflows page."),i())}function H(o,e){if(o&1&&(r(0,"app-pill"),c(1,"app-icon",26),a(2),i()),o&2){let t=l().$implicit,n=l(3);s(),v("size",10),s(),p(" ",n.artifactsOf(t)," ")}}function Q(o,e){if(o&1){let t=h();r(0,"div",17),C("click",function(){let d=_(t).$implicit,u=l(3);return f(u.goToRun(d))})("keydown.enter",function(){let d=_(t).$implicit,u=l(3);return f(u.goToRun(d))}),r(1,"span",9),c(2,"app-state-pill",18),i(),r(3,"div",19)(4,"span",20),a(5),i(),r(6,"span",21),a(7),i(),x(8,H,3,2,"app-pill"),i(),r(9,"span",22),a(10),i(),r(11,"span",23),a(12),i(),r(13,"span",24),a(14),i(),r(15,"span",25),a(16),i()()}if(o&2){let t=e.$implicit,n=l(3);s(2),v("state",t.status)("pulse",t.status==="running"),s(3),y(t.workflowName),s(2),y(t.id.slice(0,8)),s(),g(n.artifactsOf(t)>0?8:-1),s(2),p(" ",n.durationOf(t)," "),s(2),p(" ",n.costOf(t)," "),s(2),p(" ",n.worktreeOf(t)," "),s(2),p(" ",n.timeAgo(t)," ")}}function q(o,e){if(o&1&&k(0,Q,17,9,"div",16,N),o&2){let t=l(2);S(t.runs())}}function B(o,e){if(o&1){let t=h();r(0,"div",1)(1,"div",2),c(2,"app-page-head",3),i(),r(3,"div",4)(4,"app-segmented",5),C("change",function(d){_(t);let u=l();return f(u.setFilter(d))}),i()(),r(5,"div",6)(6,"div",7)(7,"div",8)(8,"span",9),a(9,"Status"),i(),r(10,"span",10),a(11,"Workflow"),i(),r(12,"span",11),a(13,"Duration"),i(),r(14,"span",12),a(15,"Cost"),i(),r(16,"span",13),a(17,"Worktree"),i(),r(18,"span",14),a(19,"When"),i()(),x(20,$,2,0,"div",15)(21,q,2,0),i()()()}if(o&2){let t=l();s(4),v("options",t.filterOptions())("value",t.statusFilter()),s(16),g(t.runs().length===0&&!t.resource.state().loading?20:21)}}var j=class o{api=m(O);projects=m(M);router=m(E);resource=P(this.api,()=>`/api/workflows/runs?limit=100${this.projects.projectQuery("&")}`);allRuns=w(()=>this.resource.state().data?.runs??[]);statusFilter=b("all");filterOptions=w(()=>[{value:"all",label:"All"},...["running","paused","completed","failed","cancelled"].map(t=>({value:t,label:z[t]?.label??t}))]);runs=w(()=>{let e=this.statusFilter(),t=this.allRuns();return e==="all"?t:t.filter(n=>n.status===e)});setFilter(e){this.statusFilter.set(e)}goToRun(e){this.router.navigate(["/runs",e.id])}durationOf(e){if(!e.startedAt)return"\u2014";let n=(e.completedAt??e.lastActivityAt)-e.startedAt;return n>=6e4?Math.round(n/6e4)+"m "+Math.round(n%6e4/1e3)+"s":n>=1e3?Math.round(n/1e3)+"s":n+"ms"}timeAgo(e){let t=e.lastActivityAt;if(!t)return"";let n=Date.now()-t;return n<6e4?"just now":n<36e5?Math.round(n/6e4)+"m ago":n<864e5?Math.round(n/36e5)+"h ago":Math.round(n/864e5)+"d ago"}worktreeOf(e){return e.isolationEnvId??e.metadata?.isolationEnvId??"\u2014"}costOf(e){return"\u2014"}artifactsOf(e){return 0}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=R({type:o,selectors:[["app-runs"]],decls:2,vars:1,consts:[["surface","Runs"],[1,"col","runs-page"],[2,"padding","16px 18px 0"],["icon","play","title","Runs","sub","Recent workflow executions"],[1,"row","gap-6",2,"padding","0 18px 12px"],["size","sm",3,"change","options","value"],[2,"padding","0 18px 18px"],[1,"card","runs-table"],[1,"runs-header","row"],[2,"width","100px"],[1,"grow"],[2,"width","90px"],[2,"width","70px","text-align","right"],[2,"width","130px","text-align","right"],[2,"width","60px","text-align","right"],[1,"runs-empty"],["role","button","tabindex","0",1,"runs-row","row"],["role","button","tabindex","0",1,"runs-row","row",3,"click","keydown.enter"],[3,"state","pulse"],[1,"grow","row","gap-8"],[1,"mono",2,"font-size","12.5px"],[1,"mono","muted",2,"font-size","11px"],[1,"mono","tabular","muted",2,"width","90px","font-size","11.5px"],[1,"mono","tabular",2,"width","70px","text-align","right","font-size","12px"],[1,"mono","muted","runs-worktree",2,"width","130px","text-align","right","font-size","10.5px"],[1,"mono","muted",2,"width","60px","text-align","right","font-size","11px"],["name","box",3,"size"]],template:function(t,n){t&1&&x(0,V,1,0,"app-pick-project-empty",0)(1,B,22,3,"div",1),t&2&&g(n.resource.state().noProject?0:1)},dependencies:[F,W,D,A,I,T],styles:["[_nghost-%COMP%]{display:contents}.runs-page[_ngcontent-%COMP%]{flex:1;min-height:0}.runs-table[_ngcontent-%COMP%]{overflow:hidden}.runs-header[_ngcontent-%COMP%]{padding:8px 14px;border-bottom:1px solid var(--border-subtle);font-size:10.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600}.runs-row[_ngcontent-%COMP%]{padding:11px 14px;border-top:1px solid var(--border-subtle);cursor:pointer;transition:background 80ms}.runs-row[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.runs-row[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.runs-worktree[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.runs-empty[_ngcontent-%COMP%]{padding:40px;text-align:center;color:var(--text-muted);font-size:12.5px}"],changeDetection:0})};export{j as Runs};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as L}from"./chunk-UYC52MBC.js";import{
|
|
1
|
+
import{a as L}from"./chunk-UYC52MBC.js";import{c as R}from"./chunk-GR72OOCN.js";import"./chunk-7RNS77UP.js";import{a as j}from"./chunk-E44X4RH2.js";import{Aa as x,Ga as D,I as S,Ia as $,Ka as l,M as E,N as P,Ta as f,Ua as h,Va as s,W as k,Wa as p,X as O,Xa as C,Ya as F,ea as a,gb as w,ib as y,ka as T,lb as u,ra as v,sa as _,ua as z,va as m,vb as I,wa as g,xa as b,ya as r,za as i,zb as H}from"./chunk-PDN6QYGJ.js";import"./chunk-Q7L6LLAK.js";var M=(n,t)=>t.id,V=(n,t)=>t.label,U=(n,t)=>t.model;function W(n,t){if(n&1){let e=D();r(0,"button",20),$("click",function(){let c=E(e).$implicit,d=l();return P(d.toggle(c.id))}),s(1),i()}if(n&2){let e=t.$implicit,o=l();h("active",o.sel().has(e.id)),a(),p(e.name)}}function q(n,t){if(n&1&&(r(0,"div",4)(1,"div",21),x(2,"app-icon",22),i(),r(3,"div",7)(4,"span",23),s(5,"Most efficient: "),i(),r(6,"span",24),s(7),i(),r(8,"span",25),s(9),w(10,"number"),i()(),r(11,"button",26),x(12,"app-icon",27),s(13,"Export report "),i()()),n&2){let e=l();a(2),b("size",18),a(5),p(e.best().name),a(2),F(" \u2014 ",y(10,5,e.best().cacheHit*100,"1.0-0"),"% cache hit, ",e.fmt$(e.best().avgCost)," avg/session"),a(3),b("size",12)}}function G(n,t){if(n&1&&(r(0,"code",34),s(1),i()),n&2){let e=t.$implicit;a(),p(e)}}function J(n,t){if(n&1&&m(0,G,2,1,"code",34,z),n&2){let e=l().$implicit;g(e.topTools)}}function K(n,t){n&1&&(r(0,"span",33),s(1,"\u2014"),i())}function Q(n,t){if(n&1&&(r(0,"div",28)(1,"span",29),s(2),i(),r(3,"span",30),s(4),i(),r(5,"span",30),s(6),i(),r(7,"span",30),s(8),i(),r(9,"span",30),s(10),w(11,"number"),i(),r(12,"span",31),s(13,"\u2014"),i(),r(14,"span",32),v(15,J,2,0)(16,K,2,0,"span",33),i()()),n&2){let e,o,c=t.$implicit,d=l();h("best-row",((e=d.best())==null?null:e.id)===c.id),a(),f("color",((o=d.best())==null?null:o.id)===c.id?"var(--success)":"var(--text-primary)"),a(),p(c.name),a(2),p(d.fmt$(c.cost)),a(2),p(c.sessions),a(2),p(d.fmt$(c.avgCost)),a(),f("color",d.cacheColor(c.cacheHit)),a(),C("",y(11,12,c.cacheHit*100,"1.0-0"),"%"),a(5),_(c.topTools.length>0?15:16)}}function X(n,t){if(n&1&&(r(0,"span",18),x(1,"span",35),s(2),i()),n&2){let e=t.$implicit;a(),f("background",e.color),a(),C(" ",e.label," ")}}function Y(n,t){if(n&1&&x(0,"div",40),n&2){let e=t.$implicit,o=l(2);f("width",e.widthPct,"%")("background",e.color),b("title",e.label+": "+o.fmt$(e.cost))}}function Z(n,t){if(n&1&&(r(0,"div",19)(1,"span",36),s(2),i(),r(3,"div",37),m(4,Y,1,5,"div",38,U),i(),r(6,"span",39),s(7),i()()),n&2){let e=t.$implicit,o=l();a(2),p(e.name),a(2),g(o.segments(e)),a(3),p(o.fmt$(e.cost))}}var ee=[[/opus/i,"#A586F5"],[/sonnet/i,"#5B93F2"],[/haiku/i,"#29D2BE"]],te="#5C6573";function N(n){for(let[t,e]of ee)if(t.test(n))return e;return te}function B(n){return/opus/i.test(n)?"Opus":/sonnet/i.test(n)?"Sonnet":/haiku/i.test(n)?"Haiku":n.replace(/^claude-/i,"")}var A=class n{api=S(j);resource=R(this.api,()=>"/api/claude/compare");all=u(()=>(this.resource.state().data?.projects??[]).map(e=>({id:e.path||e.name,name:(e.name||"").split("/").filter(Boolean).pop()||e.name||"?",sessions:e.sessions||0,cost:e.cost||0,avgCost:e.avgCost||0,cacheHit:e.cacheHit||0,prompts:e.prompts||0,byModel:e.byModel??[],topTools:e.topTools??[]})));sel=k(new Set);constructor(){O(()=>{let t=this.all();t.length>0&&this.sel().size===0&&this.sel.set(new Set(t.map(e=>e.id)))})}rows=u(()=>{let t=this.sel();return this.all().filter(e=>t.has(e.id))});best=u(()=>[...this.rows()].sort((e,o)=>o.cacheHit-o.avgCost/100-(e.cacheHit-e.avgCost/100))[0]??null);maxCost=u(()=>{let t=this.rows().map(e=>e.cost);return t.length?Math.max(...t):1});segments(t){let e=this.maxCost();return t.byModel.map(o=>({model:o.model,label:B(o.model),color:N(o.model),cost:o.cost,widthPct:e>0?o.cost/e*100:0}))}legend=u(()=>{let t=new Map;for(let e of this.rows())for(let o of e.byModel){let c=B(o.model);t.has(c)||t.set(c,{label:c,color:N(o.model)})}return[...t.values()]});toggle(t){this.sel.update(e=>{let o=new Set(e);return o.has(t)?o.delete(t):o.add(t),o})}cacheColor(t){return t>=.7?"var(--success)":t>=.5?"var(--warn)":"var(--error)"}fmt$(t){return"$"+t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=T({type:n,selectors:[["app-compare"]],decls:35,vars:2,consts:[[1,"page","scroll-y"],["icon","compare","title","Compare projects","sub","Which projects are cost-efficient vs hungry"],[1,"chip-row"],["type","button",1,"chip",3,"active"],[1,"best-card","card","card-pad",2,"margin-bottom","14px","border-color","rgba(70,194,107,0.3)","background","var(--success-soft)","display","flex","gap","12px","align-items","center"],[1,"card",2,"overflow","hidden","margin-bottom","14px"],[1,"row","header-row"],[1,"grow"],[1,"num"],[1,"num",2,"width","60px"],[2,"width","150px","text-align","right","font-size","10.5px","color","var(--text-muted)","text-transform","uppercase","letter-spacing","0.05em","font-weight","600"],[1,"row","data-row",3,"best-row"],[1,"card","card-pad"],[1,"row",2,"justify-content","space-between","margin-bottom","14px"],[1,"row","gap-8"],["name","dollar",2,"color","var(--accent)",3,"size"],[2,"font-weight","600","font-size","12.5px"],[1,"row","gap-12"],[1,"row","gap-4","muted",2,"font-size","10.5px"],[1,"stacked-row"],["type","button",1,"chip",3,"click"],[2,"color","var(--success)"],["name","sparkles",3,"size"],[2,"font-weight","600","font-size","13px"],[1,"mono",2,"color","var(--success)"],[1,"secondary",2,"font-size","12.5px"],[1,"btn","btn-secondary","btn-sm"],["name","external",3,"size"],[1,"row","data-row"],[1,"mono","grow","project-name"],[1,"mono","tabular","num"],[1,"mono","tabular",2,"width","60px","text-align","right","font-size","12px","color","var(--text-secondary)"],[1,"row","gap-4",2,"width","150px","justify-content","flex-end","flex-wrap","wrap"],[1,"mono",2,"font-size","12px","color","var(--text-secondary)"],[1,"tool-chip","mono"],[2,"width","9px","height","9px","border-radius","3px"],[1,"mono","stacked-lbl"],[1,"stacked-bars"],[1,"stacked-seg",3,"width","background","title"],[1,"mono","tabular","muted","stacked-total",2,"font-size","11px"],[1,"stacked-seg",3,"title"]],template:function(e,o){e&1&&(r(0,"div",0),x(1,"app-page-head",1),r(2,"div",2),m(3,W,2,3,"button",3,M),i(),v(5,q,14,8,"div",4),r(6,"div",5)(7,"div",6)(8,"span",7),s(9,"Project"),i(),r(10,"span",8),s(11,"Cost"),i(),r(12,"span",8),s(13,"Sessions"),i(),r(14,"span",8),s(15,"Avg"),i(),r(16,"span",8),s(17,"Cache"),i(),r(18,"span",9),s(19,"Drift"),i(),r(20,"span",10),s(21,"Top tools"),i()(),m(22,Q,17,15,"div",11,M),i(),r(24,"div",12)(25,"div",13)(26,"div",14),x(27,"app-icon",15),r(28,"span",16),s(29,"Cost by model per project"),i()(),r(30,"div",17),m(31,X,3,3,"span",18,V),i()(),m(33,Z,8,2,"div",19,M),i()()),e&2&&(a(3),g(o.all()),a(2),_(o.best()?5:-1),a(17),g(o.rows()),a(5),b("size",14),a(4),g(o.legend()),a(2),g(o.rows()))},dependencies:[L,H,I],styles:["[_nghost-%COMP%]{display:contents}.page[_ngcontent-%COMP%]{flex:1;padding:18px}.muted[_ngcontent-%COMP%]{color:var(--text-muted)}.mono[_ngcontent-%COMP%]{font-family:var(--font-mono)}.grow[_ngcontent-%COMP%]{flex:1}.secondary[_ngcontent-%COMP%]{color:var(--text-secondary)}.chip-row[_ngcontent-%COMP%]{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}.chip[_ngcontent-%COMP%]{height:28px;padding:0 12px;border-radius:999px;font-size:12px;font-family:var(--font-mono);cursor:pointer;border:1px solid var(--border-subtle);background:var(--bg-panel);color:var(--text-muted)}.chip.active[_ngcontent-%COMP%]{background:var(--accent-soft);color:var(--accent);border-color:transparent}.card[_ngcontent-%COMP%]{background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--r-lg)}.card-pad[_ngcontent-%COMP%]{padding:14px}.row[_ngcontent-%COMP%]{display:flex;align-items:center}.header-row[_ngcontent-%COMP%]{padding:9px 14px;gap:14px;font-size:10.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600;border-bottom:1px solid var(--border-subtle)}.data-row[_ngcontent-%COMP%]{display:flex;gap:14px;padding:11px 14px;align-items:center;border-top:1px solid var(--border-subtle)}.data-row[_ngcontent-%COMP%]:hover{background:var(--bg-hover)}.project-name[_ngcontent-%COMP%]{font-size:12.5px}.num[_ngcontent-%COMP%]{width:70px;text-align:right;font-size:12px;font-variant-numeric:tabular-nums}.stacked-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:140px 1fr 70px;gap:12px;align-items:center;padding:6px 0;border-top:1px solid var(--border-subtle)}.stacked-row[_ngcontent-%COMP%]:first-of-type{border-top:none}.stacked-lbl[_ngcontent-%COMP%]{font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stacked-bars[_ngcontent-%COMP%]{display:flex;height:18px;border-radius:4px;overflow:hidden;gap:2px}.stacked-seg[_ngcontent-%COMP%]{height:100%;border-radius:3px}.stacked-total[_ngcontent-%COMP%]{text-align:right}.tool-chip[_ngcontent-%COMP%]{font-size:9.5px;background:var(--bg-canvas);color:var(--text-secondary);padding:1px 5px;border-radius:3px;white-space:nowrap}"],changeDetection:0})};export{A as Compare};
|