cctally 1.115.0 → 1.116.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/CHANGELOG.md +16 -0
- package/bin/_cctally_cache.py +85 -4
- package/bin/_cctally_completion.py +80 -12
- package/bin/_cctally_core.py +106 -9
- package/bin/_cctally_dashboard.py +6 -9
- package/bin/_cctally_dashboard_envelope.py +26 -32
- package/bin/_cctally_db.py +85 -4
- package/bin/_cctally_doctor.py +38 -5
- package/bin/_cctally_five_hour.py +83 -1017
- package/bin/_cctally_journal.py +1307 -180
- package/bin/_cctally_journal_repair.py +9 -7
- package/bin/_cctally_oauth_samples.py +280 -0
- package/bin/_cctally_parser.py +5 -0
- package/bin/_cctally_quarantine.py +14 -4
- package/bin/_cctally_quota.py +70 -8
- package/bin/_cctally_quota_model.py +35 -4
- package/bin/_cctally_record.py +414 -123
- package/bin/_cctally_rederive.py +632 -235
- package/bin/_cctally_refresh.py +29 -0
- package/bin/_cctally_statusline.py +984 -47
- package/bin/_cctally_store.py +972 -58
- package/bin/_cctally_tui.py +62 -7
- package/bin/_cctally_update.py +25 -0
- package/bin/_lib_account_protocol.py +201 -18
- package/bin/_lib_clone_copy.py +46 -11
- package/bin/_lib_dashboard_sources.py +57 -15
- package/bin/_lib_detector_access_registry.py +273 -52
- package/bin/_lib_doctor.py +302 -1
- package/bin/_lib_journal.py +145 -25
- package/bin/_lib_journal_router.py +166 -48
- package/bin/_lib_oauth_samples.py +238 -0
- package/bin/_lib_pricing_check.py +0 -12
- package/bin/_lib_provider_activity.py +770 -0
- package/bin/_lib_quarantine.py +3 -2
- package/bin/_lib_quota_model.py +96 -6
- package/bin/_lib_rebuild_progress.py +146 -0
- package/bin/_lib_record.py +22 -0
- package/bin/_lib_rederive.py +299 -3
- package/bin/_lib_snapshot_cache.py +43 -1
- package/bin/_lib_stale_proof.py +708 -0
- package/bin/_lib_statusline_candidates.py +65 -5
- package/bin/_lib_worker_launches.py +315 -0
- package/bin/cctally +6 -11
- package/dashboard/static/assets/{ConversationsView-Bc8LCOAZ.js → ConversationsView-Dflb_myA.js} +1 -1
- package/dashboard/static/assets/DoctorModal-DFX5CfIs.js +1 -0
- package/dashboard/static/assets/{ModalRoot-DLPgyAM_.js → ModalRoot-HlxoagIa.js} +1 -1
- package/dashboard/static/assets/{ProjectsDrillPanel-z53a4v4M.js → ProjectsDrillPanel-C3PJy1xx.js} +1 -1
- package/dashboard/static/assets/{SourceDetailModal-Bw0T8W-W.js → SourceDetailModal-BczsWKhD.js} +1 -1
- package/dashboard/static/assets/{UpdateModal-D5AKx4Yw.js → UpdateModal-Os-Lo5cs.js} +1 -1
- package/dashboard/static/assets/{index-BXDOzSng.js → index-CYZ3NLqF.js} +3 -3
- package/dashboard/static/assets/{outlineNavigation-JObY7cUY.js → outlineNavigation-k-zIif6W.js} +1 -1
- package/dashboard/static/dashboard.html +1 -1
- package/package.json +7 -2
- package/bin/_lib_merge_gate.py +0 -452
- package/dashboard/static/assets/DoctorModal-D--qVBwe.js +0 -1
package/dashboard/static/assets/{ProjectsDrillPanel-z53a4v4M.js → ProjectsDrillPanel-C3PJy1xx.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ft as e,Rt as t,U as n,a as r,b as i,c as a,f as o,gt as s,it as c,rt as l,t as u,ut as d,x as f,y as p}from"./useKeymap-CW7Up0Ay.js";import{Ft as m,M as h,N as g,at as _,bt as v,ct as y,dt as b,it as x,j as S,lt as C,o as w,ut as T}from"./index-BXDOzSng.js";import{N as E,a as D,o as O,s as k,t as A}from"./outlineNavigation-JObY7cUY.js";var j=t(e(),1),M=r();function N({title:e,accentClass:t,children:n,headerExtras:r,wide:s,paneScroll:c,dataSource:l,onClose:d,focusLayer:p=`panel`,rootId:m=`modal-root`,titleId:h=`modal-title`,bodyId:g=`modal-body`,rootTestId:_,cardClassName:v,triggerId:y}){let x=(0,j.useCallback)(()=>{d?d():a({type:`CLOSE_MODAL`})},[d]);u((0,j.useMemo)(()=>[{key:`Escape`,scope:`modal`,layer:p===`source-detail`?150:100,action:x,when:()=>f(o())===p}],[x,p]));let S=(0,j.useRef)(null);return b(S,{active:!0,trapEnabled:(0,j.useSyncExternalStore)(i,()=>f(o())===p),initialFocus:`heading`,triggerId:y}),T(!0),(0,M.jsxs)(`div`,{id:m,..._?{"data-testid":_}:{},children:[(0,M.jsx)(`div`,{className:`modal-backdrop`,onClick:x}),(0,M.jsxs)(`div`,{ref:S,className:`modal-card ${t}${s?` modal-wide`:``}${c?` modal-pane-scroll`:``}${v?` ${v}`:``}`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":h,"data-source":l,children:[(0,M.jsx)(w,{title:e,titleId:h,headerExtras:r,onClose:x}),(0,M.jsx)(`div`,{id:g,className:`modal-body`,children:n})]})]})}function P(e){return e===`codex`?`accent-provider-codex`:`accent-provider-claude`}var F=3;function I({sessionId:e}){let t=(0,j.useSyncExternalStore)(i,()=>p(o())),{outline:n}=k(t?e:null),r=m(),u=(0,j.useMemo)(()=>l(r),[r?.display?.resolved_tz,r?.display?.offset_label]),[f,h]=(0,j.useState)(!1);if(!t||!n||!n.stats||!e)return null;let g=n.stats,_=g.cache_failures,v=_?.count??0,y=g.cache_saved_usd??0,b=_?.rebuilds??[],x=f?b:b.slice(0,F),S=e,C=e=>{let t=n.turns??[],r=O(A(t,void 0,n.landmarks),e),i=r===void 0?void 0:t[r],c=o().convFocusMode;i&&c!==`all`&&!D(i,c)&&a({type:`SET_CONV_FOCUS_MODE`,mode:`all`}),a({type:`OPEN_CONVERSATION`,sessionId:S,jump:d(s(S),e,!1)})};return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(`h3`,{className:`m-sec sec-rebuild`,children:[(0,M.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,M.jsx)(`use`,{href:`/static/icons.svg#refresh`})}),`Cache rebuilds`]}),v===0?(0,M.jsx)(`div`,{className:`msess-rebuild-none`,id:`msess-rebuild-none`,children:`No cache rebuilds ✓`}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(`div`,{className:`msess-tok-grid msess-rebuild-tiles`,id:`msess-rebuild-tiles`,children:[(0,M.jsxs)(`div`,{className:`msess-tok-tile`,children:[(0,M.jsx)(`div`,{className:`lbl`,children:`Rebuilds`}),(0,M.jsx)(`div`,{className:`n`,children:v})]}),(0,M.jsxs)(`div`,{className:`msess-tok-tile rebuild-wasted`,children:[(0,M.jsx)(`div`,{className:`lbl`,children:`Wasted`}),(0,M.jsx)(`div`,{className:`n`,children:c.usd2(_.est_wasted_usd)})]}),(0,M.jsxs)(`div`,{className:`msess-tok-tile`,children:[(0,M.jsx)(`div`,{className:`lbl`,children:`Re-created`}),(0,M.jsx)(`div`,{className:`n`,children:_.tokens_recreated.toLocaleString(`en-US`)})]})]}),(0,M.jsx)(`ul`,{className:`msess-rebuild-list`,id:`msess-rebuild-list`,children:x.map(e=>(0,M.jsx)(`li`,{className:`rebuild-row`,children:(0,M.jsxs)(`button`,{type:`button`,className:`rebuild-jump`,onClick:()=>C(e.uuid),children:[(0,M.jsx)(`span`,{className:`rb-cost`,children:c.usd2(e.est_wasted_usd)}),(0,M.jsxs)(`span`,{className:`rb-tok`,children:[e.tokens_recreated.toLocaleString(`en-US`),` tok`]}),(0,M.jsx)(`span`,{className:`rb-time`,children:e.ts?c.timeHHmm(e.ts,u,{noSuffix:!0}):``}),e.subagent_key?(0,M.jsx)(`span`,{className:`rb-sub`,children:`subagent`}):null,(0,M.jsx)(`span`,{className:`rb-go`,children:`→ Jump`})]})},e.uuid))}),b.length>F&&!f?(0,M.jsxs)(`button`,{type:`button`,className:`msess-rebuild-more`,onClick:()=>h(!0),children:[`+`,b.length-F,` more`]}):null]}),y>0?(0,M.jsxs)(`div`,{className:`msess-rebuild-saved`,id:`msess-rebuild-saved`,children:[`Cache saved this session `,c.usd2(y),` ✓`]}):null]})}function L({rows:e}){let t=e[0]?.cost_usd??0,n=t>0?t:1;return(0,M.jsx)(M.Fragment,{children:e.map(e=>{let t=e.cost_usd/n*100,r=_(e.model),i={"--w":`${t}%`,"--model-color":r?.backgroundColor};return(0,M.jsxs)(`div`,{className:`drill-bar-row`,children:[(0,M.jsx)(`span`,{className:`chip ${x(e.model)}`,style:r,children:e.label??e.model}),(0,M.jsx)(`div`,{className:`drill-bar`,style:i}),(0,M.jsx)(`span`,{className:`cost ${g(e.cost_usd)}`,children:c.usd2(e.cost_usd)})]},e.model)})})}function R(e){let t=new Set;return(e.models??[]).forEach(e=>t.add(e.name)),(e.cost_per_model??[]).forEach(e=>t.add(e.model)),t.size===1}var z=/(^|\/)(subagents\/|agent-)/;function B(){return(0,j.useSyncExternalStore)(i,()=>E(o().snapshot))}function V(){let e=(0,j.useSyncExternalStore)(i,()=>o().openSessionId),t=B(),r=v(),s={tz:r.resolvedTz,offsetLabel:r.offsetLabel},[c,l]=(0,j.useState)(null),[u,d]=(0,j.useState)(!0),[f,p]=(0,j.useState)(null),m=(0,j.useRef)(null),h=(0,j.useRef)(!1),g=(0,j.useRef)(null);return(0,j.useEffect)(()=>{g.current=e??o().snapshot?.sessions?.rows?.[0]?.session_id??null,h.current=!1},[e]),(0,j.useEffect)(()=>{let e=g.current;if(!e){d(!1),p(`No session available.`),l(null),m.current=null;return}let t=m.current!==e||c==null;m.current=e,t&&(d(!0),p(null),l(null));let n=new AbortController;return fetch(`/api/session/${encodeURIComponent(e)}`,{signal:n.signal}).then(async e=>{if(e.status===404){(t||h.current)&&(d(!1),p(`Session not found (the cache may have rolled forward).`),l(null)),h.current=!0;return}if(!e.ok)throw Error(`HTTP `+e.status);let n=await e.json();h.current=!1,l(n),p(null),d(!1)}).catch(e=>{e.name!==`AbortError`&&(h.current=!1,t&&(p(`Failed to load: `+e.message),d(!1)))}),()=>n.abort()},[e,t]),(0,M.jsx)(N,{title:`Session detail`,accentClass:`accent-orange`,headerExtras:(0,M.jsx)(C,{panel:`sessions`,panelLabel:`Session`,triggerId:`session-modal`,onClick:()=>a(n(`sessions`,`session-modal`))}),children:(0,M.jsxs)(`section`,{className:`modal-sessions`,children:[u?(0,M.jsx)(`div`,{className:`modal-loading`,id:`msess-loading`,children:`Loading session detail…`}):null,f?(0,M.jsx)(`div`,{className:`modal-error`,id:`msess-error`,children:f}):null,!u&&!f&&c?(0,M.jsx)(H,{detail:c,ctx:s}):null]})})}function H({detail:e,ctx:t,identityLabel:n,projectAction:r,privacyNote:i,showCacheRebuilds:a=!0,testId:o}){let s=Array.isArray(e.source_paths)?e.source_paths:[],l=[],u=[];s.forEach(e=>{z.test(e)?u.push(e):l.push(e)});let d=[[`Input`,e.input_tokens,null],[`Output`,e.output_tokens,null],[`Cache creation`,e.cache_creation_tokens,null],[`Cache read`,e.cache_read_tokens,null],[`Cache hit %`,e.cache_hit_pct,`cache-hit`]].filter(e=>e[1]!=null),f=!e.cost_per_model||e.cost_per_model.length===0,p=R(e),m=e.models?.[0]?.name??e.cost_per_model?.[0]?.model??`—`,h=e.cost_per_model?.[0]?.cost_usd??e.cost_total_usd??null;return(0,M.jsxs)(`div`,{className:`modal-content`,id:`msess-content`,"data-testid":o,children:[(0,M.jsx)(`div`,{className:`m-chipstrip`,children:(0,M.jsx)(`span`,{className:`msess-badge`,id:`msess-id`,"aria-label":`Session ID`,children:n??e.session_id??`—`})}),(0,M.jsxs)(`div`,{className:`m-hero cols-3`,children:[(0,M.jsxs)(`div`,{className:`m-kv kv-cost`,children:[(0,M.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,M.jsx)(`use`,{href:`/static/icons.svg#dollar`})}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`v`,id:`msess-cost`,children:e.cost_total_usd==null?`—`:`$`+e.cost_total_usd.toFixed(2)}),(0,M.jsx)(`div`,{className:`lbl`,children:`Total cost`})]})]}),(0,M.jsxs)(`div`,{className:`m-kv kv-dur`,children:[(0,M.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,M.jsx)(`use`,{href:`/static/icons.svg#clock`})}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`v`,id:`msess-dur`,children:e.duration_min==null?`—`:e.duration_min+` min`}),(0,M.jsx)(`div`,{className:`lbl`,children:`Duration`})]})]}),(0,M.jsxs)(`div`,{className:`m-kv kv-proj`,children:[(0,M.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,M.jsx)(`use`,{href:`/static/icons.svg#folder`})}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`v`,id:`msess-project`,title:e.project_path??``,"aria-label":`Project`,children:r?(0,M.jsx)(`button`,{type:`button`,className:`sd-related-link`,"aria-label":`Open Claude project details: ${r.label}`,onClick:r.onOpen,children:r.label}):e.project_label??e.project_path??`—`}),(0,M.jsx)(`div`,{className:`lbl`,children:`Project`})]})]})]}),(0,M.jsxs)(`div`,{className:`msess-ts`,children:[(0,M.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,M.jsx)(`use`,{href:`/static/icons.svg#calendar`})}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`span`,{className:`k`,children:`started`}),(0,M.jsx)(`span`,{className:`v`,id:`msess-started`,children:c.datetimeShort(e.started_utc,t)})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`span`,{className:`k`,children:`last activity`}),(0,M.jsx)(`span`,{className:`v`,id:`msess-last`,children:c.datetimeShort(e.last_activity_utc,t)})]})]}),(0,M.jsxs)(`h3`,{className:`m-sec sec-tok`,children:[(0,M.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,M.jsx)(`use`,{href:`/static/icons.svg#hash`})}),`Tokens`]}),(0,M.jsx)(`div`,{className:`msess-tok-grid`,id:`msess-tokens`,children:d.map(([e,t,n])=>(0,M.jsxs)(`div`,{className:`msess-tok-tile`+(n?` `+n:``),children:[(0,M.jsx)(`div`,{className:`lbl`,children:e}),(0,M.jsx)(`div`,{className:`n`,children:n===`cache-hit`?t.toFixed(1)+`%`:t.toLocaleString(`en-US`)}),n===`cache-hit`?(0,M.jsx)(`div`,{className:`bar`,children:(0,M.jsx)(`div`,{className:`fill`,style:{width:Math.max(0,Math.min(t,100))+`%`}})}):null]},e))}),a?(0,M.jsx)(I,{sessionId:e.session_id??null},e.session_id??`no-session`):null,i?(0,M.jsx)(`p`,{className:`sd-note sd-privacy-note`,children:i}):null,p?(0,M.jsxs)(`div`,{className:`msess-model-caption`,id:`msess-model-caption`,children:[(0,M.jsx)(`span`,{className:`sw `+x(m),style:_(m),"aria-hidden":`true`}),(0,M.jsx)(`span`,{className:`k`,children:`Model`}),(0,M.jsx)(`span`,{className:`name`,children:m}),(0,M.jsx)(`span`,{className:`dot`,"aria-hidden":`true`,children:`·`}),(0,M.jsx)(`span`,{className:`v`,children:h==null?`—`:`$`+h.toFixed(2)})]}):f?null:(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(`h3`,{className:`m-sec sec-costm`,children:[(0,M.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,M.jsx)(`use`,{href:`/static/icons.svg#pie-chart`})}),`Cost by model`]}),(0,M.jsx)(L,{rows:(e.cost_per_model||[]).map(e=>({model:e.model,cost_usd:e.cost_usd??0,label:y(e.model)}))})]}),s.length>0?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(`h3`,{className:`m-sec sec-src`,children:[(0,M.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,M.jsx)(`use`,{href:`/static/icons.svg#file-text`})}),`Source files`]}),(0,M.jsxs)(`div`,{className:`msess-src`,id:`msess-src`,children:[(0,M.jsxs)(`div`,{className:`src-head`,children:[(0,M.jsxs)(`span`,{className:`count-pill`,children:[s.length,` file`,s.length===1?``:`s`]}),(0,M.jsxs)(`span`,{className:`sub`,children:[l.length,` primary`,u.length>0?(0,M.jsxs)(M.Fragment,{children:[` `,(0,M.jsx)(`span`,{className:`dot`,children:`·`}),` `,(0,M.jsxs)(`span`,{className:`subcount`,children:[u.length,` subagent`,u.length===1?``:`s`]})]}):null]})]}),l.length>0?l.map(e=>(0,M.jsx)(`div`,{className:`primary-path`,children:e},e)):u.length>0?(0,M.jsxs)(`div`,{className:`src-empty-primary`,children:[`No primary path resolved · `,u.length,` subagent path`,u.length===1?``:`s`,` below`]}):null,u.length>0?(0,M.jsxs)(`details`,{className:`subagents`,open:l.length===0,children:[(0,M.jsxs)(`summary`,{children:[`Show `,u.length,` subagent path`,u.length===1?``:`s`]}),(0,M.jsx)(`ul`,{className:`paths`,children:u.map(e=>(0,M.jsx)(`li`,{children:e},e))})]}):null]})]}):null]})}function U(e,t){let n=m(),r=v();return h(S(e,t),{tz:r.resolvedTz,offsetLabel:r.offsetLabel},{clampEndTo:n?.generated_at})}function W({projectKey:e,windowWeeks:t,detail:n}){let{data:r,loading:i,error:o}=n,s=r!=null&&(r.key!==e||r.window_weeks!==t);return i&&!r||s?(0,M.jsx)(`div`,{className:`panel-empty`,children:`Loading…`}):o&&!r?(0,M.jsx)(`div`,{className:`panel-empty`,children:o}):r?(0,M.jsx)(G,{data:{...r,label:r.key,sessions:r.sessions.map(e=>({...e,key:e.session_id}))},onOpenSession:e=>a({type:`OPEN_MODAL`,kind:`session`,sessionId:e}),onShowInSessions:()=>{a({type:`SET_FILTER`,text:r.key}),a({type:`CLOSE_MODAL`})}}):null}function G({data:e,onOpenSession:t,onShowInSessions:n,testId:r=`projects-drill`,sessionTestIdPrefix:i=`drill-session`,showInSessionsTestId:a=`drill-show-in-sessions`}){let o=v(),s={tz:o.resolvedTz,offsetLabel:o.offsetLabel},l=Math.max(0,e.sessions_total-e.sessions.length),u=U(e.window_start_at,e.window_end_at),d=(e.window_intervals??[]).reduce((e,t,n,r)=>n>0&&r[n-1].end_at<t.start_at?e+1:e,0);return(0,M.jsxs)(`div`,{className:`projects-drill`,"data-testid":r,"aria-live":`polite`,children:[(0,M.jsx)(`div`,{className:`projects-drill-head`,children:(0,M.jsxs)(`span`,{className:`title`,children:[`▾ `,e.label,` · `,e.sessions_total,` session`,e.sessions_total===1?``:`s`,` · `,c.usd2(e.window_cost_usd),u==null?` (${e.window_weeks} ${e.window_weeks===1?`cycle`:`cycles`})`:` · ${e.window_weeks} ${e.window_weeks===1?`cycle`:`cycles`} · ${u}`,d>0?` · ${d} reset gap${d===1?``:`s`}`:``]})}),(0,M.jsxs)(`div`,{className:`projects-drill-grid`,children:[(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`section-label`,children:`Models (this project)`}),e.models.length===0?(0,M.jsx)(`div`,{className:`muted`,children:`No model data for this window.`}):(0,M.jsx)(L,{rows:e.models.map(e=>({model:e.model,cost_usd:e.cost_usd,label:y(e.model)}))})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`section-label`,children:`Recent sessions →`}),e.sessions.length===0?(0,M.jsx)(`div`,{className:`muted`,children:`No sessions for this window.`}):e.sessions.map((e,n)=>(0,M.jsxs)(`button`,{"data-testid":`${i}-${n}`,className:`drill-session-row`,onClick:()=>t(e.key),children:[(0,M.jsx)(`span`,{className:`started`,children:c.datetimeShort(e.last_activity_at,s)}),(0,M.jsx)(`span`,{className:`chip ${x(e.primary_model)}`,style:_(e.primary_model),children:e.primary_model}),(0,M.jsx)(`span`,{className:`cost ${g(e.cost_usd)}`,children:c.usd2(e.cost_usd)})]},e.key)),(0,M.jsxs)(`div`,{className:`drill-session-footer`,children:[l>0&&(0,M.jsxs)(`span`,{className:`muted`,children:[`+`,l,` more`]}),(0,M.jsx)(`button`,{type:`button`,"data-testid":a,className:`drill-show-in-sessions`,onClick:n,children:`Show in Sessions →`})]})]})]})]})}export{L as a,V as i,W as n,P as o,H as r,N as s,G as t};
|
|
1
|
+
import{Ft as e,Rt as t,U as n,a as r,b as i,c as a,f as o,gt as s,it as c,rt as l,t as u,ut as d,x as f,y as p}from"./useKeymap-CW7Up0Ay.js";import{Ft as m,M as h,N as g,at as _,bt as v,ct as y,dt as b,it as x,j as S,lt as C,o as w,ut as T}from"./index-CYZ3NLqF.js";import{N as E,a as D,o as O,s as k,t as A}from"./outlineNavigation-k-zIif6W.js";var j=t(e(),1),M=r();function N({title:e,accentClass:t,children:n,headerExtras:r,wide:s,paneScroll:c,dataSource:l,onClose:d,focusLayer:p=`panel`,rootId:m=`modal-root`,titleId:h=`modal-title`,bodyId:g=`modal-body`,rootTestId:_,cardClassName:v,triggerId:y}){let x=(0,j.useCallback)(()=>{d?d():a({type:`CLOSE_MODAL`})},[d]);u((0,j.useMemo)(()=>[{key:`Escape`,scope:`modal`,layer:p===`source-detail`?150:100,action:x,when:()=>f(o())===p}],[x,p]));let S=(0,j.useRef)(null);return b(S,{active:!0,trapEnabled:(0,j.useSyncExternalStore)(i,()=>f(o())===p),initialFocus:`heading`,triggerId:y}),T(!0),(0,M.jsxs)(`div`,{id:m,..._?{"data-testid":_}:{},children:[(0,M.jsx)(`div`,{className:`modal-backdrop`,onClick:x}),(0,M.jsxs)(`div`,{ref:S,className:`modal-card ${t}${s?` modal-wide`:``}${c?` modal-pane-scroll`:``}${v?` ${v}`:``}`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":h,"data-source":l,children:[(0,M.jsx)(w,{title:e,titleId:h,headerExtras:r,onClose:x}),(0,M.jsx)(`div`,{id:g,className:`modal-body`,children:n})]})]})}function P(e){return e===`codex`?`accent-provider-codex`:`accent-provider-claude`}var F=3;function I({sessionId:e}){let t=(0,j.useSyncExternalStore)(i,()=>p(o())),{outline:n}=k(t?e:null),r=m(),u=(0,j.useMemo)(()=>l(r),[r?.display?.resolved_tz,r?.display?.offset_label]),[f,h]=(0,j.useState)(!1);if(!t||!n||!n.stats||!e)return null;let g=n.stats,_=g.cache_failures,v=_?.count??0,y=g.cache_saved_usd??0,b=_?.rebuilds??[],x=f?b:b.slice(0,F),S=e,C=e=>{let t=n.turns??[],r=O(A(t,void 0,n.landmarks),e),i=r===void 0?void 0:t[r],c=o().convFocusMode;i&&c!==`all`&&!D(i,c)&&a({type:`SET_CONV_FOCUS_MODE`,mode:`all`}),a({type:`OPEN_CONVERSATION`,sessionId:S,jump:d(s(S),e,!1)})};return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(`h3`,{className:`m-sec sec-rebuild`,children:[(0,M.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,M.jsx)(`use`,{href:`/static/icons.svg#refresh`})}),`Cache rebuilds`]}),v===0?(0,M.jsx)(`div`,{className:`msess-rebuild-none`,id:`msess-rebuild-none`,children:`No cache rebuilds ✓`}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(`div`,{className:`msess-tok-grid msess-rebuild-tiles`,id:`msess-rebuild-tiles`,children:[(0,M.jsxs)(`div`,{className:`msess-tok-tile`,children:[(0,M.jsx)(`div`,{className:`lbl`,children:`Rebuilds`}),(0,M.jsx)(`div`,{className:`n`,children:v})]}),(0,M.jsxs)(`div`,{className:`msess-tok-tile rebuild-wasted`,children:[(0,M.jsx)(`div`,{className:`lbl`,children:`Wasted`}),(0,M.jsx)(`div`,{className:`n`,children:c.usd2(_.est_wasted_usd)})]}),(0,M.jsxs)(`div`,{className:`msess-tok-tile`,children:[(0,M.jsx)(`div`,{className:`lbl`,children:`Re-created`}),(0,M.jsx)(`div`,{className:`n`,children:_.tokens_recreated.toLocaleString(`en-US`)})]})]}),(0,M.jsx)(`ul`,{className:`msess-rebuild-list`,id:`msess-rebuild-list`,children:x.map(e=>(0,M.jsx)(`li`,{className:`rebuild-row`,children:(0,M.jsxs)(`button`,{type:`button`,className:`rebuild-jump`,onClick:()=>C(e.uuid),children:[(0,M.jsx)(`span`,{className:`rb-cost`,children:c.usd2(e.est_wasted_usd)}),(0,M.jsxs)(`span`,{className:`rb-tok`,children:[e.tokens_recreated.toLocaleString(`en-US`),` tok`]}),(0,M.jsx)(`span`,{className:`rb-time`,children:e.ts?c.timeHHmm(e.ts,u,{noSuffix:!0}):``}),e.subagent_key?(0,M.jsx)(`span`,{className:`rb-sub`,children:`subagent`}):null,(0,M.jsx)(`span`,{className:`rb-go`,children:`→ Jump`})]})},e.uuid))}),b.length>F&&!f?(0,M.jsxs)(`button`,{type:`button`,className:`msess-rebuild-more`,onClick:()=>h(!0),children:[`+`,b.length-F,` more`]}):null]}),y>0?(0,M.jsxs)(`div`,{className:`msess-rebuild-saved`,id:`msess-rebuild-saved`,children:[`Cache saved this session `,c.usd2(y),` ✓`]}):null]})}function L({rows:e}){let t=e[0]?.cost_usd??0,n=t>0?t:1;return(0,M.jsx)(M.Fragment,{children:e.map(e=>{let t=e.cost_usd/n*100,r=_(e.model),i={"--w":`${t}%`,"--model-color":r?.backgroundColor};return(0,M.jsxs)(`div`,{className:`drill-bar-row`,children:[(0,M.jsx)(`span`,{className:`chip ${x(e.model)}`,style:r,children:e.label??e.model}),(0,M.jsx)(`div`,{className:`drill-bar`,style:i}),(0,M.jsx)(`span`,{className:`cost ${g(e.cost_usd)}`,children:c.usd2(e.cost_usd)})]},e.model)})})}function R(e){let t=new Set;return(e.models??[]).forEach(e=>t.add(e.name)),(e.cost_per_model??[]).forEach(e=>t.add(e.model)),t.size===1}var z=/(^|\/)(subagents\/|agent-)/;function B(){return(0,j.useSyncExternalStore)(i,()=>E(o().snapshot))}function V(){let e=(0,j.useSyncExternalStore)(i,()=>o().openSessionId),t=B(),r=v(),s={tz:r.resolvedTz,offsetLabel:r.offsetLabel},[c,l]=(0,j.useState)(null),[u,d]=(0,j.useState)(!0),[f,p]=(0,j.useState)(null),m=(0,j.useRef)(null),h=(0,j.useRef)(!1),g=(0,j.useRef)(null);return(0,j.useEffect)(()=>{g.current=e??o().snapshot?.sessions?.rows?.[0]?.session_id??null,h.current=!1},[e]),(0,j.useEffect)(()=>{let e=g.current;if(!e){d(!1),p(`No session available.`),l(null),m.current=null;return}let t=m.current!==e||c==null;m.current=e,t&&(d(!0),p(null),l(null));let n=new AbortController;return fetch(`/api/session/${encodeURIComponent(e)}`,{signal:n.signal}).then(async e=>{if(e.status===404){(t||h.current)&&(d(!1),p(`Session not found (the cache may have rolled forward).`),l(null)),h.current=!0;return}if(!e.ok)throw Error(`HTTP `+e.status);let n=await e.json();h.current=!1,l(n),p(null),d(!1)}).catch(e=>{e.name!==`AbortError`&&(h.current=!1,t&&(p(`Failed to load: `+e.message),d(!1)))}),()=>n.abort()},[e,t]),(0,M.jsx)(N,{title:`Session detail`,accentClass:`accent-orange`,headerExtras:(0,M.jsx)(C,{panel:`sessions`,panelLabel:`Session`,triggerId:`session-modal`,onClick:()=>a(n(`sessions`,`session-modal`))}),children:(0,M.jsxs)(`section`,{className:`modal-sessions`,children:[u?(0,M.jsx)(`div`,{className:`modal-loading`,id:`msess-loading`,children:`Loading session detail…`}):null,f?(0,M.jsx)(`div`,{className:`modal-error`,id:`msess-error`,children:f}):null,!u&&!f&&c?(0,M.jsx)(H,{detail:c,ctx:s}):null]})})}function H({detail:e,ctx:t,identityLabel:n,projectAction:r,privacyNote:i,showCacheRebuilds:a=!0,testId:o}){let s=Array.isArray(e.source_paths)?e.source_paths:[],l=[],u=[];s.forEach(e=>{z.test(e)?u.push(e):l.push(e)});let d=[[`Input`,e.input_tokens,null],[`Output`,e.output_tokens,null],[`Cache creation`,e.cache_creation_tokens,null],[`Cache read`,e.cache_read_tokens,null],[`Cache hit %`,e.cache_hit_pct,`cache-hit`]].filter(e=>e[1]!=null),f=!e.cost_per_model||e.cost_per_model.length===0,p=R(e),m=e.models?.[0]?.name??e.cost_per_model?.[0]?.model??`—`,h=e.cost_per_model?.[0]?.cost_usd??e.cost_total_usd??null;return(0,M.jsxs)(`div`,{className:`modal-content`,id:`msess-content`,"data-testid":o,children:[(0,M.jsx)(`div`,{className:`m-chipstrip`,children:(0,M.jsx)(`span`,{className:`msess-badge`,id:`msess-id`,"aria-label":`Session ID`,children:n??e.session_id??`—`})}),(0,M.jsxs)(`div`,{className:`m-hero cols-3`,children:[(0,M.jsxs)(`div`,{className:`m-kv kv-cost`,children:[(0,M.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,M.jsx)(`use`,{href:`/static/icons.svg#dollar`})}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`v`,id:`msess-cost`,children:e.cost_total_usd==null?`—`:`$`+e.cost_total_usd.toFixed(2)}),(0,M.jsx)(`div`,{className:`lbl`,children:`Total cost`})]})]}),(0,M.jsxs)(`div`,{className:`m-kv kv-dur`,children:[(0,M.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,M.jsx)(`use`,{href:`/static/icons.svg#clock`})}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`v`,id:`msess-dur`,children:e.duration_min==null?`—`:e.duration_min+` min`}),(0,M.jsx)(`div`,{className:`lbl`,children:`Duration`})]})]}),(0,M.jsxs)(`div`,{className:`m-kv kv-proj`,children:[(0,M.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,M.jsx)(`use`,{href:`/static/icons.svg#folder`})}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`v`,id:`msess-project`,title:e.project_path??``,"aria-label":`Project`,children:r?(0,M.jsx)(`button`,{type:`button`,className:`sd-related-link`,"aria-label":`Open Claude project details: ${r.label}`,onClick:r.onOpen,children:r.label}):e.project_label??e.project_path??`—`}),(0,M.jsx)(`div`,{className:`lbl`,children:`Project`})]})]})]}),(0,M.jsxs)(`div`,{className:`msess-ts`,children:[(0,M.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,M.jsx)(`use`,{href:`/static/icons.svg#calendar`})}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`span`,{className:`k`,children:`started`}),(0,M.jsx)(`span`,{className:`v`,id:`msess-started`,children:c.datetimeShort(e.started_utc,t)})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`span`,{className:`k`,children:`last activity`}),(0,M.jsx)(`span`,{className:`v`,id:`msess-last`,children:c.datetimeShort(e.last_activity_utc,t)})]})]}),(0,M.jsxs)(`h3`,{className:`m-sec sec-tok`,children:[(0,M.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,M.jsx)(`use`,{href:`/static/icons.svg#hash`})}),`Tokens`]}),(0,M.jsx)(`div`,{className:`msess-tok-grid`,id:`msess-tokens`,children:d.map(([e,t,n])=>(0,M.jsxs)(`div`,{className:`msess-tok-tile`+(n?` `+n:``),children:[(0,M.jsx)(`div`,{className:`lbl`,children:e}),(0,M.jsx)(`div`,{className:`n`,children:n===`cache-hit`?t.toFixed(1)+`%`:t.toLocaleString(`en-US`)}),n===`cache-hit`?(0,M.jsx)(`div`,{className:`bar`,children:(0,M.jsx)(`div`,{className:`fill`,style:{width:Math.max(0,Math.min(t,100))+`%`}})}):null]},e))}),a?(0,M.jsx)(I,{sessionId:e.session_id??null},e.session_id??`no-session`):null,i?(0,M.jsx)(`p`,{className:`sd-note sd-privacy-note`,children:i}):null,p?(0,M.jsxs)(`div`,{className:`msess-model-caption`,id:`msess-model-caption`,children:[(0,M.jsx)(`span`,{className:`sw `+x(m),style:_(m),"aria-hidden":`true`}),(0,M.jsx)(`span`,{className:`k`,children:`Model`}),(0,M.jsx)(`span`,{className:`name`,children:m}),(0,M.jsx)(`span`,{className:`dot`,"aria-hidden":`true`,children:`·`}),(0,M.jsx)(`span`,{className:`v`,children:h==null?`—`:`$`+h.toFixed(2)})]}):f?null:(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(`h3`,{className:`m-sec sec-costm`,children:[(0,M.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,M.jsx)(`use`,{href:`/static/icons.svg#pie-chart`})}),`Cost by model`]}),(0,M.jsx)(L,{rows:(e.cost_per_model||[]).map(e=>({model:e.model,cost_usd:e.cost_usd??0,label:y(e.model)}))})]}),s.length>0?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)(`h3`,{className:`m-sec sec-src`,children:[(0,M.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,M.jsx)(`use`,{href:`/static/icons.svg#file-text`})}),`Source files`]}),(0,M.jsxs)(`div`,{className:`msess-src`,id:`msess-src`,children:[(0,M.jsxs)(`div`,{className:`src-head`,children:[(0,M.jsxs)(`span`,{className:`count-pill`,children:[s.length,` file`,s.length===1?``:`s`]}),(0,M.jsxs)(`span`,{className:`sub`,children:[l.length,` primary`,u.length>0?(0,M.jsxs)(M.Fragment,{children:[` `,(0,M.jsx)(`span`,{className:`dot`,children:`·`}),` `,(0,M.jsxs)(`span`,{className:`subcount`,children:[u.length,` subagent`,u.length===1?``:`s`]})]}):null]})]}),l.length>0?l.map(e=>(0,M.jsx)(`div`,{className:`primary-path`,children:e},e)):u.length>0?(0,M.jsxs)(`div`,{className:`src-empty-primary`,children:[`No primary path resolved · `,u.length,` subagent path`,u.length===1?``:`s`,` below`]}):null,u.length>0?(0,M.jsxs)(`details`,{className:`subagents`,open:l.length===0,children:[(0,M.jsxs)(`summary`,{children:[`Show `,u.length,` subagent path`,u.length===1?``:`s`]}),(0,M.jsx)(`ul`,{className:`paths`,children:u.map(e=>(0,M.jsx)(`li`,{children:e},e))})]}):null]})]}):null]})}function U(e,t){let n=m(),r=v();return h(S(e,t),{tz:r.resolvedTz,offsetLabel:r.offsetLabel},{clampEndTo:n?.generated_at})}function W({projectKey:e,windowWeeks:t,detail:n}){let{data:r,loading:i,error:o}=n,s=r!=null&&(r.key!==e||r.window_weeks!==t);return i&&!r||s?(0,M.jsx)(`div`,{className:`panel-empty`,children:`Loading…`}):o&&!r?(0,M.jsx)(`div`,{className:`panel-empty`,children:o}):r?(0,M.jsx)(G,{data:{...r,label:r.key,sessions:r.sessions.map(e=>({...e,key:e.session_id}))},onOpenSession:e=>a({type:`OPEN_MODAL`,kind:`session`,sessionId:e}),onShowInSessions:()=>{a({type:`SET_FILTER`,text:r.key}),a({type:`CLOSE_MODAL`})}}):null}function G({data:e,onOpenSession:t,onShowInSessions:n,testId:r=`projects-drill`,sessionTestIdPrefix:i=`drill-session`,showInSessionsTestId:a=`drill-show-in-sessions`}){let o=v(),s={tz:o.resolvedTz,offsetLabel:o.offsetLabel},l=Math.max(0,e.sessions_total-e.sessions.length),u=U(e.window_start_at,e.window_end_at),d=(e.window_intervals??[]).reduce((e,t,n,r)=>n>0&&r[n-1].end_at<t.start_at?e+1:e,0);return(0,M.jsxs)(`div`,{className:`projects-drill`,"data-testid":r,"aria-live":`polite`,children:[(0,M.jsx)(`div`,{className:`projects-drill-head`,children:(0,M.jsxs)(`span`,{className:`title`,children:[`▾ `,e.label,` · `,e.sessions_total,` session`,e.sessions_total===1?``:`s`,` · `,c.usd2(e.window_cost_usd),u==null?` (${e.window_weeks} ${e.window_weeks===1?`cycle`:`cycles`})`:` · ${e.window_weeks} ${e.window_weeks===1?`cycle`:`cycles`} · ${u}`,d>0?` · ${d} reset gap${d===1?``:`s`}`:``]})}),(0,M.jsxs)(`div`,{className:`projects-drill-grid`,children:[(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`section-label`,children:`Models (this project)`}),e.models.length===0?(0,M.jsx)(`div`,{className:`muted`,children:`No model data for this window.`}):(0,M.jsx)(L,{rows:e.models.map(e=>({model:e.model,cost_usd:e.cost_usd,label:y(e.model)}))})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`section-label`,children:`Recent sessions →`}),e.sessions.length===0?(0,M.jsx)(`div`,{className:`muted`,children:`No sessions for this window.`}):e.sessions.map((e,n)=>(0,M.jsxs)(`button`,{"data-testid":`${i}-${n}`,className:`drill-session-row`,onClick:()=>t(e.key),children:[(0,M.jsx)(`span`,{className:`started`,children:c.datetimeShort(e.last_activity_at,s)}),(0,M.jsx)(`span`,{className:`chip ${x(e.primary_model)}`,style:_(e.primary_model),children:e.primary_model}),(0,M.jsx)(`span`,{className:`cost ${g(e.cost_usd)}`,children:c.usd2(e.cost_usd)})]},e.key)),(0,M.jsxs)(`div`,{className:`drill-session-footer`,children:[l>0&&(0,M.jsxs)(`span`,{className:`muted`,children:[`+`,l,` more`]}),(0,M.jsx)(`button`,{type:`button`,"data-testid":a,className:`drill-show-in-sessions`,onClick:n,children:`Show in Sessions →`})]})]})]})]})}export{L as a,V as i,W as n,P as o,H as r,N as s,G as t};
|
package/dashboard/static/assets/{SourceDetailModal-Bw0T8W-W.js → SourceDetailModal-BczsWKhD.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{F as e,Ft as t,Rt as n,a as r,b as i,c as a,f as o,it as s}from"./useKeymap-CW7Up0Ay.js";import{Ft as c,M as l,at as u,bt as d,it as f,lt as p}from"./index-BXDOzSng.js";import{N as m}from"./outlineNavigation-JObY7cUY.js";import{a as h,o as g,r as _,s as v,t as y}from"./ProjectsDrillPanel-z53a4v4M.js";var b=n(t(),1);function x(e,t,n,r={}){let[i,a]=(0,b.useState)(null),[o,s]=(0,b.useState)(null),[l,u]=(0,b.useState)(!1),d=m(c()),f=(0,b.useRef)(0),p=(0,b.useRef)(null),h=(0,b.useRef)(!1),g=(0,b.useRef)(0);return(0,b.useEffect)(()=>{if(!n){a(null),s(null),u(!1),f.current=0,p.current=null,h.current=!1,g.current+=1;return}let o=t===`project`?r.windowWeeks:void 0,c=r.account??void 0,l=`${e}/${t}/${n}/${o??``}/${c??``}`,d=p.current!==l,m=d||i==null;if(m&&h.current&&!d)return;m&&(u(!0),s(null)),d&&(f.current=0),p.current=l,h.current=!0;let _=++g.current,v=new URLSearchParams;o!=null&&v.set(`weeks`,String(o)),c!=null&&c!==``&&v.set(`account`,c);let y=v.toString()?`?${v.toString()}`:``,b=`/api/source/${e}/${t}/${encodeURIComponent(n)}${y}`;fetch(b).then(async e=>{if(g.current!==_)return;if(e.status===404){f.current+=1,f.current>=2?(a(null),s({kind:`not-found`,code:`source_resource_not_found`}),u(!1)):m&&(s({kind:`not-found`,code:`source_resource_not_found`}),u(!1));return}if(e.status===400){m&&(s({kind:`capability`,code:`source_capability_unavailable`}),u(!1));return}if(!e.ok){m&&(s({kind:`network`}),u(!1));return}f.current=0;let t=await e.json();g.current===_&&(a(t.data),s(null),u(!1))}).catch(()=>{g.current===_&&m&&(s({kind:`network`}),u(!1))}).finally(()=>{g.current===_&&(h.current=!1)})},[e,t,n,r.windowWeeks,r.account,d]),{data:i,error:o,loading:l}}var S=r();function C(){let t=(0,b.useSyncExternalStore)(i,()=>o().openSourceDetail),n=(0,b.useSyncExternalStore)(i,()=>o().openSourceDetailSelection??o().activeSource),r=(0,b.useSyncExternalStore)(i,()=>o().prefs.projectsWindowWeeks),s=c(),l=t?.source??`codex`,u=(0,b.useSyncExternalStore)(i,()=>o().accountFocus),d=t?.resource===`block`?t.accountKey??e(s,n,l,u):null,f=x(t?.source??`codex`,t?.resource??`session`,t?.key??null,{windowWeeks:t?.resource===`project`?r:void 0,account:d}),m=(0,b.useCallback)(()=>a({type:`CLOSE_SOURCE_DETAIL`}),[]);if(t==null)return null;let h;f.loading&&f.data==null?h=(0,S.jsx)(`p`,{className:`sd-loading`,children:`Loading…`}):f.error?h=(0,S.jsx)(`p`,{className:`sd-error`,"data-testid":`source-detail-error`,children:f.error.kind===`not-found`?`This item is no longer available.`:f.error.kind===`capability`?`This detail is unavailable for this source.`:`Couldn't load this detail — try again.`}):f.data&&(h=(0,S.jsx)(w,{data:f.data}));let g=t.resource===`session`?`sessions`:`${t.resource}s`,_=`${t.resource[0].toUpperCase()}${t.resource.slice(1)}`;return(0,S.jsx)(v,{title:t.resource===`session`?`Session detail`:t.resource===`project`?`Project detail`:`Block detail`,accentClass:t.resource===`block`?`accent-cyan`:`accent-orange`,onClose:m,focusLayer:`source-detail`,rootId:`source-detail-root`,titleId:`source-detail-title`,bodyId:`source-detail-body`,rootTestId:`source-detail-modal`,cardClassName:`source-detail-card`,dataSource:t.source,headerExtras:(0,S.jsx)(p,{panel:g,panelLabel:_,triggerId:`source-detail-share`,onClick:()=>a({type:`OPEN_SHARE`,panel:g,triggerId:`source-detail-share`,source:n})}),children:h},`${t.source}:${t.resource}:${t.key}`)}function w({data:e}){switch(e.detail_kind){case`claude_session`:return(0,S.jsx)(T,{d:e});case`claude_project`:return(0,S.jsx)(E,{d:e});case`claude_block`:return(0,S.jsx)(D,{d:e});case`codex_session`:return(0,S.jsx)(j,{d:e});case`codex_project`:return(0,S.jsx)(M,{d:e});case`codex_block`:return(0,S.jsx)(N,{d:e})}}function T({d:e}){let t=d(),n={tz:t.resolvedTz,offsetLabel:t.offsetLabel};return(0,S.jsx)(_,{detail:{session_id:null,started_utc:e.started_utc,last_activity_utc:e.last_activity_utc,duration_min:e.duration_min,cost_total_usd:e.cost_total_usd,project_label:e.project_label,project_path:null,input_tokens:e.input_tokens,output_tokens:e.output_tokens,cache_creation_tokens:e.cache_creation_tokens,cache_read_tokens:e.cache_read_tokens,cache_hit_pct:e.cache_hit_pct,models:e.models,cost_per_model:e.cost_per_model,source_paths:[]},ctx:n,identityLabel:e.label,projectAction:e.project_key&&e.project_label?{label:e.project_label,onOpen:()=>a({type:`OPEN_SOURCE_DETAIL`,source:`claude`,resource:`project`,key:e.project_key})}:void 0,privacyNote:e.privacy_note,showCacheRebuilds:!1,testId:`claude-session-detail`})}function E({d:e}){return(0,S.jsx)(`div`,{className:`sd-claude-project`,"data-testid":`claude-project-detail`,children:(0,S.jsx)(y,{data:e,testId:`qualified-project-drill`,sessionTestIdPrefix:`qualified-project-session`,showInSessionsTestId:`qualified-project-show-in-sessions`,onOpenSession:e=>a({type:`OPEN_SOURCE_DETAIL`,source:`claude`,resource:`session`,key:e}),onShowInSessions:()=>{a({type:`SET_FILTER`,text:e.label}),a({type:`CLOSE_SOURCE_DETAIL`})}})})}function D({d:e}){return(0,S.jsx)(`div`,{className:`sd-claude-block`,children:(0,S.jsxs)(`p`,{children:[s.usd2(e.cost_usd),` · `,s.tokens(e.total_tokens),` tokens · `,e.is_active?`active`:`complete`]})})}function O({items:e,initial:t,noun:n,empty:r,rowTestId:i,itemKey:a,renderItem:o}){let[s,c]=(0,b.useState)(!1);if(e.length===0)return(0,S.jsx)(`p`,{className:`sd-empty-note`,children:r});let l=s?e:e.slice(0,t),u=e.length-Math.min(e.length,t);return(0,S.jsxs)(`div`,{className:`sd-bounded-collection${s?` is-expanded`:``}`,children:[(0,S.jsx)(`ul`,{className:`sd-collection-list`,children:l.map((e,t)=>(0,S.jsx)(`li`,{"data-testid":i,children:o(e,t)},a(e,t)))}),u>0?(0,S.jsx)(`button`,{type:`button`,className:`sd-collection-toggle`,"aria-expanded":s,"aria-label":s?`Show first ${t} ${n}`:`Show all ${e.length} ${n}`,onClick:()=>c(e=>!e),children:s?`Show less`:`+${u} more`}):null]})}function k({totals:e}){let t=e.input_tokens>0?e.cached_input_tokens/e.input_tokens*100:null;return(0,S.jsx)(`div`,{className:`msess-tok-grid`,children:[[`Input`,e.input_tokens,!1],[`Output`,e.output_tokens,!1],[`Cached input`,e.cached_input_tokens,!1],[`Reasoning`,e.reasoning_output_tokens,!1],[`Reuse %`,t,!0]].map(([e,t,n])=>(0,S.jsxs)(`div`,{className:`msess-tok-tile${n?` cache-hit`:``}`,children:[(0,S.jsx)(`div`,{className:`lbl`,children:e}),(0,S.jsx)(`div`,{className:`n`,children:t===null?`—`:n?`${t.toFixed(1)}%`:t.toLocaleString(`en-US`)}),n&&t!==null?(0,S.jsx)(`div`,{className:`bar`,children:(0,S.jsx)(`div`,{className:`fill`,style:{width:`${Math.max(0,Math.min(100,t))}%`}})}):null]},e))})}function A({rows:e,rowTestId:t,initial:n=6}){return(0,S.jsx)(O,{items:e.filter(e=>e.modelName?.trim()),initial:n,noun:`models`,empty:`No model breakdown is available.`,rowTestId:t,itemKey:(e,t)=>`${e.modelName}:${t}`,renderItem:e=>(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`span`,{className:`sd-collection-primary`,children:[(0,S.jsx)(`span`,{className:`sw ${f(e.modelName)}`,style:u(e.modelName),"aria-hidden":`true`}),e.modelName]}),(0,S.jsx)(`span`,{children:s.usd2(e.cost??null)})]})})}function j({d:e}){let t=d(),n={tz:t.resolvedTz,offsetLabel:t.offsetLabel},r=e.input_tokens>0?e.cached_input_tokens/e.input_tokens*100:null,i=e.label?.trim()||`Untitled session`,a=e.model_breakdowns.flatMap(e=>{let t=e.modelName?.trim();return t?[{model:t,cost_usd:e.cost??0,label:t.replace(/^gpt-/i,``)}]:[]}),o=a.length===1;return(0,S.jsxs)(`div`,{className:`sd-codex-session modal-content`,"data-testid":`codex-session-detail`,children:[e.metadata_availability===`partial`?(0,S.jsx)(`p`,{className:`sd-note`,children:e.metadata_reason}):null,(0,S.jsxs)(`div`,{className:`m-chipstrip sd-session-chipstrip`,children:[(0,S.jsx)(`span`,{className:`msess-badge sd-prompt-clamp`,"aria-label":`Session prompt`,title:i,children:i}),(0,S.jsx)(`span`,{className:`m-pill ${g(`codex`)}`,children:`Codex`})]}),i.length>96?(0,S.jsxs)(`details`,{className:`sd-prompt-disclosure`,children:[(0,S.jsx)(`summary`,{children:`Show full prompt`}),(0,S.jsx)(`div`,{className:`sd-prompt-full`,tabIndex:0,children:i})]}):null,(0,S.jsxs)(`div`,{className:`m-hero cols-3`,children:[(0,S.jsxs)(`div`,{className:`m-kv kv-cost`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#dollar`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`v`,children:s.usd2(e.cost_usd)}),(0,S.jsx)(`div`,{className:`lbl`,children:`Total cost`})]})]}),(0,S.jsxs)(`div`,{className:`m-kv kv-dur`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#clock`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`v`,children:e.duration_min==null?`—`:`${e.duration_min} min`}),(0,S.jsx)(`div`,{className:`lbl`,children:`Duration`})]})]}),(0,S.jsxs)(`div`,{className:`m-kv kv-proj`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#folder`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`v`,title:e.project||``,"aria-label":`Project`,children:e.project||`—`}),(0,S.jsx)(`div`,{className:`lbl`,children:`Project`})]})]})]}),(0,S.jsxs)(`div`,{className:`msess-ts`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#calendar`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`span`,{className:`k`,children:`started`}),(0,S.jsx)(`span`,{className:`v`,children:s.datetimeShort(e.started_at??null,n)})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`span`,{className:`k`,children:`last activity`}),(0,S.jsx)(`span`,{className:`v`,children:s.datetimeShort(e.last_activity,n)})]})]}),(0,S.jsxs)(`h3`,{className:`m-sec sec-tok`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#hash`})}),`Tokens`]}),(0,S.jsx)(k,{totals:e}),(0,S.jsxs)(`h3`,{className:`m-sec sec-rebuild`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#refresh-cw`})}),`Cache reuse`]}),(0,S.jsx)(`div`,{className:`msess-rebuild-saved`,children:r==null?`No input tokens recorded`:`${r.toFixed(1)}% of input reused from cache ✓`}),o?(0,S.jsxs)(`div`,{className:`msess-model-caption`,children:[(0,S.jsx)(`span`,{className:`sw ${f(a[0].model)}`,style:u(a[0].model),"aria-hidden":`true`}),(0,S.jsx)(`span`,{className:`k`,children:`Model`}),(0,S.jsx)(`span`,{className:`name`,children:a[0].model}),(0,S.jsx)(`span`,{className:`dot`,"aria-hidden":`true`,children:`·`}),(0,S.jsx)(`span`,{className:`v`,children:s.usd2(a[0].cost_usd)})]}):a.length>0?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`h3`,{className:`m-sec sec-costm`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#pie-chart`})}),`Cost by model`]}),(0,S.jsx)(`div`,{className:`sd-model-cost-bars`,children:(0,S.jsx)(h,{rows:a})})]}):null,(0,S.jsxs)(`div`,{className:`sd-total-tokens`,children:[`Total tokens `,(0,S.jsx)(`strong`,{children:s.tokens(e.total_tokens)})]})]})}function M({d:e}){let t=d(),n=c(),r={tz:t.resolvedTz,offsetLabel:t.offsetLabel},i=l({startAt:e.range_start,endAt:e.range_end},r,{clampEndTo:n?.generated_at}),a=e.models.map(e=>({modelName:e.model,cost:e.cost_usd,inputTokens:e.input_tokens,cachedInputTokens:e.cached_input_tokens,outputTokens:e.output_tokens,reasoningOutputTokens:e.reasoning_output_tokens,totalTokens:e.total_tokens}));return(0,S.jsxs)(`div`,{className:`sd-codex-project modal-content`,"data-testid":`codex-project-detail`,children:[e.metadata_availability===`partial`?(0,S.jsx)(`p`,{className:`sd-note`,children:e.metadata_reason}):null,(0,S.jsxs)(`div`,{className:`m-chipstrip`,children:[(0,S.jsx)(`span`,{className:`msess-badge sd-project-label`,title:e.label||`Codex project`,children:e.label||`Codex project`}),(0,S.jsx)(`span`,{className:`m-pill ${g(`codex`)}`,children:`Codex`})]}),i&&(0,S.jsxs)(`p`,{className:`sd-window-note`,"data-testid":`codex-project-window`,children:[`Totals cover `,i,` — the retained Codex window this detail reads, which is wider than the shared range a ranked row is priced over.`]}),(0,S.jsxs)(`div`,{className:`m-hero cols-3`,children:[(0,S.jsxs)(`div`,{className:`m-kv kv-cost`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#dollar`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`v`,children:s.usd2(e.cost_usd)}),(0,S.jsx)(`div`,{className:`lbl`,children:`Total cost`})]})]}),(0,S.jsxs)(`div`,{className:`m-kv kv-dur`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#clock`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`v`,children:e.session_count}),(0,S.jsx)(`div`,{className:`lbl`,children:`Sessions`})]})]}),(0,S.jsxs)(`div`,{className:`m-kv kv-proj`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#hash`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`v`,children:s.tokens(e.total_tokens)}),(0,S.jsx)(`div`,{className:`lbl`,children:`Total tokens`})]})]})]}),(0,S.jsxs)(`div`,{className:`msess-ts sd-project-ts`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#calendar`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`span`,{className:`k`,children:`first seen`}),(0,S.jsx)(`span`,{className:`v`,children:s.datetimeShort(e.first_seen,r)})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`span`,{className:`k`,children:`last activity`}),(0,S.jsx)(`span`,{className:`v`,children:s.datetimeShort(e.last_seen,r)})]}),(0,S.jsxs)(`div`,{"data-testid":`codex-project-range`,children:[(0,S.jsx)(`span`,{className:`k`,children:`range`}),(0,S.jsx)(`span`,{className:`v`,children:i??`—`})]})]}),(0,S.jsxs)(`h3`,{className:`m-sec sec-tok`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#hash`})}),`Native token totals`]}),(0,S.jsx)(k,{totals:e}),(0,S.jsxs)(`h3`,{className:`m-sec sec-costm`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#pie-chart`})}),`Models`]}),(0,S.jsx)(A,{rows:a,rowTestId:`codex-project-model-row`}),(0,S.jsxs)(`h3`,{className:`m-sec sec-src`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#clock`})}),`Recent sessions`]}),(0,S.jsx)(O,{items:e.sessions,initial:6,noun:`sessions`,empty:`No retained sessions are available.`,rowTestId:`codex-project-session-row`,itemKey:(e,t)=>`${e.label}:${e.last_activity}:${t}`,renderItem:e=>(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`span`,{className:`sd-collection-primary sd-session-summary`,children:[(0,S.jsx)(`span`,{children:e.label}),(0,S.jsx)(`span`,{className:`sd-collection-meta`,children:s.datetimeShort(e.last_activity,r)})]}),(0,S.jsxs)(`span`,{children:[s.usd2(e.cost_usd),` · `,s.tokens(e.total_tokens)]})]})})]})}function N({d:e}){let t=d(),n={tz:t.resolvedTz,offsetLabel:t.offsetLabel},r=e.model_breakdowns??[],i=e.observations??[],a=e.milestones??[],o=e.freshness??`unavailable`,c=e.forecast??null;return(0,S.jsxs)(`div`,{className:`sd-codex-block modal-content`,"data-testid":`codex-block-detail`,children:[e.metadata_availability===`partial`?(0,S.jsx)(`p`,{className:`sd-note`,children:e.metadata_reason}):null,(0,S.jsxs)(`div`,{className:`m-chipstrip`,children:[(0,S.jsx)(`span`,{className:`msess-badge sd-project-label`,title:e.label,children:e.label}),(0,S.jsx)(`span`,{className:`m-pill ${g(`codex`)}`,children:`Codex`}),(0,S.jsx)(`span`,{className:`m-pill ${e.is_active?`accent-green`:`m-unavailable`}`,children:e.is_active?`Active`:`Complete`}),(0,S.jsx)(`span`,{className:`m-pill accent-cyan`,children:o})]}),(0,S.jsxs)(`div`,{className:`m-hero cols-3`,children:[(0,S.jsxs)(`div`,{className:`m-kv kv-dur`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#activity`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`v`,children:s.pct0(e.current_percent)}),(0,S.jsx)(`div`,{className:`lbl`,children:`Current usage`})]})]}),(0,S.jsxs)(`div`,{className:`m-kv kv-cost`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#dollar`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`v`,children:s.usd2(e.cost_usd??null)}),(0,S.jsx)(`div`,{className:`lbl`,children:`Retained cost`})]})]}),(0,S.jsxs)(`div`,{className:`m-kv kv-proj`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#trending-up`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`v`,children:s.pct1(c?.projected_percent??null)}),(0,S.jsx)(`div`,{className:`lbl`,children:`Projected at reset`}),(0,S.jsx)(`div`,{className:`sub`,children:c?.status??`unavailable`})]})]})]}),(0,S.jsxs)(`div`,{className:`msess-ts sd-block-ts`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#calendar`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`span`,{className:`k`,children:`window`}),(0,S.jsxs)(`span`,{className:`v`,children:[s.datetimeShort(e.start_at??null,n),` → `,s.datetimeShort(e.end_at??e.resets_at,n)]})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`span`,{className:`k`,children:`resets`}),(0,S.jsx)(`span`,{className:`v`,children:s.datetimeShort(e.resets_at,n)})]})]}),(0,S.jsxs)(`h3`,{className:`m-sec sec-costm`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#pie-chart`})}),`Models`]}),(0,S.jsx)(A,{rows:r,rowTestId:`codex-block-model-row`}),(0,S.jsxs)(`h3`,{className:`m-sec sec-prog`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#activity`})}),`Quota progression`]}),(0,S.jsxs)(`p`,{className:`sd-progression-summary`,children:[i.length,` observations · `,a.length,` milestones`]}),(0,S.jsx)(`h4`,{className:`sd-subsection-title`,children:`Observations`}),(0,S.jsx)(O,{items:i,initial:8,noun:`observations`,empty:`No retained quota observations are available.`,rowTestId:`codex-block-observation-row`,itemKey:(e,t)=>`${e.captured_at}:${t}`,renderItem:e=>(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`span`,{className:`sd-collection-primary sd-observation-time`,children:s.datetimeShort(e.captured_at,n)}),(0,S.jsx)(`span`,{className:`sd-observation-value`,children:s.pct1(e.used_percent)}),(0,S.jsx)(`span`,{className:`sd-observation-track`,"aria-hidden":`true`,children:(0,S.jsx)(`span`,{style:{width:`${Math.max(0,Math.min(100,e.used_percent))}%`}})})]})}),(0,S.jsx)(`h4`,{className:`sd-subsection-title`,children:`Milestones`}),(0,S.jsx)(O,{items:a,initial:8,noun:`milestones`,empty:`No quota milestones were crossed in this window.`,rowTestId:`codex-block-milestone-row`,itemKey:(e,t)=>`${e.percent}:${e.captured_at}:${t}`,renderItem:e=>(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`span`,{className:`sd-collection-primary`,children:[`Crossed `,s.pct0(e.percent)]}),(0,S.jsx)(`span`,{children:s.datetimeShort(e.captured_at,n)})]})})]})}export{C as SourceDetailModal};
|
|
1
|
+
import{F as e,Ft as t,Rt as n,a as r,b as i,c as a,f as o,it as s}from"./useKeymap-CW7Up0Ay.js";import{Ft as c,M as l,at as u,bt as d,it as f,lt as p}from"./index-CYZ3NLqF.js";import{N as m}from"./outlineNavigation-k-zIif6W.js";import{a as h,o as g,r as _,s as v,t as y}from"./ProjectsDrillPanel-C3PJy1xx.js";var b=n(t(),1);function x(e,t,n,r={}){let[i,a]=(0,b.useState)(null),[o,s]=(0,b.useState)(null),[l,u]=(0,b.useState)(!1),d=m(c()),f=(0,b.useRef)(0),p=(0,b.useRef)(null),h=(0,b.useRef)(!1),g=(0,b.useRef)(0);return(0,b.useEffect)(()=>{if(!n){a(null),s(null),u(!1),f.current=0,p.current=null,h.current=!1,g.current+=1;return}let o=t===`project`?r.windowWeeks:void 0,c=r.account??void 0,l=`${e}/${t}/${n}/${o??``}/${c??``}`,d=p.current!==l,m=d||i==null;if(m&&h.current&&!d)return;m&&(u(!0),s(null)),d&&(f.current=0),p.current=l,h.current=!0;let _=++g.current,v=new URLSearchParams;o!=null&&v.set(`weeks`,String(o)),c!=null&&c!==``&&v.set(`account`,c);let y=v.toString()?`?${v.toString()}`:``,b=`/api/source/${e}/${t}/${encodeURIComponent(n)}${y}`;fetch(b).then(async e=>{if(g.current!==_)return;if(e.status===404){f.current+=1,f.current>=2?(a(null),s({kind:`not-found`,code:`source_resource_not_found`}),u(!1)):m&&(s({kind:`not-found`,code:`source_resource_not_found`}),u(!1));return}if(e.status===400){m&&(s({kind:`capability`,code:`source_capability_unavailable`}),u(!1));return}if(!e.ok){m&&(s({kind:`network`}),u(!1));return}f.current=0;let t=await e.json();g.current===_&&(a(t.data),s(null),u(!1))}).catch(()=>{g.current===_&&m&&(s({kind:`network`}),u(!1))}).finally(()=>{g.current===_&&(h.current=!1)})},[e,t,n,r.windowWeeks,r.account,d]),{data:i,error:o,loading:l}}var S=r();function C(){let t=(0,b.useSyncExternalStore)(i,()=>o().openSourceDetail),n=(0,b.useSyncExternalStore)(i,()=>o().openSourceDetailSelection??o().activeSource),r=(0,b.useSyncExternalStore)(i,()=>o().prefs.projectsWindowWeeks),s=c(),l=t?.source??`codex`,u=(0,b.useSyncExternalStore)(i,()=>o().accountFocus),d=t?.resource===`block`?t.accountKey??e(s,n,l,u):null,f=x(t?.source??`codex`,t?.resource??`session`,t?.key??null,{windowWeeks:t?.resource===`project`?r:void 0,account:d}),m=(0,b.useCallback)(()=>a({type:`CLOSE_SOURCE_DETAIL`}),[]);if(t==null)return null;let h;f.loading&&f.data==null?h=(0,S.jsx)(`p`,{className:`sd-loading`,children:`Loading…`}):f.error?h=(0,S.jsx)(`p`,{className:`sd-error`,"data-testid":`source-detail-error`,children:f.error.kind===`not-found`?`This item is no longer available.`:f.error.kind===`capability`?`This detail is unavailable for this source.`:`Couldn't load this detail — try again.`}):f.data&&(h=(0,S.jsx)(w,{data:f.data}));let g=t.resource===`session`?`sessions`:`${t.resource}s`,_=`${t.resource[0].toUpperCase()}${t.resource.slice(1)}`;return(0,S.jsx)(v,{title:t.resource===`session`?`Session detail`:t.resource===`project`?`Project detail`:`Block detail`,accentClass:t.resource===`block`?`accent-cyan`:`accent-orange`,onClose:m,focusLayer:`source-detail`,rootId:`source-detail-root`,titleId:`source-detail-title`,bodyId:`source-detail-body`,rootTestId:`source-detail-modal`,cardClassName:`source-detail-card`,dataSource:t.source,headerExtras:(0,S.jsx)(p,{panel:g,panelLabel:_,triggerId:`source-detail-share`,onClick:()=>a({type:`OPEN_SHARE`,panel:g,triggerId:`source-detail-share`,source:n})}),children:h},`${t.source}:${t.resource}:${t.key}`)}function w({data:e}){switch(e.detail_kind){case`claude_session`:return(0,S.jsx)(T,{d:e});case`claude_project`:return(0,S.jsx)(E,{d:e});case`claude_block`:return(0,S.jsx)(D,{d:e});case`codex_session`:return(0,S.jsx)(j,{d:e});case`codex_project`:return(0,S.jsx)(M,{d:e});case`codex_block`:return(0,S.jsx)(N,{d:e})}}function T({d:e}){let t=d(),n={tz:t.resolvedTz,offsetLabel:t.offsetLabel};return(0,S.jsx)(_,{detail:{session_id:null,started_utc:e.started_utc,last_activity_utc:e.last_activity_utc,duration_min:e.duration_min,cost_total_usd:e.cost_total_usd,project_label:e.project_label,project_path:null,input_tokens:e.input_tokens,output_tokens:e.output_tokens,cache_creation_tokens:e.cache_creation_tokens,cache_read_tokens:e.cache_read_tokens,cache_hit_pct:e.cache_hit_pct,models:e.models,cost_per_model:e.cost_per_model,source_paths:[]},ctx:n,identityLabel:e.label,projectAction:e.project_key&&e.project_label?{label:e.project_label,onOpen:()=>a({type:`OPEN_SOURCE_DETAIL`,source:`claude`,resource:`project`,key:e.project_key})}:void 0,privacyNote:e.privacy_note,showCacheRebuilds:!1,testId:`claude-session-detail`})}function E({d:e}){return(0,S.jsx)(`div`,{className:`sd-claude-project`,"data-testid":`claude-project-detail`,children:(0,S.jsx)(y,{data:e,testId:`qualified-project-drill`,sessionTestIdPrefix:`qualified-project-session`,showInSessionsTestId:`qualified-project-show-in-sessions`,onOpenSession:e=>a({type:`OPEN_SOURCE_DETAIL`,source:`claude`,resource:`session`,key:e}),onShowInSessions:()=>{a({type:`SET_FILTER`,text:e.label}),a({type:`CLOSE_SOURCE_DETAIL`})}})})}function D({d:e}){return(0,S.jsx)(`div`,{className:`sd-claude-block`,children:(0,S.jsxs)(`p`,{children:[s.usd2(e.cost_usd),` · `,s.tokens(e.total_tokens),` tokens · `,e.is_active?`active`:`complete`]})})}function O({items:e,initial:t,noun:n,empty:r,rowTestId:i,itemKey:a,renderItem:o}){let[s,c]=(0,b.useState)(!1);if(e.length===0)return(0,S.jsx)(`p`,{className:`sd-empty-note`,children:r});let l=s?e:e.slice(0,t),u=e.length-Math.min(e.length,t);return(0,S.jsxs)(`div`,{className:`sd-bounded-collection${s?` is-expanded`:``}`,children:[(0,S.jsx)(`ul`,{className:`sd-collection-list`,children:l.map((e,t)=>(0,S.jsx)(`li`,{"data-testid":i,children:o(e,t)},a(e,t)))}),u>0?(0,S.jsx)(`button`,{type:`button`,className:`sd-collection-toggle`,"aria-expanded":s,"aria-label":s?`Show first ${t} ${n}`:`Show all ${e.length} ${n}`,onClick:()=>c(e=>!e),children:s?`Show less`:`+${u} more`}):null]})}function k({totals:e}){let t=e.input_tokens>0?e.cached_input_tokens/e.input_tokens*100:null;return(0,S.jsx)(`div`,{className:`msess-tok-grid`,children:[[`Input`,e.input_tokens,!1],[`Output`,e.output_tokens,!1],[`Cached input`,e.cached_input_tokens,!1],[`Reasoning`,e.reasoning_output_tokens,!1],[`Reuse %`,t,!0]].map(([e,t,n])=>(0,S.jsxs)(`div`,{className:`msess-tok-tile${n?` cache-hit`:``}`,children:[(0,S.jsx)(`div`,{className:`lbl`,children:e}),(0,S.jsx)(`div`,{className:`n`,children:t===null?`—`:n?`${t.toFixed(1)}%`:t.toLocaleString(`en-US`)}),n&&t!==null?(0,S.jsx)(`div`,{className:`bar`,children:(0,S.jsx)(`div`,{className:`fill`,style:{width:`${Math.max(0,Math.min(100,t))}%`}})}):null]},e))})}function A({rows:e,rowTestId:t,initial:n=6}){return(0,S.jsx)(O,{items:e.filter(e=>e.modelName?.trim()),initial:n,noun:`models`,empty:`No model breakdown is available.`,rowTestId:t,itemKey:(e,t)=>`${e.modelName}:${t}`,renderItem:e=>(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`span`,{className:`sd-collection-primary`,children:[(0,S.jsx)(`span`,{className:`sw ${f(e.modelName)}`,style:u(e.modelName),"aria-hidden":`true`}),e.modelName]}),(0,S.jsx)(`span`,{children:s.usd2(e.cost??null)})]})})}function j({d:e}){let t=d(),n={tz:t.resolvedTz,offsetLabel:t.offsetLabel},r=e.input_tokens>0?e.cached_input_tokens/e.input_tokens*100:null,i=e.label?.trim()||`Untitled session`,a=e.model_breakdowns.flatMap(e=>{let t=e.modelName?.trim();return t?[{model:t,cost_usd:e.cost??0,label:t.replace(/^gpt-/i,``)}]:[]}),o=a.length===1;return(0,S.jsxs)(`div`,{className:`sd-codex-session modal-content`,"data-testid":`codex-session-detail`,children:[e.metadata_availability===`partial`?(0,S.jsx)(`p`,{className:`sd-note`,children:e.metadata_reason}):null,(0,S.jsxs)(`div`,{className:`m-chipstrip sd-session-chipstrip`,children:[(0,S.jsx)(`span`,{className:`msess-badge sd-prompt-clamp`,"aria-label":`Session prompt`,title:i,children:i}),(0,S.jsx)(`span`,{className:`m-pill ${g(`codex`)}`,children:`Codex`})]}),i.length>96?(0,S.jsxs)(`details`,{className:`sd-prompt-disclosure`,children:[(0,S.jsx)(`summary`,{children:`Show full prompt`}),(0,S.jsx)(`div`,{className:`sd-prompt-full`,tabIndex:0,children:i})]}):null,(0,S.jsxs)(`div`,{className:`m-hero cols-3`,children:[(0,S.jsxs)(`div`,{className:`m-kv kv-cost`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#dollar`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`v`,children:s.usd2(e.cost_usd)}),(0,S.jsx)(`div`,{className:`lbl`,children:`Total cost`})]})]}),(0,S.jsxs)(`div`,{className:`m-kv kv-dur`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#clock`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`v`,children:e.duration_min==null?`—`:`${e.duration_min} min`}),(0,S.jsx)(`div`,{className:`lbl`,children:`Duration`})]})]}),(0,S.jsxs)(`div`,{className:`m-kv kv-proj`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#folder`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`v`,title:e.project||``,"aria-label":`Project`,children:e.project||`—`}),(0,S.jsx)(`div`,{className:`lbl`,children:`Project`})]})]})]}),(0,S.jsxs)(`div`,{className:`msess-ts`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#calendar`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`span`,{className:`k`,children:`started`}),(0,S.jsx)(`span`,{className:`v`,children:s.datetimeShort(e.started_at??null,n)})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`span`,{className:`k`,children:`last activity`}),(0,S.jsx)(`span`,{className:`v`,children:s.datetimeShort(e.last_activity,n)})]})]}),(0,S.jsxs)(`h3`,{className:`m-sec sec-tok`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#hash`})}),`Tokens`]}),(0,S.jsx)(k,{totals:e}),(0,S.jsxs)(`h3`,{className:`m-sec sec-rebuild`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#refresh-cw`})}),`Cache reuse`]}),(0,S.jsx)(`div`,{className:`msess-rebuild-saved`,children:r==null?`No input tokens recorded`:`${r.toFixed(1)}% of input reused from cache ✓`}),o?(0,S.jsxs)(`div`,{className:`msess-model-caption`,children:[(0,S.jsx)(`span`,{className:`sw ${f(a[0].model)}`,style:u(a[0].model),"aria-hidden":`true`}),(0,S.jsx)(`span`,{className:`k`,children:`Model`}),(0,S.jsx)(`span`,{className:`name`,children:a[0].model}),(0,S.jsx)(`span`,{className:`dot`,"aria-hidden":`true`,children:`·`}),(0,S.jsx)(`span`,{className:`v`,children:s.usd2(a[0].cost_usd)})]}):a.length>0?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`h3`,{className:`m-sec sec-costm`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#pie-chart`})}),`Cost by model`]}),(0,S.jsx)(`div`,{className:`sd-model-cost-bars`,children:(0,S.jsx)(h,{rows:a})})]}):null,(0,S.jsxs)(`div`,{className:`sd-total-tokens`,children:[`Total tokens `,(0,S.jsx)(`strong`,{children:s.tokens(e.total_tokens)})]})]})}function M({d:e}){let t=d(),n=c(),r={tz:t.resolvedTz,offsetLabel:t.offsetLabel},i=l({startAt:e.range_start,endAt:e.range_end},r,{clampEndTo:n?.generated_at}),a=e.models.map(e=>({modelName:e.model,cost:e.cost_usd,inputTokens:e.input_tokens,cachedInputTokens:e.cached_input_tokens,outputTokens:e.output_tokens,reasoningOutputTokens:e.reasoning_output_tokens,totalTokens:e.total_tokens}));return(0,S.jsxs)(`div`,{className:`sd-codex-project modal-content`,"data-testid":`codex-project-detail`,children:[e.metadata_availability===`partial`?(0,S.jsx)(`p`,{className:`sd-note`,children:e.metadata_reason}):null,(0,S.jsxs)(`div`,{className:`m-chipstrip`,children:[(0,S.jsx)(`span`,{className:`msess-badge sd-project-label`,title:e.label||`Codex project`,children:e.label||`Codex project`}),(0,S.jsx)(`span`,{className:`m-pill ${g(`codex`)}`,children:`Codex`})]}),i&&(0,S.jsxs)(`p`,{className:`sd-window-note`,"data-testid":`codex-project-window`,children:[`Totals cover `,i,` — the retained Codex window this detail reads, which is wider than the shared range a ranked row is priced over.`]}),(0,S.jsxs)(`div`,{className:`m-hero cols-3`,children:[(0,S.jsxs)(`div`,{className:`m-kv kv-cost`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#dollar`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`v`,children:s.usd2(e.cost_usd)}),(0,S.jsx)(`div`,{className:`lbl`,children:`Total cost`})]})]}),(0,S.jsxs)(`div`,{className:`m-kv kv-dur`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#clock`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`v`,children:e.session_count}),(0,S.jsx)(`div`,{className:`lbl`,children:`Sessions`})]})]}),(0,S.jsxs)(`div`,{className:`m-kv kv-proj`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#hash`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`v`,children:s.tokens(e.total_tokens)}),(0,S.jsx)(`div`,{className:`lbl`,children:`Total tokens`})]})]})]}),(0,S.jsxs)(`div`,{className:`msess-ts sd-project-ts`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#calendar`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`span`,{className:`k`,children:`first seen`}),(0,S.jsx)(`span`,{className:`v`,children:s.datetimeShort(e.first_seen,r)})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`span`,{className:`k`,children:`last activity`}),(0,S.jsx)(`span`,{className:`v`,children:s.datetimeShort(e.last_seen,r)})]}),(0,S.jsxs)(`div`,{"data-testid":`codex-project-range`,children:[(0,S.jsx)(`span`,{className:`k`,children:`range`}),(0,S.jsx)(`span`,{className:`v`,children:i??`—`})]})]}),(0,S.jsxs)(`h3`,{className:`m-sec sec-tok`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#hash`})}),`Native token totals`]}),(0,S.jsx)(k,{totals:e}),(0,S.jsxs)(`h3`,{className:`m-sec sec-costm`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#pie-chart`})}),`Models`]}),(0,S.jsx)(A,{rows:a,rowTestId:`codex-project-model-row`}),(0,S.jsxs)(`h3`,{className:`m-sec sec-src`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#clock`})}),`Recent sessions`]}),(0,S.jsx)(O,{items:e.sessions,initial:6,noun:`sessions`,empty:`No retained sessions are available.`,rowTestId:`codex-project-session-row`,itemKey:(e,t)=>`${e.label}:${e.last_activity}:${t}`,renderItem:e=>(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`span`,{className:`sd-collection-primary sd-session-summary`,children:[(0,S.jsx)(`span`,{children:e.label}),(0,S.jsx)(`span`,{className:`sd-collection-meta`,children:s.datetimeShort(e.last_activity,r)})]}),(0,S.jsxs)(`span`,{children:[s.usd2(e.cost_usd),` · `,s.tokens(e.total_tokens)]})]})})]})}function N({d:e}){let t=d(),n={tz:t.resolvedTz,offsetLabel:t.offsetLabel},r=e.model_breakdowns??[],i=e.observations??[],a=e.milestones??[],o=e.freshness??`unavailable`,c=e.forecast??null;return(0,S.jsxs)(`div`,{className:`sd-codex-block modal-content`,"data-testid":`codex-block-detail`,children:[e.metadata_availability===`partial`?(0,S.jsx)(`p`,{className:`sd-note`,children:e.metadata_reason}):null,(0,S.jsxs)(`div`,{className:`m-chipstrip`,children:[(0,S.jsx)(`span`,{className:`msess-badge sd-project-label`,title:e.label,children:e.label}),(0,S.jsx)(`span`,{className:`m-pill ${g(`codex`)}`,children:`Codex`}),(0,S.jsx)(`span`,{className:`m-pill ${e.is_active?`accent-green`:`m-unavailable`}`,children:e.is_active?`Active`:`Complete`}),(0,S.jsx)(`span`,{className:`m-pill accent-cyan`,children:o})]}),(0,S.jsxs)(`div`,{className:`m-hero cols-3`,children:[(0,S.jsxs)(`div`,{className:`m-kv kv-dur`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#activity`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`v`,children:s.pct0(e.current_percent)}),(0,S.jsx)(`div`,{className:`lbl`,children:`Current usage`})]})]}),(0,S.jsxs)(`div`,{className:`m-kv kv-cost`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#dollar`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`v`,children:s.usd2(e.cost_usd??null)}),(0,S.jsx)(`div`,{className:`lbl`,children:`Retained cost`})]})]}),(0,S.jsxs)(`div`,{className:`m-kv kv-proj`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#trending-up`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`div`,{className:`v`,children:s.pct1(c?.projected_percent??null)}),(0,S.jsx)(`div`,{className:`lbl`,children:`Projected at reset`}),(0,S.jsx)(`div`,{className:`sub`,children:c?.status??`unavailable`})]})]})]}),(0,S.jsxs)(`div`,{className:`msess-ts sd-block-ts`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#calendar`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`span`,{className:`k`,children:`window`}),(0,S.jsxs)(`span`,{className:`v`,children:[s.datetimeShort(e.start_at??null,n),` → `,s.datetimeShort(e.end_at??e.resets_at,n)]})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`span`,{className:`k`,children:`resets`}),(0,S.jsx)(`span`,{className:`v`,children:s.datetimeShort(e.resets_at,n)})]})]}),(0,S.jsxs)(`h3`,{className:`m-sec sec-costm`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#pie-chart`})}),`Models`]}),(0,S.jsx)(A,{rows:r,rowTestId:`codex-block-model-row`}),(0,S.jsxs)(`h3`,{className:`m-sec sec-prog`,children:[(0,S.jsx)(`svg`,{className:`icon`,"aria-hidden":`true`,children:(0,S.jsx)(`use`,{href:`/static/icons.svg#activity`})}),`Quota progression`]}),(0,S.jsxs)(`p`,{className:`sd-progression-summary`,children:[i.length,` observations · `,a.length,` milestones`]}),(0,S.jsx)(`h4`,{className:`sd-subsection-title`,children:`Observations`}),(0,S.jsx)(O,{items:i,initial:8,noun:`observations`,empty:`No retained quota observations are available.`,rowTestId:`codex-block-observation-row`,itemKey:(e,t)=>`${e.captured_at}:${t}`,renderItem:e=>(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`span`,{className:`sd-collection-primary sd-observation-time`,children:s.datetimeShort(e.captured_at,n)}),(0,S.jsx)(`span`,{className:`sd-observation-value`,children:s.pct1(e.used_percent)}),(0,S.jsx)(`span`,{className:`sd-observation-track`,"aria-hidden":`true`,children:(0,S.jsx)(`span`,{style:{width:`${Math.max(0,Math.min(100,e.used_percent))}%`}})})]})}),(0,S.jsx)(`h4`,{className:`sd-subsection-title`,children:`Milestones`}),(0,S.jsx)(O,{items:a,initial:8,noun:`milestones`,empty:`No quota milestones were crossed in this window.`,rowTestId:`codex-block-milestone-row`,itemKey:(e,t)=>`${e.percent}:${e.captured_at}:${t}`,renderItem:e=>(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`span`,{className:`sd-collection-primary`,children:[`Crossed `,s.pct0(e.percent)]}),(0,S.jsx)(`span`,{children:s.datetimeShort(e.captured_at,n)})]})})]})}export{C as SourceDetailModal};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Ft as e,Rt as t,a as n,b as r,c as i,f as a,t as o}from"./useKeymap-CW7Up0Ay.js";import{Mt as s,Nt as c,Pt as l,o as u,ut as d}from"./index-
|
|
1
|
+
import{Ft as e,Rt as t,a as n,b as r,c as i,f as a,t as o}from"./useKeymap-CW7Up0Ay.js";import{Mt as s,Nt as c,Pt as l,o as u,ut as d}from"./index-CYZ3NLqF.js";var f=t(e(),1),p=n(),m={brew:`Homebrew`,npm:`npm`,unknown:`unknown`};function h(){let e=(0,f.useSyncExternalStore)(r,()=>a().update).state;if(!e)return null;let t=e.method,n=m[t]??t,i=e.update_command??``,o=t===`unknown`||!i,s=e.configured_channel===`beta`;return(0,p.jsxs)(`div`,{className:`update-modal-body`,children:[(0,p.jsxs)(`div`,{className:`update-kv`,children:[(0,p.jsx)(`span`,{className:`k`,children:`Current`}),(0,p.jsx)(`span`,{className:`v`,children:e.current_version??`—`}),(0,p.jsx)(`span`,{className:`k`,children:`Latest`}),(0,p.jsxs)(`span`,{className:`v`,children:[e.latest_version??`—`,s?(0,p.jsx)(`span`,{className:`update-channel-tag`,children:` (beta)`}):null]}),(0,p.jsx)(`span`,{className:`k`,children:`Method`}),(0,p.jsxs)(`span`,{className:`v`,children:[n,(0,p.jsx)(`span`,{className:`muted`,children:` (auto-detected)`})]})]}),o?(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(`div`,{className:`update-row-label`,children:`Update manually`}),(0,p.jsxs)(`p`,{className:`update-manual-note`,children:[`Couldn't auto-detect this install's package manager. See `,(0,p.jsx)(`a`,{href:`https://github.com/omrikais/cctally#updating`,target:`_blank`,rel:`noopener noreferrer`,children:`Updating`}),` for the manual recipe.`]})]}):(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(`div`,{className:`update-row-label`,children:`Will run`}),(0,p.jsx)(`code`,{className:`update-cmd`,children:i})]}),e.release_notes_url?(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(`div`,{className:`update-row-label`,children:`Release notes`}),(0,p.jsx)(`div`,{className:`update-link`,children:(0,p.jsxs)(`a`,{href:e.release_notes_url,target:`_blank`,rel:`noopener noreferrer`,children:[`↗ `,e.release_notes_url.replace(/^https?:\/\//,``)]})})]}):null,e.prerelease_note?(0,p.jsx)(`div`,{className:`update-prerelease-note`,role:`note`,"aria-label":`Prerelease note`,children:e.prerelease_note}):null,(0,p.jsxs)(`div`,{className:`update-actions`,children:[(0,p.jsx)(`button`,{type:`button`,className:`update-btn update-btn-primary`,disabled:o,onClick:()=>l.start(),children:`Update now`}),(0,p.jsx)(`button`,{type:`button`,className:`update-btn`,disabled:!e.latest_version,onClick:()=>l.skip(e.latest_version),children:`Skip this version`}),(0,p.jsx)(`button`,{type:`button`,className:`update-btn`,onClick:()=>l.remind(7),children:`Remind in 7 days`})]})]})}function g({events:e,maxLines:t=500}){let n=(0,f.useRef)(null),r=(0,f.useRef)(!0),i=e.filter(e=>e.type===`stdout`||e.type===`stderr`||e.type===`step`||e.type===`exit`),a=i.slice(-t),o=i.length-a.length;(0,f.useEffect)(()=>{let e=n.current;e&&r.current&&(e.scrollTop=e.scrollHeight)},[e.length]);function s(e){let t=e.currentTarget;r.current=t.scrollHeight-t.scrollTop-t.clientHeight<8}return a.length===0?(0,p.jsx)(`pre`,{className:`update-stream`,ref:n,onScroll:s,"aria-live":`polite`,"aria-label":`Update output`,children:(0,p.jsx)(`span`,{className:`update-stream-empty`,children:`Waiting for output…`})}):(0,p.jsxs)(`pre`,{className:`update-stream`,ref:n,onScroll:s,"aria-live":`polite`,"aria-label":`Update output`,children:[o>0?(0,p.jsxs)(`span`,{className:`update-stream-trunc`,children:[`(… `,o,` earlier line`,o===1?``:`s`,` truncated)`,`
|
|
2
2
|
`]}):null,a.map((e,t)=>e.type===`step`?(0,p.jsxs)(`span`,{className:`update-stream-step`,children:[`==> `,e.name??e.step??e.data??``,`
|
|
3
3
|
`]},t):e.type===`stderr`?(0,p.jsxs)(`span`,{className:`update-stream-line err`,children:[e.data??``,`
|
|
4
4
|
`]},t):e.type===`exit`?(0,p.jsxs)(`span`,{className:`update-stream-exit`,children:[`(exited rc=${e.rc??`?`})`,`
|