ccgauge 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +26 -26
  3. package/.next/standalone/.next/app-path-routes-manifest.json +7 -7
  4. package/.next/standalone/.next/build-manifest.json +2 -2
  5. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  6. package/.next/standalone/.next/server/app/api/blocks/route.js +1 -1
  7. package/.next/standalone/.next/server/app/api/blocks/route.js.nft.json +1 -1
  8. package/.next/standalone/.next/server/app/api/blocks/route_client-reference-manifest.js +1 -1
  9. package/.next/standalone/.next/server/app/api/export/usage/route.js +1 -1
  10. package/.next/standalone/.next/server/app/api/export/usage/route.js.nft.json +1 -1
  11. package/.next/standalone/.next/server/app/api/export/usage/route_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/api/projects/route.js +1 -1
  14. package/.next/standalone/.next/server/app/api/projects/route.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/api/scan/route.js +1 -1
  17. package/.next/standalone/.next/server/app/api/scan/route.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/api/scan/route_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/api/sessions/route.js +1 -1
  20. package/.next/standalone/.next/server/app/api/sessions/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/api/usage/route.js +1 -1
  23. package/.next/standalone/.next/server/app/api/usage/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/usage/route_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/models/page.js +2 -2
  26. package/.next/standalone/.next/server/app/models/page.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/models/page_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/page.js +2 -2
  29. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/projects/[id]/page.js +2 -2
  32. package/.next/standalone/.next/server/app/projects/[id]/page.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/projects/[id]/page_client-reference-manifest.js +1 -1
  34. package/.next/standalone/.next/server/app/projects/page.js +1 -1
  35. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/sessions/[id]/page.js +2 -2
  38. package/.next/standalone/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/sessions/page.js +1 -1
  41. package/.next/standalone/.next/server/app/sessions/page.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/settings/page.js +1 -1
  44. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/usage/page.js +2 -2
  47. package/.next/standalone/.next/server/app/usage/page.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/usage/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app-paths-manifest.json +7 -7
  50. package/.next/standalone/.next/server/chunks/971.js +1 -1
  51. package/.next/standalone/.next/server/chunks/98.js +1 -0
  52. package/.next/standalone/.next/server/functions-config-manifest.json +2 -2
  53. package/.next/standalone/.next/server/pages/500.html +1 -1
  54. package/.next/standalone/package.json +1 -1
  55. package/CHANGELOG.md +148 -0
  56. package/README.md +19 -6
  57. package/README.zh-CN.md +19 -6
  58. package/bin/cli.mjs +37 -17
  59. package/dist/mcp/server.mjs +40 -23699
  60. package/dist/report/index.mjs +38 -18
  61. package/package.json +1 -1
  62. package/.next/standalone/.next/server/chunks/155.js +0 -1
  63. /package/.next/standalone/.next/static/{4YjiQrRI-CsVEPC1UOUEJ → alqi5oQtTQUdpxp2x0yAt}/_buildManifest.js +0 -0
  64. /package/.next/standalone/.next/static/{4YjiQrRI-CsVEPC1UOUEJ → alqi5oQtTQUdpxp2x0yAt}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- (()=>{var a={};a.id=430,a.ids=[430],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14843:(a,b,c)=>{"use strict";c.d(b,{N0:()=>g,go:()=>h});var d=c(50160),e=c(30285),f=c(62955);function g(a){return a&&a.block?{hasBlock:!0,startTime:a.block.startTime,endTime:a.block.endTime,totalTokens:a.block.totalTokens,cost:a.block.cost,requests:a.block.requests,models:a.block.models,burnRatePerMin:a.burnRatePerMin,costPerMin:a.costPerMin,projectedTotal:a.projectedTotal,projectedCost:a.projectedCost}:{hasBlock:!1,totalTokens:0,cost:0,requests:0,models:[],burnRatePerMin:0,costPerMin:0,projectedTotal:0,projectedCost:0}}function h(a,b,c){let g=(0,e.o)(a,b,c),h=new Map;for(let a of b)h.set(a.uuid,a);let i=new Map,j=new Map,k=new Map;for(let b of a){let a=g.get(b.uuid)??b.uuid,e=(0,d.SI)(b),l=function(a){let b=i.get(a);if(void 0!==b)return b;let d=[],e=a,f="",g=new Set;for(;e&&!g.has(e);){g.add(e);let a=i.get(e);if(void 0!==a){f=a;break}d.push(e);let b=h.get(e);if(b&&b.textPreview&&b.textPreview.trim()){f=b.textPreview;break}e=c[e]??null}for(let a of d)i.set(a,f);return f}(b.uuid),m={uuid:b.uuid,timestamp:b.timestamp,source:b.source,model:b.model,cwd:b.cwd,projectLabel:(0,f.CL)(b.cwd),sessionId:b.sessionId,inputTokens:b.usage.input_tokens,outputTokens:b.usage.output_tokens,cacheReadTokens:b.usage.cache_read_input_tokens,cacheCreationTokens:b.usage.cache_creation_input_tokens,reasoningTokens:b.usage.reasoning_tokens??0,totalTokens:b.usage.input_tokens+b.usage.output_tokens+b.usage.cache_read_input_tokens+b.usage.cache_creation_input_tokens,cost:e.total,costInput:e.input,costOutput:e.output,costCacheRead:e.cacheRead,costCacheWrite:e.cacheCreation5m+e.cacheCreation1h,toolNames:b.toolNames,effort:b.effort,directPrompt:l||void 0},n=j.get(a);n?n.push(m):j.set(a,[m]),k.has(a)||k.set(a,b)}let l=[];for(let[a,b]of j){b.sort((a,b)=>a.timestamp<b.timestamp?-1:1);let c=b[0],d=b[b.length-1],e=new Set,g=new Set,i=new Set,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;for(let a of b){for(let b of(e.add(a.model),a.toolNames))g.add(b);a.effort&&i.add(a.effort),j+=a.inputTokens,k+=a.outputTokens,m+=a.cacheReadTokens,n+=a.cacheCreationTokens,o+=a.reasoningTokens,p+=a.cost,q+=a.costInput,r+=a.costOutput,s+=a.costCacheRead,t+=a.costCacheWrite}let u=h.get(a),v=new Date(c.timestamp).getTime(),w=new Date(d.timestamp).getTime(),x=Number.isFinite(v)&&Number.isFinite(w)?Math.max(0,w-v):0;l.push({turnId:a,timestamp:c.timestamp,endTimestamp:d.timestamp,durationMs:x,cwd:c.cwd,projectLabel:(0,f.CL)(c.cwd),sessionId:c.sessionId,models:Array.from(e),callCount:b.length,inputTokens:j,outputTokens:k,cacheReadTokens:m,cacheCreationTokens:n,reasoningTokens:o,totalTokens:j+k+m+n,cost:p,costInput:q,costOutput:r,costCacheRead:s,costCacheWrite:t,toolNames:Array.from(g),efforts:Array.from(i),userText:u?.textPreview??"",children:b})}return l.sort((a,b)=>a.timestamp<b.timestamp?1:-1),l}},18710:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>B,dynamic:()=>z,revalidate:()=>A});var d=c(75338),e=c(20155),f=c(67803),g=c(37583),h=c(89605),i=c(21092),j=c(14843),k=c(58258),l=c(40236),m=c(49863),n=c(36666),o=c(21966),p=c(80489),q=c(95012),r=c(91719),s=c(55340),t=c(46796),u=c(69181),v=c(60704),w=c(62035),x=c(68264),y=c(76559);let z="force-dynamic",A=0;async function B({searchParams:a}){let b=await a,c=await (0,t.ev)(b.source),z=(0,l.UF)(b.range,"7d"),A=(0,f.bo)(b.gran)?b.gran:"1d"===z?"hour":"day",B=b.models?b.models.split(",").filter(Boolean):[],C=b.projects?b.projects.split(",").filter(Boolean):[],D=(b.q||"").trim(),E=b.sort&&(0,y.Yb)(b.sort)?b.sort:"timestamp",F="asc"===b.dir?"asc":"desc",G=(0,y.PR)(b.page),H=await (0,r.yO)(),I=await (0,r.sG)(),J=await (0,e.So)(),K=(0,t.rY)(J.records,c),L=(0,t.rY)(J.userRecords,c),M=(0,l.Cw)(z),N=(0,t.n$)(c),O={from:M.from,to:M.to,models:B.length?B:void 0,projects:C.length?C:void 0},P=(0,u.z)(N.map(a=>(0,f.$M)(K,{...O,source:a}))),Q=(0,u.i)(N.map(a=>(0,f.a6)(K,A,{...O,source:a}))).map(a=>({label:a.label,input:a.inputTokens,output:a.outputTokens,cacheRead:a.cacheReadTokens,cacheCreation:a.cacheCreationTokens,cost:a.cost,requests:a.requests})),R=K.filter(a=>!(M.from&&a.timestamp<M.from.toISOString())&&(!B.length||!!B.includes(a.model))&&(!C.length||!!C.includes(a.cwd))),S=function(a,b,c){let d=a.slice();return d.sort((a,d)=>{let e="timestamp"===b?a.timestamp:a[b],f="timestamp"===b?d.timestamp:d[b];return e===f?0:("asc"===c?1:-1)*(e<f?-1:1)}),d}(function(a,b){if(!b)return a;let c=b.toLowerCase();return a.filter(a=>a.userText.toLowerCase().includes(c)||a.cwd.toLowerCase().includes(c)||a.sessionId.toLowerCase().includes(c)||a.models.some(a=>a.toLowerCase().includes(c))||a.toolNames.some(a=>a.toLowerCase().includes(c)))}((0,j.go)(R,L,J.parentMap),D),E,F),T=S.length,U=Math.max(1,Math.ceil(T/y.QE)),V=Math.min(G,U-1),W=S.slice(V*y.QE,(V+1)*y.QE),X=Array.from(new Set(K.map(a=>a.model))).sort(),Y=Array.from(new Set(K.map(a=>a.cwd).filter(Boolean))).sort(),Z=P.totalTokens>0?P.cacheReadTokens/Math.max(1,P.cacheReadTokens+P.inputTokens+P.cacheCreationTokens):0,$="all"===c?"":(0,v.sO)(c).costFootnoteKey?H((0,v.sO)(c).costFootnoteKey):"";return(0,d.jsxs)(g.qK,{title:H("usage.title"),desc:H("usage.subtitle",{count:T.toLocaleString()}),right:(0,d.jsxs)("div",{className:"flex items-center gap-3 flex-wrap",children:[(0,d.jsx)(x.OverviewToggle,{}),(0,d.jsx)(n.ModelFilter,{all:X,selected:B}),(0,d.jsx)(o.ProjectFilter,{all:Y,selected:C}),(0,d.jsx)(k.RangePicker,{defaultValue:"7d"})]}),children:[(0,d.jsx)(w.AutoRefresh,{intervalMs:15e3}),0===K.length?(0,d.jsx)(g.pp,{title:H("common.empty.title"),desc:H("common.empty.desc")}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"usage-overview-block contents",children:[(0,d.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 mt-4",children:[(0,d.jsx)(p.n,{label:H("usage.kpi.totalTokens"),value:(0,q.jh)(P.totalTokens,I)}),(0,d.jsx)(p.n,{label:H("usage.kpi.totalCost"),value:(0,q.az)(P.cost),hint:$||void 0}),(0,d.jsx)(p.n,{label:H("usage.kpi.cacheSaved"),value:(0,q.az)(P.saved),accent:"success"}),(0,d.jsx)(p.n,{label:H("usage.kpi.cacheHit"),value:(0,q.R8)(Z,0),accent:"success"})]}),(0,d.jsx)(g.wn,{title:H("usage.trend"),desc:H("usage.trend.gran",{gran:(0,s.nA)(I,`gran.${A}`)}),right:(0,d.jsx)(m.GranularityPicker,{defaultValue:A}),className:"mt-4",children:(0,d.jsx)(h.TokenStackChart,{data:Q})})]}),(0,d.jsx)(g.wn,{title:H("usage.requests.title"),desc:H("usage.requests.desc"),children:(0,d.jsx)(i.UsageTable,{rows:W,totalCount:T,page:V,pageCount:U,sort:{key:E,dir:F},query:D})})]})]})}},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},20976:(a,b,c)=>{Promise.resolve().then(c.bind(c,62035)),Promise.resolve().then(c.bind(c,89605)),Promise.resolve().then(c.bind(c,49863)),Promise.resolve().then(c.bind(c,36666)),Promise.resolve().then(c.bind(c,68264)),Promise.resolve().then(c.bind(c,21966)),Promise.resolve().then(c.bind(c,58258)),Promise.resolve().then(c.bind(c,21092))},21092:(a,b,c)=>{"use strict";c.d(b,{UsageTable:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call UsageTable() from the server but UsageTable is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/usage-table.tsx","UsageTable")},21966:(a,b,c)=>{"use strict";c.d(b,{ProjectFilter:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call ProjectFilter() from the server but ProjectFilter is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/project-filter.tsx","ProjectFilter")},24961:(a,b,c)=>{"use strict";c.d(b,{AutoRefresh:()=>f});var d=c(38301),e=c(42378);function f({intervalMs:a=15e3}){return(0,e.useRouter)(),(0,d.useRef)(!1),null}},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},30285:(a,b,c)=>{"use strict";function d(a,b,c){let d=new Map;for(let a of b)!a.isSynthetic&&a.textPreview&&a.textPreview.trim()&&d.set(a.uuid,a.textPreview);let e=new Map,f=new Map;for(let b of a)e.set(b.uuid,function(a){let b=[],e=a,g=null,h=0,i=new Set;for(;e&&h++<5e3&&!i.has(e);){i.add(e);let a=f.get(e);if(a){g=a;break}if(b.push(e),d.has(e)){g=e;break}e=c[e]??null}for(let c of(g||(g=a),b))f.set(c,g);return g}(b.uuid));return e}c.d(b,{o:()=>d})},32560:(a,b,c)=>{"use strict";c.d(b,{ProjectFilter:()=>h});var d=c(21124),e=c(83426),f=c(15514),g=c(15519);function h({all:a,selected:b}){let c=(0,g.kj)();return(0,d.jsx)(e.K,{paramKey:"projects",all:a,selected:b,render:f.PJ,labelAllKey:"filter.projectAll",labelSingleKey:"filter.projectSingle",labelMultiKey:"filter.projectMulti",ariaLabel:c("filter.projectLabel")})}},32900:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>D.a,__next_app__:()=>J,handler:()=>L,pages:()=>I,routeModule:()=>K,tree:()=>H});var d=c(49754),e=c(9117),f=c(46595),g=c(32324),h=c(39326),i=c(38928),j=c(20175),k=c(12),l=c(54290),m=c(12696),n=c(82802),o=c(77533),p=c(45229),q=c(32822),r=c(261),s=c(26453),t=c(52474),u=c(26713),v=c(51356),w=c(62685),x=c(36225),y=c(63446),z=c(2762),A=c(45742),B=c(86439),C=c(81170),D=c.n(C),E=c(62506),F=c(91203),G={};for(let a in E)0>["default","tree","pages","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(G[a]=()=>E[a]);c.d(b,G);let H={children:["",{children:["usage",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,18710)),"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/usage/page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(c.bind(c,67302)),"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/layout.tsx"],error:[()=>Promise.resolve().then(c.bind(c,41697)),"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/error.tsx"],loading:[()=>Promise.resolve().then(c.bind(c,90391)),"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/loading.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,81170,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,87028,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,90461,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,32768,23)),"next/dist/client/components/builtin/unauthorized.js"]}]}.children,I=["/Users/zuopeng.cheng/personal/workspace/ccgauge/app/usage/page.tsx"],J={require:c,loadChunk:()=>Promise.resolve()},K=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/usage/page",pathname:"/usage",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:H},distDir:".next",relativeProjectDir:""});async function L(a,b,d){var C;let G="/usage/page";"/index"===G&&(G="/");let M=(0,h.getRequestMeta)(a,"postponed"),N=(0,h.getRequestMeta)(a,"minimalMode"),O=await K.prepare(a,b,{srcPage:G,multiZoneDraftMode:!1});if(!O)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:P,query:Q,params:R,parsedUrl:S,pageIsDynamic:T,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,serverActionsManifest:X,clientReferenceManifest:Y,subresourceIntegrityManifest:Z,prerenderManifest:$,isDraftMode:_,resolvedPathname:aa,revalidateOnlyGenerated:ab,routerServerContext:ac,nextConfig:ad,interceptionRoutePatterns:ae}=O,af=S.pathname||"/",ag=(0,r.normalizeAppPath)(G),{isOnDemandRevalidate:ah}=O,ai=K.match(af,$),aj=!!$.routes[aa],ak=!!(ai||aj||$.routes[ag]),al=a.headers["user-agent"]||"",am=(0,u.getBotType)(al),an=(0,p.isHtmlBotRequest)(a),ao=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[t.NEXT_ROUTER_PREFETCH_HEADER],ap=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[t.RSC_HEADER],aq=(0,s.getIsPossibleServerAction)(a),ar=(0,m.checkIsAppPPREnabled)(ad.experimental.ppr)&&(null==(C=$.routes[ag]??$.dynamicRoutes[ag])?void 0:C.renderingMode)==="PARTIALLY_STATIC",as=!1,at=!1,au=ar?M:void 0,av=ar&&ap&&!ao,aw=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ax=!al||(0,p.shouldServeStreamingMetadata)(al,ad.htmlLimitedBots);an&&ar&&(ak=!1,ax=!1);let ay=!0===K.isDev||!ak||"string"==typeof M||av,az=an&&ar,aA=null;_||!ak||ay||aq||au||av||(aA=aa);let aB=aA;!aB&&K.isDev&&(aB=aa),K.isDev||_||!ak||!ap||av||(0,k.d)(a.headers);let aC={...E,tree:H,pages:I,GlobalError:D(),handler:L,routeModule:K,__next_app__:J};X&&Y&&(0,o.setReferenceManifestsSingleton)({page:G,clientReferenceManifest:Y,serverActionsManifest:X,serverModuleMap:(0,q.createServerModuleMap)({serverActionsManifest:X})});let aD=a.method||"GET",aE=(0,g.getTracer)(),aF=aE.getActiveScopeSpan();try{let f=K.getVaryHeader(aa,ae);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return K.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=aE.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${aD} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aD} ${a.url}`)})},m=async({span:e,postponed:f,fallbackRouteParams:g})=>{let i={query:Q,params:R,page:ag,sharedContext:{buildId:P},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aC,Component:(0,j.T)(aC),params:R,routeModule:K,page:G,postponed:f,shouldWaitOnAllReady:az,serveStreamingMetadata:ax,supportsDynamicResponse:"string"==typeof f||ay,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,subresourceIntegrityManifest:Z,serverActionsManifest:X,clientReferenceManifest:Y,setIsrStatus:null==ac?void 0:ac.setIsrStatus,dir:c(33873).join(process.cwd(),K.relativeProjectDir),isDraftMode:_,isRevalidate:ak&&!f&&!av,botType:am,isOnDemandRevalidate:ah,isPossibleServerAction:aq,assetPrefix:ad.assetPrefix,nextConfigOutput:ad.output,crossOrigin:ad.crossOrigin,trailingSlash:ad.trailingSlash,previewProps:$.preview,deploymentId:ad.deploymentId,enableTainting:ad.experimental.taint,htmlLimitedBots:ad.htmlLimitedBots,devtoolSegmentExplorer:ad.experimental.devtoolSegmentExplorer,reactMaxHeadersLength:ad.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:ad.experimental.cacheLife,basePath:ad.basePath,serverActions:ad.experimental.serverActions,...as?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isRevalidate:!0,isDebugDynamicAccesses:as}:{},experimental:{isRoutePPREnabled:ar,expireTime:ad.expireTime,staleTimes:ad.experimental.staleTimes,cacheComponents:!!ad.experimental.cacheComponents,clientSegmentCache:!!ad.experimental.clientSegmentCache,clientParamParsing:!!ad.experimental.clientParamParsing,dynamicOnHover:!!ad.experimental.dynamicOnHover,inlineCss:!!ad.experimental.inlineCss,authInterrupts:!!ad.experimental.authInterrupts,clientTraceMetadata:ad.experimental.clientTraceMetadata||[]},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d)=>K.onRequestError(a,b,d,ac),err:(0,h.getRequestMeta)(a,"invokeError"),dev:K.isDev}},l=await k(e,i),{metadata:m}=l,{cacheControl:n,headers:o={},fetchTags:p}=m;if(p&&(o[y.NEXT_CACHE_TAGS_HEADER]=p),a.fetchMetrics=m.fetchMetrics,ak&&(null==n?void 0:n.revalidate)===0&&!K.isDev&&!ar){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${aa}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
1
+ (()=>{var a={};a.id=430,a.ids=[430],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14843:(a,b,c)=>{"use strict";c.d(b,{N0:()=>g,go:()=>h});var d=c(50160),e=c(30285),f=c(62955);function g(a){return a&&a.block?{hasBlock:!0,startTime:a.block.startTime,endTime:a.block.endTime,totalTokens:a.block.totalTokens,cost:a.block.cost,requests:a.block.requests,models:a.block.models,burnRatePerMin:a.burnRatePerMin,costPerMin:a.costPerMin,projectedTotal:a.projectedTotal,projectedCost:a.projectedCost}:{hasBlock:!1,totalTokens:0,cost:0,requests:0,models:[],burnRatePerMin:0,costPerMin:0,projectedTotal:0,projectedCost:0}}function h(a,b,c){let g=(0,e.o)(a,b,c),h=new Map;for(let a of b)h.set(a.uuid,a);let i=new Map,j=new Map,k=new Map;for(let b of a){let a=g.get(b.uuid)??b.uuid,e=(0,d.SI)(b),l=function(a){let b=i.get(a);if(void 0!==b)return b;let d=[],e=a,f="",g=new Set;for(;e&&!g.has(e);){g.add(e);let a=i.get(e);if(void 0!==a){f=a;break}d.push(e);let b=h.get(e);if(b&&b.textPreview&&b.textPreview.trim()){f=b.textPreview;break}e=c[e]??null}for(let a of d)i.set(a,f);return f}(b.uuid),m={uuid:b.uuid,timestamp:b.timestamp,source:b.source,model:b.model,cwd:b.cwd,projectLabel:(0,f.CL)(b.cwd),sessionId:b.sessionId,inputTokens:b.usage.input_tokens,outputTokens:b.usage.output_tokens,cacheReadTokens:b.usage.cache_read_input_tokens,cacheCreationTokens:b.usage.cache_creation_input_tokens,reasoningTokens:b.usage.reasoning_tokens??0,totalTokens:b.usage.input_tokens+b.usage.output_tokens+b.usage.cache_read_input_tokens+b.usage.cache_creation_input_tokens,cost:e.total,costInput:e.input,costOutput:e.output,costCacheRead:e.cacheRead,costCacheWrite:e.cacheCreation5m+e.cacheCreation1h,toolNames:b.toolNames,effort:b.effort,directPrompt:l||void 0},n=j.get(a);n?n.push(m):j.set(a,[m]),k.has(a)||k.set(a,b)}let l=[];for(let[a,b]of j){b.sort((a,b)=>a.timestamp<b.timestamp?-1:1);let c=b[0],d=b[b.length-1],e=new Set,g=new Set,i=new Set,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;for(let a of b){for(let b of(e.add(a.model),a.toolNames))g.add(b);a.effort&&i.add(a.effort),j+=a.inputTokens,k+=a.outputTokens,m+=a.cacheReadTokens,n+=a.cacheCreationTokens,o+=a.reasoningTokens,p+=a.cost,q+=a.costInput,r+=a.costOutput,s+=a.costCacheRead,t+=a.costCacheWrite}let u=h.get(a),v=new Date(c.timestamp).getTime(),w=new Date(d.timestamp).getTime(),x=Number.isFinite(v)&&Number.isFinite(w)?Math.max(0,w-v):0;l.push({turnId:a,timestamp:c.timestamp,endTimestamp:d.timestamp,durationMs:x,cwd:c.cwd,projectLabel:(0,f.CL)(c.cwd),sessionId:c.sessionId,models:Array.from(e),callCount:b.length,inputTokens:j,outputTokens:k,cacheReadTokens:m,cacheCreationTokens:n,reasoningTokens:o,totalTokens:j+k+m+n,cost:p,costInput:q,costOutput:r,costCacheRead:s,costCacheWrite:t,toolNames:Array.from(g),efforts:Array.from(i),userText:u?.textPreview??"",children:b})}return l.sort((a,b)=>a.timestamp<b.timestamp?1:-1),l}},18710:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>B,dynamic:()=>z,revalidate:()=>A});var d=c(75338),e=c(49098),f=c(67803),g=c(37583),h=c(89605),i=c(21092),j=c(14843),k=c(58258),l=c(40236),m=c(49863),n=c(36666),o=c(21966),p=c(80489),q=c(95012),r=c(91719),s=c(55340),t=c(46796),u=c(69181),v=c(60704),w=c(62035),x=c(68264),y=c(76559);let z="force-dynamic",A=0;async function B({searchParams:a}){let b=await a,c=await (0,t.ev)(b.source),z=(0,l.UF)(b.range,"7d"),A=(0,f.bo)(b.gran)?b.gran:"1d"===z?"hour":"day",B=b.models?b.models.split(",").filter(Boolean):[],C=b.projects?b.projects.split(",").filter(Boolean):[],D=(b.q||"").trim(),E=b.sort&&(0,y.Yb)(b.sort)?b.sort:"timestamp",F="asc"===b.dir?"asc":"desc",G=(0,y.PR)(b.page),H=await (0,r.yO)(),I=await (0,r.sG)(),J=await (0,e.So)(),K=(0,t.rY)(J.records,c),L=(0,t.rY)(J.userRecords,c),M=(0,l.Cw)(z),N=(0,t.n$)(c),O={from:M.from,to:M.to,models:B.length?B:void 0,projects:C.length?C:void 0},P=(0,u.z)(N.map(a=>(0,f.$M)(K,{...O,source:a}))),Q=(0,u.i)(N.map(a=>(0,f.a6)(K,A,{...O,source:a}))).map(a=>({label:a.label,input:a.inputTokens,output:a.outputTokens,cacheRead:a.cacheReadTokens,cacheCreation:a.cacheCreationTokens,cost:a.cost,requests:a.requests})),R=K.filter(a=>!(M.from&&a.timestamp<M.from.toISOString())&&(!B.length||!!B.includes(a.model))&&(!C.length||!!C.includes(a.cwd))),S=function(a,b,c){let d=a.slice();return d.sort((a,d)=>{let e="timestamp"===b?a.timestamp:a[b],f="timestamp"===b?d.timestamp:d[b];return e===f?0:("asc"===c?1:-1)*(e<f?-1:1)}),d}(function(a,b){if(!b)return a;let c=b.toLowerCase();return a.filter(a=>a.userText.toLowerCase().includes(c)||a.cwd.toLowerCase().includes(c)||a.sessionId.toLowerCase().includes(c)||a.models.some(a=>a.toLowerCase().includes(c))||a.toolNames.some(a=>a.toLowerCase().includes(c)))}((0,j.go)(R,L,J.parentMap),D),E,F),T=S.length,U=Math.max(1,Math.ceil(T/y.QE)),V=Math.min(G,U-1),W=S.slice(V*y.QE,(V+1)*y.QE),X=Array.from(new Set(K.map(a=>a.model))).sort(),Y=Array.from(new Set(K.map(a=>a.cwd).filter(Boolean))).sort(),Z=P.totalTokens>0?P.cacheReadTokens/Math.max(1,P.cacheReadTokens+P.inputTokens+P.cacheCreationTokens):0,$="all"===c?"":(0,v.sO)(c).costFootnoteKey?H((0,v.sO)(c).costFootnoteKey):"";return(0,d.jsxs)(g.qK,{title:H("usage.title"),desc:H("usage.subtitle",{count:T.toLocaleString()}),right:(0,d.jsxs)("div",{className:"flex items-center gap-3 flex-wrap",children:[(0,d.jsx)(x.OverviewToggle,{}),(0,d.jsx)(n.ModelFilter,{all:X,selected:B}),(0,d.jsx)(o.ProjectFilter,{all:Y,selected:C}),(0,d.jsx)(k.RangePicker,{defaultValue:"7d"})]}),children:[(0,d.jsx)(w.AutoRefresh,{intervalMs:15e3}),0===K.length?(0,d.jsx)(g.pp,{title:H("common.empty.title"),desc:H("common.empty.desc")}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"usage-overview-block contents",children:[(0,d.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 mt-4",children:[(0,d.jsx)(p.n,{label:H("usage.kpi.totalTokens"),value:(0,q.jh)(P.totalTokens,I)}),(0,d.jsx)(p.n,{label:H("usage.kpi.totalCost"),value:(0,q.az)(P.cost),hint:$||void 0}),(0,d.jsx)(p.n,{label:H("usage.kpi.cacheSaved"),value:(0,q.az)(P.saved),accent:"success"}),(0,d.jsx)(p.n,{label:H("usage.kpi.cacheHit"),value:(0,q.R8)(Z,0),accent:"success"})]}),(0,d.jsx)(g.wn,{title:H("usage.trend"),desc:H("usage.trend.gran",{gran:(0,s.nA)(I,`gran.${A}`)}),right:(0,d.jsx)(m.GranularityPicker,{defaultValue:A}),className:"mt-4",children:(0,d.jsx)(h.TokenStackChart,{data:Q})})]}),(0,d.jsx)(g.wn,{title:H("usage.requests.title"),desc:H("usage.requests.desc"),children:(0,d.jsx)(i.UsageTable,{rows:W,totalCount:T,page:V,pageCount:U,sort:{key:E,dir:F},query:D})})]})]})}},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},20976:(a,b,c)=>{Promise.resolve().then(c.bind(c,62035)),Promise.resolve().then(c.bind(c,89605)),Promise.resolve().then(c.bind(c,49863)),Promise.resolve().then(c.bind(c,36666)),Promise.resolve().then(c.bind(c,68264)),Promise.resolve().then(c.bind(c,21966)),Promise.resolve().then(c.bind(c,58258)),Promise.resolve().then(c.bind(c,21092))},21092:(a,b,c)=>{"use strict";c.d(b,{UsageTable:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call UsageTable() from the server but UsageTable is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/usage-table.tsx","UsageTable")},21966:(a,b,c)=>{"use strict";c.d(b,{ProjectFilter:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call ProjectFilter() from the server but ProjectFilter is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/project-filter.tsx","ProjectFilter")},24961:(a,b,c)=>{"use strict";c.d(b,{AutoRefresh:()=>f});var d=c(38301),e=c(42378);function f({intervalMs:a=15e3}){return(0,e.useRouter)(),(0,d.useRef)(!1),null}},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},30285:(a,b,c)=>{"use strict";function d(a,b,c){let d=new Map;for(let a of b)!a.isSynthetic&&a.textPreview&&a.textPreview.trim()&&d.set(a.uuid,a.textPreview);let e=new Map,f=new Map;for(let b of a)e.set(b.uuid,function(a){let b=[],e=a,g=null,h=0,i=new Set;for(;e&&h++<5e3&&!i.has(e);){i.add(e);let a=f.get(e);if(a){g=a;break}if(b.push(e),d.has(e)){g=e;break}e=c[e]??null}for(let c of(g||(g=a),b))f.set(c,g);return g}(b.uuid));return e}c.d(b,{o:()=>d})},32560:(a,b,c)=>{"use strict";c.d(b,{ProjectFilter:()=>h});var d=c(21124),e=c(83426),f=c(15514),g=c(15519);function h({all:a,selected:b}){let c=(0,g.kj)();return(0,d.jsx)(e.K,{paramKey:"projects",all:a,selected:b,render:f.PJ,labelAllKey:"filter.projectAll",labelSingleKey:"filter.projectSingle",labelMultiKey:"filter.projectMulti",ariaLabel:c("filter.projectLabel")})}},32900:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>D.a,__next_app__:()=>J,handler:()=>L,pages:()=>I,routeModule:()=>K,tree:()=>H});var d=c(49754),e=c(9117),f=c(46595),g=c(32324),h=c(39326),i=c(38928),j=c(20175),k=c(12),l=c(54290),m=c(12696),n=c(82802),o=c(77533),p=c(45229),q=c(32822),r=c(261),s=c(26453),t=c(52474),u=c(26713),v=c(51356),w=c(62685),x=c(36225),y=c(63446),z=c(2762),A=c(45742),B=c(86439),C=c(81170),D=c.n(C),E=c(62506),F=c(91203),G={};for(let a in E)0>["default","tree","pages","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(G[a]=()=>E[a]);c.d(b,G);let H={children:["",{children:["usage",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,18710)),"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/usage/page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(c.bind(c,67302)),"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/layout.tsx"],error:[()=>Promise.resolve().then(c.bind(c,41697)),"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/error.tsx"],loading:[()=>Promise.resolve().then(c.bind(c,90391)),"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/loading.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,81170,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,87028,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,90461,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,32768,23)),"next/dist/client/components/builtin/unauthorized.js"]}]}.children,I=["/Users/zuopeng.cheng/personal/workspace/ccgauge/app/usage/page.tsx"],J={require:c,loadChunk:()=>Promise.resolve()},K=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/usage/page",pathname:"/usage",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:H},distDir:".next",relativeProjectDir:""});async function L(a,b,d){var C;let G="/usage/page";"/index"===G&&(G="/");let M=(0,h.getRequestMeta)(a,"postponed"),N=(0,h.getRequestMeta)(a,"minimalMode"),O=await K.prepare(a,b,{srcPage:G,multiZoneDraftMode:!1});if(!O)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:P,query:Q,params:R,parsedUrl:S,pageIsDynamic:T,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,serverActionsManifest:X,clientReferenceManifest:Y,subresourceIntegrityManifest:Z,prerenderManifest:$,isDraftMode:_,resolvedPathname:aa,revalidateOnlyGenerated:ab,routerServerContext:ac,nextConfig:ad,interceptionRoutePatterns:ae}=O,af=S.pathname||"/",ag=(0,r.normalizeAppPath)(G),{isOnDemandRevalidate:ah}=O,ai=K.match(af,$),aj=!!$.routes[aa],ak=!!(ai||aj||$.routes[ag]),al=a.headers["user-agent"]||"",am=(0,u.getBotType)(al),an=(0,p.isHtmlBotRequest)(a),ao=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[t.NEXT_ROUTER_PREFETCH_HEADER],ap=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[t.RSC_HEADER],aq=(0,s.getIsPossibleServerAction)(a),ar=(0,m.checkIsAppPPREnabled)(ad.experimental.ppr)&&(null==(C=$.routes[ag]??$.dynamicRoutes[ag])?void 0:C.renderingMode)==="PARTIALLY_STATIC",as=!1,at=!1,au=ar?M:void 0,av=ar&&ap&&!ao,aw=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ax=!al||(0,p.shouldServeStreamingMetadata)(al,ad.htmlLimitedBots);an&&ar&&(ak=!1,ax=!1);let ay=!0===K.isDev||!ak||"string"==typeof M||av,az=an&&ar,aA=null;_||!ak||ay||aq||au||av||(aA=aa);let aB=aA;!aB&&K.isDev&&(aB=aa),K.isDev||_||!ak||!ap||av||(0,k.d)(a.headers);let aC={...E,tree:H,pages:I,GlobalError:D(),handler:L,routeModule:K,__next_app__:J};X&&Y&&(0,o.setReferenceManifestsSingleton)({page:G,clientReferenceManifest:Y,serverActionsManifest:X,serverModuleMap:(0,q.createServerModuleMap)({serverActionsManifest:X})});let aD=a.method||"GET",aE=(0,g.getTracer)(),aF=aE.getActiveScopeSpan();try{let f=K.getVaryHeader(aa,ae);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return K.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=aE.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${aD} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aD} ${a.url}`)})},m=async({span:e,postponed:f,fallbackRouteParams:g})=>{let i={query:Q,params:R,page:ag,sharedContext:{buildId:P},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aC,Component:(0,j.T)(aC),params:R,routeModule:K,page:G,postponed:f,shouldWaitOnAllReady:az,serveStreamingMetadata:ax,supportsDynamicResponse:"string"==typeof f||ay,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,subresourceIntegrityManifest:Z,serverActionsManifest:X,clientReferenceManifest:Y,setIsrStatus:null==ac?void 0:ac.setIsrStatus,dir:c(33873).join(process.cwd(),K.relativeProjectDir),isDraftMode:_,isRevalidate:ak&&!f&&!av,botType:am,isOnDemandRevalidate:ah,isPossibleServerAction:aq,assetPrefix:ad.assetPrefix,nextConfigOutput:ad.output,crossOrigin:ad.crossOrigin,trailingSlash:ad.trailingSlash,previewProps:$.preview,deploymentId:ad.deploymentId,enableTainting:ad.experimental.taint,htmlLimitedBots:ad.htmlLimitedBots,devtoolSegmentExplorer:ad.experimental.devtoolSegmentExplorer,reactMaxHeadersLength:ad.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:ad.experimental.cacheLife,basePath:ad.basePath,serverActions:ad.experimental.serverActions,...as?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isRevalidate:!0,isDebugDynamicAccesses:as}:{},experimental:{isRoutePPREnabled:ar,expireTime:ad.expireTime,staleTimes:ad.experimental.staleTimes,cacheComponents:!!ad.experimental.cacheComponents,clientSegmentCache:!!ad.experimental.clientSegmentCache,clientParamParsing:!!ad.experimental.clientParamParsing,dynamicOnHover:!!ad.experimental.dynamicOnHover,inlineCss:!!ad.experimental.inlineCss,authInterrupts:!!ad.experimental.authInterrupts,clientTraceMetadata:ad.experimental.clientTraceMetadata||[]},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d)=>K.onRequestError(a,b,d,ac),err:(0,h.getRequestMeta)(a,"invokeError"),dev:K.isDev}},l=await k(e,i),{metadata:m}=l,{cacheControl:n,headers:o={},fetchTags:p}=m;if(p&&(o[y.NEXT_CACHE_TAGS_HEADER]=p),a.fetchMetrics=m.fetchMetrics,ak&&(null==n?void 0:n.revalidate)===0&&!K.isDev&&!ar){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${aa}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
2
  see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:v.CachedRouteKind.APP_PAGE,html:l,headers:o,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:n}},o=async({hasResolved:c,previousCacheEntry:f,isRevalidating:g,span:i})=>{let j,k=!1===K.isDev,l=c||b.writableEnded;if(ah&&ab&&!f&&!N)return(null==ac?void 0:ac.render404)?await ac.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(ai&&(j=(0,w.parseFallbackField)(ai.fallback)),j===w.FallbackMode.PRERENDER&&(0,u.isBot)(al)&&(!ar||an)&&(j=w.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ah=!0),ah&&(j!==w.FallbackMode.NOT_FOUND||f)&&(j=w.FallbackMode.BLOCKING_STATIC_RENDER),!N&&j!==w.FallbackMode.BLOCKING_STATIC_RENDER&&aB&&!l&&!_&&T&&(k||!aj)){let b;if((k||ai)&&j===w.FallbackMode.NOT_FOUND)throw new B.NoFallbackError;if(ar&&!ap){let c="string"==typeof(null==ai?void 0:ai.fallback)?ai.fallback:k?ag:null;if(b=await K.handleResponse({cacheKey:c,req:a,nextConfig:ad,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:$,isRoutePPREnabled:ar,responseGenerator:async()=>m({span:i,postponed:void 0,fallbackRouteParams:k||at?(0,n.u)(ag):null}),waitUntil:d.waitUntil}),null===b)return null;if(b)return delete b.cacheControl,b}}let o=ah||g||!au?void 0:au;if(as&&void 0!==o)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:v.CachedRouteKind.PAGES,html:x.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let p=T&&ar&&((0,h.getRequestMeta)(a,"renderFallbackShell")||at)?(0,n.u)(af):null;return m({span:i,postponed:o,fallbackRouteParams:p})},p=async c=>{var f,g,i,j,k;let l,n=await K.handleResponse({cacheKey:aA,responseGenerator:a=>o({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ah,isRoutePPREnabled:ar,req:a,nextConfig:ad,prerenderManifest:$,waitUntil:d.waitUntil});if(_&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),K.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!n){if(aA)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=n.value)?void 0:f.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=n.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let p="string"==typeof n.value.postponed;ak&&!av&&(!p||ao)&&(N||b.setHeader("x-nextjs-cache",ah?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),b.setHeader(t.NEXT_IS_PRERENDER_HEADER,"1"));let{value:q}=n;if(au)l={revalidate:0,expire:void 0};else if(N&&ap&&!ao&&ar)l={revalidate:0,expire:void 0};else if(!K.isDev)if(_)l={revalidate:0,expire:void 0};else if(ak){if(n.cacheControl)if("number"==typeof n.cacheControl.revalidate){if(n.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${n.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:n.cacheControl.revalidate,expire:(null==(j=n.cacheControl)?void 0:j.expire)??ad.expireTime}}else l={revalidate:y.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(n.cacheControl=l,"string"==typeof aw&&(null==q?void 0:q.kind)===v.CachedRouteKind.APP_PAGE&&q.segmentData){b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=q.headers)?void 0:k[y.NEXT_CACHE_TAGS_HEADER];N&&ak&&c&&"string"==typeof c&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,c);let d=q.segmentData.get(aw);return void 0!==d?(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:x.default.fromStatic(d,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl}):(b.statusCode=204,(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl}))}let r=(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r({...n,value:{...n.value,kind:"PAGE"}},{url:(0,h.getRequestMeta)(a,"initURL")}))return null;if(p&&au)throw Object.defineProperty(Error("Invariant: postponed state should not be present on a resume request"),"__NEXT_ERROR_CODE",{value:"E396",enumerable:!1,configurable:!0});if(q.headers){let a={...q.headers};for(let[c,d]of(N&&ak||delete a[y.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let s=null==(g=q.headers)?void 0:g[y.NEXT_CACHE_TAGS_HEADER];if(N&&ak&&s&&"string"==typeof s&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,s),!q.status||ap&&ar||(b.statusCode=q.status),!N&&q.status&&F.RedirectStatusCode[q.status]&&ap&&(b.statusCode=200),p&&b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"1"),ap&&!_){if(void 0===q.rscData){if(q.postponed)throw Object.defineProperty(Error("Invariant: Expected postponed to be undefined"),"__NEXT_ERROR_CODE",{value:"E372",enumerable:!1,configurable:!0});return(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:q.html,cacheControl:av?{revalidate:0,expire:void 0}:n.cacheControl})}return(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:x.default.fromStatic(q.rscData,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl})}let u=q.html;if(!p||N||ap)return(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:u,cacheControl:n.cacheControl});if(as)return u.push(new ReadableStream({start(a){a.enqueue(z.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:u,cacheControl:{revalidate:0,expire:void 0}});let w=new TransformStream;return u.push(w.readable),m({span:c,postponed:q.postponed,fallbackRouteParams:null}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(w.writable)}).catch(a=>{w.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:u,cacheControl:{revalidate:0,expire:void 0}})};if(!aF)return await aE.withPropagatedContext(a.headers,()=>aE.trace(i.BaseServerSpan.handleRequest,{spanName:`${aD} ${a.url}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aD,"http.target":a.url}},p));await p(aF)}catch(b){throw b instanceof B.NoFallbackError||await K.onRequestError(a,b,{routerKind:"App Router",routePath:G,routeType:"render",revalidateReason:(0,f.c)({isRevalidate:ak,isOnDemandRevalidate:ah})},ac),b}}},33873:a=>{"use strict";a.exports=require("path")},36666:(a,b,c)=>{"use strict";c.d(b,{ModelFilter:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call ModelFilter() from the server but ModelFilter is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/model-filter.tsx","ModelFilter")},39472:(a,b,c)=>{"use strict";c.d(b,{ModelFilter:()=>h});var d=c(21124),e=c(83426),f=c(15514),g=c(15519);function h({all:a,selected:b}){let c=(0,g.kj)();return(0,d.jsx)(e.K,{paramKey:"models",all:a,selected:b,render:f.P6,labelAllKey:"filter.modelAll",labelSingleKey:"filter.modelSingle",labelMultiKey:"filter.modelMulti",ariaLabel:c("filter.modelLabel")})}},40236:(a,b,c)=>{"use strict";c.d(b,{Cw:()=>g,UF:()=>f,dg:()=>e});let d=["1d","7d","30d","90d","all"];function e(a){return"string"==typeof a&&d.includes(a)}function f(a,b="7d"){return e(a)?a:b}function g(a){let b=new Date;if("all"===a)return{};if("1d"===a)return{from:new Date(b.getFullYear(),b.getMonth(),b.getDate())};let c=a.match(/^(\d+)([dwm])$/);if(!c)return{};let d=parseInt(c[1],10),e=c[2],f=new Date(b);return"d"===e?f.setDate(f.getDate()-d):"w"===e?f.setDate(f.getDate()-7*d):"m"===e&&f.setMonth(f.getMonth()-d),{from:f}}},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},41573:(a,b,c)=>{"use strict";c.d(b,{H:()=>g});var d=c(21124),e=c(38301),f=c(15514);function g({children:a,className:b}){let c=(0,e.useRef)(null),[g,h]=(0,e.useState)(!1),[i,j]=(0,e.useState)(!1);return(0,d.jsxs)("div",{className:(0,f.cn)("relative",b),children:[(0,d.jsx)("div",{ref:c,className:"overflow-x-auto",children:a}),(0,d.jsx)("div",{"aria-hidden":!0,className:(0,f.cn)("pointer-events-none absolute left-0 top-0 bottom-0 w-8 bg-gradient-to-r from-bg-surface to-transparent transition-opacity duration-150",g?"opacity-100":"opacity-0")}),(0,d.jsx)("div",{"aria-hidden":!0,className:(0,f.cn)("pointer-events-none absolute right-0 top-0 bottom-0 w-8 bg-gradient-to-l from-bg-surface to-transparent transition-opacity duration-150",i?"opacity-100":"opacity-0")})]})}},48161:a=>{"use strict";a.exports=require("node:os")},49863:(a,b,c)=>{"use strict";c.d(b,{GranularityPicker:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call GranularityPicker() from the server but GranularityPicker is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/granularity-picker.tsx","GranularityPicker")},55824:(a,b,c)=>{Promise.resolve().then(c.bind(c,24961)),Promise.resolve().then(c.bind(c,24919)),Promise.resolve().then(c.bind(c,88253)),Promise.resolve().then(c.bind(c,39472)),Promise.resolve().then(c.bind(c,88843)),Promise.resolve().then(c.bind(c,32560)),Promise.resolve().then(c.bind(c,75268)),Promise.resolve().then(c.bind(c,99955))},58258:(a,b,c)=>{"use strict";c.d(b,{RangePicker:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call RangePicker() from the server but RangePicker is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/range-picker.tsx","RangePicker")},62035:(a,b,c)=>{"use strict";c.d(b,{AutoRefresh:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call AutoRefresh() from the server but AutoRefresh is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/auto-refresh.tsx","AutoRefresh")},62955:(a,b,c)=>{"use strict";c.d(b,{CL:()=>k,tv:()=>l});var d=c(73024),e=c(76760),f=c(95012);let g=new Map,h=/^(.+?)[/\\]\.git[/\\]worktrees[/\\]([^/\\]+)[/\\]?$/,i=/^(.+?)[/\\](?:\.git|\.claude)[/\\]worktrees[/\\]([^/\\]+)(?:[/\\].*)?$/;function j(a){let b=(0,f.PJ)(a);if(!a)return{label:b,isWorktree:!1,mainName:b,worktreeName:"",canonicalCwd:a};let c=i.exec(a);if(c){let a=c[1],b=c[2],d=(0,e.basename)(a)||a;return{label:`${d} (${b})`,isWorktree:!0,mainName:d,worktreeName:b,canonicalCwd:a}}try{let c=`${a}/.git`;if(!(0,d.statSync)(c).isFile())return{label:b,isWorktree:!1,mainName:b,worktreeName:"",canonicalCwd:a};let f=(0,d.readFileSync)(c,"utf8").trim().split(/\r?\n/,1)[0]??"",g=/^gitdir:\s*(.+)$/.exec(f);if(!g)return{label:b,isWorktree:!1,mainName:b,worktreeName:"",canonicalCwd:a};let i=g[1].trim(),j=h.exec(i);if(!j)return{label:b,isWorktree:!1,mainName:b,worktreeName:"",canonicalCwd:a};let k=j[1],l=j[2],m=(0,e.basename)(k)||k;return{label:`${m} (${l})`,isWorktree:!0,mainName:m,worktreeName:l,canonicalCwd:k}}catch{return{label:b,isWorktree:!1,mainName:b,worktreeName:"",canonicalCwd:a}}}function k(a){let b=g.get(a);if(b)return b.label;let c=j(a);return g.set(a,c),c.label}function l(a){return function(a){let b=g.get(a);if(b)return b;let c=j(a);return g.set(a,c),c}(a).canonicalCwd}},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},68264:(a,b,c)=>{"use strict";c.d(b,{OverviewToggle:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call OverviewToggle() from the server but OverviewToggle is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/overview-toggle.tsx","OverviewToggle")},69181:(a,b,c)=>{"use strict";c.d(b,{i:()=>f,z:()=>e});let d={inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheCreationTokens:0,totalTokens:0,cost:0,saved:0,requests:0};function e(a){return 0===a.length?{...d}:1===a.length?a[0]:a.reduce((a,b)=>({inputTokens:a.inputTokens+b.inputTokens,outputTokens:a.outputTokens+b.outputTokens,cacheReadTokens:a.cacheReadTokens+b.cacheReadTokens,cacheCreationTokens:a.cacheCreationTokens+b.cacheCreationTokens,totalTokens:a.totalTokens+b.totalTokens,cost:a.cost+b.cost,saved:a.saved+b.saved,requests:a.requests+b.requests}),{...d})}function f(a){if(0===a.length)return[];if(1===a.length)return a[0];let b=new Map;for(let c of a)for(let a of c){let c=b.get(a.key);if(!c){b.set(a.key,{...a,models:{...a.models}});continue}for(let[b,d]of(c.inputTokens+=a.inputTokens,c.outputTokens+=a.outputTokens,c.cacheReadTokens+=a.cacheReadTokens,c.cacheCreationTokens+=a.cacheCreationTokens,c.totalTokens+=a.totalTokens,c.cost+=a.cost,c.saved+=a.saved,c.requests+=a.requests,Object.entries(a.models))){let a=c.models[b]??{tokens:0,cost:0,requests:0};a.tokens+=d.tokens,a.cost+=d.cost,a.requests+=d.requests,c.models[b]=a}}return Array.from(b.values()).sort((a,b)=>a.key.localeCompare(b.key))}},73024:a=>{"use strict";a.exports=require("node:fs")},75268:(a,b,c)=>{"use strict";c.d(b,{RangePicker:()=>h});var d=c(21124),e=c(91377),f=c(15519);let g=[{value:"1d",tk:"range.today"},{value:"7d",tk:"range.7d"},{value:"30d",tk:"range.30d"},{value:"90d",tk:"range.90d"},{value:"all",tk:"range.all"}];function h({defaultValue:a="7d"}){let b=(0,f.kj)();return(0,d.jsx)(e.V,{paramKey:"range",defaultValue:a,options:g,ariaLabel:b("range.label")})}},76559:(a,b,c)=>{"use strict";c.d(b,{PR:()=>g,QE:()=>d,Yb:()=>f});let d=25,e=["timestamp","cost","inputTokens","outputTokens","cacheReadTokens","cacheCreationTokens","totalTokens","callCount","durationMs"];function f(a){return"string"==typeof a&&e.includes(a)}function g(a){if(!a)return 0;let b=Number(a);return!Number.isFinite(b)||b<1?0:Math.floor(b)-1}},76760:a=>{"use strict";a.exports=require("node:path")},80481:a=>{"use strict";a.exports=require("node:readline")},83426:(a,b,c)=>{"use strict";c.d(b,{K:()=>i});var d=c(21124),e=c(42378),f=c(38301),g=c(15514),h=c(15519);function i({paramKey:a,all:b,selected:c,render:i=a=>a,labelAllKey:j,labelSingleKey:k,labelMultiKey:l,ariaLabel:m,searchThreshold:n=6}){let o,p=(0,e.useRouter)(),q=(0,e.usePathname)(),r=(0,e.useSearchParams)(),s=(0,h.kj)(),[t,u]=(0,f.useState)(!1),[v,w]=(0,f.useState)(""),[x,y]=(0,f.useState)(0),z=(0,f.useRef)(null),A=(0,f.useRef)(null),B=(0,f.useRef)(null),C=(0,f.useRef)(null),D=(0,f.useId)(),E=(0,f.useId)(),F=(0,f.useMemo)(()=>{let a=v.trim().toLowerCase();return a?b.filter(b=>i(b).toLowerCase().includes(a)||b.toLowerCase().includes(a)):b},[b,v,i]);function G(b){let c=new URLSearchParams(r.toString());0===b.size?c.delete(a):c.set(a,Array.from(b).join(","));let d=c.toString();p.push(d?`${q}?${d}`:q)}function H(a){let b=new Set(c);b.has(a)?b.delete(a):b.add(a),G(b)}function I(a){if("ArrowDown"===a.key)a.preventDefault(),y(a=>Math.min(F.length-1,a+1));else if("ArrowUp"===a.key)a.preventDefault(),y(a=>Math.max(0,a-1));else if("Enter"===a.key){a.preventDefault();let b=F[x];b&&H(b)}else"Home"===a.key?(a.preventDefault(),y(0)):"End"===a.key&&(a.preventDefault(),y(F.length-1))}o=0===c.length?s(j):1===c.length?s(k,{value:i(c[0])}):s(l,{count:c.length});let J=b.length>=n;return(0,d.jsxs)("div",{ref:z,className:"relative",children:[(0,d.jsxs)("button",{ref:A,id:D,onClick:()=>u(a=>!a),className:"btn focus:outline-none focus-visible:ring-2 focus-visible:ring-brand/40","aria-haspopup":"listbox","aria-expanded":t,"aria-controls":E,"aria-label":m,children:[o,(0,d.jsx)("span",{className:"text-text-tertiary ml-1","aria-hidden":!0,children:"▾"})]}),t&&(0,d.jsxs)("div",{id:E,role:"listbox","aria-multiselectable":"true","aria-labelledby":D,className:"absolute right-0 mt-1 w-72 card border-border-hi shadow-lg z-20 overflow-hidden",children:[c.length>0&&(0,d.jsxs)("div",{className:"px-2 pt-2 pb-1.5 border-b border-border flex flex-wrap gap-1 items-center",children:[c.slice(0,6).map(a=>(0,d.jsxs)("button",{onClick:()=>H(a),className:"inline-flex items-center gap-1 max-w-[160px] pl-2 pr-1.5 py-0.5 text-[11px] rounded-full bg-brand/10 text-brand border border-brand/20 hover:bg-brand/15","aria-label":`Remove ${i(a)}`,title:i(a),children:[(0,d.jsx)("span",{className:"truncate",children:i(a)}),(0,d.jsx)("span",{"aria-hidden":!0,className:"text-brand/70",children:"\xd7"})]},a)),c.length>6&&(0,d.jsxs)("span",{className:"text-[11px] text-text-tertiary px-1",children:["+",c.length-6]}),(0,d.jsx)("button",{onClick:function(){G(new Set)},className:"ml-auto text-[11px] text-text-tertiary hover:text-text-primary px-1.5 py-0.5",children:s("filter.clearAll")})]}),J&&(0,d.jsx)("div",{className:"p-2 border-b border-border",children:(0,d.jsx)("input",{ref:B,value:v,onChange:a=>{w(a.target.value),y(0)},onKeyDown:a=>{("ArrowDown"===a.key||"ArrowUp"===a.key||"Enter"===a.key||"Home"===a.key||"End"===a.key)&&I(a)},placeholder:s("common.searchPlaceholder"),className:"w-full px-2 py-1 text-sm rounded border border-border bg-bg-surface focus:outline-none focus:border-border-hi placeholder:text-text-tertiary text-text-primary"})}),(0,d.jsxs)("div",{ref:C,onKeyDown:I,className:"max-h-64 overflow-y-auto p-1 outline-none",tabIndex:-1,children:[0===F.length&&(0,d.jsx)("div",{className:"text-xs text-text-tertiary px-2 py-3 text-center",children:s("filter.noOptions")}),F.map((a,b)=>{let e=c.includes(a),f=b===x;return(0,d.jsxs)("button",{role:"option","aria-selected":e,onMouseEnter:()=>y(b),onClick:()=>H(a),className:(0,g.cn)("w-full text-left text-sm px-2 py-1.5 rounded flex items-center gap-2 transition-colors",f?"bg-bg-surface-hi":"hover:bg-bg-surface-hi",e&&"text-text-primary"),children:[(0,d.jsx)("span",{className:(0,g.cn)("w-3.5 h-3.5 rounded-sm border flex items-center justify-center text-[10px] flex-shrink-0",e?"bg-brand border-brand text-white":"border-border-hi"),"aria-hidden":!0,children:e?"✓":""}),(0,d.jsx)("span",{className:"truncate",children:i(a)})]},a)})]})]})]})}},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},88253:(a,b,c)=>{"use strict";c.d(b,{GranularityPicker:()=>h});var d=c(21124),e=c(91377),f=c(15519);let g=[{value:"hour",tk:"gran.hour"},{value:"day",tk:"gran.day"},{value:"week",tk:"gran.week"},{value:"month",tk:"gran.month"}];function h({defaultValue:a="day"}){let b=(0,f.kj)();return(0,d.jsx)(e.V,{paramKey:"gran",defaultValue:a,options:g,ariaLabel:b("gran.label")})}},88843:(a,b,c)=>{"use strict";c.d(b,{OverviewToggle:()=>i});var d=c(21124),e=c(38301),f=c(15514),g=c(15519);let h="data-usage-overview";function i(){let a=(0,g.kj)(),[b,c]=(0,e.useState)(!1);return(0,d.jsxs)("button",{type:"button",onClick:function(){let a=!b;c(a);try{localStorage.setItem("ccgauge.usage.overview.hidden",a?"1":"0")}catch{}a?document.documentElement.setAttribute(h,"hidden"):document.documentElement.removeAttribute(h)},"aria-pressed":!b,title:a(b?"usage.overview.show":"usage.overview.hide"),className:(0,f.cn)("inline-flex items-center gap-1.5 px-2.5 py-1.5 rounded-button text-xs font-medium","border transition-colors duration-150",b?"border-border bg-bg-surface text-text-secondary hover:text-text-primary hover:bg-bg-surface-hi":"border-brand/40 bg-brand/12 text-brand hover:bg-brand/20 hover:border-brand/60"),children:[(0,d.jsx)(j,{open:!b}),(0,d.jsx)("span",{className:"hidden sm:inline",children:a("usage.overview.label")})]})}function j({open:a}){return(0,d.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,children:a?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("path",{d:"M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7Z"}),(0,d.jsx)("circle",{cx:"12",cy:"12",r:"3"})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("path",{d:"M9.88 9.88a3 3 0 0 0 4.24 4.24"}),(0,d.jsx)("path",{d:"M10.73 5.08A11 11 0 0 1 12 5c6.5 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68"}),(0,d.jsx)("path",{d:"M6.61 6.61A13.526 13.526 0 0 0 2 12s3.5 7 10 7a9.74 9.74 0 0 0 5.39-1.61"}),(0,d.jsx)("line",{x1:"2",y1:"2",x2:"22",y2:"22"})]})})}},89605:(a,b,c)=>{"use strict";c.d(b,{TokenStackChart:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call TokenStackChart() from the server but TokenStackChart is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/charts/token-stack-chart.tsx","TokenStackChart")},91377:(a,b,c)=>{"use strict";c.d(b,{V:()=>i});var d=c(21124),e=c(42378),f=c(38301),g=c(15514),h=c(15519);function i({paramKey:a,defaultValue:b,options:c,ariaLabel:i}){let j=(0,e.useRouter)(),k=(0,e.usePathname)(),l=(0,e.useSearchParams)(),m=(0,h.kj)(),n=l.get(a)||b,o=c.some(a=>a.value===n)?n:b,p=(0,f.useRef)(null);function q(b){let c=new URLSearchParams(l.toString());c.set(a,b),j.push(`${k}?${c.toString()}`)}return(0,d.jsx)("div",{ref:p,role:"radiogroup","aria-label":i,onKeyDown:function(a){if("ArrowLeft"!==a.key&&"ArrowRight"!==a.key)return;a.preventDefault();let b=(c.findIndex(a=>a.value===o)+("ArrowRight"===a.key?1:-1)+c.length)%c.length;q(c[b].value);let d=p.current?.querySelectorAll('button[role="radio"]');d?.[b]?.focus()},className:"inline-flex rounded-button border border-border bg-bg-surface p-0.5 gap-0.5",children:c.map(a=>{let b=o===a.value;return(0,d.jsx)("button",{role:"radio","aria-checked":b,tabIndex:b?0:-1,onClick:()=>q(a.value),className:(0,g.cn)("px-2.5 py-1 text-xs rounded transition-all","focus:outline-none focus-visible:ring-2 focus-visible:ring-brand/40",b?"bg-brand-strong text-white font-semibold shadow-sm ring-1 ring-brand/40":"text-text-tertiary font-medium hover:text-text-primary hover:bg-bg-surface-hi"),children:m(a.tk)},a.value)})})}},99955:(a,b,c)=>{"use strict";c.d(b,{UsageTable:()=>n});var d=c(21124),e=c(38301),f=c(42378),g=c(15514),h=c(15519),i=c(23312);function j({children:a,content:b,className:c,panelClassName:f,align:h="left",delay:j=100,maxWidth:k=360}){let l=(0,e.useRef)(null),m=(0,e.useRef)(null),n=(0,e.useRef)(null),[o,p]=(0,e.useState)(null),[q,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(!1);function u(){n.current&&(window.clearTimeout(n.current),n.current=null),s||(m.current=window.setTimeout(()=>{let a=function(){let a,b=l.current;if(!b)return null;let c=b.getBoundingClientRect(),d=Math.min(k,window.innerWidth-16),e=window.innerHeight-c.bottom<200?"top":"bottom";return"right"===h?(a=Math.min(c.right,window.innerWidth-8))-d<8&&(a=d+8):(a=Math.max(c.left,8))+d>window.innerWidth-8&&(a=window.innerWidth-d-8),{x:a,y:"bottom"===e?c.bottom+8:c.top-8,placement:e,align:h}}();a&&(p(a),t(!0))},j))}function v(){m.current&&(window.clearTimeout(m.current),m.current=null),n.current=window.setTimeout(()=>t(!1),80)}return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{ref:l,onMouseEnter:u,onMouseLeave:v,onFocus:u,onBlur:v,className:(0,g.cn)("inline-block",c),children:a}),q&&o&&(0,i.createPortal)((0,d.jsx)("div",{onMouseEnter:()=>{n.current&&(window.clearTimeout(n.current),n.current=null)},onMouseLeave:v,style:{position:"fixed",left:"right"===o.align?void 0:o.x,right:"right"===o.align?window.innerWidth-o.x:void 0,top:"bottom"===o.placement?o.y:void 0,bottom:"top"===o.placement?window.innerHeight-o.y:void 0,maxWidth:k,transform:s?"translateY(0) scale(1)":"bottom"===o.placement?"translateY(-4px) scale(0.98)":"translateY(4px) scale(0.98)",opacity:+!!s,transitionProperty:"opacity, transform",transitionDuration:"120ms",transitionTimingFunction:"cubic-bezier(0.16, 1, 0.3, 1)",transformOrigin:"bottom"===o.placement?"top":"bottom",pointerEvents:s?"auto":"none"},className:(0,g.cn)("z-50 card border-border-hi shadow-xl rounded-button",f),children:b}),document.body)]})}var k=c(41573);let l=[{id:"time",labelKey:"usage.col.time",sortKey:"timestamp",defaultVisible:!0},{id:"duration",labelKey:"usage.col.duration",align:"right",sortKey:"durationMs",defaultVisible:!1},{id:"prompt",labelKey:"usage.col.userMessage",defaultVisible:!0},{id:"model",labelKey:"usage.col.model",defaultVisible:!0},{id:"project",labelKey:"usage.col.project",defaultVisible:!0},{id:"session",labelKey:"usage.col.session",defaultVisible:!1},{id:"calls",labelKey:"usage.col.calls",align:"right",sortKey:"callCount",defaultVisible:!1},{id:"input",labelKey:"usage.col.input",align:"right",sortKey:"inputTokens",defaultVisible:!1},{id:"output",labelKey:"usage.col.output",align:"right",sortKey:"outputTokens",defaultVisible:!1},{id:"cacheRead",labelKey:"usage.col.cacheRead",align:"right",sortKey:"cacheReadTokens",defaultVisible:!1},{id:"cacheWrite",labelKey:"usage.col.cacheWrite",align:"right",sortKey:"cacheCreationTokens",defaultVisible:!1},{id:"total",labelKey:"usage.col.total",align:"right",sortKey:"totalTokens",defaultVisible:!0},{id:"cost",labelKey:"usage.col.cost",align:"right",sortKey:"cost",defaultVisible:!1},{id:"tools",labelKey:"usage.col.tools",defaultVisible:!1}];function m(){return l.reduce((a,b)=>(a[b.id]=b.defaultVisible,a),{})}function n({rows:a,totalCount:b,page:c,pageCount:g,sort:i,query:j}){let n=(0,h.kj)(),{locale:p}=(0,h.s9)(),r=(0,f.useRouter)(),s=(0,f.usePathname)(),t=(0,f.useSearchParams)(),[u,v]=(0,e.useState)(new Set),[w,x]=(0,e.useState)(m),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(j),C=(0,e.useRef)(null),D=(0,e.useRef)(null);function E(a){let b=new URLSearchParams(t.toString());for(let[c,d]of Object.entries(a))void 0===d||""===d?b.delete(c):b.set(c,d);let c=b.toString();r.push(c?`${s}?${c}`:s)}function F(a){E({page:a>0?String(a+1):void 0})}let G=l.filter(a=>w[a.id]),H=G.length+1,I=G.length;return(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center justify-between gap-3 mb-3 flex-wrap",children:[(0,d.jsx)("input",{value:A,onChange:a=>{var b;B(b=a.target.value),D.current&&window.clearTimeout(D.current),D.current=window.setTimeout(()=>{E({q:b.trim()||void 0,page:void 0})},300)},placeholder:n("common.searchPlaceholder"),className:"px-3 py-1.5 text-sm rounded-button border border-border bg-bg-surface focus:outline-none focus:border-border-hi w-72 placeholder:text-text-tertiary text-text-primary"}),(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("span",{className:"text-xs text-text-tertiary tabular-nums",children:n("common.rows",{count:b.toLocaleString()})}),(0,d.jsxs)("div",{ref:C,className:"relative",children:[(0,d.jsxs)("button",{onClick:()=>z(a=>!a),className:"btn",children:[n("usage.columns.button"),(0,d.jsx)("span",{className:"ml-1 text-text-tertiary tabular-nums",children:I})]}),y&&(0,d.jsxs)("div",{className:"absolute right-0 mt-1 w-56 card border-border-hi shadow-lg p-2 z-30",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-1.5 pb-1.5 mb-1 border-b border-border",children:[(0,d.jsx)("span",{className:"text-xs text-text-tertiary uppercase tracking-wide",children:n("usage.columns.title")}),(0,d.jsx)("button",{onClick:()=>x(m()),className:"text-xs text-text-tertiary hover:text-text-primary",children:n("usage.columns.reset")})]}),(0,d.jsx)("div",{className:"max-h-72 overflow-auto",children:l.map(a=>(0,d.jsxs)("label",{className:"flex items-center gap-2 px-1.5 py-1.5 text-sm rounded hover:bg-bg-surface-hi cursor-pointer",children:[(0,d.jsx)("input",{type:"checkbox",checked:!!w[a.id],onChange:b=>x(c=>({...c,[a.id]:b.target.checked})),className:"accent-brand"}),(0,d.jsx)("span",{className:"text-text-secondary",children:n(a.labelKey)})]},a.id))})]})]}),(0,d.jsx)("button",{onClick:function(){let a=new URLSearchParams(t.toString());window.location.href=`/api/export/usage?${a.toString()}`},className:"btn",children:n("common.exportCsv")})]})]}),(0,d.jsx)("div",{className:"card overflow-hidden",children:(0,d.jsx)(k.H,{children:(0,d.jsxs)("table",{className:"w-full text-sm",children:[(0,d.jsx)("thead",{children:(0,d.jsxs)("tr",{className:"border-b border-border bg-bg-surface-hi/30",children:[(0,d.jsx)(q,{children:(0,d.jsx)("span",{className:"sr-only",children:"expand"})}),G.map(a=>(0,d.jsx)(q,{align:a.align,sorted:!!a.sortKey&&i.key===a.sortKey,dir:i.dir,onClick:a.sortKey?()=>{var b;let c;return b=a.sortKey,c="desc",void(i.key===b&&(c="asc"===i.dir?"desc":"asc"),E({sort:"timestamp"===b?void 0:b,dir:"desc"===c?void 0:c,page:void 0}))}:void 0,children:n(a.labelKey)},a.id))]})}),(0,d.jsxs)("tbody",{children:[a.map(a=>{let b=u.has(a.turnId),c=a.userText.trim()||n("usage.turn.noPrompt");return(0,d.jsx)(o,{turn:a,isOpen:b,onToggle:()=>{var b;return b=a.turnId,void v(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),c})},userText:c,expandLabel:n("usage.turn.expand"),collapseLabel:n("usage.turn.collapse"),activeColumns:G,locale:p,t:n},a.turnId)}),0===a.length&&(0,d.jsx)("tr",{children:(0,d.jsx)("td",{colSpan:H,className:"px-3 py-8 text-center text-text-tertiary text-sm",children:n("common.noMatchingRows")})})]})]})})}),g>1&&(0,d.jsxs)("div",{className:"flex items-center justify-between mt-3 text-xs text-text-secondary",children:[(0,d.jsx)("span",{children:n("common.pageOf",{page:c+1,total:g})}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("button",{onClick:()=>F(0),disabled:0===c,className:"btn-ghost disabled:opacity-40",children:n("common.first")}),(0,d.jsx)("button",{onClick:()=>F(c-1),disabled:0===c,className:"btn-ghost disabled:opacity-40",children:n("common.prev")}),(0,d.jsx)("button",{onClick:()=>F(c+1),disabled:c>=g-1,className:"btn-ghost disabled:opacity-40",children:n("common.next")}),(0,d.jsx)("button",{onClick:()=>F(g-1),disabled:c>=g-1,className:"btn-ghost disabled:opacity-40",children:n("common.last")})]})]})]})}function o({turn:a,isOpen:b,onToggle:c,userText:e,expandLabel:f,collapseLabel:h,activeColumns:i,locale:k,t:l}){let m=(1===a.models.length?(0,g.P6)(a.models[0]):`${(0,g.P6)(a.models[0])} +${a.models.length-1}`)+(a.efforts.length?1===a.efforts.length?` \xb7 ${a.efforts[0]}`:` \xb7 ${a.efforts[0]}+${a.efforts.length-1}`:""),n=a.toolNames.length?a.toolNames.slice(0,3).join(", ")+(a.toolNames.length>3?"…":""):"—";return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("tr",{className:"border-b border-border last:border-b-0 hover:bg-bg-surface-hi/40 cursor-pointer",onClick:c,children:[(0,d.jsx)("td",{className:"px-2 py-2 text-text-tertiary w-6 text-center select-none",children:(0,d.jsx)("span",{title:b?h:f,className:"inline-block w-4",children:b?"▾":"▸"})}),i.map(b=>(0,d.jsx)("td",{className:(0,g.cn)("px-3 py-2","right"===b.align?"text-right":"text-left"),children:function(a,b,c,e,f,h,i){switch(a){case"time":return(0,d.jsx)("span",{className:"num-mono text-text-secondary whitespace-nowrap text-xs",title:`started ${(0,g.r6)(b.timestamp)}
3
- ended ${(0,g.r6)(b.endTimestamp)}`,children:(0,g.r6)(b.timestamp)});case"duration":return(0,d.jsx)("span",{className:"num-mono text-text-secondary whitespace-nowrap text-xs",title:`${(0,g.r6)(b.timestamp)} → ${(0,g.r6)(b.endTimestamp)}`,children:(0,g.a3)(b.durationMs)});case"prompt":return(0,d.jsx)(j,{maxWidth:460,panelClassName:"p-3 text-sm text-text-secondary leading-relaxed",content:(0,d.jsx)("div",{className:"whitespace-pre-wrap break-words",children:f}),children:(0,d.jsx)("span",{className:"block text-text-secondary truncate max-w-[280px]",children:f})});case"model":return(0,d.jsx)("span",{className:"text-text-primary whitespace-nowrap",children:c});case"project":return(0,d.jsx)("span",{className:"block text-text-secondary truncate max-w-[180px]",title:b.cwd,children:b.projectLabel||(0,g.PJ)(b.cwd)});case"session":return(0,d.jsx)("span",{className:"num-mono text-text-tertiary text-xs",title:b.sessionId,children:(0,g.BC)(b.sessionId)});case"calls":return(0,d.jsx)("span",{className:"num-mono text-text-secondary",children:b.callCount});case"input":return(0,d.jsx)("span",{className:"num-mono text-text-secondary",children:(0,g.jh)(b.inputTokens,h)});case"output":return(0,d.jsx)("span",{className:"num-mono text-text-secondary",children:(0,g.jh)(b.outputTokens,h)});case"cacheRead":return(0,d.jsx)("span",{className:"num-mono text-success",children:(0,g.jh)(b.cacheReadTokens,h)});case"cacheWrite":return(0,d.jsx)("span",{className:"num-mono text-text-secondary",children:(0,g.jh)(b.cacheCreationTokens,h)});case"total":return(0,d.jsx)(j,{align:"right",maxWidth:300,panelClassName:"p-0 overflow-hidden",content:(0,d.jsx)(p,{row:b,locale:h,t:i}),children:(0,d.jsx)("span",{className:"num-mono text-text-primary font-medium border-b border-dashed border-border hover:border-text-tertiary cursor-help",children:(0,g.jh)(b.totalTokens,h)})});case"cost":return(0,d.jsx)("span",{className:"num-mono text-text-primary font-medium",children:(0,g.l7)(b.cost)});case"tools":return(0,d.jsx)("span",{className:"block text-xs text-text-tertiary truncate max-w-[160px]",title:b.toolNames.join(", "),children:e})}}(b.id,a,m,n,e,k,l)},b.id))]}),b&&a.children.map(b=>(0,d.jsxs)("tr",{className:"border-b border-border last:border-b-0 bg-bg-surface-hi/20 text-text-tertiary",children:[(0,d.jsx)("td",{className:"px-2 py-1.5 w-6"}),i.map(c=>(0,d.jsx)("td",{className:(0,g.cn)("px-3 py-1.5","right"===c.align?"text-right":"text-left"),children:function(a,b,c,e,f){switch(a){case"time":return(0,d.jsx)("span",{className:"num-mono whitespace-nowrap text-xs inline-block translate-x-5",children:(0,g.r6)(b.timestamp)});case"duration":return(0,d.jsx)("span",{className:"text-xs text-text-tertiary",children:"—"});case"prompt":{let a=(b.directPrompt??"").trim();if(a&&a!==c.trim())return(0,d.jsx)("span",{className:"block text-xs text-text-secondary truncate max-w-[320px]",title:a,children:a});if(!b.toolNames.length)return(0,d.jsx)("span",{className:"text-xs text-text-tertiary",children:"—"});let e=b.toolNames.join(", "),f=b.toolNames.slice(0,3).join(", ")+(b.toolNames.length>3?"…":"");return(0,d.jsx)("span",{className:"block text-xs text-text-secondary truncate max-w-[280px]",title:e,children:f})}case"model":return(0,d.jsxs)("span",{className:"whitespace-nowrap",children:[(0,g.P6)(b.model),b.effort?` \xb7 ${b.effort}`:""]});case"project":return(0,d.jsx)("span",{className:"block truncate max-w-[180px]",title:b.cwd,children:b.projectLabel||(0,g.PJ)(b.cwd)});case"session":return(0,d.jsx)("span",{className:"num-mono text-xs",title:b.sessionId,children:(0,g.BC)(b.sessionId)});case"calls":return(0,d.jsx)("span",{className:"num-mono",children:"1"});case"input":return(0,d.jsx)("span",{className:"num-mono",children:(0,g.jh)(b.inputTokens,e)});case"output":return(0,d.jsx)("span",{className:"num-mono",children:(0,g.jh)(b.outputTokens,e)});case"cacheRead":return(0,d.jsx)("span",{className:"num-mono text-success",children:(0,g.jh)(b.cacheReadTokens,e)});case"cacheWrite":return(0,d.jsx)("span",{className:"num-mono",children:(0,g.jh)(b.cacheCreationTokens,e)});case"total":return(0,d.jsx)(j,{align:"right",maxWidth:300,panelClassName:"p-0 overflow-hidden",content:(0,d.jsx)(p,{row:b,locale:e,t:f}),children:(0,d.jsx)("span",{className:"num-mono border-b border-dashed border-border/60 hover:border-text-tertiary cursor-help",children:(0,g.jh)(b.totalTokens,e)})});case"cost":return(0,d.jsx)("span",{className:"num-mono",children:(0,g.l7)(b.cost)});case"tools":return(0,d.jsx)("span",{className:"block text-xs truncate max-w-[160px]",title:b.toolNames.join(", "),children:b.toolNames.length?b.toolNames.join(", "):"—"})}}(c.id,b,a.userText,k,l)},c.id))]},b.uuid))]})}function p({row:a,locale:b,t:c}){let f=[{key:"input",label:c("usage.col.input"),tokens:a.inputTokens,cost:a.costInput,tone:"text-text-primary",dot:"bg-chart-input"},{key:"output",label:c("usage.col.output"),tokens:a.outputTokens,cost:a.costOutput,tone:"text-text-primary",dot:"bg-chart-output"},{key:"cacheRead",label:c("usage.col.cacheRead"),tokens:a.cacheReadTokens,cost:a.costCacheRead,tone:"text-success",dot:"bg-chart-cache-read"},{key:"cacheWrite",label:c("usage.col.cacheWrite"),tokens:a.cacheCreationTokens,cost:a.costCacheWrite,tone:"text-text-primary",dot:"bg-chart-cache-create"}];return(0,d.jsxs)("div",{className:"text-xs",children:[(0,d.jsx)("div",{className:"px-3 py-2 border-b border-border bg-bg-surface-hi/40 text-text-tertiary uppercase tracking-wide font-medium",children:c("usage.breakdown.title")}),(0,d.jsxs)("div",{className:"px-3 py-2",children:[(0,d.jsxs)("div",{className:"grid grid-cols-[auto_1fr_auto] gap-x-3 gap-y-1.5 items-center",children:[(0,d.jsx)("span",{}),(0,d.jsx)("span",{className:"text-text-tertiary text-[10px] uppercase tracking-wide text-right",children:c("usage.breakdown.headerTokens")}),(0,d.jsx)("span",{className:"text-text-tertiary text-[10px] uppercase tracking-wide text-right",children:c("usage.breakdown.headerCost")}),f.map(f=>(0,d.jsxs)(e.Fragment,{children:[(0,d.jsxs)("span",{className:"inline-flex items-center gap-2 text-text-secondary",children:[(0,d.jsx)("span",{className:(0,g.cn)("w-2 h-2 rounded-sm",f.dot)}),f.label]}),(0,d.jsx)("span",{className:(0,g.cn)("num-mono text-right",f.tone),children:(0,g.jh)(f.tokens,b)}),(0,d.jsx)("span",{className:"num-mono text-right text-text-secondary",children:(0,g.l7)(f.cost)}),"output"===f.key&&a.reasoningTokens>0&&(0,d.jsxs)(e.Fragment,{children:[(0,d.jsxs)("span",{className:"inline-flex items-center gap-2 text-text-tertiary pl-4 text-[11px]",children:[(0,d.jsx)("span",{className:"text-text-tertiary",children:"↳"}),c("usage.breakdown.reasoning")]}),(0,d.jsx)("span",{className:"num-mono text-right text-text-tertiary text-[11px]",children:(0,g.jh)(a.reasoningTokens,b)}),(0,d.jsx)("span",{className:"text-right text-text-tertiary text-[11px]",children:c("usage.breakdown.reasoningNote")})]},"reasoning-detail")]},f.key))]}),(0,d.jsxs)("div",{className:"mt-2 pt-2 border-t border-border grid grid-cols-[auto_1fr_auto] gap-x-3 items-center",children:[(0,d.jsx)("span",{className:"text-text-secondary font-medium",children:c("usage.breakdown.total")}),(0,d.jsx)("span",{className:"num-mono text-right text-text-primary font-medium",children:(0,g.jh)(a.totalTokens,b)}),(0,d.jsx)("span",{className:"num-mono text-right text-text-primary font-medium",children:(0,g.l7)(a.cost)})]})]})]})}function q({children:a,align:b="left",sorted:c,dir:e,onClick:f}){return(0,d.jsx)("th",{className:(0,g.cn)("px-3 py-2 text-xs font-medium text-text-tertiary uppercase tracking-wide whitespace-nowrap","right"===b?"text-right":"text-left",f&&"cursor-pointer hover:text-text-primary select-none"),onClick:f,children:(0,d.jsxs)("span",{className:"inline-flex items-center gap-1",children:[a,c&&(0,d.jsx)("span",{className:"text-[10px]",children:"asc"===e?"▲":"▼"})]})})}}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[331,802,153,993,517,716,155,567,971],()=>b(b.s=32900));module.exports=c})();
3
+ ended ${(0,g.r6)(b.endTimestamp)}`,children:(0,g.r6)(b.timestamp)});case"duration":return(0,d.jsx)("span",{className:"num-mono text-text-secondary whitespace-nowrap text-xs",title:`${(0,g.r6)(b.timestamp)} → ${(0,g.r6)(b.endTimestamp)}`,children:(0,g.a3)(b.durationMs)});case"prompt":return(0,d.jsx)(j,{maxWidth:460,panelClassName:"p-3 text-sm text-text-secondary leading-relaxed",content:(0,d.jsx)("div",{className:"whitespace-pre-wrap break-words",children:f}),children:(0,d.jsx)("span",{className:"block text-text-secondary truncate max-w-[280px]",children:f})});case"model":return(0,d.jsx)("span",{className:"text-text-primary whitespace-nowrap",children:c});case"project":return(0,d.jsx)("span",{className:"block text-text-secondary truncate max-w-[180px]",title:b.cwd,children:b.projectLabel||(0,g.PJ)(b.cwd)});case"session":return(0,d.jsx)("span",{className:"num-mono text-text-tertiary text-xs",title:b.sessionId,children:(0,g.BC)(b.sessionId)});case"calls":return(0,d.jsx)("span",{className:"num-mono text-text-secondary",children:b.callCount});case"input":return(0,d.jsx)("span",{className:"num-mono text-text-secondary",children:(0,g.jh)(b.inputTokens,h)});case"output":return(0,d.jsx)("span",{className:"num-mono text-text-secondary",children:(0,g.jh)(b.outputTokens,h)});case"cacheRead":return(0,d.jsx)("span",{className:"num-mono text-success",children:(0,g.jh)(b.cacheReadTokens,h)});case"cacheWrite":return(0,d.jsx)("span",{className:"num-mono text-text-secondary",children:(0,g.jh)(b.cacheCreationTokens,h)});case"total":return(0,d.jsx)(j,{align:"right",maxWidth:300,panelClassName:"p-0 overflow-hidden",content:(0,d.jsx)(p,{row:b,locale:h,t:i}),children:(0,d.jsx)("span",{className:"num-mono text-text-primary font-medium border-b border-dashed border-border hover:border-text-tertiary cursor-help",children:(0,g.jh)(b.totalTokens,h)})});case"cost":return(0,d.jsx)("span",{className:"num-mono text-text-primary font-medium",children:(0,g.l7)(b.cost)});case"tools":return(0,d.jsx)("span",{className:"block text-xs text-text-tertiary truncate max-w-[160px]",title:b.toolNames.join(", "),children:e})}}(b.id,a,m,n,e,k,l)},b.id))]}),b&&a.children.map(b=>(0,d.jsxs)("tr",{className:"border-b border-border last:border-b-0 bg-bg-surface-hi/20 text-text-tertiary",children:[(0,d.jsx)("td",{className:"px-2 py-1.5 w-6"}),i.map(c=>(0,d.jsx)("td",{className:(0,g.cn)("px-3 py-1.5","right"===c.align?"text-right":"text-left"),children:function(a,b,c,e,f){switch(a){case"time":return(0,d.jsx)("span",{className:"num-mono whitespace-nowrap text-xs inline-block translate-x-5",children:(0,g.r6)(b.timestamp)});case"duration":return(0,d.jsx)("span",{className:"text-xs text-text-tertiary",children:"—"});case"prompt":{let a=(b.directPrompt??"").trim();if(a&&a!==c.trim())return(0,d.jsx)("span",{className:"block text-xs text-text-secondary truncate max-w-[320px]",title:a,children:a});if(!b.toolNames.length)return(0,d.jsx)("span",{className:"text-xs text-text-tertiary",children:"—"});let e=b.toolNames.join(", "),f=b.toolNames.slice(0,3).join(", ")+(b.toolNames.length>3?"…":"");return(0,d.jsx)("span",{className:"block text-xs text-text-secondary truncate max-w-[280px]",title:e,children:f})}case"model":return(0,d.jsxs)("span",{className:"whitespace-nowrap",children:[(0,g.P6)(b.model),b.effort?` \xb7 ${b.effort}`:""]});case"project":return(0,d.jsx)("span",{className:"block truncate max-w-[180px]",title:b.cwd,children:b.projectLabel||(0,g.PJ)(b.cwd)});case"session":return(0,d.jsx)("span",{className:"num-mono text-xs",title:b.sessionId,children:(0,g.BC)(b.sessionId)});case"calls":return(0,d.jsx)("span",{className:"num-mono",children:"1"});case"input":return(0,d.jsx)("span",{className:"num-mono",children:(0,g.jh)(b.inputTokens,e)});case"output":return(0,d.jsx)("span",{className:"num-mono",children:(0,g.jh)(b.outputTokens,e)});case"cacheRead":return(0,d.jsx)("span",{className:"num-mono text-success",children:(0,g.jh)(b.cacheReadTokens,e)});case"cacheWrite":return(0,d.jsx)("span",{className:"num-mono",children:(0,g.jh)(b.cacheCreationTokens,e)});case"total":return(0,d.jsx)(j,{align:"right",maxWidth:300,panelClassName:"p-0 overflow-hidden",content:(0,d.jsx)(p,{row:b,locale:e,t:f}),children:(0,d.jsx)("span",{className:"num-mono border-b border-dashed border-border/60 hover:border-text-tertiary cursor-help",children:(0,g.jh)(b.totalTokens,e)})});case"cost":return(0,d.jsx)("span",{className:"num-mono",children:(0,g.l7)(b.cost)});case"tools":return(0,d.jsx)("span",{className:"block text-xs truncate max-w-[160px]",title:b.toolNames.join(", "),children:b.toolNames.length?b.toolNames.join(", "):"—"})}}(c.id,b,a.userText,k,l)},c.id))]},b.uuid))]})}function p({row:a,locale:b,t:c}){let f=[{key:"input",label:c("usage.col.input"),tokens:a.inputTokens,cost:a.costInput,tone:"text-text-primary",dot:"bg-chart-input"},{key:"output",label:c("usage.col.output"),tokens:a.outputTokens,cost:a.costOutput,tone:"text-text-primary",dot:"bg-chart-output"},{key:"cacheRead",label:c("usage.col.cacheRead"),tokens:a.cacheReadTokens,cost:a.costCacheRead,tone:"text-success",dot:"bg-chart-cache-read"},{key:"cacheWrite",label:c("usage.col.cacheWrite"),tokens:a.cacheCreationTokens,cost:a.costCacheWrite,tone:"text-text-primary",dot:"bg-chart-cache-create"}];return(0,d.jsxs)("div",{className:"text-xs",children:[(0,d.jsx)("div",{className:"px-3 py-2 border-b border-border bg-bg-surface-hi/40 text-text-tertiary uppercase tracking-wide font-medium",children:c("usage.breakdown.title")}),(0,d.jsxs)("div",{className:"px-3 py-2",children:[(0,d.jsxs)("div",{className:"grid grid-cols-[auto_1fr_auto] gap-x-3 gap-y-1.5 items-center",children:[(0,d.jsx)("span",{}),(0,d.jsx)("span",{className:"text-text-tertiary text-[10px] uppercase tracking-wide text-right",children:c("usage.breakdown.headerTokens")}),(0,d.jsx)("span",{className:"text-text-tertiary text-[10px] uppercase tracking-wide text-right",children:c("usage.breakdown.headerCost")}),f.map(f=>(0,d.jsxs)(e.Fragment,{children:[(0,d.jsxs)("span",{className:"inline-flex items-center gap-2 text-text-secondary",children:[(0,d.jsx)("span",{className:(0,g.cn)("w-2 h-2 rounded-sm",f.dot)}),f.label]}),(0,d.jsx)("span",{className:(0,g.cn)("num-mono text-right",f.tone),children:(0,g.jh)(f.tokens,b)}),(0,d.jsx)("span",{className:"num-mono text-right text-text-secondary",children:(0,g.l7)(f.cost)}),"output"===f.key&&a.reasoningTokens>0&&(0,d.jsxs)(e.Fragment,{children:[(0,d.jsxs)("span",{className:"inline-flex items-center gap-2 text-text-tertiary pl-4 text-[11px]",children:[(0,d.jsx)("span",{className:"text-text-tertiary",children:"↳"}),c("usage.breakdown.reasoning")]}),(0,d.jsx)("span",{className:"num-mono text-right text-text-tertiary text-[11px]",children:(0,g.jh)(a.reasoningTokens,b)}),(0,d.jsx)("span",{className:"text-right text-text-tertiary text-[11px]",children:c("usage.breakdown.reasoningNote")})]},"reasoning-detail")]},f.key))]}),(0,d.jsxs)("div",{className:"mt-2 pt-2 border-t border-border grid grid-cols-[auto_1fr_auto] gap-x-3 items-center",children:[(0,d.jsx)("span",{className:"text-text-secondary font-medium",children:c("usage.breakdown.total")}),(0,d.jsx)("span",{className:"num-mono text-right text-text-primary font-medium",children:(0,g.jh)(a.totalTokens,b)}),(0,d.jsx)("span",{className:"num-mono text-right text-text-primary font-medium",children:(0,g.l7)(a.cost)})]})]})]})}function q({children:a,align:b="left",sorted:c,dir:e,onClick:f}){return(0,d.jsx)("th",{className:(0,g.cn)("px-3 py-2 text-xs font-medium text-text-tertiary uppercase tracking-wide whitespace-nowrap","right"===b?"text-right":"text-left",f&&"cursor-pointer hover:text-text-primary select-none"),onClick:f,children:(0,d.jsxs)("span",{className:"inline-flex items-center gap-1",children:[a,c&&(0,d.jsx)("span",{className:"text-[10px]",children:"asc"===e?"▲":"▼"})]})})}}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[331,802,153,993,517,716,98,567,971],()=>b(b.s=32900));module.exports=c})();
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../node_modules/next/dist/shared/lib/router/utils/html-bots.js","../../../../node_modules/next/dist/shared/lib/router/utils/is-bot.js","../../../../node_modules/next/dist/shared/lib/segment.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../../../package.json","../../../package.json","../../chunks/153.js","../../chunks/155.js","../../chunks/331.js","../../chunks/517.js","../../chunks/567.js","../../chunks/716.js","../../chunks/802.js","../../chunks/971.js","../../chunks/993.js","../../webpack-runtime.js","page_client-reference-manifest.js"]}
1
+ {"version":1,"files":["../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../node_modules/next/dist/shared/lib/router/utils/html-bots.js","../../../../node_modules/next/dist/shared/lib/router/utils/is-bot.js","../../../../node_modules/next/dist/shared/lib/segment.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../../../package.json","../../../package.json","../../chunks/153.js","../../chunks/331.js","../../chunks/517.js","../../chunks/567.js","../../chunks/716.js","../../chunks/802.js","../../chunks/971.js","../../chunks/98.js","../../chunks/993.js","../../webpack-runtime.js","page_client-reference-manifest.js"]}
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/usage/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"7152":{"*":{"id":"75268","name":"*","chunks":[],"async":false}},"8336":{"*":{"id":"39472","name":"*","chunks":[],"async":false}},"8608":{"*":{"id":"82140","name":"*","chunks":[],"async":false}},"8783":{"*":{"id":"60505","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"77526","name":"*","chunks":[],"async":false}},"12112":{"*":{"id":"17290","name":"*","chunks":[],"async":false}},"12623":{"*":{"id":"25515","name":"*","chunks":[],"async":false}},"14920":{"*":{"id":"32560","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"78922","name":"*","chunks":[],"async":false}},"16633":{"*":{"id":"88253","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"68495","name":"*","chunks":[],"async":false}},"21264":{"*":{"id":"95546","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"12263","name":"*","chunks":[],"async":false}},"25577":{"*":{"id":"99955","name":"*","chunks":[],"async":false}},"25763":{"*":{"id":"72267","name":"*","chunks":[],"async":false}},"30633":{"*":{"id":"55423","name":"*","chunks":[],"async":false}},"38059":{"*":{"id":"24919","name":"*","chunks":[],"async":false}},"44512":{"*":{"id":"88843","name":"*","chunks":[],"async":false}},"44703":{"*":{"id":"28607","name":"*","chunks":[],"async":false}},"49567":{"*":{"id":"77731","name":"*","chunks":[],"async":false}},"52619":{"*":{"id":"3991","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"54160","name":"*","chunks":[],"async":false}},"57581":{"*":{"id":"88267","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"75170","name":"*","chunks":[],"async":false}},"74387":{"*":{"id":"33280","name":"*","chunks":[],"async":false}},"77549":{"*":{"id":"24961","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"82146","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"31603","name":"*","chunks":[],"async":false}},"91107":{"*":{"id":"48507","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"29234","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/globals.css":{"id":41290,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","619","static/chunks/619-f072ac750404f9da.js","148","static/chunks/148-0a1e1b0207b89e3f.js","177","static/chunks/app/layout-2512ccdfb13aeb17.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/nav.tsx":{"id":57581,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","619","static/chunks/619-f072ac750404f9da.js","148","static/chunks/148-0a1e1b0207b89e3f.js","177","static/chunks/app/layout-2512ccdfb13aeb17.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/providers.tsx":{"id":12112,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","619","static/chunks/619-f072ac750404f9da.js","148","static/chunks/148-0a1e1b0207b89e3f.js","177","static/chunks/app/layout-2512ccdfb13aeb17.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/error.tsx":{"id":49567,"name":"*","chunks":["148","static/chunks/148-0a1e1b0207b89e3f.js","39","static/chunks/app/error-3e48784f89c5ae8d.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/charts/token-stack-chart.tsx":{"id":38059,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","430","static/chunks/app/usage/page-18fd820a3111bd5b.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/client/app-dir/link.js":{"id":52619,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/client/app-dir/link.js":{"id":52619,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/language-switcher.tsx":{"id":21264,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/pricing-table.tsx":{"id":8783,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/scan-refresh.tsx":{"id":91107,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/theme-switcher.tsx":{"id":44703,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/activity-stats.tsx":{"id":12623,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","974","static/chunks/app/page-19d3e77d4aa35a63.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/block-progress-switcher.tsx":{"id":30633,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","974","static/chunks/app/page-19d3e77d4aa35a63.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/block-progress.tsx":{"id":25763,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","974","static/chunks/app/page-19d3e77d4aa35a63.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/charts/model-bar-chart.tsx":{"id":8608,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","974","static/chunks/app/page-19d3e77d4aa35a63.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/overview-trend-card.tsx":{"id":74387,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","974","static/chunks/app/page-19d3e77d4aa35a63.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/auto-refresh.tsx":{"id":77549,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","430","static/chunks/app/usage/page-18fd820a3111bd5b.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/granularity-picker.tsx":{"id":16633,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","430","static/chunks/app/usage/page-18fd820a3111bd5b.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/model-filter.tsx":{"id":8336,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","430","static/chunks/app/usage/page-18fd820a3111bd5b.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/overview-toggle.tsx":{"id":44512,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","430","static/chunks/app/usage/page-18fd820a3111bd5b.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/project-filter.tsx":{"id":14920,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","430","static/chunks/app/usage/page-18fd820a3111bd5b.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/range-picker.tsx":{"id":7152,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","430","static/chunks/app/usage/page-18fd820a3111bd5b.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/usage-table.tsx":{"id":25577,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","430","static/chunks/app/usage/page-18fd820a3111bd5b.js"],"async":false}},"entryCSSFiles":{"/Users/zuopeng.cheng/personal/workspace/ccgauge/":[],"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/layout":[{"inlined":false,"path":"static/css/406e067663b8b429.css"}],"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/error":[],"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/loading":[],"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/page":[],"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/usage/page":[]},"rscModuleMapping":{"7152":{"*":{"id":"58258","name":"*","chunks":[],"async":false}},"8336":{"*":{"id":"36666","name":"*","chunks":[],"async":false}},"8608":{"*":{"id":"60798","name":"*","chunks":[],"async":false}},"8783":{"*":{"id":"87639","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}},"12112":{"*":{"id":"66664","name":"*","chunks":[],"async":false}},"12623":{"*":{"id":"4001","name":"*","chunks":[],"async":false}},"14920":{"*":{"id":"21966","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"16633":{"*":{"id":"49863","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"36893","name":"*","chunks":[],"async":false}},"21264":{"*":{"id":"98392","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"73041","name":"*","chunks":[],"async":false}},"25577":{"*":{"id":"21092","name":"*","chunks":[],"async":false}},"25763":{"*":{"id":"88622","name":"*","chunks":[],"async":false}},"30633":{"*":{"id":"53633","name":"*","chunks":[],"async":false}},"38059":{"*":{"id":"89605","name":"*","chunks":[],"async":false}},"41290":{"*":{"id":"82704","name":"*","chunks":[],"async":false}},"44512":{"*":{"id":"68264","name":"*","chunks":[],"async":false}},"44703":{"*":{"id":"29509","name":"*","chunks":[],"async":false}},"49567":{"*":{"id":"41697","name":"*","chunks":[],"async":false}},"52619":{"*":{"id":"65169","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"81170","name":"*","chunks":[],"async":false}},"57581":{"*":{"id":"64285","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"89748","name":"*","chunks":[],"async":false}},"74387":{"*":{"id":"73668","name":"*","chunks":[],"async":false}},"77549":{"*":{"id":"62035","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"51384","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"23597","name":"*","chunks":[],"async":false}},"91107":{"*":{"id":"84701","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"69576","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/usage/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"7152":{"*":{"id":"75268","name":"*","chunks":[],"async":false}},"8336":{"*":{"id":"39472","name":"*","chunks":[],"async":false}},"8608":{"*":{"id":"82140","name":"*","chunks":[],"async":false}},"8783":{"*":{"id":"60505","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"77526","name":"*","chunks":[],"async":false}},"12112":{"*":{"id":"17290","name":"*","chunks":[],"async":false}},"12623":{"*":{"id":"25515","name":"*","chunks":[],"async":false}},"14920":{"*":{"id":"32560","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"78922","name":"*","chunks":[],"async":false}},"16633":{"*":{"id":"88253","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"68495","name":"*","chunks":[],"async":false}},"21264":{"*":{"id":"95546","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"12263","name":"*","chunks":[],"async":false}},"25577":{"*":{"id":"99955","name":"*","chunks":[],"async":false}},"25763":{"*":{"id":"72267","name":"*","chunks":[],"async":false}},"30633":{"*":{"id":"55423","name":"*","chunks":[],"async":false}},"38059":{"*":{"id":"24919","name":"*","chunks":[],"async":false}},"44512":{"*":{"id":"88843","name":"*","chunks":[],"async":false}},"44703":{"*":{"id":"28607","name":"*","chunks":[],"async":false}},"49567":{"*":{"id":"77731","name":"*","chunks":[],"async":false}},"52619":{"*":{"id":"3991","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"54160","name":"*","chunks":[],"async":false}},"57581":{"*":{"id":"88267","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"75170","name":"*","chunks":[],"async":false}},"74387":{"*":{"id":"33280","name":"*","chunks":[],"async":false}},"77549":{"*":{"id":"24961","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"82146","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"31603","name":"*","chunks":[],"async":false}},"91107":{"*":{"id":"48507","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"29234","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/globals.css":{"id":41290,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","619","static/chunks/619-f072ac750404f9da.js","148","static/chunks/148-0a1e1b0207b89e3f.js","177","static/chunks/app/layout-2512ccdfb13aeb17.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/nav.tsx":{"id":57581,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","619","static/chunks/619-f072ac750404f9da.js","148","static/chunks/148-0a1e1b0207b89e3f.js","177","static/chunks/app/layout-2512ccdfb13aeb17.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/providers.tsx":{"id":12112,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","619","static/chunks/619-f072ac750404f9da.js","148","static/chunks/148-0a1e1b0207b89e3f.js","177","static/chunks/app/layout-2512ccdfb13aeb17.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/error.tsx":{"id":49567,"name":"*","chunks":["148","static/chunks/148-0a1e1b0207b89e3f.js","39","static/chunks/app/error-3e48784f89c5ae8d.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/client/app-dir/link.js":{"id":52619,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/node_modules/next/dist/esm/client/app-dir/link.js":{"id":52619,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/language-switcher.tsx":{"id":21264,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/pricing-table.tsx":{"id":8783,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/scan-refresh.tsx":{"id":91107,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/theme-switcher.tsx":{"id":44703,"name":"*","chunks":[],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/charts/token-stack-chart.tsx":{"id":38059,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","430","static/chunks/app/usage/page-18fd820a3111bd5b.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/activity-stats.tsx":{"id":12623,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","974","static/chunks/app/page-19d3e77d4aa35a63.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/block-progress-switcher.tsx":{"id":30633,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","974","static/chunks/app/page-19d3e77d4aa35a63.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/block-progress.tsx":{"id":25763,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","974","static/chunks/app/page-19d3e77d4aa35a63.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/charts/model-bar-chart.tsx":{"id":8608,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","974","static/chunks/app/page-19d3e77d4aa35a63.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/overview-trend-card.tsx":{"id":74387,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","974","static/chunks/app/page-19d3e77d4aa35a63.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/auto-refresh.tsx":{"id":77549,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","430","static/chunks/app/usage/page-18fd820a3111bd5b.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/granularity-picker.tsx":{"id":16633,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","430","static/chunks/app/usage/page-18fd820a3111bd5b.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/model-filter.tsx":{"id":8336,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","430","static/chunks/app/usage/page-18fd820a3111bd5b.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/overview-toggle.tsx":{"id":44512,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","430","static/chunks/app/usage/page-18fd820a3111bd5b.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/project-filter.tsx":{"id":14920,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","430","static/chunks/app/usage/page-18fd820a3111bd5b.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/range-picker.tsx":{"id":7152,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","430","static/chunks/app/usage/page-18fd820a3111bd5b.js"],"async":false},"/Users/zuopeng.cheng/personal/workspace/ccgauge/components/usage-table.tsx":{"id":25577,"name":"*","chunks":["760","static/chunks/760-24bf5ac5820b9230.js","930","static/chunks/930-3035d0b294080d0b.js","148","static/chunks/148-0a1e1b0207b89e3f.js","430","static/chunks/app/usage/page-18fd820a3111bd5b.js"],"async":false}},"entryCSSFiles":{"/Users/zuopeng.cheng/personal/workspace/ccgauge/":[],"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/layout":[{"inlined":false,"path":"static/css/406e067663b8b429.css"}],"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/error":[],"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/loading":[],"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/page":[],"/Users/zuopeng.cheng/personal/workspace/ccgauge/app/usage/page":[]},"rscModuleMapping":{"7152":{"*":{"id":"58258","name":"*","chunks":[],"async":false}},"8336":{"*":{"id":"36666","name":"*","chunks":[],"async":false}},"8608":{"*":{"id":"60798","name":"*","chunks":[],"async":false}},"8783":{"*":{"id":"87639","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}},"12112":{"*":{"id":"66664","name":"*","chunks":[],"async":false}},"12623":{"*":{"id":"4001","name":"*","chunks":[],"async":false}},"14920":{"*":{"id":"21966","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"16633":{"*":{"id":"49863","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"36893","name":"*","chunks":[],"async":false}},"21264":{"*":{"id":"98392","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"73041","name":"*","chunks":[],"async":false}},"25577":{"*":{"id":"21092","name":"*","chunks":[],"async":false}},"25763":{"*":{"id":"88622","name":"*","chunks":[],"async":false}},"30633":{"*":{"id":"53633","name":"*","chunks":[],"async":false}},"38059":{"*":{"id":"89605","name":"*","chunks":[],"async":false}},"41290":{"*":{"id":"82704","name":"*","chunks":[],"async":false}},"44512":{"*":{"id":"68264","name":"*","chunks":[],"async":false}},"44703":{"*":{"id":"29509","name":"*","chunks":[],"async":false}},"49567":{"*":{"id":"41697","name":"*","chunks":[],"async":false}},"52619":{"*":{"id":"65169","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"81170","name":"*","chunks":[],"async":false}},"57581":{"*":{"id":"64285","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"89748","name":"*","chunks":[],"async":false}},"74387":{"*":{"id":"73668","name":"*","chunks":[],"async":false}},"77549":{"*":{"id":"62035","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"51384","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"23597","name":"*","chunks":[],"async":false}},"91107":{"*":{"id":"84701","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"69576","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
@@ -2,17 +2,17 @@
2
2
  "/_not-found/page": "app/_not-found/page.js",
3
3
  "/api/projects/route": "app/api/projects/route.js",
4
4
  "/api/blocks/route": "app/api/blocks/route.js",
5
- "/api/scan/route": "app/api/scan/route.js",
6
- "/api/pricing/route": "app/api/pricing/route.js",
7
5
  "/api/sessions/route": "app/api/sessions/route.js",
6
+ "/api/pricing/route": "app/api/pricing/route.js",
7
+ "/api/scan/route": "app/api/scan/route.js",
8
8
  "/api/usage/route": "app/api/usage/route.js",
9
9
  "/api/export/usage/route": "app/api/export/usage/route.js",
10
- "/projects/[id]/page": "app/projects/[id]/page.js",
11
- "/models/page": "app/models/page.js",
12
- "/settings/page": "app/settings/page.js",
13
10
  "/projects/page": "app/projects/page.js",
14
- "/sessions/[id]/page": "app/sessions/[id]/page.js",
11
+ "/settings/page": "app/settings/page.js",
15
12
  "/sessions/page": "app/sessions/page.js",
13
+ "/projects/[id]/page": "app/projects/[id]/page.js",
14
+ "/models/page": "app/models/page.js",
16
15
  "/page": "app/page.js",
17
- "/usage/page": "app/usage/page.js"
16
+ "/usage/page": "app/usage/page.js",
17
+ "/sessions/[id]/page": "app/sessions/[id]/page.js"
18
18
  }
@@ -1 +1 @@
1
- "use strict";exports.id=971,exports.ids=[971],exports.modules={24919:(a,b,c)=>{c.d(b,{TokenStackChart:()=>o});var d=c(21124),e=c(6077),f=c(72400),g=c(57495),h=c(59296),i=c(16803),j=c(11767),k=c(18311),l=c(15514),m=c(15519);let n={input:"rgb(var(--chart-input))",output:"rgb(var(--chart-output))",cacheRead:"rgb(var(--chart-cache-read))",cacheCreation:"rgb(var(--chart-cache-create))"};function o({data:a,height:b="h-72"}){let c=(0,m.kj)(),{locale:o}=(0,m.s9)();return a.length?(0,d.jsxs)("div",{className:`${b} w-full`,children:[(0,d.jsx)(e.u,{width:"100%",height:"100%",children:(0,d.jsxs)(f.E,{data:a,margin:{top:12,right:8,bottom:4,left:8},barCategoryGap:"22%",children:[(0,d.jsx)(g.d,{stroke:"rgb(var(--chart-grid))",strokeOpacity:.6,strokeDasharray:"3 3",vertical:!1}),(0,d.jsx)(h.W,{dataKey:"label",tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:!1,interval:"preserveStartEnd",minTickGap:32,tickMargin:8}),(0,d.jsx)(i.h,{tickFormatter:a=>(0,l.jh)(Number(a),o),tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:!1,width:56,tickMargin:4}),(0,d.jsx)(j.m,{content:(0,d.jsx)(q,{}),cursor:{fill:"rgb(var(--text-primary) / 0.05)",radius:4}}),(0,d.jsx)(k.y,{dataKey:"input",stackId:"a",fill:n.input,isAnimationActive:!1}),(0,d.jsx)(k.y,{dataKey:"cacheCreation",stackId:"a",fill:n.cacheCreation,isAnimationActive:!1}),(0,d.jsx)(k.y,{dataKey:"cacheRead",stackId:"a",fill:n.cacheRead,isAnimationActive:!1}),(0,d.jsx)(k.y,{dataKey:"output",stackId:"a",fill:n.output,radius:[4,4,0,0],isAnimationActive:!1})]})}),(0,d.jsxs)("div",{className:"flex items-center flex-wrap justify-center gap-4 text-xs text-text-secondary mt-2",children:[(0,d.jsx)(p,{color:n.input,label:c("chart.legend.input")}),(0,d.jsx)(p,{color:n.cacheCreation,label:c("chart.legend.cacheWrite")}),(0,d.jsx)(p,{color:n.cacheRead,label:c("chart.legend.cacheRead")}),(0,d.jsx)(p,{color:n.output,label:c("chart.legend.output")})]})]}):(0,d.jsx)("div",{className:`${b} flex items-center justify-center text-text-tertiary text-sm`,children:c("chart.empty")})}function p({color:a,label:b}){return(0,d.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,d.jsx)("span",{className:"w-2.5 h-2.5 rounded-sm",style:{background:a}}),(0,d.jsx)("span",{children:b})]})}function q(a){let b=(0,m.kj)(),{locale:c}=(0,m.s9)();if(!a.active||!a.payload||!a.payload.length)return null;let e=a.payload[0].payload,f=e.input+e.output+e.cacheRead+e.cacheCreation;return(0,d.jsxs)("div",{className:"card-elevated border border-border-hi rounded-card p-3 text-xs min-w-[200px]",children:[(0,d.jsx)("div",{className:"font-medium text-text-primary mb-2",children:a.label}),(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsx)(r,{color:n.input,label:b("chart.legend.input"),value:e.input,locale:c}),(0,d.jsx)(r,{color:n.cacheCreation,label:b("chart.legend.cacheWrite"),value:e.cacheCreation,locale:c}),(0,d.jsx)(r,{color:n.cacheRead,label:b("chart.legend.cacheRead"),value:e.cacheRead,locale:c}),(0,d.jsx)(r,{color:n.output,label:b("chart.legend.output"),value:e.output,locale:c})]}),(0,d.jsxs)("div",{className:"mt-2 pt-2 border-t border-border flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-text-secondary",children:b("chart.tooltip.total")}),(0,d.jsx)("span",{className:"num-mono text-text-primary",children:(0,l.jh)(f,c)})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,d.jsx)("span",{className:"text-text-secondary",children:b("chart.tooltip.cost")}),(0,d.jsx)("span",{className:"num-mono text-brand",children:(0,l.az)(e.cost)})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,d.jsx)("span",{className:"text-text-secondary",children:b("chart.tooltip.requests")}),(0,d.jsx)("span",{className:"num-mono text-text-primary",children:e.requests})]})]})}function r({color:a,label:b,value:c,locale:e}){return(0,d.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,d.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-text-secondary",children:[(0,d.jsx)("span",{className:"w-2 h-2 rounded-sm",style:{background:a}}),b]}),(0,d.jsx)("span",{className:"num-mono text-text-primary",children:(0,l.jh)(c,e)})]})}},37583:(a,b,c)=>{c.d(b,{pp:()=>h,qK:()=>g,wn:()=>f});var d=c(75338),e=c(95012);function f({title:a,desc:b,right:c,children:f,className:g,inlineDesc:h,fillBody:i}){return(0,d.jsxs)("section",{className:(0,e.cn)("card overflow-hidden",i&&"flex flex-col",g),children:[(a||c)&&(0,d.jsxs)("header",{className:(0,e.cn)("section-header","flex flex-col sm:flex-row sm:items-start sm:justify-between gap-3 sm:gap-4","px-5 sm:px-6 pt-4 sm:pt-5 pb-3 border-b border-border"),children:[(0,d.jsxs)("div",{className:(0,e.cn)("min-w-0",h&&"sm:flex sm:items-baseline sm:gap-2.5"),children:[a&&(0,d.jsx)("h2",{className:"text-[15px] font-semibold text-text-primary tracking-tight leading-tight",children:a}),b&&(0,d.jsx)("p",{className:(0,e.cn)("text-xs text-text-secondary leading-relaxed",h?"mt-1 sm:mt-0":"mt-1.5"),children:b})]}),c&&(0,d.jsx)("div",{className:"flex items-center gap-2 flex-wrap",children:c})]}),(0,d.jsx)("div",{className:(0,e.cn)("p-5 sm:p-6",i&&"flex-1 flex flex-col"),children:f})]})}function g({title:a,desc:b,right:c,children:e}){return(0,d.jsxs)("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 py-6 sm:py-8 space-y-5 sm:space-y-6",children:[(0,d.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-end sm:justify-between gap-3 sm:gap-4",children:[(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("h1",{className:"text-2xl sm:text-[1.75rem] font-semibold tracking-tight leading-tight truncate",children:a}),b&&(0,d.jsx)("p",{className:"text-sm text-text-secondary mt-1.5 leading-relaxed",children:b})]}),c&&(0,d.jsx)("div",{className:"flex items-center gap-2 flex-wrap",children:c})]}),e]})}function h({title:a,desc:b,icon:c,action:e}){return(0,d.jsxs)("div",{className:"card text-center py-14 sm:py-16 px-6 flex flex-col items-center gap-3",children:[(0,d.jsx)("div",{className:"w-12 h-12 rounded-full bg-bg-surface-hi border border-border flex items-center justify-center text-text-tertiary",children:c??(0,d.jsx)(i,{})}),(0,d.jsx)("div",{className:"text-base font-medium text-text-primary",children:a}),b&&(0,d.jsx)("div",{className:"text-sm text-text-tertiary max-w-md leading-relaxed",children:b}),e&&(0,d.jsx)("div",{className:"mt-2",children:e})]})}function i(){return(0,d.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,d.jsx)("circle",{cx:"12",cy:"12",r:"9"}),(0,d.jsx)("path",{d:"M9 9h.01M15 9h.01M9 15c1 1 2 1.5 3 1.5s2-.5 3-1.5"})]})}},50160:(a,b,c)=>{c.d(b,{SI:()=>e});var d=c(60704);function e(a){let b=(0,d.sO)(a.source),{pricing:c}=b.resolvePricing(a.model);return b.costFromUsage(a.usage,c)}},67803:(a,b,c)=>{c.d(b,{$M:()=>o,OJ:()=>m,a3:()=>i,a6:()=>k,a9:()=>l,bo:()=>h,pb:()=>n});var d=c(50160),e=c(60704),f=c(95012);let g=["hour","day","week","month"];function h(a){return"string"==typeof a&&g.includes(a)}function i(a,b){let c=new Date(a),d=c.getFullYear(),e=String(c.getMonth()+1).padStart(2,"0"),f=String(c.getDate()).padStart(2,"0"),g=String(c.getHours()).padStart(2,"0");if("hour"===b)return{key:`${d}-${e}-${f}T${g}`,label:`${e}/${f} ${g}:00`};if("day"===b)return{key:`${d}-${e}-${f}`,label:`${e}/${f}`};if("week"===b){let a=new Date(c),b=a.getDay()||7;a.setDate(a.getDate()-b+1);let d=String(a.getMonth()+1).padStart(2,"0"),e=String(a.getDate()).padStart(2,"0");return{key:`${a.getFullYear()}-W${d}${e}`,label:`Wk ${d}/${e}`}}return{key:`${d}-${e}`,label:`${d}-${e}`}}function j(a,b){return!(a.source!==b.source||b.from&&a.timestamp<b.from.toISOString()||b.to&&a.timestamp>b.to.toISOString())&&(!b.models||!b.models.length||!!b.models.includes(a.model))&&(!b.projects||!b.projects.length||!!b.projects.includes(a.cwd))}function k(a,b,c){let e=new Map;for(let f of a){if(!j(f,c))continue;let{key:a,label:g}=i(f.timestamp,b),h=e.get(a);h||(h={key:a,label:g,inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheCreationTokens:0,totalTokens:0,cost:0,saved:0,requests:0,models:{}},e.set(a,h)),function(a,b){let c=(0,d.SI)(b);a.inputTokens+=b.usage.input_tokens,a.outputTokens+=b.usage.output_tokens,a.cacheReadTokens+=b.usage.cache_read_input_tokens,a.cacheCreationTokens+=b.usage.cache_creation_input_tokens,a.totalTokens=a.inputTokens+a.outputTokens+a.cacheReadTokens+a.cacheCreationTokens,a.cost+=c.total,a.saved+=c.saved,a.requests+=1;let e=a.models[b.model]??{tokens:0,cost:0,requests:0};e.tokens+=b.usage.input_tokens+b.usage.output_tokens+b.usage.cache_read_input_tokens+b.usage.cache_creation_input_tokens,e.cost+=c.total,e.requests+=1,a.models[b.model]=e}(h,f)}return Array.from(e.values()).sort((a,b)=>a.key.localeCompare(b.key))}function l(a,b){let c=new Map;for(let f of a){if(!j(f,b))continue;let a=c.get(f.model);if(!a){let{pricing:b,matchType:d}=(0,e.sO)(f.source).resolvePricing(f.model);a={model:f.model,source:f.source,requests:0,inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheCreationTokens:0,totalTokens:0,cost:0,saved:0,pricing:b,pricingResolved:"exact"===d||"date-stripped"===d||"prefix-stripped"===d},c.set(f.model,a)}let g=(0,d.SI)(f);a.requests+=1,a.inputTokens+=f.usage.input_tokens,a.outputTokens+=f.usage.output_tokens,a.cacheReadTokens+=f.usage.cache_read_input_tokens,a.cacheCreationTokens+=f.usage.cache_creation_input_tokens,a.totalTokens=a.inputTokens+a.outputTokens+a.cacheReadTokens+a.cacheCreationTokens,a.cost+=g.total,a.saved+=g.saved}return Array.from(c.values()).sort((a,b)=>b.cost-a.cost)}function m(a,b){let c=new Map,e=new Map;for(let g of a){if(!j(g,b))continue;let a=g.cwd||"(unknown)",h=c.get(a);h||(h={source:b.source,cwd:a,projectName:(0,f.PJ)(a),sessions:0,requests:0,inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheCreationTokens:0,totalTokens:0,cost:0,saved:0,firstActivity:g.timestamp,lastActivity:g.timestamp,models:[]},c.set(a,h),e.set(a,new Set)),e.get(a).add(g.sessionId);let i=(0,d.SI)(g);h.requests+=1,h.inputTokens+=g.usage.input_tokens,h.outputTokens+=g.usage.output_tokens,h.cacheReadTokens+=g.usage.cache_read_input_tokens,h.cacheCreationTokens+=g.usage.cache_creation_input_tokens,h.totalTokens=h.inputTokens+h.outputTokens+h.cacheReadTokens+h.cacheCreationTokens,h.cost+=i.total,h.saved+=i.saved,g.timestamp<h.firstActivity&&(h.firstActivity=g.timestamp),g.timestamp>h.lastActivity&&(h.lastActivity=g.timestamp),h.models.includes(g.model)||h.models.push(g.model)}for(let[a,b]of e)c.get(a).sessions=b.size;return Array.from(c.values()).sort((a,b)=>b.cost-a.cost)}function n(a,b,c){let e=new Map;for(let b of a){if(!j(b,c))continue;let a=b.sessionId||b.uuid,g=e.get(a);g||(g={sessionId:a,source:b.source,cwd:b.cwd,projectName:(0,f.PJ)(b.cwd),startTime:b.timestamp,endTime:b.timestamp,durationMs:0,requests:0,inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheCreationTokens:0,totalTokens:0,cost:0,saved:0,models:[],modelBreakdown:{}},e.set(a,g));let h=(0,d.SI)(b);g.requests+=1,g.inputTokens+=b.usage.input_tokens,g.outputTokens+=b.usage.output_tokens,g.cacheReadTokens+=b.usage.cache_read_input_tokens,g.cacheCreationTokens+=b.usage.cache_creation_input_tokens,g.totalTokens=g.inputTokens+g.outputTokens+g.cacheReadTokens+g.cacheCreationTokens,g.cost+=h.total,g.saved+=h.saved,b.timestamp<g.startTime&&(g.startTime=b.timestamp),b.timestamp>g.endTime&&(g.endTime=b.timestamp),g.models.includes(b.model)||g.models.push(b.model);let i=g.modelBreakdown[b.model]??{tokens:0,cost:0,requests:0};i.tokens+=b.usage.input_tokens+b.usage.output_tokens+b.usage.cache_read_input_tokens+b.usage.cache_creation_input_tokens,i.cost+=h.total,i.requests+=1,g.modelBreakdown[b.model]=i}let g=new Map;for(let a of b){let b=g.get(a.sessionId);(!b||a.timestamp<b.timestamp)&&g.set(a.sessionId,a)}for(let a of e.values()){a.durationMs=Math.max(0,new Date(a.endTime).getTime()-new Date(a.startTime).getTime());let b=g.get(a.sessionId);b&&b.textPreview&&(a.firstUserMessage=b.textPreview,a.title=b.textPreview.slice(0,80))}return Array.from(e.values()).sort((a,b)=>b.endTime.localeCompare(a.endTime))}function o(a,b){let c=0,e=0,f=0,g=0,h=0,i=0,k=0;for(let l of a){if(!j(l,b))continue;let a=(0,d.SI)(l);c+=l.usage.input_tokens,e+=l.usage.output_tokens,f+=l.usage.cache_read_input_tokens,g+=l.usage.cache_creation_input_tokens,h+=a.total,i+=a.saved,k+=1}return{inputTokens:c,outputTokens:e,cacheReadTokens:f,cacheCreationTokens:g,totalTokens:c+e+f+g,cost:h,saved:i,requests:k}}}};
1
+ "use strict";exports.id=971,exports.ids=[971],exports.modules={24919:(a,b,c)=>{c.d(b,{TokenStackChart:()=>o});var d=c(21124),e=c(6077),f=c(72400),g=c(57495),h=c(59296),i=c(16803),j=c(11767),k=c(18311),l=c(15514),m=c(15519);let n={input:"rgb(var(--chart-input))",output:"rgb(var(--chart-output))",cacheRead:"rgb(var(--chart-cache-read))",cacheCreation:"rgb(var(--chart-cache-create))"};function o({data:a,height:b="h-72"}){let c=(0,m.kj)(),{locale:o}=(0,m.s9)();return a.length?(0,d.jsxs)("div",{className:`${b} w-full`,children:[(0,d.jsx)(e.u,{width:"100%",height:"100%",children:(0,d.jsxs)(f.E,{data:a,margin:{top:12,right:8,bottom:4,left:8},barCategoryGap:"22%",children:[(0,d.jsx)(g.d,{stroke:"rgb(var(--chart-grid))",strokeOpacity:.6,strokeDasharray:"3 3",vertical:!1}),(0,d.jsx)(h.W,{dataKey:"label",tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:!1,interval:"preserveStartEnd",minTickGap:32,tickMargin:8}),(0,d.jsx)(i.h,{tickFormatter:a=>(0,l.jh)(Number(a),o),tick:{fill:"rgb(var(--chart-axis))",fontSize:11},tickLine:!1,axisLine:!1,width:56,tickMargin:4}),(0,d.jsx)(j.m,{content:(0,d.jsx)(q,{}),cursor:{fill:"rgb(var(--text-primary) / 0.05)",radius:4}}),(0,d.jsx)(k.y,{dataKey:"input",stackId:"a",fill:n.input,isAnimationActive:!1}),(0,d.jsx)(k.y,{dataKey:"cacheCreation",stackId:"a",fill:n.cacheCreation,isAnimationActive:!1}),(0,d.jsx)(k.y,{dataKey:"cacheRead",stackId:"a",fill:n.cacheRead,isAnimationActive:!1}),(0,d.jsx)(k.y,{dataKey:"output",stackId:"a",fill:n.output,radius:[4,4,0,0],isAnimationActive:!1})]})}),(0,d.jsxs)("div",{className:"flex items-center flex-wrap justify-center gap-4 text-xs text-text-secondary mt-2",children:[(0,d.jsx)(p,{color:n.input,label:c("chart.legend.input")}),(0,d.jsx)(p,{color:n.cacheCreation,label:c("chart.legend.cacheWrite")}),(0,d.jsx)(p,{color:n.cacheRead,label:c("chart.legend.cacheRead")}),(0,d.jsx)(p,{color:n.output,label:c("chart.legend.output")})]})]}):(0,d.jsx)("div",{className:`${b} flex items-center justify-center text-text-tertiary text-sm`,children:c("chart.empty")})}function p({color:a,label:b}){return(0,d.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,d.jsx)("span",{className:"w-2.5 h-2.5 rounded-sm",style:{background:a}}),(0,d.jsx)("span",{children:b})]})}function q(a){let b=(0,m.kj)(),{locale:c}=(0,m.s9)();if(!a.active||!a.payload||!a.payload.length)return null;let e=a.payload[0].payload,f=e.input+e.output+e.cacheRead+e.cacheCreation;return(0,d.jsxs)("div",{className:"card-elevated border border-border-hi rounded-card p-3 text-xs min-w-[200px]",children:[(0,d.jsx)("div",{className:"font-medium text-text-primary mb-2",children:a.label}),(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsx)(r,{color:n.input,label:b("chart.legend.input"),value:e.input,locale:c}),(0,d.jsx)(r,{color:n.cacheCreation,label:b("chart.legend.cacheWrite"),value:e.cacheCreation,locale:c}),(0,d.jsx)(r,{color:n.cacheRead,label:b("chart.legend.cacheRead"),value:e.cacheRead,locale:c}),(0,d.jsx)(r,{color:n.output,label:b("chart.legend.output"),value:e.output,locale:c})]}),(0,d.jsxs)("div",{className:"mt-2 pt-2 border-t border-border flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-text-secondary",children:b("chart.tooltip.total")}),(0,d.jsx)("span",{className:"num-mono text-text-primary",children:(0,l.jh)(f,c)})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,d.jsx)("span",{className:"text-text-secondary",children:b("chart.tooltip.cost")}),(0,d.jsx)("span",{className:"num-mono text-brand",children:(0,l.az)(e.cost)})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,d.jsx)("span",{className:"text-text-secondary",children:b("chart.tooltip.requests")}),(0,d.jsx)("span",{className:"num-mono text-text-primary",children:e.requests})]})]})}function r({color:a,label:b,value:c,locale:e}){return(0,d.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,d.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-text-secondary",children:[(0,d.jsx)("span",{className:"w-2 h-2 rounded-sm",style:{background:a}}),b]}),(0,d.jsx)("span",{className:"num-mono text-text-primary",children:(0,l.jh)(c,e)})]})}},37583:(a,b,c)=>{c.d(b,{pp:()=>h,qK:()=>g,wn:()=>f});var d=c(75338),e=c(95012);function f({title:a,desc:b,right:c,children:f,className:g,inlineDesc:h,fillBody:i}){return(0,d.jsxs)("section",{className:(0,e.cn)("card overflow-hidden",i&&"flex flex-col",g),children:[(a||c)&&(0,d.jsxs)("header",{className:(0,e.cn)("section-header","flex flex-col sm:flex-row sm:items-start sm:justify-between gap-3 sm:gap-4","px-5 sm:px-6 pt-4 sm:pt-5 pb-3 border-b border-border"),children:[(0,d.jsxs)("div",{className:(0,e.cn)("min-w-0",h&&"sm:flex sm:items-baseline sm:gap-2.5"),children:[a&&(0,d.jsx)("h2",{className:"text-[15px] font-semibold text-text-primary tracking-tight leading-tight",children:a}),b&&(0,d.jsx)("p",{className:(0,e.cn)("text-xs text-text-secondary leading-relaxed",h?"mt-1 sm:mt-0":"mt-1.5"),children:b})]}),c&&(0,d.jsx)("div",{className:"flex items-center gap-2 flex-wrap",children:c})]}),(0,d.jsx)("div",{className:(0,e.cn)("p-5 sm:p-6",i&&"flex-1 flex flex-col"),children:f})]})}function g({title:a,desc:b,right:c,children:e}){return(0,d.jsxs)("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 py-6 sm:py-8 space-y-5 sm:space-y-6",children:[(0,d.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-end sm:justify-between gap-3 sm:gap-4",children:[(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("h1",{className:"text-2xl sm:text-[1.75rem] font-semibold tracking-tight leading-tight truncate",children:a}),b&&(0,d.jsx)("p",{className:"text-sm text-text-secondary mt-1.5 leading-relaxed",children:b})]}),c&&(0,d.jsx)("div",{className:"flex items-center gap-2 flex-wrap",children:c})]}),e]})}function h({title:a,desc:b,icon:c,action:e}){return(0,d.jsxs)("div",{className:"card text-center py-14 sm:py-16 px-6 flex flex-col items-center gap-3",children:[(0,d.jsx)("div",{className:"w-12 h-12 rounded-full bg-bg-surface-hi border border-border flex items-center justify-center text-text-tertiary",children:c??(0,d.jsx)(i,{})}),(0,d.jsx)("div",{className:"text-base font-medium text-text-primary",children:a}),b&&(0,d.jsx)("div",{className:"text-sm text-text-tertiary max-w-md leading-relaxed",children:b}),e&&(0,d.jsx)("div",{className:"mt-2",children:e})]})}function i(){return(0,d.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,d.jsx)("circle",{cx:"12",cy:"12",r:"9"}),(0,d.jsx)("path",{d:"M9 9h.01M15 9h.01M9 15c1 1 2 1.5 3 1.5s2-.5 3-1.5"})]})}},50160:(a,b,c)=>{c.d(b,{SI:()=>e});var d=c(60704);function e(a){let b=(0,d.sO)(a.source),{pricing:c}=b.resolvePricing(a.model);return b.costFromUsage(a.usage,c)}},67803:(a,b,c)=>{c.d(b,{$M:()=>p,OJ:()=>n,a3:()=>i,a6:()=>l,a9:()=>m,bo:()=>h,pb:()=>o});var d=c(50160),e=c(60704),f=c(95012);let g=["hour","day","week","month"];function h(a){return"string"==typeof a&&g.includes(a)}function i(a,b){let c=new Date(a),d=c.getFullYear(),e=String(c.getMonth()+1).padStart(2,"0"),f=String(c.getDate()).padStart(2,"0"),g=String(c.getHours()).padStart(2,"0");if("hour"===b)return{key:`${d}-${e}-${f}T${g}`,label:`${e}/${f} ${g}:00`};if("day"===b)return{key:`${d}-${e}-${f}`,label:`${e}/${f}`};if("week"===b){let a=new Date(c),b=a.getDay()||7;a.setDate(a.getDate()-b+1);let d=String(a.getMonth()+1).padStart(2,"0"),e=String(a.getDate()).padStart(2,"0");return{key:`${a.getFullYear()}-W${d}${e}`,label:`Wk ${d}/${e}`}}return{key:`${d}-${e}`,label:`${d}-${e}`}}function j(a){return{source:a.source,fromIso:a.from?.toISOString(),toIso:a.to?.toISOString(),models:a.models&&a.models.length?new Set(a.models):void 0,projects:a.projects&&a.projects.length?new Set(a.projects):void 0}}function k(a,b){return a.source===b.source&&(!b.fromIso||!(a.timestamp<b.fromIso))&&(!b.toIso||!(a.timestamp>b.toIso))&&(!b.models||!!b.models.has(a.model))&&(!b.projects||!!b.projects.has(a.cwd))}function l(a,b,c){let e=new Map,f=j(c);for(let c of a){if(!k(c,f))continue;let{key:a,label:g}=i(c.timestamp,b),h=e.get(a);h||(h={key:a,label:g,inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheCreationTokens:0,totalTokens:0,cost:0,saved:0,requests:0,models:{}},e.set(a,h)),function(a,b){let c=(0,d.SI)(b);a.inputTokens+=b.usage.input_tokens,a.outputTokens+=b.usage.output_tokens,a.cacheReadTokens+=b.usage.cache_read_input_tokens,a.cacheCreationTokens+=b.usage.cache_creation_input_tokens,a.totalTokens=a.inputTokens+a.outputTokens+a.cacheReadTokens+a.cacheCreationTokens,a.cost+=c.total,a.saved+=c.saved,a.requests+=1;let e=a.models[b.model]??{tokens:0,cost:0,requests:0};e.tokens+=b.usage.input_tokens+b.usage.output_tokens+b.usage.cache_read_input_tokens+b.usage.cache_creation_input_tokens,e.cost+=c.total,e.requests+=1,a.models[b.model]=e}(h,c)}return Array.from(e.values()).sort((a,b)=>a.key.localeCompare(b.key))}function m(a,b){let c=new Map,f=j(b);for(let b of a){if(!k(b,f))continue;let a=c.get(b.model);if(!a){let{pricing:d,matchType:f}=(0,e.sO)(b.source).resolvePricing(b.model);a={model:b.model,source:b.source,requests:0,inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheCreationTokens:0,totalTokens:0,cost:0,saved:0,pricing:d,pricingResolved:"exact"===f||"date-stripped"===f||"prefix-stripped"===f},c.set(b.model,a)}let g=(0,d.SI)(b);a.requests+=1,a.inputTokens+=b.usage.input_tokens,a.outputTokens+=b.usage.output_tokens,a.cacheReadTokens+=b.usage.cache_read_input_tokens,a.cacheCreationTokens+=b.usage.cache_creation_input_tokens,a.totalTokens=a.inputTokens+a.outputTokens+a.cacheReadTokens+a.cacheCreationTokens,a.cost+=g.total,a.saved+=g.saved}return Array.from(c.values()).sort((a,b)=>b.cost-a.cost)}function n(a,b){let c=new Map,e=new Map,g=j(b);for(let h of a){if(!k(h,g))continue;let a=h.cwd||"(unknown)",i=c.get(a);i||(i={source:b.source,cwd:a,projectName:(0,f.PJ)(a),sessions:0,requests:0,inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheCreationTokens:0,totalTokens:0,cost:0,saved:0,firstActivity:h.timestamp,lastActivity:h.timestamp,models:[]},c.set(a,i),e.set(a,new Set)),e.get(a).add(h.sessionId);let j=(0,d.SI)(h);i.requests+=1,i.inputTokens+=h.usage.input_tokens,i.outputTokens+=h.usage.output_tokens,i.cacheReadTokens+=h.usage.cache_read_input_tokens,i.cacheCreationTokens+=h.usage.cache_creation_input_tokens,i.totalTokens=i.inputTokens+i.outputTokens+i.cacheReadTokens+i.cacheCreationTokens,i.cost+=j.total,i.saved+=j.saved,h.timestamp<i.firstActivity&&(i.firstActivity=h.timestamp),h.timestamp>i.lastActivity&&(i.lastActivity=h.timestamp),i.models.includes(h.model)||i.models.push(h.model)}for(let[a,b]of e)c.get(a).sessions=b.size;return Array.from(c.values()).sort((a,b)=>b.cost-a.cost)}function o(a,b,c){let e=new Map,g=j(c);for(let b of a){if(!k(b,g))continue;let a=b.sessionId||b.uuid,c=e.get(a);c||(c={sessionId:a,source:b.source,cwd:b.cwd,projectName:(0,f.PJ)(b.cwd),startTime:b.timestamp,endTime:b.timestamp,durationMs:0,requests:0,inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheCreationTokens:0,totalTokens:0,cost:0,saved:0,models:[],modelBreakdown:{}},e.set(a,c));let h=(0,d.SI)(b);c.requests+=1,c.inputTokens+=b.usage.input_tokens,c.outputTokens+=b.usage.output_tokens,c.cacheReadTokens+=b.usage.cache_read_input_tokens,c.cacheCreationTokens+=b.usage.cache_creation_input_tokens,c.totalTokens=c.inputTokens+c.outputTokens+c.cacheReadTokens+c.cacheCreationTokens,c.cost+=h.total,c.saved+=h.saved,b.timestamp<c.startTime&&(c.startTime=b.timestamp),b.timestamp>c.endTime&&(c.endTime=b.timestamp),c.models.includes(b.model)||c.models.push(b.model);let i=c.modelBreakdown[b.model]??{tokens:0,cost:0,requests:0};i.tokens+=b.usage.input_tokens+b.usage.output_tokens+b.usage.cache_read_input_tokens+b.usage.cache_creation_input_tokens,i.cost+=h.total,i.requests+=1,c.modelBreakdown[b.model]=i}let h=new Map;for(let a of b){let b=h.get(a.sessionId);(!b||a.timestamp<b.timestamp)&&h.set(a.sessionId,a)}for(let a of e.values()){a.durationMs=Math.max(0,new Date(a.endTime).getTime()-new Date(a.startTime).getTime());let b=h.get(a.sessionId);b&&b.textPreview&&(a.firstUserMessage=b.textPreview,a.title=b.textPreview.slice(0,80))}return Array.from(e.values()).sort((a,b)=>b.endTime.localeCompare(a.endTime))}function p(a,b){let c=0,e=0,f=0,g=0,h=0,i=0,l=0,m=j(b);for(let b of a){if(!k(b,m))continue;let a=(0,d.SI)(b);c+=b.usage.input_tokens,e+=b.usage.output_tokens,f+=b.usage.cache_read_input_tokens,g+=b.usage.cache_creation_input_tokens,h+=a.total,i+=a.saved,l+=1}return{inputTokens:c,outputTokens:e,cacheReadTokens:f,cacheCreationTokens:g,totalTokens:c+e+f+g,cost:h,saved:i,requests:l}}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=98,exports.ids=[98],exports.modules={49098:(a,b,c)=>{c.d(b,{So:()=>s,mo:()=>u,TF:()=>t});var d=c(60704),e=c(73024),f=c(76760),g=c.n(f),h=c(48161),i=c.n(h);let j="default";function k(a){let b=a===j?"index-v2.json":`index-${a}-v2.json`;return g().join(process.env.CCGAUGE_STATE_DIR?process.env.CCGAUGE_STATE_DIR:g().join(i().homedir(),".ccgauge"),"cache",b)}async function l(a=j){let b=k(a);try{let a=await e.promises.readFile(b,"utf8"),c=JSON.parse(a);if(2!==c.schemaVersion||!Array.isArray(c.files))return null;return c}catch{return null}}async function m(a,b=j){let c=k(b),d=g().dirname(c);await e.promises.mkdir(d,{recursive:!0});let f={schemaVersion:2,savedAt:a.savedAt,files:a.files},h=`${c}.tmp-${process.pid}`;await e.promises.writeFile(h,JSON.stringify(f)),await e.promises.rename(h,c)}let n=/\/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\/subagents\/agent-[^/]+\.jsonl$/i;class o{constructor(a=j){this.files=new Map,this.snapshot=null,this.watchers=new Map,this.pollTimer=null,this.snapshotRebuildTimer=null,this.persistTimer=null,this.fileDebouncers=new Map,this.initPromise=null,this.isIndexing=!1,this.lastIndexedAt=null,this.indexDurationMs=null,this.existingDirs=[],this.dirToProvider=new Map,this.errors=[],this.loadedFromDisk=!1,this.lastWorkStart=null,this.rescanPromise=null,this.cacheName=a}init(){return this.initPromise||(this.initPromise=this.doInit()),this.initPromise}async doInit(){let a=Date.now();this.isIndexing=!0,this.lastWorkStart=a;try{await this.detectProviderDirs();let b=await l(this.cacheName);this.loadedFromDisk=null!==b;let c=new Map;if(b)for(let a of b.files)c.set(a.filePath,a);await this.fullScan(c),this.rebuildSnapshotNow(),this.indexDurationMs=Date.now()-a,this.lastIndexedAt=new Date().toISOString(),this.syncWatchersToDirs(),this.setupPolling(),this.schedulePersist()}finally{this.isIndexing=!1}}async detectProviderDirs(){let a=new Map,b=[];for(let c of(0,d.R0)())for(let d of c.getDirs())await p(d)&&!a.has(d)&&(a.set(d,c),b.push(d));let c=[],e=[];for(let b of a.keys())this.dirToProvider.has(b)||c.push(b);for(let b of this.dirToProvider.keys())a.has(b)||e.push(b);return this.dirToProvider=a,this.existingDirs=b,{added:c,removed:e}}async fullScan(a){let b=[];for(let[a,c]of this.dirToProvider)for(let d of(await q(a,c)))b.push({file:d,provider:c});let c=new Set(b.map(a=>a.file));for(let d of(await Promise.all(b.map(async({file:b,provider:c})=>{try{let d=await e.promises.stat(b),f=a.get(b);if(f&&f.source===c.id&&f.parserVersion===c.parserVersion&&f.mtimeMs===d.mtimeMs&&f.size===d.size)return void this.files.set(b,{source:c.id,parserVersion:c.parserVersion,mtimeMs:d.mtimeMs,size:d.size,assistantRecords:f.assistantRecords,userRecords:f.userRecords,parentLinks:f.parentLinks});let g=await c.parseFile(b);this.files.set(b,{source:c.id,parserVersion:c.parserVersion,mtimeMs:d.mtimeMs,size:d.size,assistantRecords:g.assistant,userRecords:g.user,parentLinks:g.parentLinks})}catch(a){this.recordError(`parse ${b}: ${a.message}`)}})),Array.from(this.files.keys())))c.has(d)||this.files.delete(d)}syncWatchersToDirs(){for(let[a,b]of this.watchers)if(!this.dirToProvider.has(a)){try{b.close()}catch{}this.watchers.delete(a)}for(let[a,b]of this.dirToProvider)if(!this.watchers.has(a))try{let c=(0,e.watch)(a,{recursive:!0},(c,d)=>{if(!d||"string"!=typeof d||!d.endsWith(".jsonl"))return;let e=g().join(a,d);this.scheduleFileReconcile(e,b)});c.on("error",b=>{this.recordError(`watcher ${a}: ${b.message}`)}),this.watchers.set(a,c)}catch(b){this.recordError(`watch ${a}: ${b.message}`)}}setupPolling(){this.pollTimer&&clearInterval(this.pollTimer);let a="mcp"===this.cacheName,b=process.env.CCGAUGE_POLL_FALLBACK;"1"!==b&&("0"===b||a)||(this.pollTimer=setInterval(()=>{this.pollOnce().catch(a=>this.recordError(`poll: ${a.message}`))},3e4),this.pollTimer.unref?.())}async pollOnce(){let a=Date.now(),b=await this.detectProviderDirs(),c=b.added.length>0||b.removed.length>0;c&&this.syncWatchersToDirs();let d=[];for(let[a,b]of this.dirToProvider)for(let c of(await q(a,b)))d.push({file:c,provider:b});let f=new Set(d.map(a=>a.file));for(let a of(await Promise.all(d.map(async({file:a,provider:b})=>{try{let d=await e.promises.stat(a),f=this.files.get(a);if(f&&f.mtimeMs===d.mtimeMs&&f.size===d.size)return;let g=await b.parseFile(a);this.files.set(a,{source:b.id,parserVersion:b.parserVersion,mtimeMs:d.mtimeMs,size:d.size,assistantRecords:g.assistant,userRecords:g.user,parentLinks:g.parentLinks}),c=!0}catch(b){this.recordError(`poll-parse ${a}: ${b.message}`)}})),Array.from(this.files.keys())))f.has(a)||(this.files.delete(a),c=!0);c&&(this.lastWorkStart=a,this.scheduleSnapshotRebuild(),this.schedulePersist())}scheduleFileReconcile(a,b){let c=this.fileDebouncers.get(a);c&&clearTimeout(c);let d=setTimeout(()=>{this.fileDebouncers.delete(a),this.reconcileFile(a,b).catch(b=>this.recordError(`reconcile ${a}: ${b.message}`))},200);d.unref?.(),this.fileDebouncers.set(a,d)}async reconcileFile(a,b){let c=Date.now(),d=null;try{d=await e.promises.stat(a)}catch{}if(!d||!d.isFile()){this.files.has(a)&&(this.files.delete(a),this.lastWorkStart=c,this.scheduleSnapshotRebuild(),this.schedulePersist());return}let f=this.files.get(a);if(!f||f.mtimeMs!==d.mtimeMs||f.size!==d.size)try{let e=await b.parseFile(a);this.files.set(a,{source:b.id,parserVersion:b.parserVersion,mtimeMs:d.mtimeMs,size:d.size,assistantRecords:e.assistant,userRecords:e.user,parentLinks:e.parentLinks}),this.lastWorkStart=c,this.scheduleSnapshotRebuild(),this.schedulePersist()}catch(b){this.recordError(`parse ${a}: ${b.message}`)}}scheduleSnapshotRebuild(){this.snapshotRebuildTimer&&clearTimeout(this.snapshotRebuildTimer),this.snapshotRebuildTimer=setTimeout(()=>{this.snapshotRebuildTimer=null,this.rebuildSnapshotNow()},100),this.snapshotRebuildTimer.unref?.()}rebuildSnapshotNow(){let a=Date.now(),b=this.lastWorkStart??a,c=[],d=[],e={},f=0,g={claude:{source:"claude",filesScanned:0,recordsParsed:0,assistantRecords:0,scannedDirs:[]},codex:{source:"codex",filesScanned:0,recordsParsed:0,assistantRecords:0,scannedDirs:[]}};for(let[a,b]of this.dirToProvider)g[b.id].scannedDirs.push(a);for(let a of this.files.values()){for(let[b,f]of(c.push(...a.assistantRecords),d.push(...a.userRecords),a.parentLinks))e[b]=f;f+=a.assistantRecords.length+a.userRecords.length,g[a.source].filesScanned+=1,g[a.source].recordsParsed+=a.assistantRecords.length+a.userRecords.length}let h=(function(a){let b=new Map;for(let c of a){let a=function(a){let b=`${a.source}:`;return a.messageId&&a.requestId?`${b}${a.messageId}::${a.requestId}`:a.messageId?`${b}mid:${a.messageId}`:a.requestId?`${b}req:${a.requestId}`:`${b}uuid:${a.uuid}`}(c),d=b.get(a);if(!d){b.set(a,c);continue}c.timestamp<d.timestamp&&b.set(a,c)}return Array.from(b.values())})(c).sort((a,b)=>a.timestamp.localeCompare(b.timestamp)),i=(function(a){let b=new Set;return a.filter(a=>{let c=a.uuid;return!c||!b.has(c)&&(b.add(c),!0)})})(d).sort((a,b)=>a.timestamp.localeCompare(b.timestamp));for(let a of(!function({assistantRecords:a,userRecords:b,parentMap:c}){let d=new Map;for(let b of a){if(b.isSidechain||!b.sessionId)continue;let a=d.get(b.sessionId);a||(a=[],d.set(b.sessionId,a)),a.push(b)}for(let a of d.values())a.sort((a,b)=>a.timestamp<b.timestamp?-1:+(a.timestamp>b.timestamp));let e=new Map;for(let a of b){if(!a.isSidechain)continue;let b=e.get(a.filePath);(!b||a.timestamp<b.timestamp)&&e.set(a.filePath,a)}let f={subagentFiles:0,relinked:0,orphans:0,alreadyLinked:0};for(let[a,b]of e){let e,g=function(a){let b=n.exec(a);return b?b[1]:null}(a);if(!g)continue;if(f.subagentFiles+=1,null!=c[b.uuid]){f.alreadyLinked+=1;continue}let h=d.get(g);if(!h||0===h.length){f.orphans+=1;continue}let i=b.timestamp;for(let a=h.length-1;a>=0;a-=1)if(h[a].timestamp<=i){e=h[a];break}e||(e=h[0]),c[b.uuid]=e.uuid,f.relinked+=1}}({assistantRecords:h,userRecords:i,parentMap:e}),h))g[a.source].assistantRecords+=1;let j={filesScanned:this.files.size,recordsParsed:f,assistantRecords:h.length,durationMs:Date.now()-b,scannedDirs:this.existingDirs};this.snapshot={records:h,userRecords:i,parentMap:e,stats:j,bySource:Object.values(g)},this.lastWorkStart=null}getSnapshot(){if(!this.snapshot)throw Error("Indexer not initialized — call init() first.");return this.snapshot}async forceRescan(){if(!this.initPromise)return await this.init(),this.snapshot;if(this.rescanPromise)return this.rescanPromise;this.rescanPromise=this.runRescan();try{return await this.rescanPromise}finally{this.rescanPromise=null}}async runRescan(){let a=Date.now();this.isIndexing=!0,this.lastWorkStart=a;try{return this.files.clear(),await this.detectProviderDirs(),await this.fullScan(new Map),this.rebuildSnapshotNow(),this.indexDurationMs=Date.now()-a,this.lastIndexedAt=new Date().toISOString(),this.syncWatchersToDirs(),this.schedulePersist(),this.snapshot}finally{this.isIndexing=!1}}getStatus(){let a=this.snapshot;return{initialized:null!==a,isIndexing:this.isIndexing,lastIndexedAt:this.lastIndexedAt,indexDurationMs:this.indexDurationMs,filesIndexed:this.files.size,recordsIndexed:a?.stats.assistantRecords??0,bySource:a?.bySource??[],watchers:this.watchers.size,errors:this.errors.slice(-20),pendingReconciles:this.fileDebouncers.size,loadedFromDisk:this.loadedFromDisk}}schedulePersist(){this.persistTimer&&clearTimeout(this.persistTimer),this.persistTimer=setTimeout(()=>{this.persistTimer=null;let a=[];for(let[b,c]of this.files)a.push({filePath:b,source:c.source,parserVersion:c.parserVersion,mtimeMs:c.mtimeMs,size:c.size,assistantRecords:c.assistantRecords,userRecords:c.userRecords,parentLinks:c.parentLinks});m({savedAt:new Date().toISOString(),files:a},this.cacheName).catch(a=>this.recordError(`persist: ${a.message}`))},2e3),this.persistTimer.unref?.()}recordError(a){let b=`${new Date().toISOString()} ${function(a){let b=(0,h.homedir)();if(!b)return a;let c=b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return a.replace(RegExp(c,"g"),"~")}(a)}`;this.errors.push(b),this.errors.length>40&&this.errors.splice(0,this.errors.length-20),process.env.CCGAUGE_DEBUG&&console.error(`[ccgauge:indexer] ${new Date().toISOString()} ${a}`)}disposeWatchers(){for(let a of this.watchers.values())try{a.close()}catch{}this.watchers.clear()}dispose(){for(let a of(this.disposeWatchers(),this.pollTimer&&clearInterval(this.pollTimer),this.snapshotRebuildTimer&&clearTimeout(this.snapshotRebuildTimer),this.persistTimer&&clearTimeout(this.persistTimer),this.fileDebouncers.values()))clearTimeout(a);this.fileDebouncers.clear()}}async function p(a){try{return(await e.promises.stat(a)).isDirectory()}catch{return!1}}async function q(a,b){let c=[];async function d(a,f){let h;if(!(f>8)){try{h=await e.promises.readdir(a,{withFileTypes:!0})}catch{return}for(let e of h){let h=g().join(a,e.name);if(e.isDirectory()){if(b.shouldSkipDir(e.name))continue;await d(h,f+1)}else e.isFile()&&e.name.endsWith(".jsonl")&&c.push(h)}}}return await d(a,0),c}let r=function(a=j){let b=(globalThis.__ccgaugeIndexers||(globalThis.__ccgaugeIndexers=new Map),globalThis.__ccgaugeIndexers),c=b.get(a);return c||(c=new o(a),b.set(a,c)),c}();async function s(a={}){return a.force?r.forceRescan():(await r.init(),r.getSnapshot())}function t(){return(0,d.R0)().map(a=>({source:a.id,dirs:a.getDirs()}))}function u(){return r.getStatus()}}};
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "version": 1,
3
3
  "functions": {
4
- "/api/projects": {},
5
4
  "/api/pricing": {},
5
+ "/api/projects": {},
6
+ "/api/blocks": {},
6
7
  "/api/scan": {},
7
8
  "/api/sessions": {},
8
- "/api/blocks": {},
9
9
  "/api/usage": {},
10
10
  "/api/export/usage": {}
11
11
  }
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-3fcacae817f3ffab.js" defer=""></script><script src="/_next/static/chunks/framework-1a308e28e19f1a97.js" defer=""></script><script src="/_next/static/chunks/main-69f0897f4e7ce710.js" defer=""></script><script src="/_next/static/chunks/pages/_app-5addca2b3b969fde.js" defer=""></script><script src="/_next/static/chunks/pages/_error-022e4ac7bbb9914f.js" defer=""></script><script src="/_next/static/4YjiQrRI-CsVEPC1UOUEJ/_buildManifest.js" defer=""></script><script src="/_next/static/4YjiQrRI-CsVEPC1UOUEJ/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"4YjiQrRI-CsVEPC1UOUEJ","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-3fcacae817f3ffab.js" defer=""></script><script src="/_next/static/chunks/framework-1a308e28e19f1a97.js" defer=""></script><script src="/_next/static/chunks/main-69f0897f4e7ce710.js" defer=""></script><script src="/_next/static/chunks/pages/_app-5addca2b3b969fde.js" defer=""></script><script src="/_next/static/chunks/pages/_error-022e4ac7bbb9914f.js" defer=""></script><script src="/_next/static/alqi5oQtTQUdpxp2x0yAt/_buildManifest.js" defer=""></script><script src="/_next/static/alqi5oQtTQUdpxp2x0yAt/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"alqi5oQtTQUdpxp2x0yAt","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccgauge",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Local web dashboard for Claude Code and OpenAI Codex CLI token usage and cost",
5
5
  "keywords": [
6
6
  "claude",