agentgraphed 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +39 -39
  3. package/.next/standalone/.next/app-path-routes-manifest.json +6 -6
  4. package/.next/standalone/.next/build-manifest.json +3 -3
  5. package/.next/standalone/.next/prerender-manifest.json +3 -3
  6. package/.next/standalone/.next/required-server-files.json +6 -6
  7. package/.next/standalone/.next/server/app/_not-found/page.js +2 -2
  8. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  9. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  11. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  12. package/.next/standalone/.next/server/app/analytics/page.js +2 -2
  13. package/.next/standalone/.next/server/app/analytics/page.js.nft.json +1 -1
  14. package/.next/standalone/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/api/ingest-local/route.js +1 -1
  16. package/.next/standalone/.next/server/app/api/ingest-local/route_client-reference-manifest.js +1 -1
  17. package/.next/standalone/.next/server/app/api/quota-probe/route.js +2 -2
  18. package/.next/standalone/.next/server/app/api/quota-probe/route_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/api/share/dashboard/route.js +1 -1
  20. package/.next/standalone/.next/server/app/api/share/dashboard/route_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/api/share/project/[id]/route.js +1 -1
  22. package/.next/standalone/.next/server/app/api/share/project/[id]/route_client-reference-manifest.js +1 -1
  23. package/.next/standalone/.next/server/app/api/share/session/[id]/route.js +1 -1
  24. package/.next/standalone/.next/server/app/api/share/session/[id]/route_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/page.js +3 -3
  26. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/projects/[id]/page.js +2 -2
  29. package/.next/standalone/.next/server/app/projects/[id]/page.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/projects/[id]/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/projects/page.js +2 -44
  32. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  34. package/.next/standalone/.next/server/app/sessions/[id]/page.js +3 -3
  35. package/.next/standalone/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/sessions/page.js +2 -44
  38. package/.next/standalone/.next/server/app/sessions/page.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/settings/page.js +4 -4
  41. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/timeline/page.js +2 -44
  44. package/.next/standalone/.next/server/app/timeline/page.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/timeline/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app-paths-manifest.json +6 -6
  47. package/.next/standalone/.next/server/chunks/27.js +15 -3
  48. package/.next/standalone/.next/server/chunks/450.js +137 -0
  49. package/.next/standalone/.next/server/chunks/564.js +4 -4
  50. package/.next/standalone/.next/server/chunks/694.js +43 -0
  51. package/.next/standalone/.next/server/chunks/903.js +1 -0
  52. package/.next/standalone/.next/server/chunks/944.js +61 -25
  53. package/.next/standalone/.next/server/chunks/954.js +1 -0
  54. package/.next/standalone/.next/server/functions-config-manifest.json +1 -1
  55. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  56. package/.next/standalone/.next/server/pages/404.html +1 -1
  57. package/.next/standalone/.next/server/pages/500.html +1 -1
  58. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  60. package/.next/standalone/.next/static/chunks/app/_not-found/{page-dc1cbec20c205394.js → page-01ad39d2ead973c7.js} +1 -1
  61. package/.next/{static/chunks/app/analytics/page-42186370029f753c.js → standalone/.next/static/chunks/app/analytics/page-79a1781c3529dcb6.js} +1 -1
  62. package/.next/standalone/.next/static/chunks/app/{layout-4527370a1e451501.js → layout-bbab14e77aaeeb67.js} +1 -1
  63. package/.next/standalone/.next/static/chunks/app/page-d5393f25e2553a0c.js +1 -0
  64. package/.next/standalone/.next/static/chunks/app/projects/[id]/page-32fe8cf66558be7c.js +1 -0
  65. package/.next/standalone/.next/static/chunks/app/projects/page-dce207c2f75422be.js +1 -0
  66. package/.next/standalone/.next/static/chunks/app/sessions/[id]/{page-a887f742425eb49c.js → page-49542233907f7f6b.js} +1 -1
  67. package/.next/standalone/.next/static/chunks/app/sessions/page-aec145af506da55b.js +1 -0
  68. package/.next/standalone/.next/static/chunks/app/settings/page-b961ca195748ef3b.js +1 -0
  69. package/.next/standalone/.next/static/chunks/app/timeline/page-dce207c2f75422be.js +1 -0
  70. package/.next/standalone/.next/static/chunks/{main-app-c9ae70e5bb48ac77.js → main-app-27b331c894fe5037.js} +1 -1
  71. package/.next/standalone/node_modules/@img/{sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib → sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3} +0 -0
  72. package/.next/standalone/node_modules/@img/{sharp-libvips-darwin-arm64 → sharp-libvips-linux-x64}/package.json +11 -5
  73. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +1 -0
  74. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
  75. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +42 -0
  76. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +30 -0
  77. package/.next/standalone/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
  78. package/.next/standalone/node_modules/@img/{sharp-darwin-arm64 → sharp-linux-x64}/package.json +13 -7
  79. package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/LICENSE +191 -0
  80. package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
  81. package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/package.json +46 -0
  82. package/.next/standalone/package.json +1 -1
  83. package/.next/standalone/server.js +1 -1
  84. package/.next/standalone/src/lib/pricing-data/litellm.json +615 -92
  85. package/.next/standalone/src/lib/pricing-data/litellm.meta.json +2 -2
  86. package/.next/static/chunks/app/_not-found/{page-dc1cbec20c205394.js → page-01ad39d2ead973c7.js} +1 -1
  87. package/.next/{standalone/.next/static/chunks/app/analytics/page-42186370029f753c.js → static/chunks/app/analytics/page-79a1781c3529dcb6.js} +1 -1
  88. package/.next/static/chunks/app/{layout-4527370a1e451501.js → layout-bbab14e77aaeeb67.js} +1 -1
  89. package/.next/static/chunks/app/page-d5393f25e2553a0c.js +1 -0
  90. package/.next/static/chunks/app/projects/[id]/page-32fe8cf66558be7c.js +1 -0
  91. package/.next/static/chunks/app/projects/page-dce207c2f75422be.js +1 -0
  92. package/.next/static/chunks/app/sessions/[id]/{page-a887f742425eb49c.js → page-49542233907f7f6b.js} +1 -1
  93. package/.next/static/chunks/app/sessions/page-aec145af506da55b.js +1 -0
  94. package/.next/static/chunks/app/settings/page-b961ca195748ef3b.js +1 -0
  95. package/.next/static/chunks/app/timeline/page-dce207c2f75422be.js +1 -0
  96. package/.next/static/chunks/{main-app-c9ae70e5bb48ac77.js → main-app-27b331c894fe5037.js} +1 -1
  97. package/CHANGELOG.md +22 -0
  98. package/README.md +52 -46
  99. package/package.json +1 -1
  100. package/src/lib/pricing-data/litellm.json +615 -92
  101. package/src/lib/pricing-data/litellm.meta.json +2 -2
  102. package/.next/standalone/.next/server/chunks/165.js +0 -109
  103. package/.next/standalone/.next/server/chunks/191.js +0 -1
  104. package/.next/standalone/.next/server/chunks/367.js +0 -43
  105. package/.next/standalone/.next/server/chunks/660.js +0 -1
  106. package/.next/standalone/.next/static/chunks/app/page-aa358006ddd29e91.js +0 -1
  107. package/.next/standalone/.next/static/chunks/app/projects/[id]/page-15f21aaacdacb59c.js +0 -1
  108. package/.next/standalone/.next/static/chunks/app/projects/page-d794cc35674274a4.js +0 -1
  109. package/.next/standalone/.next/static/chunks/app/sessions/page-35c503eef7e53742.js +0 -1
  110. package/.next/standalone/.next/static/chunks/app/settings/page-dc0bec0bd2577322.js +0 -1
  111. package/.next/standalone/.next/static/chunks/app/timeline/page-d794cc35674274a4.js +0 -1
  112. package/.next/standalone/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
  113. package/.next/standalone/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  114. package/.next/standalone/node_modules/better-sqlite3/lib/database.js +0 -90
  115. package/.next/standalone/node_modules/better-sqlite3/lib/index.js +0 -3
  116. package/.next/standalone/node_modules/better-sqlite3/lib/methods/aggregate.js +0 -43
  117. package/.next/standalone/node_modules/better-sqlite3/lib/methods/backup.js +0 -67
  118. package/.next/standalone/node_modules/better-sqlite3/lib/methods/function.js +0 -31
  119. package/.next/standalone/node_modules/better-sqlite3/lib/methods/inspect.js +0 -7
  120. package/.next/standalone/node_modules/better-sqlite3/lib/methods/pragma.js +0 -12
  121. package/.next/standalone/node_modules/better-sqlite3/lib/methods/serialize.js +0 -16
  122. package/.next/standalone/node_modules/better-sqlite3/lib/methods/table.js +0 -189
  123. package/.next/standalone/node_modules/better-sqlite3/lib/methods/transaction.js +0 -78
  124. package/.next/standalone/node_modules/better-sqlite3/lib/methods/wrappers.js +0 -54
  125. package/.next/standalone/node_modules/better-sqlite3/lib/sqlite-error.js +0 -20
  126. package/.next/standalone/node_modules/better-sqlite3/lib/util.js +0 -12
  127. package/.next/standalone/node_modules/better-sqlite3/package.json +0 -54
  128. package/.next/static/chunks/app/page-aa358006ddd29e91.js +0 -1
  129. package/.next/static/chunks/app/projects/[id]/page-15f21aaacdacb59c.js +0 -1
  130. package/.next/static/chunks/app/projects/page-d794cc35674274a4.js +0 -1
  131. package/.next/static/chunks/app/sessions/page-35c503eef7e53742.js +0 -1
  132. package/.next/static/chunks/app/settings/page-dc0bec0bd2577322.js +0 -1
  133. package/.next/static/chunks/app/timeline/page-d794cc35674274a4.js +0 -1
  134. /package/.next/standalone/.next/static/{A6dvfHR2KYz42pasM2hyV → hnOq_d-GplXbWU5EnSBzF}/_buildManifest.js +0 -0
  135. /package/.next/standalone/.next/static/{A6dvfHR2KYz42pasM2hyV → hnOq_d-GplXbWU5EnSBzF}/_ssgManifest.js +0 -0
  136. /package/.next/standalone/node_modules/@img/{sharp-libvips-darwin-arm64 → sharp-libvips-linux-x64}/lib/index.js +0 -0
  137. /package/.next/standalone/node_modules/@img/{sharp-libvips-darwin-arm64 → sharp-libvips-linux-x64}/versions.json +0 -0
  138. /package/.next/standalone/node_modules/@img/{sharp-darwin-arm64 → sharp-linux-x64}/LICENSE +0 -0
  139. /package/.next/static/{A6dvfHR2KYz42pasM2hyV → hnOq_d-GplXbWU5EnSBzF}/_buildManifest.js +0 -0
  140. /package/.next/static/{A6dvfHR2KYz42pasM2hyV → hnOq_d-GplXbWU5EnSBzF}/_ssgManifest.js +0 -0
@@ -0,0 +1,43 @@
1
+ "use strict";exports.id=694,exports.ids=[694],exports.modules={15988:(a,b,c)=>{c.d(b,{Ev:()=>i,Kv:()=>k,N6:()=>j});var d=c(22446),e=c(71277),f=c(92568);let g=["Planning","Debugging","Refactor","Feature","Styling","SEO/Content","DevOps","Data","Payments","Docs","Unknown"],h=`You categorize AI coding sessions and write short, concrete titles for them.
2
+
3
+ For each session you receive a list of the user's prompts in order ("prompts": [...]).
4
+ The first prompt is the opening goal; later prompts show how the session evolved
5
+ (e.g. "let's plan this" → "now add the route" → "fix this bug"). Sessions
6
+ often span multiple kinds of work.
7
+
8
+ Return JSON only:
9
+ {
10
+ "results": [
11
+ { "id": "...", "categories": ["Primary", "Secondary?"], "title": "..." }
12
+ ]
13
+ }
14
+
15
+ Categories (pick 1–3, ordered by how much of the session they represent,
16
+ most-significant first; only include a label if it materially appears):
17
+ - Planning — brainstorming, PRDs, deciding whether to build something, product strategy
18
+ - Debugging — fixing bugs, errors, broken things, failing tests
19
+ - Refactor — restructuring or renaming existing code without behavior change
20
+ - Feature — building or adding new functionality
21
+ - Styling — UI, CSS, layout, design, theme
22
+ - SEO/Content — SEO, blog content, headlines, meta tags
23
+ - DevOps — deploy, CI/CD, env vars, infrastructure, DNS
24
+ - Data — databases, schemas, migrations, scraping, ETL
25
+ - Payments — Stripe, checkout, billing, invoices, subscriptions
26
+ - Docs — README, documentation, changelog
27
+ - Unknown — when you genuinely can't tell (prefer this over guessing)
28
+
29
+ When in doubt, prefer fewer labels. A session that's 90% Feature with a tiny
30
+ bug fix at the end is just Feature.
31
+
32
+ Title rules:
33
+ - 4-9 words, past tense ("Added", "Fixed", "Drafted")
34
+ - Capture the dominant outcome of the session, not just the opening prompt
35
+ - Concrete object ("Stripe checkout reminder" not "payments stuff")
36
+ - No quotes, no period
37
+ - Keep acronyms (PRD, API, CLI) and proper nouns (Stripe, Drizzle, Next.js) capitalized
38
+ - Never repeat a category in the title
39
+
40
+ Return the JSON only, no prose.`;async function i(a){let b=(0,e.Q)();if(!b)throw Error("No LLM provider configured");let c=(0,f.P6)(b.classifierModel),d=(0,f.nG)(c,600*a,50*a);return{totalUsd:d,perSessionUsd:0===a?0:d/a,modelId:c.id,modelLabel:c.label}}async function j(a){let b,c=(0,e.Q)();if(!c)throw Error("No LLM provider configured");let i=(0,f.P6)(c.classifierModel),j=a.batchSize??20,k=(0,d.x)(),l=k.prepare("UPDATE sessions SET heuristic_title = ?, category = ?, categories = ? WHERE id = ?"),m=0,n=0,o=0;for(let p=0;p<a.rows.length;p+=j){let q=a.rows.slice(p,p+j),r=q.map(a=>({id:a.id,prompts:function(a,b){let c=(0,d.x)().prepare("SELECT content FROM messages WHERE session_id = ? AND role = 'user' ORDER BY timestamp ASC").all(a);if(0===c.length)return[b];if(c.length<=8)return c.map(a=>a.content);let e=[c[0].content],f=(c.length-2)/7;for(let a=1;a<=6;a++)e.push(c[Math.round(a*f)].content);return e.push(c[c.length-1].content),e}(a.id,a.first_prompt)})),s=function(a){let b={sessions:a.map(a=>({id:a.id,prompts:a.prompts.map(a=>a.slice(0,400))}))};return`Sessions to classify:
41
+ ${JSON.stringify(b,null,2)}`}(r);r.reduce((a,b)=>a+b.prompts.reduce((a,b)=>a+Math.ceil(b.length/4),0),0);let t=Math.min(3e3,Math.max(800,100*q.length));try{let{text:a,inputTokens:d,outputTokens:j}=await (0,e.M)({model:c.classifierModel,systemPrompt:h,userPrompt:s,maxTokens:t,responseFormat:"json"});m+=(0,f.nG)(i,d,j);let p=function(a){let b=a.trim(),c=b.match(/```(?:json)?\s*([\s\S]*?)```/);c&&(b=c[1].trim());let d=b.indexOf("{"),e=b.lastIndexOf("}");if(-1===d||-1===e)return[];try{let a=JSON.parse(b.slice(d,e+1));if(Array.isArray(a?.results))return a.results}catch{}return[]}(a);if(0===p.length&&a.length>0){o+=1,b||(b=`Could not parse model response. First 200 chars: ${a.slice(0,200)}`);continue}k.transaction(a=>{for(let b of a){if(!b.id)continue;let a=[...new Set((b.categories??(b.category?[b.category]:[])).filter(a=>"string"==typeof a).map(a=>a.trim()).filter(a=>g.includes(a)))].slice(0,3);if(0===a.length)continue;let c=(b.title||"").trim().replace(/[.\s]+$/,"").slice(0,120);c&&(l.run(c,a[0],JSON.stringify(a),b.id),n+=1)}})(p)}catch(c){o+=1;let a=c.message;console.error("classify batch failed",a),b||(b=a)}a.onProgress?.(Math.min(p+j,a.rows.length),a.rows.length)}return{classified:n,costUsd:m,firstError:b,batchesFailed:o}}function k(a){let b=(0,d.x)(),c=`SELECT id, first_prompt FROM sessions
42
+ WHERE category IS NULL AND first_prompt IS NOT NULL AND length(first_prompt) > 0
43
+ ORDER BY started_at DESC${a?` LIMIT ${a}`:""}`;return b.prepare(c).all()}},40753:(a,b,c)=>{c.d(b,{z:()=>e});var d=c(75338);function e({title:a,subtitle:b,right:c,titleAdornment:e}){return(0,d.jsxs)("header",{className:"px-7 h-[72px] border-b border-surface-2 flex items-center justify-between sticky top-0 z-20 bg-canvas/95 backdrop-blur supports-[backdrop-filter]:bg-canvas/80",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("h1",{className:"text-headline-md text-ink font-semibold",children:a}),e]}),b&&(0,d.jsx)("div",{className:"text-body-sm text-ink-mute mt-0.5",children:b})]}),c&&(0,d.jsx)("div",{className:"flex items-center gap-2",children:c})]})}},71277:(a,b,c)=>{c.d(b,{M:()=>i,Q:()=>h});var d=c(19283),e=c(9244),f=c(10944),g=c(92568);function h(){let a=(0,f.PL)("llm_provider")||"anthropic",b="openai"===a?"openai_api_key":"anthropic_api_key",c=(0,f.PL)(b)||process.env["openai"===a?"OPENAI_API_KEY":"ANTHROPIC_API_KEY"]||"";if(!c)return null;let d=(0,f.PL)("classifier_model")||(0,g.$I)(a),e=(0,f.PL)("summarizer_model")||(0,g.$I)(a);return{provider:a,apiKey:c,classifierModel:d,summarizerModel:e}}async function i(a){let b=h();if(!b)throw Error("No LLM provider configured");let c=(0,g.P6)(a.model)??(0,g.P6)(b.classifierModel);if(!c)throw Error(`Unknown model: ${a.model}`);if("anthropic"===c.provider){let e=new d.Ay({apiKey:b.apiKey}),f=await e.messages.create({model:c.id,max_tokens:a.maxTokens??1024,system:a.systemPrompt,messages:[{role:"user",content:a.userPrompt}]});return{text:f.content.map(a=>"text"in a?a.text:"").join("").trim(),inputTokens:f.usage.input_tokens,outputTokens:f.usage.output_tokens}}{let d=new e.Ay({apiKey:b.apiKey}),f=/^gpt-5/i.test(c.id)||/^o\d/i.test(c.id),g=await d.chat.completions.create({model:c.id,messages:[...a.systemPrompt?[{role:"system",content:a.systemPrompt}]:[],{role:"user",content:a.userPrompt}],max_completion_tokens:a.maxTokens??1024,...f?{reasoning_effort:"minimal"}:{},..."json"===a.responseFormat?{response_format:{type:"json_object"}}:{}}),h=g.choices[0]?.message?.content?.trim()||"",i=g.usage?.completion_tokens_details?.reasoning_tokens??0,j=g.choices[0]?.finish_reason;if(!h)throw Error("length"===j&&i>0?`model used all ${i} output tokens on reasoning before producing any visible content; raise the token budget or use a non-reasoning model`:`model returned empty content (finish_reason=${j})`);return{text:h,inputTokens:g.usage?.prompt_tokens??0,outputTokens:g.usage?.completion_tokens??0}}}},86718:(a,b,c)=>{c.d(b,{L:()=>l,N:()=>function a(){let b=globalThis;if(b[j]||(b[j]=setInterval(()=>{a()},3e5),"function"==typeof b[j]?.unref&&b[j].unref()),i)return;let c=(0,e.PL)("dashboard_last_auto_ingest_ms"),g=c?parseInt(c,10):0;Date.now()-g<1e4||((0,e.ZC)("dashboard_last_auto_ingest_ms",String(Date.now())),i=(async()=>{try{let a=await (0,d.U)();(a.claude.filesIngested>0||a.codex.filesIngested>0)&&(0,f.e)(),await k()}catch{}finally{i=null}})())}});var d=c(90027),e=c(10944),f=c(25742),g=c(15988),h=c(71277);let i=null,j=Symbol.for("agentgraphed.periodic-ingest");async function k(){try{if("off"===(0,e.PL)("auto_classify")||!(0,h.Q)())return;let a=(0,g.Kv)();if(a.length<5)return;(await (0,g.N6)({rows:a})).classified>0&&(0,f.e)()}catch{}}function l(){let a=(0,e.PL)("dashboard_last_auto_ingest_ms");return a?parseInt(a,10):0}},92568:(a,b,c)=>{c.d(b,{$I:()=>f,P6:()=>e,nG:()=>g});let d=[{id:"claude-haiku-4-5",label:"Claude Haiku 4.5 (cheapest)",provider:"anthropic",input:1,output:5},{id:"claude-sonnet-4-6",label:"Claude Sonnet 4.6 (smarter)",provider:"anthropic",input:3,output:15},{id:"gpt-5-mini",label:"GPT-5 Mini (cheapest)",provider:"openai",input:.5,output:2},{id:"gpt-4o-mini",label:"GPT-4o Mini (very cheap)",provider:"openai",input:.15,output:.6},{id:"gpt-5",label:"GPT-5 (smarter)",provider:"openai",input:2.5,output:10}];function e(a){return d.find(b=>b.id===a)}function f(a){return"openai"===a?"gpt-5-mini":"claude-haiku-4-5"}function g(a,b,c){return(b*a.input+c*a.output)/1e6}}};
@@ -0,0 +1 @@
1
+ exports.id=903,exports.ids=[903],exports.modules={22412:(a,b,c)=>{"use strict";c.d(b,{ShareButton:()=>f});var d=c(21124),e=c(38301);function f({imageUrl:a,className:b}){let[c,f]=(0,e.useState)("idle"),[j,k]=(0,e.useState)(null),l=async()=>{f("busy"),k(null);try{let b=await fetch(a);if(!b.ok)throw Error(`HTTP ${b.status}`);let c=await b.blob();if("undefined"==typeof ClipboardItem||!navigator.clipboard?.write)throw Error("clipboard image unsupported");let d=new ClipboardItem({"image/png":c});await navigator.clipboard.write([d]),f("done"),setTimeout(()=>f("idle"),2400)}catch(b){try{let b=await fetch(a),c=await b.blob(),d=URL.createObjectURL(c),e=document.createElement("a");e.href=d,e.download="agentgraphed-stats.png",document.body.appendChild(e),e.click(),document.body.removeChild(e),setTimeout(()=>URL.revokeObjectURL(d),5e3),k("Saved to Downloads (clipboard image unsupported)"),f("err"),setTimeout(()=>f("idle"),4e3)}catch(a){k(a.message||b.message),f("err"),setTimeout(()=>f("idle"),3e3)}}};return(0,d.jsx)("button",{onClick:l,disabled:"busy"===c,"aria-label":"Share",title:"busy"===c?"Generating image…":"done"===c?"Image copied to clipboard":"err"===c?j??"Try again":"Copy share image to clipboard",className:`btn-icon ${"done"===c?"text-secondary":""} ${b??""}`,children:"busy"===c?(0,d.jsx)(i,{}):"done"===c?(0,d.jsx)(h,{}):(0,d.jsx)(g,{})})}function g(){return(0,d.jsxs)("svg",{width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.4",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,d.jsx)("path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8"}),(0,d.jsx)("polyline",{points:"16 6 12 2 8 6"}),(0,d.jsx)("line",{x1:"12",y1:"2",x2:"12",y2:"15"})]})}function h(){return(0,d.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,d.jsx)("polyline",{points:"20 6 9 17 4 12"})})}function i(){return(0,d.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"animate-spin",children:(0,d.jsx)("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"})})}},25799:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=c(82831),e=c(43740),f=c(29305),g=c(61981),h=c(26906),i=c(69168);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},29088:(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unauthorized",{enumerable:!0,get:function(){return d}}),c(98541).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},35530:(a,b,c)=>{"use strict";c.d(b,{ShareButton:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call ShareButton() from the server but ShareButton 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.")},"/home/runner/work/agentgraphed/agentgraphed/src/components/ShareButton.tsx","ShareButton")},40753:(a,b,c)=>{"use strict";c.d(b,{z:()=>e});var d=c(75338);function e({title:a,subtitle:b,right:c,titleAdornment:e}){return(0,d.jsxs)("header",{className:"px-7 h-[72px] border-b border-surface-2 flex items-center justify-between sticky top-0 z-20 bg-canvas/95 backdrop-blur supports-[backdrop-filter]:bg-canvas/80",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("h1",{className:"text-headline-md text-ink font-semibold",children:a}),e]}),b&&(0,d.jsx)("div",{className:"text-body-sm text-ink-mute mt-0.5",children:b})]}),c&&(0,d.jsx)("div",{className:"flex items-center gap-2",children:c})]})}},47614:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{getRedirectError:function(){return g},getRedirectStatusCodeFromError:function(){return l},getRedirectTypeFromError:function(){return k},getURLFromRedirectError:function(){return j},permanentRedirect:function(){return i},redirect:function(){return h}});let d=c(91203),e=c(92781),f=c(19121).actionAsyncStorage;function g(a,b,c){void 0===c&&(c=d.RedirectStatusCode.TemporaryRedirect);let f=Object.defineProperty(Error(e.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return f.digest=e.REDIRECT_ERROR_CODE+";"+b+";"+a+";"+c+";",f}function h(a,b){var c;throw null!=b||(b=(null==f||null==(c=f.getStore())?void 0:c.isAction)?e.RedirectType.push:e.RedirectType.replace),g(a,b,d.RedirectStatusCode.TemporaryRedirect)}function i(a,b){throw void 0===b&&(b=e.RedirectType.replace),g(a,b,d.RedirectStatusCode.PermanentRedirect)}function j(a){return(0,e.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function k(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function l(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},64404:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"notFound",{enumerable:!0,get:function(){return e}});let d=""+c(98541).HTTP_ERROR_FALLBACK_ERROR_CODE+";404";function e(){let a=Object.defineProperty(Error(d),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw a.digest=d,a}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},64712:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=c(25799).unstable_rethrow;("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},65169:(a,b,c)=>{let{createProxy:d}=c(39893);a.exports=d("/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/client/app-dir/link.js")},67837:(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"forbidden",{enumerable:!0,get:function(){return d}}),c(98541).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},73169:(a,b,c)=>{"use strict";c.d(b,{f:()=>e});var d=c(75338);function e({label:a,value:b,hint:c,accent:e}){return(0,d.jsxs)("div",{className:"card p-4",children:[(0,d.jsx)("div",{className:"metric-label",children:a}),(0,d.jsx)("div",{className:`metric-value tabular mt-1 ${"primary"===e?"text-primary":"secondary"===e?"text-secondary":"text-ink"}`,children:b}),c&&(0,d.jsx)("div",{className:"text-[11px] text-ink-mute mt-1",children:c})]})}},82161:(a,b,c)=>{"use strict";var d=c(93045);c.o(d,"notFound")&&c.d(b,{notFound:function(){return d.notFound}})},92490:(a,b,c)=>{"use strict";c.d(b,{i:()=>f});var d=c(75338);let e={Planning:"bg-tertiary-soft text-ink-dim border-ink-mute/30",Debugging:"bg-error/15 text-error border-error/30",Refactor:"bg-primary/10 text-primary border-primary/30",Feature:"bg-secondary/10 text-secondary border-secondary/30",Styling:"bg-fuchsia-400/10 text-fuchsia-300 border-fuchsia-400/30","SEO/Content":"bg-amber-400/10 text-amber-300 border-amber-400/30",DevOps:"bg-orange-400/10 text-orange-300 border-orange-400/30",Data:"bg-sky-400/10 text-sky-300 border-sky-400/30",Payments:"bg-emerald-400/10 text-emerald-300 border-emerald-400/30",Docs:"bg-violet-400/10 text-violet-300 border-violet-400/30",Unknown:"bg-surface-3 text-ink-mute border-surface-4"};function f({category:a,size:b="sm"}){let c=e[a]||e.Unknown;return(0,d.jsx)("span",{className:`inline-block ${"xs"===b?"text-[9px] px-1 py-0":"text-[10px] px-1.5 py-0.5"} rounded font-mono uppercase tracking-wider border ${c} shrink-0`,children:a})}},93045:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{ReadonlyURLSearchParams:function(){return k},RedirectType:function(){return e.RedirectType},forbidden:function(){return g.forbidden},notFound:function(){return f.notFound},permanentRedirect:function(){return d.permanentRedirect},redirect:function(){return d.redirect},unauthorized:function(){return h.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return i.unstable_rethrow}});let d=c(47614),e=c(92781),f=c(64404),g=c(67837),h=c(29088),i=c(64712);class j extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class k extends URLSearchParams{append(){throw new j}delete(){throw new j}set(){throw new j}sort(){throw new j}}function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},99044:(a,b,c)=>{"use strict";c.d(b,{G:()=>e});var d=c(48161);function e(a){if(!a)return a;let b=process.env.AGENTGRAPHED_DEMO_HOME;if(!b)return a;let c=(0,d.homedir)();return a.startsWith(c)?b+a.slice(c.length):a.replace(/^(\/Users|\/home)\/[^/]+/,b)}}};
@@ -22,16 +22,20 @@
22
22
  WHERE p.id = ? GROUP BY p.id`).get(a)??null}function p(a,b=100){return(0,d.x)().prepare(`SELECT ${i} FROM sessions s JOIN projects p ON p.id = s.project_id
23
23
  WHERE s.project_id = ? ORDER BY s.started_at DESC LIMIT ?`).all(a,b)}function q(a){return(0,d.x)().prepare(`SELECT ${i} FROM sessions s JOIN projects p ON p.id = s.project_id WHERE s.id = ?`).get(a)??null}function r(a){let b=(0,d.x)().prepare(`SELECT COALESCE(model, '') AS model, COUNT(*) AS n
24
24
  FROM messages WHERE session_id = ? AND role = 'assistant' GROUP BY model`).all(a),c=new Map;for(let a of b){if(!a.model)continue;let b=(0,f.gW)(a.model);c.set(b,(c.get(b)||0)+a.n)}return c.size<=1?[]:[...c.entries()].map(([a,b])=>({family:a,messages:b})).sort((a,b)=>b.messages-a.messages)}function s(a){return(0,d.x)().prepare("SELECT id, role, content, timestamp, model FROM messages WHERE session_id = ? ORDER BY timestamp ASC LIMIT 200").all(a)}function t(a={}){let b=a.limit??200,c=a.offset??0,e=[],f=[];a.provider&&(e.push("s.provider = ?"),f.push(a.provider)),a.projectId&&(e.push("s.project_id = ?"),f.push(a.projectId));let g=e.length?`WHERE ${e.join(" AND ")}`:"";return(0,d.x)().prepare(`SELECT ${i} FROM sessions s JOIN projects p ON p.id = s.project_id ${g}
25
- ORDER BY s.started_at DESC LIMIT ? OFFSET ?`).all(...f,b,c)}function u(a=30,b,c){return(0,h.n)(`getDailySeries:${a}:${b??""}:${c??""}`,5e3,()=>(function(a,b,c){let f,g,h=(0,d.x)(),i=b?" AND project_id = ?":"",j=b?[b]:[],k=E(c);if(null===a){let a=h.prepare(`SELECT MIN(started_at) AS min FROM sessions WHERE 1=1${i}${k.sql}`).get(...j,...k.params);if(!a.min)return[];f=a.min,g=Math.max(1,Math.ceil((Date.now()-f)/864e5)+1)}else f=Date.now()-864e5*a,g=a;let l=h.prepare(`SELECT started_at, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, est_cost_usd
26
- FROM sessions WHERE started_at >= ?${i}${k.sql}`).all(f,...j,...k.params),m=new Map;for(let a=0;a<g;a++){let b=new Date;b.setDate(b.getDate()-a),b.setHours(0,0,0,0);let c=(0,e.EL)(b.getTime());m.set(c,{day:c,sessions:0,tokens:0,cost:0})}for(let a of l){let b=(0,e.EL)(a.started_at),c=m.get(b);c&&(c.sessions+=1,c.tokens+=a.input_tokens+a.output_tokens+a.cache_read_tokens+a.cache_write_tokens,c.cost+=a.est_cost_usd)}return[...m.values()].sort((a,b)=>a.day.localeCompare(b.day))})(a,b??null,c??null))}function v(){return(0,h.n)("getProviderBreakdown",5e3,()=>(0,d.x)().prepare(`SELECT provider,
25
+ ORDER BY s.started_at DESC LIMIT ? OFFSET ?`).all(...f,b,c)}function u(a=30,b,c){return(0,h.n)(`getDailySeries:${a}:${b??""}:${c??""}`,5e3,()=>(function(a,b,c){let f,g,h=(0,d.x)(),i=b?" AND s.project_id = ?":"",j=b?[b]:[],k=E(c,"s");if(null===a){let a=h.prepare(`SELECT MIN(m.timestamp) AS min FROM messages m
26
+ JOIN sessions s ON s.id = m.session_id WHERE 1=1${i}${k.sql}`).get(...j,...k.params);if(!a.min)return[];f=a.min,g=Math.max(1,Math.ceil((Date.now()-f)/864e5)+1)}else f=Date.now()-864e5*a,g=a;let l=h.prepare(`SELECT m.timestamp, m.session_id,
27
+ m.input_tokens, m.output_tokens, m.cache_read_tokens, m.cache_write_tokens, m.est_cost_usd
28
+ FROM messages m JOIN sessions s ON s.id = m.session_id
29
+ WHERE m.timestamp >= ?${i}${k.sql}`).all(f,...j,...k.params),m=new Map,n=new Map;for(let a=0;a<g;a++){let b=new Date;b.setDate(b.getDate()-a),b.setHours(0,0,0,0);let c=(0,e.EL)(b.getTime());m.set(c,{day:c,sessions:0,tokens:0,cost:0}),n.set(c,new Set)}for(let a of l){let b=(0,e.EL)(a.timestamp),c=m.get(b);c&&(c.tokens+=a.input_tokens+a.output_tokens+a.cache_read_tokens+a.cache_write_tokens,c.cost+=a.est_cost_usd,n.get(b).add(a.session_id))}for(let[a,b]of n){let c=m.get(a);c&&(c.sessions=b.size)}return[...m.values()].sort((a,b)=>a.day.localeCompare(b.day))})(a,b??null,c??null))}function v(){return(0,h.n)("getProviderBreakdown",5e3,()=>(0,d.x)().prepare(`SELECT provider,
27
30
  COUNT(*) AS sessions,
28
31
  SUM(input_tokens + output_tokens + cache_read_tokens + cache_write_tokens) AS tokens,
29
32
  SUM(est_cost_usd) AS cost
30
- FROM sessions GROUP BY provider ORDER BY tokens DESC`).all())}function w(a=null,b){return(0,h.n)(`getModelBreakdown:${a??"all"}:${b??""}`,5e3,()=>(function(a,b){let c=[],e=[];null!==a&&(c.push("started_at >= ?"),e.push(Date.now()-864e5*a)),b&&(c.push("project_id = ?"),e.push(b));let g=c.length>0?`WHERE ${c.join(" AND ")}`:"",h=(0,d.x)().prepare(`SELECT COALESCE(model, 'unknown') AS model,
31
- COUNT(*) AS sessions,
32
- SUM(input_tokens + output_tokens + cache_read_tokens + cache_write_tokens) AS tokens,
33
- SUM(est_cost_usd) AS cost
34
- FROM sessions ${g} GROUP BY model`).all(...e),i=new Map;for(let a of h){let b=(0,f.gW)(a.model),c=i.get(b);c?(c.sessions+=a.sessions,c.tokens+=a.tokens,c.cost+=a.cost):i.set(b,{model:b,sessions:a.sessions,tokens:a.tokens,cost:a.cost})}return[...i.values()].sort((a,b)=>b.tokens-a.tokens).slice(0,12)})(a,b??null))}function x(){return(0,h.n)("getOverview",5e3,()=>(0,d.x)().prepare(`SELECT
33
+ FROM sessions GROUP BY provider ORDER BY tokens DESC`).all())}function w(a=null,b){return(0,h.n)(`getModelBreakdown:${a??"all"}:${b??""}`,5e3,()=>(function(a,b){let c=["m.input_tokens + m.output_tokens + m.cache_read_tokens + m.cache_write_tokens > 0"],e=[];null!==a&&(c.push("m.timestamp >= ?"),e.push(Date.now()-864e5*a)),b&&(c.push("s.project_id = ?"),e.push(b));let g=`WHERE ${c.join(" AND ")}`,h=(0,d.x)().prepare(`SELECT COALESCE(m.model, s.model, 'unknown') AS model,
34
+ COUNT(DISTINCT m.session_id) AS sessions,
35
+ SUM(m.input_tokens + m.output_tokens + m.cache_read_tokens + m.cache_write_tokens) AS tokens,
36
+ SUM(m.est_cost_usd) AS cost
37
+ FROM messages m JOIN sessions s ON s.id = m.session_id
38
+ ${g} GROUP BY COALESCE(m.model, s.model, 'unknown')`).all(...e),i=new Map;for(let a of h){let b=(0,f.gW)(a.model),c=i.get(b);c?(c.sessions+=a.sessions,c.tokens+=a.tokens,c.cost+=a.cost):i.set(b,{model:b,sessions:a.sessions,tokens:a.tokens,cost:a.cost})}return[...i.values()].sort((a,b)=>b.tokens-a.tokens).slice(0,12)})(a,b??null))}function x(){return(0,h.n)("getOverview",5e3,()=>(0,d.x)().prepare(`SELECT
35
39
  COUNT(*) AS sessions,
36
40
  COUNT(DISTINCT project_id) AS projects,
37
41
  COALESCE(SUM(input_tokens + output_tokens + cache_read_tokens + cache_write_tokens), 0) AS tokens,
@@ -41,23 +45,27 @@
41
45
  MAX(started_at) AS last_session
42
46
  FROM sessions`).get())}function y(a=12,b,c){let e=[],f=[];b&&(e.push("s.project_id = ?"),f.push(b));let g=E(c??null,"s"),h=e.length>0?` WHERE ${e.join(" AND ")}${g.sql}`:g.sql?` WHERE 1=1${g.sql}`:"";return f.push(...g.params,a),(0,d.x)().prepare(`SELECT ${i} FROM sessions s JOIN projects p ON p.id = s.project_id
43
47
  ${h} ORDER BY s.started_at DESC LIMIT ?`).all(...f)}function z(a=30,b=6,c){return(0,h.n)(`getProjectBreakdown:${a}:${b}:${c??""}`,5e3,()=>(function(a,b,c){let e=null===a?0:Date.now()-864e5*a,f=E(c,"s");return(0,d.x)().prepare(`SELECT p.id, p.name, p.last_active,
44
- COUNT(s.id) AS sessions,
45
- COALESCE(SUM(s.input_tokens + s.output_tokens + s.cache_read_tokens + s.cache_write_tokens), 0) AS tokens,
46
- COALESCE(SUM(s.est_cost_usd), 0) AS cost
47
- FROM projects p JOIN sessions s ON s.project_id = p.id
48
- WHERE s.started_at >= ?${f.sql}
49
- GROUP BY p.id ORDER BY tokens DESC LIMIT ?`).all(e,...f.params,b)})(a,b,c??null))}function A(a=30,b,c){return(0,h.n)(`getCategoryBreakdown:${a}:${b??""}:${c??""}`,5e3,()=>(function(a,b,c){let e=null===a?0:Date.now()-864e5*a,f=b?" AND project_id = ?":"",h=E(c),i=(0,d.x)().prepare(`SELECT category, categories,
50
- (input_tokens + output_tokens + cache_read_tokens + cache_write_tokens) AS tokens
51
- FROM sessions WHERE started_at >= ?${f}${h.sql}`).all(e,...b?[b]:[],...h.params),j=new Map;for(let a of i){let b=(0,g.LQ)(a);for(let c of b.length?b:["Unknown"]){let b=j.get(c)??{sessions:0,tokens:0};b.sessions+=1,b.tokens+=a.tokens,j.set(c,b)}}return[...j.entries()].map(([a,b])=>({category:a,...b})).sort((a,b)=>b.sessions-a.sessions)})(a,b??null,c??null))}function B(a=30,b,c){return(0,h.n)(`getRangeSummary:${a}:${b??""}:${c??""}`,5e3,()=>(function(a,b,c){let e=(0,d.x)(),f=Date.now(),g=null===a?0:f-864e5*a,h=null===a?0:g-864e5*a,i=b?" AND project_id = ?":"",j=b?[b]:[],k=E(c),l=e.prepare(`SELECT COUNT(*) AS sessions,
52
- COUNT(DISTINCT project_id) AS projects,
53
- COALESCE(SUM(input_tokens + output_tokens + cache_read_tokens + cache_write_tokens), 0) AS tokens,
54
- COALESCE(SUM(est_cost_usd), 0) AS cost,
55
- COUNT(DISTINCT strftime('%Y-%m', started_at/1000, 'unixepoch')) AS active_months
56
- FROM sessions WHERE started_at >= ?${i}${k.sql}`).get(g,...j,...k.params);if(null===a)return{...l,sessions_prev:0,tokens_prev:0,cost_prev:0,active_months_prev:0};let m=e.prepare(`SELECT COUNT(*) AS sessions,
57
- COALESCE(SUM(input_tokens + output_tokens + cache_read_tokens + cache_write_tokens), 0) AS tokens,
58
- COALESCE(SUM(est_cost_usd), 0) AS cost,
59
- COUNT(DISTINCT strftime('%Y-%m', started_at/1000, 'unixepoch')) AS active_months
60
- FROM sessions WHERE started_at >= ? AND started_at < ?${i}${k.sql}`).get(h,g,...j,...k.params);return{...l,sessions_prev:m.sessions,tokens_prev:m.tokens,cost_prev:m.cost,active_months_prev:m.active_months}})(a,b??null,c??null))}function C(a){let b=(0,d.x)().prepare("SELECT summary FROM day_summaries WHERE day = ?").get(a);return b?.summary??null}function D(){return(0,h.n)("getModelFamilies",5e3,()=>(function(){let a=(0,d.x)().prepare(`SELECT COALESCE(model, 'unknown') AS model, COUNT(*) AS sessions
48
+ COUNT(DISTINCT s.id) AS sessions,
49
+ COALESCE(SUM(m.input_tokens + m.output_tokens + m.cache_read_tokens + m.cache_write_tokens), 0) AS tokens,
50
+ COALESCE(SUM(m.est_cost_usd), 0) AS cost
51
+ FROM projects p
52
+ JOIN sessions s ON s.project_id = p.id
53
+ JOIN messages m ON m.session_id = s.id
54
+ WHERE m.timestamp >= ?${f.sql}
55
+ GROUP BY p.id ORDER BY tokens DESC LIMIT ?`).all(e,...f.params,b)})(a,b,c??null))}function A(a=30,b,c){return(0,h.n)(`getCategoryBreakdown:${a}:${b??""}:${c??""}`,5e3,()=>(function(a,b,c){let e=null===a?0:Date.now()-864e5*a,f=b?" AND s.project_id = ?":"",h=E(c,"s"),i=(0,d.x)().prepare(`SELECT s.category, s.categories,
56
+ COALESCE(SUM(m.input_tokens + m.output_tokens + m.cache_read_tokens + m.cache_write_tokens), 0) AS tokens
57
+ FROM messages m JOIN sessions s ON s.id = m.session_id
58
+ WHERE m.timestamp >= ?${f}${h.sql}
59
+ GROUP BY s.id`).all(e,...b?[b]:[],...h.params),j=new Map;for(let a of i){let b=(0,g.LQ)(a);for(let c of b.length?b:["Unknown"]){let b=j.get(c)??{sessions:0,tokens:0};b.sessions+=1,b.tokens+=a.tokens,j.set(c,b)}}return[...j.entries()].map(([a,b])=>({category:a,...b})).sort((a,b)=>b.sessions-a.sessions)})(a,b??null,c??null))}function B(a=30,b,c){return(0,h.n)(`getRangeSummary:${a}:${b??""}:${c??""}`,5e3,()=>(function(a,b,c){let e=(0,d.x)(),f=Date.now(),g=null===a?0:f-864e5*a,h=null===a?0:g-864e5*a,i=b?" AND s.project_id = ?":"",j=b?[b]:[],k=E(c,"s"),l=(a,b)=>`
60
+ SELECT
61
+ COUNT(DISTINCT m.session_id) AS sessions,
62
+ COUNT(DISTINCT s.project_id) AS projects,
63
+ COALESCE(SUM(m.input_tokens + m.output_tokens + m.cache_read_tokens + m.cache_write_tokens), 0) AS tokens,
64
+ COALESCE(SUM(m.est_cost_usd), 0) AS cost,
65
+ COUNT(DISTINCT strftime('%Y-%m', m.timestamp/1000, 'unixepoch')) AS active_months
66
+ FROM messages m JOIN sessions s ON s.id = m.session_id
67
+ WHERE m.timestamp >= ?${b?" AND m.timestamp < ?":""}${i}${k.sql}
68
+ `,m=e.prepare(l("m.timestamp >= ?",null)).get(g,...j,...k.params);if(null===a)return{...m,sessions_prev:0,tokens_prev:0,cost_prev:0,active_months_prev:0};let n=e.prepare(l("m.timestamp >= ?","m.timestamp < ?")).get(h,g,...j,...k.params);return{...m,sessions_prev:n.sessions,tokens_prev:n.tokens,cost_prev:n.cost,active_months_prev:n.active_months}})(a,b??null,c??null))}function C(a){let b=(0,d.x)().prepare("SELECT summary FROM day_summaries WHERE day = ?").get(a);return b?.summary??null}function D(){return(0,h.n)("getModelFamilies",5e3,()=>(function(){let a=(0,d.x)().prepare(`SELECT COALESCE(model, 'unknown') AS model, COUNT(*) AS sessions
61
69
  FROM sessions GROUP BY model`).all(),b=new Map;for(let c of a){let a=(0,f.gW)(c.model);b.set(a,(b.get(a)||0)+c.sessions)}return[...b.entries()].map(([a,b])=>({family:a,sessions:b})).sort((a,b)=>b.sessions-a.sessions)})())}function E(a,b=""){if(!a)return{sql:"",params:[]};let c=(0,d.x)().prepare("SELECT DISTINCT model FROM sessions WHERE model IS NOT NULL").all().filter(b=>(0,f.gW)(b.model)===a).map(a=>a.model);if(0===c.length)return{sql:" AND 1=0",params:[]};let e=c.map(()=>"?").join(","),g=b?`${b}.model`:"model";return{sql:` AND ${g} IN (${e})`,params:c}}function F(){return(0,d.x)().prepare(`SELECT COUNT(*) AS n FROM sessions
62
70
  WHERE category IS NULL AND first_prompt IS NOT NULL AND length(first_prompt) > 0`).get().n}function G(a,b){(0,d.x)().prepare("INSERT OR REPLACE INTO settings (key, value) VALUES (?, ?)").run(a,b)}function H(a){let b=(0,d.x)().prepare("SELECT value FROM settings WHERE key = ?").get(a);return b?.value??null}},22446:(a,b,c)=>{c.d(b,{L:()=>w,x:()=>x});var d={};c.r(d),c.d(d,{daySummaries:()=>s,ingestState:()=>q,messages:()=>p,projectSummaries:()=>t,projects:()=>n,sessions:()=>o,settings:()=>r});var e=c(87550),f=c.n(e),g=c(65127),h=c(48211),i=c(95417),j=c(58040),k=c(20377),l=c(4035),m=c(19643);let n=(0,i.D)("projects",{id:(0,j.Qq)("id").primaryKey(),name:(0,j.Qq)("name").notNull(),rootPath:(0,j.Qq)("root_path").notNull(),gitRemote:(0,j.Qq)("git_remote"),firstSeen:(0,k.nd)("first_seen").notNull(),lastActive:(0,k.nd)("last_active").notNull()},a=>({rootIdx:(0,l.GL)("projects_root_idx").on(a.rootPath)})),o=(0,i.D)("sessions",{id:(0,j.Qq)("id").primaryKey(),provider:(0,j.Qq)("provider").notNull(),projectId:(0,j.Qq)("project_id").notNull(),cwd:(0,j.Qq)("cwd").notNull(),startedAt:(0,k.nd)("started_at").notNull(),endedAt:(0,k.nd)("ended_at").notNull(),durationMs:(0,k.nd)("duration_ms").notNull(),model:(0,j.Qq)("model"),messageCount:(0,k.nd)("message_count").notNull().default(0),userMessageCount:(0,k.nd)("user_message_count").notNull().default(0),inputTokens:(0,k.nd)("input_tokens").notNull().default(0),outputTokens:(0,k.nd)("output_tokens").notNull().default(0),cacheReadTokens:(0,k.nd)("cache_read_tokens").notNull().default(0),cacheWriteTokens:(0,k.nd)("cache_write_tokens").notNull().default(0),estCostUsd:(0,m.x)("est_cost_usd").notNull().default(0),firstPrompt:(0,j.Qq)("first_prompt"),summary:(0,j.Qq)("summary"),summaryGenerated:(0,k.nd)("summary_generated").notNull().default(0),heuristicTitle:(0,j.Qq)("heuristic_title"),category:(0,j.Qq)("category"),keywords:(0,j.Qq)("keywords"),gitBranch:(0,j.Qq)("git_branch"),sourcePath:(0,j.Qq)("source_path").notNull()},a=>({projectIdx:(0,l.Pe)("sessions_project_idx").on(a.projectId),startedIdx:(0,l.Pe)("sessions_started_idx").on(a.startedAt),providerIdx:(0,l.Pe)("sessions_provider_idx").on(a.provider),modelIdx:(0,l.Pe)("sessions_model_idx").on(a.model)})),p=(0,i.D)("messages",{id:(0,j.Qq)("id").primaryKey(),sessionId:(0,j.Qq)("session_id").notNull(),role:(0,j.Qq)("role").notNull(),content:(0,j.Qq)("content").notNull(),timestamp:(0,k.nd)("timestamp").notNull(),model:(0,j.Qq)("model")},a=>({sessionIdx:(0,l.Pe)("messages_session_idx").on(a.sessionId),timestampIdx:(0,l.Pe)("messages_timestamp_idx").on(a.timestamp)})),q=(0,i.D)("ingest_state",{sourcePath:(0,j.Qq)("source_path").primaryKey(),mtime:(0,k.nd)("mtime").notNull(),size:(0,k.nd)("size").notNull(),sessionId:(0,j.Qq)("session_id").notNull(),ingestedAt:(0,k.nd)("ingested_at").notNull()}),r=(0,i.D)("settings",{key:(0,j.Qq)("key").primaryKey(),value:(0,j.Qq)("value").notNull()}),s=(0,i.D)("day_summaries",{day:(0,j.Qq)("day").primaryKey(),summary:(0,j.Qq)("summary").notNull(),generatedAt:(0,k.nd)("generated_at").notNull()}),t=(0,i.D)("project_summaries",{projectId:(0,j.Qq)("project_id").primaryKey(),summary:(0,j.Qq)("summary").notNull(),generatedAt:(0,k.nd)("generated_at").notNull()}),u=null,v=null;function w(){return u||((v=new(f())((0,h.W)())).pragma("journal_mode = WAL"),v.pragma("synchronous = NORMAL"),function(a){a.exec(`
63
71
  CREATE TABLE IF NOT EXISTS projects (
@@ -167,4 +175,32 @@
167
175
  CREATE INDEX IF NOT EXISTS claude_limit_events_session_idx ON claude_limit_events(session_id);
168
176
  `);let b=new Set(a.prepare("PRAGMA table_info(sessions)").all().map(a=>a.name));b.has("heuristic_title")||a.exec("ALTER TABLE sessions ADD COLUMN heuristic_title TEXT"),b.has("category")||a.exec("ALTER TABLE sessions ADD COLUMN category TEXT"),b.has("keywords")||a.exec("ALTER TABLE sessions ADD COLUMN keywords TEXT"),a.exec("CREATE INDEX IF NOT EXISTS sessions_category_idx ON sessions(category)"),b.has("categories")||(a.exec("ALTER TABLE sessions ADD COLUMN categories TEXT"),a.exec(`UPDATE sessions
169
177
  SET categories = json_array(category)
170
- WHERE category IS NOT NULL AND categories IS NULL`))}(v),u=(0,g.f)(v,{schema:d}))}function x(){return v||w(),v}},25742:(a,b,c)=>{c.d(b,{e:()=>f,n:()=>e});let d=new Map;function e(a,b,c){let e=d.get(a),f=Date.now();if(e&&e.expires>f)return e.value;let g=c();if(d.set(a,{value:g,expires:f+b}),d.size>64)for(let[a,b]of d)b.expires<=f&&d.delete(a);return g}function f(){d.clear()}},46145:(a,b,c)=>{function d(a){return a>=1e6?`${(a/1e6).toFixed(1)}M`:a>=1e3?`${(a/1e3).toFixed(1)}k`:a.toString()}function e(a){return a>=1e3?`$${a.toFixed(0)}`:`$${a.toFixed(2)}`}function f(a){let b=Math.floor((Date.now()-a)/6e4);if(b<1)return"just now";if(b<60)return`${b}m ago`;let c=Math.floor(b/60);if(c<24)return`${c}h ago`;let d=Math.floor(c/24);if(d<30)return`${d}d ago`;let e=Math.floor(d/30);return`${e}mo ago`}function g(a){return new Date(a).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1})}function h(a){let b=Math.floor(a/1e3);if(b<60)return`${b}s`;let c=Math.floor(b/60);if(c<60)return`${c}m`;let d=Math.floor(c/60);return`${d}h ${c%60}m`}function i(a){return new Date(a).toLocaleDateString(void 0,{weekday:"long",month:"long",day:"numeric"})}function j(a){let b=new Date(a),c=b.getFullYear(),d=String(b.getMonth()+1).padStart(2,"0"),e=String(b.getDate()).padStart(2,"0");return`${c}-${d}-${e}`}c.d(b,{EL:()=>j,F0:()=>e,I_:()=>i,Kc:()=>f,ME:()=>g,c5:()=>h,yj:()=>d})},48211:(a,b,c)=>{c.d(b,{K:()=>g,W:()=>h});var d=c(48161),e=c(76760),f=c(73024);function g(){let a=process.env.AGENTGRAPHED_DATA_DIR||(0,e.join)((0,d.homedir)(),".agentgraphed");return(0,f.existsSync)(a)||(0,f.mkdirSync)(a,{recursive:!0}),a}function h(){return(0,e.join)(g(),"agentgraphed.sqlite")}},76846:(a,b,c)=>{let d;c.d(b,{QJ:()=>j,a3:()=>l,gW:()=>m});var e=c(73024),f=c(76760);c(73136);let g={input:3,output:15},h={"claude-opus-4-7":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-opus-4-6":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-opus-4-5":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-opus-4":{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},"claude-sonnet-4-6":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"claude-sonnet-4-5":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"claude-haiku-4-5":{input:1,output:5,cacheRead:.1,cacheWrite:1.25},"claude-3-5-sonnet":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"gpt-5.1":{input:1.25,output:10,cacheRead:.125},"gpt-5":{input:1.25,output:10,cacheRead:.125},"gpt-5-mini":{input:.25,output:2,cacheRead:.025},"gpt-4o":{input:2.5,output:10},"gpt-4o-mini":{input:.15,output:.6}},i=null,j=function(){let a=function(){if(void 0!==d)return d;try{let a=__dirname,b=(0,f.join)(a,"pricing-data","litellm.meta.json");d=(0,e.existsSync)(b)?JSON.parse((0,e.readFileSync)(b,"utf8")):null}catch{d=null}return d}();return a?.fetchedAt?a.fetchedAt.slice(0,10):"2026-06-05"}();function k(a){let b=a.input_cost_per_token,c=a.output_cost_per_token;return null==b||null==c?null:{input:1e6*b,output:1e6*c,cacheRead:null!=a.cache_read_input_token_cost?1e6*a.cache_read_input_token_cost:void 0,cacheWrite:null!=a.cache_creation_input_token_cost?1e6*a.cache_creation_input_token_cost:void 0}}function l(a){let b=function(a){if(!a)return g;let b=null!==i?i:i=function(){try{let a=__dirname;for(let b of[(0,f.join)(a,"pricing-data","litellm.json"),(0,f.join)(process.cwd(),"src","lib","pricing-data","litellm.json")])if((0,e.existsSync)(b))return JSON.parse((0,e.readFileSync)(b,"utf8"))}catch{}return{}}(),c=b[a];if(c){let a=k(c);if(a)return a}let d=a.replace(/-(\d{8})$/,"");if(d!==a&&b[d]){let a=k(b[d]);if(a)return a}if(h[a])return h[a];let j=Object.keys(h).find(b=>a.startsWith(b));if(j)return h[j];let l=Object.keys(b).find(b=>a.startsWith(b));if(l){let a=k(b[l]);if(a)return a}return g}(a.model),c=a.cacheReadTokens??0,d=a.cacheWriteTokens??0;return a.inputTokens*b.input/1e6+a.outputTokens*b.output/1e6+c*(b.cacheRead??b.input)/1e6+d*(b.cacheWrite??b.input)/1e6}function m(a){if(!a)return"Unknown";let b=a.toLowerCase(),c=b.match(/^claude-(?:(\d+(?:-\d+)?)-)?(opus|sonnet|haiku)-?(\d+)?/);if(c){let a=c[2].charAt(0).toUpperCase()+c[2].slice(1);if(c[1]){let b=c[1].replace("-",".");return`Claude ${a} ${b}`}return c[3]?`Claude ${a} ${c[3]}`:`Claude ${a}`}if(b.startsWith("gpt-4o"))return b.includes("mini")?"GPT-4o Mini":"GPT-4o";let d=b.match(/^gpt-(\d+(?:\.\d+)?)(?:-(mini|nano|turbo))?/);if(d){let a=`GPT-${d[1]}`;return d[2]?`${a} ${d[2].charAt(0).toUpperCase()+d[2].slice(1)}`:a}return a}},97064:(a,b,c)=>{function d(a){if(a.categories)try{let b=JSON.parse(a.categories);if(Array.isArray(b))return b.filter(a=>"string"==typeof a)}catch{}return a.category?[a.category]:[]}function e(a){return a.summary?a.summary.split("\n")[0].trim():a.heuristic_title?a.heuristic_title:a.first_prompt?function(a){let b=a.trim(),c=(b=(b=(b=(b=(b=(b=(b=b.replace(/<[^>]+>/g," ")).replace(/^\/[a-z][a-z0-9-]*(\s|$)/i,"")).replace(/```[a-z]*\n?/gi," ").replace(/```/g," ").replace(/`/g,"")).replace(/\[([^\]]+)\]\([^)]*\)/g,"$1")).replace(/https?:\/\/\S+/g,"")).replace(/(^|\s)(\/|~\/)[\w./~-]+/g," ")).replace(/\s+/g," ").trim()).search(/[.!?](\s|$)/);if(c>8&&c<90&&(b=b.slice(0,c).trim()),0===b.length)return"(untitled session)";if((b=b.charAt(0).toUpperCase()+b.slice(1)).length<=90)return b;let d=b.lastIndexOf(" ",90);return(d>50?b.slice(0,d):b.slice(0,90))+"…"}(a.first_prompt):"(untitled session)"}c.d(b,{LQ:()=>d,xU:()=>e})}};
178
+ WHERE category IS NOT NULL AND categories IS NULL`));let c=new Set(a.prepare("PRAGMA table_info(messages)").all().map(a=>a.name));c.has("input_tokens")||a.exec("ALTER TABLE messages ADD COLUMN input_tokens INTEGER NOT NULL DEFAULT 0"),c.has("output_tokens")||a.exec("ALTER TABLE messages ADD COLUMN output_tokens INTEGER NOT NULL DEFAULT 0"),c.has("cache_read_tokens")||a.exec("ALTER TABLE messages ADD COLUMN cache_read_tokens INTEGER NOT NULL DEFAULT 0"),c.has("cache_write_tokens")||a.exec("ALTER TABLE messages ADD COLUMN cache_write_tokens INTEGER NOT NULL DEFAULT 0"),c.has("est_cost_usd")||a.exec("ALTER TABLE messages ADD COLUMN est_cost_usd REAL NOT NULL DEFAULT 0");let d=a.prepare("SELECT value FROM settings WHERE key = ?").get("schema_version");d?.value!=="3"&&(a.exec("DELETE FROM ingest_state"),a.exec("DELETE FROM messages"),a.prepare("INSERT OR REPLACE INTO settings (key, value) VALUES (?, ?)").run("schema_version","3")),function(a){let b=a.prepare(`SELECT s.id, s.started_at, s.model,
179
+ s.input_tokens, s.output_tokens, s.cache_read_tokens, s.cache_write_tokens, s.est_cost_usd
180
+ FROM sessions s LEFT JOIN messages m ON m.session_id = s.id
181
+ WHERE m.id IS NULL
182
+ AND (s.input_tokens + s.output_tokens + s.cache_read_tokens + s.cache_write_tokens) > 0
183
+ GROUP BY s.id`).all();if(b.length>0){let c=a.prepare(`INSERT INTO messages (
184
+ id, session_id, role, content, timestamp, model,
185
+ input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, est_cost_usd
186
+ ) VALUES (?, ?, 'assistant', '', ?, ?, ?, ?, ?, ?, ?)`);a.transaction(()=>{for(let a of b)c.run(`${a.id}-orphan`,a.id,a.started_at,a.model,a.input_tokens,a.output_tokens,a.cache_read_tokens,a.cache_write_tokens,a.est_cost_usd)})()}let c=a.prepare(`SELECT s.id,
187
+ s.input_tokens AS s_in, s.output_tokens AS s_out,
188
+ s.cache_read_tokens AS s_cr, s.cache_write_tokens AS s_cw,
189
+ s.est_cost_usd AS s_cost,
190
+ COALESCE(SUM(m.input_tokens), 0) AS m_in,
191
+ COALESCE(SUM(m.output_tokens), 0) AS m_out,
192
+ COALESCE(SUM(m.cache_read_tokens), 0) AS m_cr,
193
+ COALESCE(SUM(m.cache_write_tokens), 0) AS m_cw,
194
+ COALESCE(SUM(m.est_cost_usd), 0) AS m_cost,
195
+ COUNT(CASE WHEN m.role = 'assistant' THEN 1 END) AS asst_count
196
+ FROM sessions s LEFT JOIN messages m ON m.session_id = s.id
197
+ GROUP BY s.id
198
+ HAVING ((s_in + s_out + s_cr + s_cw) > (m_in + m_out + m_cr + m_cw)
199
+ OR s_cost > m_cost + 0.001)
200
+ AND asst_count > 0`).all();if(0===c.length)return;let d=a.prepare("SELECT id FROM messages WHERE session_id = ? AND role = 'assistant' ORDER BY timestamp"),e=a.prepare(`UPDATE messages SET
201
+ input_tokens = input_tokens + ?,
202
+ output_tokens = output_tokens + ?,
203
+ cache_read_tokens = cache_read_tokens + ?,
204
+ cache_write_tokens = cache_write_tokens + ?,
205
+ est_cost_usd = est_cost_usd + ?
206
+ WHERE id = ?`);a.transaction(()=>{for(let a of c){let b=d.all(a.id);if(0===b.length)continue;let c=b.length,f=Math.max(0,a.s_in-a.m_in),g=Math.max(0,a.s_out-a.m_out),h=Math.max(0,a.s_cr-a.m_cr),i=Math.max(0,a.s_cw-a.m_cw),j=Math.max(0,a.s_cost-a.m_cost),k=Math.floor(f/c),l=Math.floor(g/c),m=Math.floor(h/c),n=Math.floor(i/c),o=j/c,p=f-k*c,q=g-l*c,r=h-m*c,s=i-n*c;for(let a=0;a<c;a++){let d=a===c-1;e.run(k+(d?p:0),l+(d?q:0),m+(d?r:0),n+(d?s:0),o,b[a].id)}}})()}(a)}(v),u=(0,g.f)(v,{schema:d}))}function x(){return v||w(),v}},25742:(a,b,c)=>{c.d(b,{e:()=>f,n:()=>e});let d=new Map;function e(a,b,c){let e=d.get(a),f=Date.now();if(e&&e.expires>f)return e.value;let g=c();if(d.set(a,{value:g,expires:f+b}),d.size>64)for(let[a,b]of d)b.expires<=f&&d.delete(a);return g}function f(){d.clear()}},46145:(a,b,c)=>{function d(a){return a>=1e6?`${(a/1e6).toFixed(1)}M`:a>=1e3?`${(a/1e3).toFixed(1)}k`:a.toString()}function e(a){return a>=1e3?`$${a.toFixed(0)}`:`$${a.toFixed(2)}`}function f(a){let b=Math.floor((Date.now()-a)/6e4);if(b<1)return"just now";if(b<60)return`${b}m ago`;let c=Math.floor(b/60);if(c<24)return`${c}h ago`;let d=Math.floor(c/24);if(d<30)return`${d}d ago`;let e=Math.floor(d/30);return`${e}mo ago`}function g(a){return new Date(a).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1})}function h(a){let b=Math.floor(a/1e3);if(b<60)return`${b}s`;let c=Math.floor(b/60);if(c<60)return`${c}m`;let d=Math.floor(c/60);return`${d}h ${c%60}m`}function i(a){return new Date(a).toLocaleDateString(void 0,{weekday:"long",month:"long",day:"numeric"})}function j(a){let b=new Date(a),c=b.getFullYear(),d=String(b.getMonth()+1).padStart(2,"0"),e=String(b.getDate()).padStart(2,"0");return`${c}-${d}-${e}`}c.d(b,{EL:()=>j,F0:()=>e,I_:()=>i,Kc:()=>f,ME:()=>g,c5:()=>h,yj:()=>d})},48211:(a,b,c)=>{c.d(b,{K:()=>g,W:()=>h});var d=c(48161),e=c(76760),f=c(73024);function g(){let a=process.env.AGENTGRAPHED_DATA_DIR||(0,e.join)((0,d.homedir)(),".agentgraphed");return(0,f.existsSync)(a)||(0,f.mkdirSync)(a,{recursive:!0}),a}function h(){return(0,e.join)(g(),"agentgraphed.sqlite")}},76846:(a,b,c)=>{let d;c.d(b,{QJ:()=>j,a3:()=>l,gW:()=>m});var e=c(73024),f=c(76760);c(73136);let g={input:3,output:15},h={"claude-opus-4-7":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-opus-4-6":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-opus-4-5":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-opus-4":{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},"claude-sonnet-4-6":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"claude-sonnet-4-5":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"claude-haiku-4-5":{input:1,output:5,cacheRead:.1,cacheWrite:1.25},"claude-3-5-sonnet":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"gpt-5.1":{input:1.25,output:10,cacheRead:.125},"gpt-5":{input:1.25,output:10,cacheRead:.125},"gpt-5-mini":{input:.25,output:2,cacheRead:.025},"gpt-4o":{input:2.5,output:10},"gpt-4o-mini":{input:.15,output:.6}},i=null,j=function(){let a=function(){if(void 0!==d)return d;try{let a=__dirname,b=(0,f.join)(a,"pricing-data","litellm.meta.json");d=(0,e.existsSync)(b)?JSON.parse((0,e.readFileSync)(b,"utf8")):null}catch{d=null}return d}();return a?.fetchedAt?a.fetchedAt.slice(0,10):"2026-06-05"}();function k(a){let b=a.input_cost_per_token,c=a.output_cost_per_token;return null==b||null==c?null:{input:1e6*b,output:1e6*c,cacheRead:null!=a.cache_read_input_token_cost?1e6*a.cache_read_input_token_cost:void 0,cacheWrite:null!=a.cache_creation_input_token_cost?1e6*a.cache_creation_input_token_cost:void 0}}function l(a){let b=function(a){if(!a)return g;let b=null!==i?i:i=function(){try{let a=__dirname;for(let b of[(0,f.join)(a,"pricing-data","litellm.json"),(0,f.join)(process.cwd(),"src","lib","pricing-data","litellm.json")])if((0,e.existsSync)(b))return JSON.parse((0,e.readFileSync)(b,"utf8"))}catch{}return{}}(),c=b[a];if(c){let a=k(c);if(a)return a}let d=a.replace(/-(\d{8})$/,"");if(d!==a&&b[d]){let a=k(b[d]);if(a)return a}if(h[a])return h[a];let j=Object.keys(h).find(b=>a.startsWith(b));if(j)return h[j];let l=Object.keys(b).find(b=>a.startsWith(b));if(l){let a=k(b[l]);if(a)return a}return g}(a.model),c=a.cacheReadTokens??0,d=a.cacheWriteTokens??0;return a.inputTokens*b.input/1e6+a.outputTokens*b.output/1e6+c*(b.cacheRead??b.input)/1e6+d*(b.cacheWrite??b.input)/1e6}function m(a){if(!a)return"Unknown";let b=a.toLowerCase(),c=b.match(/^claude-(?:(\d+(?:-\d+)?)-)?(opus|sonnet|haiku)-?(\d+)?/);if(c){let a=c[2].charAt(0).toUpperCase()+c[2].slice(1);if(c[1]){let b=c[1].replace("-",".");return`Claude ${a} ${b}`}return c[3]?`Claude ${a} ${c[3]}`:`Claude ${a}`}if(b.startsWith("gpt-4o"))return b.includes("mini")?"GPT-4o Mini":"GPT-4o";let d=b.match(/^gpt-(\d+(?:\.\d+)?)(?:-(mini|nano|turbo))?/);if(d){let a=`GPT-${d[1]}`;return d[2]?`${a} ${d[2].charAt(0).toUpperCase()+d[2].slice(1)}`:a}return a}},97064:(a,b,c)=>{function d(a){if(a.categories)try{let b=JSON.parse(a.categories);if(Array.isArray(b))return b.filter(a=>"string"==typeof a)}catch{}return a.category?[a.category]:[]}function e(a){return a.summary?a.summary.split("\n")[0].trim():a.heuristic_title?a.heuristic_title:a.first_prompt?function(a){let b=a.trim(),c=(b=(b=(b=(b=(b=(b=(b=b.replace(/<[^>]+>/g," ")).replace(/^\/[a-z][a-z0-9-]*(\s|$)/i,"")).replace(/```[a-z]*\n?/gi," ").replace(/```/g," ").replace(/`/g,"")).replace(/\[([^\]]+)\]\([^)]*\)/g,"$1")).replace(/https?:\/\/\S+/g,"")).replace(/(^|\s)(\/|~\/)[\w./~-]+/g," ")).replace(/\s+/g," ").trim()).search(/[.!?](\s|$)/);if(c>8&&c<90&&(b=b.slice(0,c).trim()),0===b.length)return"(untitled session)";if((b=b.charAt(0).toUpperCase()+b.slice(1)).length<=90)return b;let d=b.lastIndexOf(" ",90);return(d>50?b.slice(0,d):b.slice(0,90))+"…"}(a.first_prompt):"(untitled session)"}c.d(b,{LQ:()=>d,xU:()=>e})}};
@@ -0,0 +1 @@
1
+ exports.id=954,exports.ids=[954],exports.modules={25035:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,54160,23)),Promise.resolve().then(c.t.bind(c,31603,23)),Promise.resolve().then(c.t.bind(c,68495,23)),Promise.resolve().then(c.t.bind(c,75170,23)),Promise.resolve().then(c.t.bind(c,77526,23)),Promise.resolve().then(c.t.bind(c,78922,23)),Promise.resolve().then(c.t.bind(c,29234,23)),Promise.resolve().then(c.t.bind(c,12263,23)),Promise.resolve().then(c.bind(c,82146))},49272:(a,b,c)=>{Promise.resolve().then(c.bind(c,65610))},51472:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g,metadata:()=>f});var d=c(75338);c(61135);var e=c(87907);let f={title:"AgentGraphed",description:"Local-first analytics for AI-assisted development"};function g({children:a}){return(0,d.jsx)("html",{lang:"en",children:(0,d.jsx)("body",{children:(0,d.jsxs)("div",{className:"flex min-h-screen",children:[(0,d.jsx)(e.Sidebar,{}),(0,d.jsx)("main",{className:"flex-1 min-w-0",children:a})]})})})}},61135:()=>{},64787:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,81170,23)),Promise.resolve().then(c.t.bind(c,23597,23)),Promise.resolve().then(c.t.bind(c,36893,23)),Promise.resolve().then(c.t.bind(c,89748,23)),Promise.resolve().then(c.t.bind(c,6060,23)),Promise.resolve().then(c.t.bind(c,7184,23)),Promise.resolve().then(c.t.bind(c,69576,23)),Promise.resolve().then(c.t.bind(c,73041,23)),Promise.resolve().then(c.t.bind(c,51384,23))},64952:(a,b,c)=>{Promise.resolve().then(c.bind(c,87907))},65610:(a,b,c)=>{"use strict";c.d(b,{Sidebar:()=>s});var d=c(21124),e=c(3991),f=c.n(e),g=c(42378),h=c(43249),i=c(38301),j=c(23312);function k(a){if(!a||!a.ok)return null;let b=a.primary?.pct??null,c=a.secondary?.pct??null;return null===b&&null===c?null:Math.max(b??0,c??0)}function l(a){let b=a-Date.now();if(b<=0&&b>-12e4)return"<1m";if(b<=0)return"resetting";let c=Math.round(b/6e4);if(c<1)return"<1m";if(c<60)return`${c}m`;let d=Math.floor(c/60),e=c%60;return 0===e?`${d}h`:`${d}h${e}m`}function m(){let[a,b]=(0,i.useState)({claude:null,codex:null,fetchedAt:0,loading:!1}),[c,e]=(0,i.useState)(!1),[f,g]=(0,i.useState)(null),h=(0,i.useRef)(null),m=(0,i.useRef)(null),o=(0,i.useCallback)(async()=>{b(a=>({...a,loading:!0}));let[a,c]=await Promise.all([fetch("/api/quota-probe?provider=claude",{method:"POST"}).then(a=>a.json()).catch(a=>({ok:!1,error:a.message})),fetch("/api/quota-probe?provider=codex",{method:"POST"}).then(a=>a.json()).catch(a=>({ok:!1,error:a.message}))]);b({claude:q("claude",a),codex:q("codex",c),fetchedAt:Date.now(),loading:!1})},[]);function p(){m.current&&clearTimeout(m.current),e(!0),Date.now()-a.fetchedAt>6e4&&!a.loading&&o()}function r(){m.current&&clearTimeout(m.current),m.current=setTimeout(()=>e(!1),120)}return(0,d.jsxs)("div",{ref:h,className:"relative px-3 py-2 border-b border-surface-2",onMouseEnter:p,onMouseLeave:r,onFocus:p,onBlur:r,children:[(0,d.jsxs)("button",{type:"button",onClick:o,className:"w-full flex items-center gap-2 text-[12px] text-ink-dim hover:text-ink","aria-haspopup":"dialog","aria-expanded":c,children:[(0,d.jsx)("span",{className:`w-1.5 h-1.5 rounded-full ${function(a){if(0===a.fetchedAt)return"bg-ink-mute";let b=Math.max(k(a.claude)??0,k(a.codex)??0);return b>=95?"bg-error":b>=80?"bg-secondary":"bg-primary"}(a)} ${a.loading?"animate-pulse":""}`}),(0,d.jsx)("span",{className:"font-mono tabular truncate",children:a.loading&&0===a.fetchedAt?"Probing…":function(a){if(0===a.fetchedAt)return"Live quota";let b=k(a.claude);return null!==b&&a.claude?.primary?`Claude ${Math.round(b)}% \xb7 ${l(a.claude.primary.resetsAt)}`:"Live quota"}(a)})]}),c&&f&&"undefined"!=typeof document&&(0,j.createPortal)((0,d.jsx)(n,{state:a,loading:a.loading,anchorRect:f,onEnter:p,onLeave:r}),document.body)]})}function n({state:a,loading:b,anchorRect:c,onEnter:e,onLeave:f}){let g={position:"fixed",left:c.right+8,top:c.top,backgroundColor:"#1c2026",isolation:"isolate"};return(0,d.jsx)("div",{role:"dialog",onMouseEnter:e,onMouseLeave:f,className:"w-72 z-[9999] rounded-lg border border-surface-3 p-4 space-y-4 shadow-[0_20px_60px_-10px_rgba(0,0,0,0.8)]",style:g,children:b&&0===a.fetchedAt?(0,d.jsx)("div",{className:"text-body-sm text-ink-mute",children:"Probing Anthropic & OpenAI…"}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(o,{kpi:a.claude}),(0,d.jsx)("div",{className:"border-t border-surface-2"}),(0,d.jsx)(o,{kpi:a.codex}),(0,d.jsx)("div",{className:"text-[10px] text-ink-mute font-mono tabular pt-1 border-t border-surface-2",children:0===a.fetchedAt?"never probed":`updated ${function(a){let b=Date.now()-a;return b<1e3?"just now":b<6e4?`${Math.round(b/1e3)}s ago`:`${Math.round(b/6e4)}m ago`}(a.fetchedAt)} \xb7 hover again after 60s to refresh`})]})})}function o({kpi:a}){if(!a)return(0,d.jsx)("div",{className:"text-body-sm text-ink-mute",children:"No data."});let b="claude"===a.provider?"Claude":"Codex";return(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)("div",{className:"flex items-baseline justify-between",children:[(0,d.jsx)("span",{className:"text-label-caps text-ink-dim",children:b}),a.ok&&a.planType&&(0,d.jsx)("span",{className:"text-[10px] text-ink-mute font-mono uppercase tracking-wide",children:a.planType})]}),a.ok?(0,d.jsxs)(d.Fragment,{children:[a.primary&&(0,d.jsx)(p,{label:a.primary.label,pct:a.primary.pct,resetsAt:a.primary.resetsAt,accent:"primary"}),a.secondary&&(0,d.jsx)(p,{label:a.secondary.label,pct:a.secondary.pct,resetsAt:a.secondary.resetsAt,accent:"secondary"}),!a.primary&&!a.secondary&&(0,d.jsx)("div",{className:"text-body-sm text-ink-mute",children:"No rate-limit headers returned."})]}):(0,d.jsx)("div",{className:"text-[11px] text-ink-mute leading-relaxed",children:a.error})]})}function p({label:a,pct:b,resetsAt:c,accent:e}){return(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-baseline justify-between text-body-sm",children:[(0,d.jsx)("span",{className:"text-ink font-mono uppercase tracking-wider text-[10px]",children:a}),(0,d.jsxs)("span",{className:"font-mono tabular text-ink",children:[Math.round(b),"%"]})]}),(0,d.jsx)("div",{className:"h-1 bg-surface-2 rounded-full overflow-hidden mt-1",children:(0,d.jsx)("div",{className:`h-full ${"primary"===e?"bg-primary":"bg-secondary"}`,style:{width:`${Math.min(100,Math.max(0,b))}%`}})}),(0,d.jsxs)("div",{className:"text-[10px] text-ink-mute font-mono tabular mt-0.5",children:["resets in ",l(c)]})]})}function q(a,b){if(!b||!("ok"in b))return{provider:a,ok:!1,observedAt:Date.now(),planType:null,primary:null,secondary:null,error:"unexpected response"};if(!b.ok)return{provider:a,ok:!1,observedAt:Date.now(),planType:null,primary:null,secondary:null,error:b.error};let c=b.snapshot;return{provider:a,ok:!0,observedAt:c.observedAt,planType:c.planType,primary:c.primary?{pct:c.primary.pct,resetsAt:c.primary.resetsAt,label:"claude"===a?"5h":"1m"}:null,secondary:c.secondary?{pct:c.secondary.pct,resetsAt:c.secondary.resetsAt,label:"7d"}:null}}let r=[{href:"/",label:"Dashboard",icon:"◧"},{href:"/timeline",label:"Timeline",icon:"☰"},{href:"/projects",label:"Projects",icon:"▦"},{href:"/sessions",label:"Sessions",icon:"⌘"},{href:"/analytics",label:"Analytics",icon:"⌁"}];function s(){let a=(0,g.usePathname)();return(0,d.jsxs)("aside",{className:"w-56 shrink-0 border-r border-surface-2 bg-surface-0 flex flex-col sticky top-0 h-screen self-start",children:[(0,d.jsxs)("div",{className:"px-5 border-b border-surface-2 h-[72px] flex flex-col justify-center",children:[(0,d.jsxs)("div",{className:"flex items-baseline gap-1.5 leading-none",children:[(0,d.jsx)("span",{className:"text-primary text-base",children:"◧"}),(0,d.jsxs)("span",{className:"text-lg font-bold tracking-tight",children:[(0,d.jsx)("span",{className:"text-ink-dim",children:"Agent"}),(0,d.jsx)("span",{className:"text-primary",children:"Graphed"})]})]}),(0,d.jsx)("div",{className:"text-[10px] uppercase tracking-wider text-ink-mute mt-1.5",children:"See your AI work"})]}),(0,d.jsx)(m,{}),(0,d.jsx)("nav",{className:"px-2 py-3 flex-1 flex flex-col gap-0.5",children:r.map(b=>{let c="/"===b.href?"/"===a:a.startsWith(b.href);return(0,d.jsxs)(f(),{href:b.href,className:(0,h.A)("flex items-center gap-3 px-3 py-2 rounded text-[13px] transition-colors",c?"bg-surface-2 text-primary border-l-2 border-primary -ml-px":"text-ink-dim hover:text-ink hover:bg-surface-1"),children:[(0,d.jsx)("span",{className:"text-base w-4 text-center opacity-80",children:b.icon}),(0,d.jsx)("span",{children:b.label})]},b.href)})}),(0,d.jsx)("div",{className:"px-2 py-3 border-t border-surface-2",children:(0,d.jsxs)(f(),{href:"/settings",className:(0,h.A)("flex items-center gap-3 px-3 py-2 rounded text-[13px] transition-colors",a.startsWith("/settings")?"bg-surface-2 text-primary border-l-2 border-primary -ml-px":"text-ink-dim hover:text-ink hover:bg-surface-1"),children:[(0,d.jsx)("span",{className:"text-base w-4 text-center opacity-80",children:"⚙"}),(0,d.jsx)("span",{children:"Settings"})]})})]})}},87907:(a,b,c)=>{"use strict";c.d(b,{Sidebar:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call Sidebar() from the server but Sidebar 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.")},"/home/runner/work/agentgraphed/agentgraphed/src/components/Sidebar.tsx","Sidebar")}};
@@ -3,8 +3,8 @@
3
3
  "functions": {
4
4
  "/api/ingest-local": {},
5
5
  "/api/quota-probe": {},
6
- "/api/share/session/[id]": {},
7
6
  "/api/share/project/[id]": {},
7
+ "/api/share/session/[id]": {},
8
8
  "/api/share/dashboard": {}
9
9
  }
10
10
  }
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:["static/chunks/webpack-ad3ccc1e9012aeca.js","static/chunks/4bd1b696-409494caf8c83275.js","static/chunks/255-69a4a78fac9becef.js","static/chunks/main-app-c9ae70e5bb48ac77.js"],rootMainFilesTree:{},pages:{"/_app":["static/chunks/webpack-ad3ccc1e9012aeca.js","static/chunks/framework-35bf239ac782ce4d.js","static/chunks/main-b5463fd6c6621726.js","static/chunks/pages/_app-5addca2b3b969fde.js"],"/_error":["static/chunks/webpack-ad3ccc1e9012aeca.js","static/chunks/framework-35bf239ac782ce4d.js","static/chunks/main-b5463fd6c6621726.js","static/chunks/pages/_error-022e4ac7bbb9914f.js"]},ampFirstPages:[]},globalThis.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:["static/chunks/webpack-ad3ccc1e9012aeca.js","static/chunks/4bd1b696-409494caf8c83275.js","static/chunks/255-69a4a78fac9becef.js","static/chunks/main-app-27b331c894fe5037.js"],rootMainFilesTree:{},pages:{"/_app":["static/chunks/webpack-ad3ccc1e9012aeca.js","static/chunks/framework-35bf239ac782ce4d.js","static/chunks/main-b5463fd6c6621726.js","static/chunks/pages/_app-5addca2b3b969fde.js"],"/_error":["static/chunks/webpack-ad3ccc1e9012aeca.js","static/chunks/framework-35bf239ac782ce4d.js","static/chunks/main-b5463fd6c6621726.js","static/chunks/pages/_error-022e4ac7bbb9914f.js"]},ampFirstPages:[]},globalThis.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];
@@ -1 +1 @@
1
- <!DOCTYPE html><!--A6dvfHR2KYz42pasM2hyV--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/fff107f5d96e58c9.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-ad3ccc1e9012aeca.js"/><script src="/_next/static/chunks/4bd1b696-409494caf8c83275.js" async=""></script><script src="/_next/static/chunks/255-69a4a78fac9becef.js" async=""></script><script src="/_next/static/chunks/main-app-c9ae70e5bb48ac77.js" async=""></script><script src="/_next/static/chunks/619-f072ac750404f9da.js" async=""></script><script src="/_next/static/chunks/app/layout-4527370a1e451501.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>AgentGraphed</title><meta name="description" content="Local-first analytics for AI-assisted development"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div class="flex min-h-screen"><aside class="w-56 shrink-0 border-r border-surface-2 bg-surface-0 flex flex-col sticky top-0 h-screen self-start"><div class="px-5 border-b border-surface-2 h-[72px] flex flex-col justify-center"><div class="flex items-baseline gap-1.5 leading-none"><span class="text-primary text-base">◧</span><span class="text-lg font-bold tracking-tight"><span class="text-ink-dim">Agent</span><span class="text-primary">Graphed</span></span></div><div class="text-[10px] uppercase tracking-wider text-ink-mute mt-1.5">See your AI work</div></div><div class="relative px-3 py-2 border-b border-surface-2"><button type="button" class="w-full flex items-center gap-2 text-[12px] text-ink-dim hover:text-ink" aria-haspopup="dialog" aria-expanded="false"><span class="w-1.5 h-1.5 rounded-full bg-ink-mute "></span><span class="font-mono tabular truncate">Live quota</span></button></div><nav class="px-2 py-3 flex-1 flex flex-col gap-0.5"><a class="flex items-center gap-3 px-3 py-2 rounded text-[13px] transition-colors text-ink-dim hover:text-ink hover:bg-surface-1" href="/"><span class="text-base w-4 text-center opacity-80">◧</span><span>Dashboard</span></a><a class="flex items-center gap-3 px-3 py-2 rounded text-[13px] transition-colors text-ink-dim hover:text-ink hover:bg-surface-1" href="/timeline"><span class="text-base w-4 text-center opacity-80">☰</span><span>Timeline</span></a><a class="flex items-center gap-3 px-3 py-2 rounded text-[13px] transition-colors text-ink-dim hover:text-ink hover:bg-surface-1" href="/projects"><span class="text-base w-4 text-center opacity-80">▦</span><span>Projects</span></a><a class="flex items-center gap-3 px-3 py-2 rounded text-[13px] transition-colors text-ink-dim hover:text-ink hover:bg-surface-1" href="/sessions"><span class="text-base w-4 text-center opacity-80">⌘</span><span>Sessions</span></a><a class="flex items-center gap-3 px-3 py-2 rounded text-[13px] transition-colors text-ink-dim hover:text-ink hover:bg-surface-1" href="/analytics"><span class="text-base w-4 text-center opacity-80">⌁</span><span>Analytics</span></a></nav><div class="px-2 py-3 border-t border-surface-2"><a class="flex items-center gap-3 px-3 py-2 rounded text-[13px] transition-colors text-ink-dim hover:text-ink hover:bg-surface-1" href="/settings"><span class="text-base w-4 text-center opacity-80">⚙</span><span>Settings</span></a></div></aside><main class="flex-1 min-w-0"><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>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:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main></div><script src="/_next/static/chunks/webpack-ad3ccc1e9012aeca.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[82259,[\"619\",\"static/chunks/619-f072ac750404f9da.js\",\"177\",\"static/chunks/app/layout-4527370a1e451501.js\"],\"Sidebar\"]\n3:I[9766,[],\"\"]\n4:I[98924,[],\"\"]\n5:I[24431,[],\"OutletBoundary\"]\n7:I[15278,[],\"AsyncMetadataOutlet\"]\n9:I[24431,[],\"ViewportBoundary\"]\nb:I[24431,[],\"MetadataBoundary\"]\nc:\"$Sreact.suspense\"\ne:I[57150,[],\"\"]\n:HL[\"/_next/static/css/fff107f5d96e58c9.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"A6dvfHR2KYz42pasM2hyV\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/fff107f5d96e58c9.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"flex min-h-screen\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"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)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$L6\",[\"$\",\"$L7\",null,{\"promise\":\"$@8\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$L9\",null,{\"children\":\"$La\"}],null],[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$c\",null,{\"fallback\":null,\"children\":\"$Ld\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\n"])</script><script>self.__next_f.push([1,"8:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"AgentGraphed\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Local-first analytics for AI-assisted development\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"d:\"$8:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--hnOq_d_GplXbWU5EnSBzF--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/fff107f5d96e58c9.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-ad3ccc1e9012aeca.js"/><script src="/_next/static/chunks/4bd1b696-409494caf8c83275.js" async=""></script><script src="/_next/static/chunks/255-69a4a78fac9becef.js" async=""></script><script src="/_next/static/chunks/main-app-27b331c894fe5037.js" async=""></script><script src="/_next/static/chunks/619-f072ac750404f9da.js" async=""></script><script src="/_next/static/chunks/app/layout-bbab14e77aaeeb67.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>AgentGraphed</title><meta name="description" content="Local-first analytics for AI-assisted development"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div class="flex min-h-screen"><aside class="w-56 shrink-0 border-r border-surface-2 bg-surface-0 flex flex-col sticky top-0 h-screen self-start"><div class="px-5 border-b border-surface-2 h-[72px] flex flex-col justify-center"><div class="flex items-baseline gap-1.5 leading-none"><span class="text-primary text-base">◧</span><span class="text-lg font-bold tracking-tight"><span class="text-ink-dim">Agent</span><span class="text-primary">Graphed</span></span></div><div class="text-[10px] uppercase tracking-wider text-ink-mute mt-1.5">See your AI work</div></div><div class="relative px-3 py-2 border-b border-surface-2"><button type="button" class="w-full flex items-center gap-2 text-[12px] text-ink-dim hover:text-ink" aria-haspopup="dialog" aria-expanded="false"><span class="w-1.5 h-1.5 rounded-full bg-ink-mute "></span><span class="font-mono tabular truncate">Live quota</span></button></div><nav class="px-2 py-3 flex-1 flex flex-col gap-0.5"><a class="flex items-center gap-3 px-3 py-2 rounded text-[13px] transition-colors text-ink-dim hover:text-ink hover:bg-surface-1" href="/"><span class="text-base w-4 text-center opacity-80">◧</span><span>Dashboard</span></a><a class="flex items-center gap-3 px-3 py-2 rounded text-[13px] transition-colors text-ink-dim hover:text-ink hover:bg-surface-1" href="/timeline"><span class="text-base w-4 text-center opacity-80">☰</span><span>Timeline</span></a><a class="flex items-center gap-3 px-3 py-2 rounded text-[13px] transition-colors text-ink-dim hover:text-ink hover:bg-surface-1" href="/projects"><span class="text-base w-4 text-center opacity-80">▦</span><span>Projects</span></a><a class="flex items-center gap-3 px-3 py-2 rounded text-[13px] transition-colors text-ink-dim hover:text-ink hover:bg-surface-1" href="/sessions"><span class="text-base w-4 text-center opacity-80">⌘</span><span>Sessions</span></a><a class="flex items-center gap-3 px-3 py-2 rounded text-[13px] transition-colors text-ink-dim hover:text-ink hover:bg-surface-1" href="/analytics"><span class="text-base w-4 text-center opacity-80">⌁</span><span>Analytics</span></a></nav><div class="px-2 py-3 border-t border-surface-2"><a class="flex items-center gap-3 px-3 py-2 rounded text-[13px] transition-colors text-ink-dim hover:text-ink hover:bg-surface-1" href="/settings"><span class="text-base w-4 text-center opacity-80">⚙</span><span>Settings</span></a></div></aside><main class="flex-1 min-w-0"><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>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:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main></div><script src="/_next/static/chunks/webpack-ad3ccc1e9012aeca.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[82259,[\"619\",\"static/chunks/619-f072ac750404f9da.js\",\"177\",\"static/chunks/app/layout-bbab14e77aaeeb67.js\"],\"Sidebar\"]\n3:I[9766,[],\"\"]\n4:I[98924,[],\"\"]\n5:I[24431,[],\"OutletBoundary\"]\n7:I[15278,[],\"AsyncMetadataOutlet\"]\n9:I[24431,[],\"ViewportBoundary\"]\nb:I[24431,[],\"MetadataBoundary\"]\nc:\"$Sreact.suspense\"\ne:I[57150,[],\"\"]\n:HL[\"/_next/static/css/fff107f5d96e58c9.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"hnOq_d-GplXbWU5EnSBzF\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/fff107f5d96e58c9.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"flex min-h-screen\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 min-w-0\",\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"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)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$L6\",[\"$\",\"$L7\",null,{\"promise\":\"$@8\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$L9\",null,{\"children\":\"$La\"}],null],[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$c\",null,{\"fallback\":null,\"children\":\"$Ld\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\n"])</script><script>self.__next_f.push([1,"8:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"AgentGraphed\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Local-first analytics for AI-assisted development\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"d:\"$8:metadata\"\n"])</script></body></html>
@@ -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-ad3ccc1e9012aeca.js" defer=""></script><script src="/_next/static/chunks/framework-35bf239ac782ce4d.js" defer=""></script><script src="/_next/static/chunks/main-b5463fd6c6621726.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/A6dvfHR2KYz42pasM2hyV/_buildManifest.js" defer=""></script><script src="/_next/static/A6dvfHR2KYz42pasM2hyV/_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":"A6dvfHR2KYz42pasM2hyV","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-ad3ccc1e9012aeca.js" defer=""></script><script src="/_next/static/chunks/framework-35bf239ac782ce4d.js" defer=""></script><script src="/_next/static/chunks/main-b5463fd6c6621726.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/hnOq_d-GplXbWU5EnSBzF/_buildManifest.js" defer=""></script><script src="/_next/static/hnOq_d-GplXbWU5EnSBzF/_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":"hnOq_d-GplXbWU5EnSBzF","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- self.__RSC_SERVER_MANIFEST="{\"node\":{\"008f460900948db81fa93a39d300e99878e38d9b12\":{\"workers\":{\"app/settings/page\":{\"moduleId\":\"78693\",\"async\":false}},\"layer\":{\"app/settings/page\":\"rsc\"},\"filename\":\"app/settings/page.tsx\",\"exportedName\":\"$$RSC_SERVER_ACTION_1\"},\"407e7501900f7d08e5ffe8a75a7883995b4f40a735\":{\"workers\":{\"app/settings/page\":{\"moduleId\":\"78693\",\"async\":false}},\"layer\":{\"app/settings/page\":\"rsc\"},\"filename\":\"app/settings/page.tsx\",\"exportedName\":\"$$RSC_SERVER_ACTION_0\"},\"403820812a9461424d17b14bf3b24acd13354c2523\":{\"workers\":{\"app/settings/page\":{\"moduleId\":\"20929\",\"async\":false}},\"layer\":{\"app/settings/page\":\"action-browser\"},\"filename\":\"app/settings/llm-actions.ts\",\"exportedName\":\"setAutoClassifyAction\"},\"40acb06b98d922bbaa705775c5e053590069080d2e\":{\"workers\":{\"app/settings/page\":{\"moduleId\":\"20929\",\"async\":false}},\"layer\":{\"app/settings/page\":\"action-browser\"},\"filename\":\"app/settings/llm-actions.ts\",\"exportedName\":\"saveLlmAction\"},\"40d6068a0e90cc763358acc206b8d68d79340910e7\":{\"workers\":{\"app/settings/page\":{\"moduleId\":\"20929\",\"async\":false}},\"layer\":{\"app/settings/page\":\"action-browser\"},\"filename\":\"app/settings/llm-actions.ts\",\"exportedName\":\"clearKeyAction\"},\"404e24f64e5bf12ba9bd1bba81003a96aa21b8f8f0\":{\"workers\":{\"app/settings/page\":{\"moduleId\":\"20929\",\"async\":false},\"app/page\":{\"moduleId\":\"84175\",\"async\":false}},\"layer\":{\"app/settings/page\":\"action-browser\",\"app/page\":\"action-browser\"},\"filename\":\"app/settings/classify-actions.ts\",\"exportedName\":\"estimateAction\"},\"40ebbe581be2d6a1560853a1f470f6bef259ff3ce0\":{\"workers\":{\"app/settings/page\":{\"moduleId\":\"20929\",\"async\":false},\"app/page\":{\"moduleId\":\"84175\",\"async\":false}},\"layer\":{\"app/settings/page\":\"action-browser\",\"app/page\":\"action-browser\"},\"filename\":\"app/settings/classify-actions.ts\",\"exportedName\":\"classifyAction\"},\"409df161bd853257579b553d81125acb8a9b5b40c8\":{\"workers\":{\"app/sessions/[id]/page\":{\"moduleId\":\"90692\",\"async\":false}},\"layer\":{\"app/sessions/[id]/page\":\"action-browser\"},\"filename\":\"app/sessions/[id]/actions.ts\",\"exportedName\":\"generateContextAction\"}},\"edge\":{},\"encryptionKey\":\"process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY\"}"
1
+ self.__RSC_SERVER_MANIFEST="{\"node\":{\"0050465e7d907c7ec87391dcd9ace86dd166667ce7\":{\"workers\":{\"app/settings/page\":{\"moduleId\":\"19910\",\"async\":false}},\"layer\":{\"app/settings/page\":\"rsc\"},\"filename\":\"app/settings/page.tsx\",\"exportedName\":\"$$RSC_SERVER_ACTION_1\"},\"40720adea9e3c4ed579d32ea9cb9ea6646de843609\":{\"workers\":{\"app/settings/page\":{\"moduleId\":\"19910\",\"async\":false}},\"layer\":{\"app/settings/page\":\"rsc\"},\"filename\":\"app/settings/page.tsx\",\"exportedName\":\"$$RSC_SERVER_ACTION_0\"},\"408982b0f25ec9efd83542ecf8e59c4d5216a7d2cd\":{\"workers\":{\"app/sessions/[id]/page\":{\"moduleId\":\"91255\",\"async\":false}},\"layer\":{\"app/sessions/[id]/page\":\"action-browser\"},\"filename\":\"app/sessions/[id]/actions.ts\",\"exportedName\":\"generateContextAction\"},\"400132447f4cc6e314911c7e2bdb0e15a790880ed3\":{\"workers\":{\"app/page\":{\"moduleId\":\"17384\",\"async\":false},\"app/settings/page\":{\"moduleId\":\"7851\",\"async\":false}},\"layer\":{\"app/page\":\"action-browser\",\"app/settings/page\":\"action-browser\"},\"filename\":\"app/settings/classify-actions.ts\",\"exportedName\":\"estimateAction\"},\"404bcb28ddc5fd7d11963dbddc1e3bb5cd34f55700\":{\"workers\":{\"app/page\":{\"moduleId\":\"17384\",\"async\":false},\"app/settings/page\":{\"moduleId\":\"7851\",\"async\":false}},\"layer\":{\"app/page\":\"action-browser\",\"app/settings/page\":\"action-browser\"},\"filename\":\"app/settings/classify-actions.ts\",\"exportedName\":\"classifyAction\"},\"40556a6d15487b2f88e9deb306be92feff8f744ca5\":{\"workers\":{\"app/settings/page\":{\"moduleId\":\"7851\",\"async\":false}},\"layer\":{\"app/settings/page\":\"action-browser\"},\"filename\":\"app/settings/llm-actions.ts\",\"exportedName\":\"setAutoClassifyAction\"},\"40d025f6325797c124231a3041a7cdb8e31fbbda34\":{\"workers\":{\"app/settings/page\":{\"moduleId\":\"7851\",\"async\":false}},\"layer\":{\"app/settings/page\":\"action-browser\"},\"filename\":\"app/settings/llm-actions.ts\",\"exportedName\":\"saveLlmAction\"},\"40eafd3ee6454f54ccab40a274aa7dd142f80dd2c4\":{\"workers\":{\"app/settings/page\":{\"moduleId\":\"7851\",\"async\":false}},\"layer\":{\"app/settings/page\":\"action-browser\"},\"filename\":\"app/settings/llm-actions.ts\",\"exportedName\":\"clearKeyAction\"}},\"edge\":{},\"encryptionKey\":\"process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY\"}"
@@ -1 +1 @@
1
- {"node":{"008f460900948db81fa93a39d300e99878e38d9b12":{"workers":{"app/settings/page":{"moduleId":"78693","async":false}},"layer":{"app/settings/page":"rsc"},"filename":"app/settings/page.tsx","exportedName":"$$RSC_SERVER_ACTION_1"},"407e7501900f7d08e5ffe8a75a7883995b4f40a735":{"workers":{"app/settings/page":{"moduleId":"78693","async":false}},"layer":{"app/settings/page":"rsc"},"filename":"app/settings/page.tsx","exportedName":"$$RSC_SERVER_ACTION_0"},"403820812a9461424d17b14bf3b24acd13354c2523":{"workers":{"app/settings/page":{"moduleId":"20929","async":false}},"layer":{"app/settings/page":"action-browser"},"filename":"app/settings/llm-actions.ts","exportedName":"setAutoClassifyAction"},"40acb06b98d922bbaa705775c5e053590069080d2e":{"workers":{"app/settings/page":{"moduleId":"20929","async":false}},"layer":{"app/settings/page":"action-browser"},"filename":"app/settings/llm-actions.ts","exportedName":"saveLlmAction"},"40d6068a0e90cc763358acc206b8d68d79340910e7":{"workers":{"app/settings/page":{"moduleId":"20929","async":false}},"layer":{"app/settings/page":"action-browser"},"filename":"app/settings/llm-actions.ts","exportedName":"clearKeyAction"},"404e24f64e5bf12ba9bd1bba81003a96aa21b8f8f0":{"workers":{"app/settings/page":{"moduleId":"20929","async":false},"app/page":{"moduleId":"84175","async":false}},"layer":{"app/settings/page":"action-browser","app/page":"action-browser"},"filename":"app/settings/classify-actions.ts","exportedName":"estimateAction"},"40ebbe581be2d6a1560853a1f470f6bef259ff3ce0":{"workers":{"app/settings/page":{"moduleId":"20929","async":false},"app/page":{"moduleId":"84175","async":false}},"layer":{"app/settings/page":"action-browser","app/page":"action-browser"},"filename":"app/settings/classify-actions.ts","exportedName":"classifyAction"},"409df161bd853257579b553d81125acb8a9b5b40c8":{"workers":{"app/sessions/[id]/page":{"moduleId":"90692","async":false}},"layer":{"app/sessions/[id]/page":"action-browser"},"filename":"app/sessions/[id]/actions.ts","exportedName":"generateContextAction"}},"edge":{},"encryptionKey":"m9YFlIv6t7sgl4annlw7B5olot0tt3UsT/jNmhsxUWE="}
1
+ {"node":{"0050465e7d907c7ec87391dcd9ace86dd166667ce7":{"workers":{"app/settings/page":{"moduleId":"19910","async":false}},"layer":{"app/settings/page":"rsc"},"filename":"app/settings/page.tsx","exportedName":"$$RSC_SERVER_ACTION_1"},"40720adea9e3c4ed579d32ea9cb9ea6646de843609":{"workers":{"app/settings/page":{"moduleId":"19910","async":false}},"layer":{"app/settings/page":"rsc"},"filename":"app/settings/page.tsx","exportedName":"$$RSC_SERVER_ACTION_0"},"408982b0f25ec9efd83542ecf8e59c4d5216a7d2cd":{"workers":{"app/sessions/[id]/page":{"moduleId":"91255","async":false}},"layer":{"app/sessions/[id]/page":"action-browser"},"filename":"app/sessions/[id]/actions.ts","exportedName":"generateContextAction"},"400132447f4cc6e314911c7e2bdb0e15a790880ed3":{"workers":{"app/page":{"moduleId":"17384","async":false},"app/settings/page":{"moduleId":"7851","async":false}},"layer":{"app/page":"action-browser","app/settings/page":"action-browser"},"filename":"app/settings/classify-actions.ts","exportedName":"estimateAction"},"404bcb28ddc5fd7d11963dbddc1e3bb5cd34f55700":{"workers":{"app/page":{"moduleId":"17384","async":false},"app/settings/page":{"moduleId":"7851","async":false}},"layer":{"app/page":"action-browser","app/settings/page":"action-browser"},"filename":"app/settings/classify-actions.ts","exportedName":"classifyAction"},"40556a6d15487b2f88e9deb306be92feff8f744ca5":{"workers":{"app/settings/page":{"moduleId":"7851","async":false}},"layer":{"app/settings/page":"action-browser"},"filename":"app/settings/llm-actions.ts","exportedName":"setAutoClassifyAction"},"40d025f6325797c124231a3041a7cdb8e31fbbda34":{"workers":{"app/settings/page":{"moduleId":"7851","async":false}},"layer":{"app/settings/page":"action-browser"},"filename":"app/settings/llm-actions.ts","exportedName":"saveLlmAction"},"40eafd3ee6454f54ccab40a274aa7dd142f80dd2c4":{"workers":{"app/settings/page":{"moduleId":"7851","async":false}},"layer":{"app/settings/page":"action-browser"},"filename":"app/settings/llm-actions.ts","exportedName":"clearKeyAction"}},"edge":{},"encryptionKey":"pyO0MZG8UeMGW6JW9pANY7JTXykCxj2Y41qwtrNECVU="}
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[492],{24585:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"styles",{enumerable:!0,get:function(){return l}});let l={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},38886:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTTPAccessErrorFallback",{enumerable:!0,get:function(){return o}});let r=l(95155),n=l(24585);function o(e){let{status:t,message:l}=e;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("title",{children:t+": "+l}),(0,r.jsx)("div",{style:n.styles.error,children:(0,r.jsxs)("div",{children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"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)}}"}}),(0,r.jsx)("h1",{className:"next-error-h1",style:n.styles.h1,children:t}),(0,r.jsx)("div",{style:n.styles.desc,children:(0,r.jsx)("h2",{style:n.styles.h2,children:l})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},77346:(e,t,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return l(79520)}])},79520:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let r=l(95155),n=l(38886),o=function(){return(0,r.jsx)("html",{children:(0,r.jsx)("body",{children:(0,r.jsx)(n.HTTPAccessErrorFallback,{status:404,message:"This page could not be found."})})})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},e=>{e.O(0,[441,255,358],()=>e(e.s=77346)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[492],{24585:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"styles",{enumerable:!0,get:function(){return l}});let l={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},31037:(e,t,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return l(79520)}])},38886:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTTPAccessErrorFallback",{enumerable:!0,get:function(){return o}});let r=l(95155),n=l(24585);function o(e){let{status:t,message:l}=e;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("title",{children:t+": "+l}),(0,r.jsx)("div",{style:n.styles.error,children:(0,r.jsxs)("div",{children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"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)}}"}}),(0,r.jsx)("h1",{className:"next-error-h1",style:n.styles.h1,children:t}),(0,r.jsx)("div",{style:n.styles.desc,children:(0,r.jsx)("h2",{style:n.styles.h2,children:l})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},79520:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let r=l(95155),n=l(38886),o=function(){return(0,r.jsx)("html",{children:(0,r.jsx)("body",{children:(0,r.jsx)(n.HTTPAccessErrorFallback,{status:404,message:"This page could not be found."})})})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},e=>{e.O(0,[441,255,358],()=>e(e.s=31037)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[745],{11796:(e,s,a)=>{"use strict";a.d(s,{AnalyticsCharts:()=>p});var t=a(95155),i=a(26991),r=a(73850),n=a(68425),o=a(47734),l=a(73697),c=a(23508),d=a(77568),x=a(98128),m=a(16533),h=a(78765),f=a(12235),y=a(69386),k=a(20467);let j="#00f5ff",u={claude:"#00f5ff",codex:"#00ffab",unknown:"#6E7681"};function p(e){let{daily:s,providers:a,models:p,label:b="last 30 days"}=e,v=s.map(e=>({...e,label:e.day.slice(5)}));return(0,t.jsxs)("div",{className:"space-y-7",children:[(0,t.jsxs)("div",{className:"card",children:[(0,t.jsxs)("div",{className:"card-header",children:["Activity Over Time — ",b]}),(0,t.jsx)("div",{className:"p-4 h-72",children:(0,t.jsx)(i.u,{width:"100%",height:"100%",children:(0,t.jsxs)(r.Q,{data:v,margin:{top:8,right:12,bottom:0,left:-8},children:[(0,t.jsx)("defs",{children:(0,t.jsxs)("linearGradient",{id:"tokens",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,t.jsx)("stop",{offset:"0%",stopColor:j,stopOpacity:.3}),(0,t.jsx)("stop",{offset:"100%",stopColor:j,stopOpacity:0})]})}),(0,t.jsx)(n.d,{stroke:"#262a31",strokeDasharray:"2 4",vertical:!1}),(0,t.jsx)(o.W,{dataKey:"label",tick:{fill:"#849495",fontSize:11,fontFamily:"JetBrains Mono"},axisLine:{stroke:"#262a31"},tickLine:!1}),(0,t.jsx)(l.h,{tick:{fill:"#849495",fontSize:11,fontFamily:"JetBrains Mono"},axisLine:!1,tickLine:!1,tickFormatter:e=>(0,k.yj)(e)}),(0,t.jsx)(c.m,{cursor:{stroke:"#00f5ff",strokeOpacity:.3},contentStyle:{background:"#181c22",border:"1px solid #00f5ff",borderRadius:6,fontSize:12,color:"#dfe2eb"},formatter:e=>(0,k.yj)(e),labelFormatter:e=>"Day ".concat(e)}),(0,t.jsx)(d.G,{type:"monotone",dataKey:"tokens",stroke:j,strokeWidth:2,fill:"url(#tokens)"})]})})})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,t.jsxs)("div",{className:"card",children:[(0,t.jsx)("div",{className:"card-header",children:"Sessions Per Day"}),(0,t.jsx)("div",{className:"p-4 h-60",children:(0,t.jsx)(i.u,{width:"100%",height:"100%",children:(0,t.jsxs)(x.E,{data:v,margin:{top:8,right:8,bottom:0,left:-8},children:[(0,t.jsx)(n.d,{stroke:"#262a31",strokeDasharray:"2 4",vertical:!1}),(0,t.jsx)(o.W,{dataKey:"label",tick:{fill:"#849495",fontSize:10,fontFamily:"JetBrains Mono"},axisLine:{stroke:"#262a31"},tickLine:!1}),(0,t.jsx)(l.h,{tick:{fill:"#849495",fontSize:11,fontFamily:"JetBrains Mono"},axisLine:!1,tickLine:!1,allowDecimals:!1}),(0,t.jsx)(c.m,{contentStyle:{background:"#181c22",border:"1px solid #00ffab",borderRadius:6,fontSize:12,color:"#dfe2eb"}}),(0,t.jsx)(m.y,{dataKey:"sessions",fill:"#00ffab",radius:[2,2,0,0]})]})})})]}),(0,t.jsxs)("div",{className:"card",children:[(0,t.jsx)("div",{className:"card-header",children:"Provider Breakdown"}),(0,t.jsxs)("div",{className:"p-4 h-60 flex items-center gap-4",children:[(0,t.jsx)(i.u,{width:"50%",height:"100%",children:(0,t.jsxs)(h.r,{children:[(0,t.jsx)(f.F,{data:a,dataKey:"tokens",nameKey:"provider",innerRadius:45,outerRadius:75,stroke:"#10141a",strokeWidth:2,children:a.map(e=>(0,t.jsx)(y.f,{fill:u[e.provider]||"#6E7681"},e.provider))}),(0,t.jsx)(c.m,{contentStyle:{background:"#181c22",border:"1px solid #00f5ff",borderRadius:6,fontSize:12},formatter:e=>(0,k.yj)(e)})]})}),(0,t.jsx)("div",{className:"flex-1 space-y-2",children:a.map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-2 text-body-sm",children:[(0,t.jsx)("div",{className:"w-2.5 h-2.5 rounded-sm",style:{background:u[e.provider]||"#6E7681"}}),(0,t.jsx)("span",{className:"text-ink-dim capitalize flex-1",children:e.provider}),(0,t.jsx)("span",{className:"font-mono tabular text-ink",children:(0,k.yj)(e.tokens)})]},e.provider))})]})]})]}),(0,t.jsxs)("div",{className:"card",children:[(0,t.jsx)("div",{className:"card-header",children:"Model Breakdown"}),(0,t.jsx)("div",{className:"p-4 space-y-2",children:p.map(e=>{let s=Math.max(...p.map(e=>e.tokens),1),a=e.tokens/s*100;return(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex justify-between text-body-sm mb-1",children:[(0,t.jsx)("span",{className:"font-mono text-code-md text-ink truncate pr-2",children:e.model}),(0,t.jsxs)("span",{className:"font-mono tabular text-ink-mute",children:[(0,k.yj)(e.tokens)," \xb7 ",(0,k.F0)(e.cost)]})]}),(0,t.jsx)("div",{className:"h-1.5 bg-surface-2 rounded-full overflow-hidden",children:(0,t.jsx)("div",{className:"h-full bg-primary",style:{width:"".concat(a,"%")}})})]},e.model)})})]})]})}},20467:(e,s,a)=>{"use strict";function t(e){return e>=1e6?"".concat((e/1e6).toFixed(1),"M"):e>=1e3?"".concat((e/1e3).toFixed(1),"k"):e.toString()}function i(e){return e>=1e3?"$".concat(e.toFixed(0)):"$".concat(e.toFixed(2))}function r(e){let s=Math.floor(e/1e3);if(s<60)return"".concat(s,"s");let a=Math.floor(s/60);if(a<60)return"".concat(a,"m");let t=Math.floor(a/60);return"".concat(t,"h ").concat(a%60,"m")}a.d(s,{F0:()=>i,c5:()=>r,yj:()=>t})},48691:(e,s,a)=>{Promise.resolve().then(a.bind(a,11796)),Promise.resolve().then(a.bind(a,95925))},95925:(e,s,a)=>{"use strict";a.d(s,{RangePicker:()=>o});var t=a(95155),i=a(20063),r=a(12115);let n=[{key:"7d",label:"Last 7 days",days:7},{key:"30d",label:"Last 30 days",days:30},{key:"90d",label:"Last 90 days",days:90},{key:"all",label:"All time",days:null}];function o(e){let{current:s}=e,a=(0,i.useRouter)(),o=(0,i.usePathname)(),l=(0,i.useSearchParams)(),[c,d]=(0,r.useTransition)();return(0,t.jsx)("div",{className:"flex items-center gap-0.5 normal-case tracking-normal transition-opacity ".concat(c?"opacity-50":""),children:n.map(e=>(0,t.jsx)("button",{onClick:()=>(e=>{let s=new URLSearchParams(l.toString());"30d"===e?s.delete("range"):s.set("range",e);let t=s.toString();d(()=>{a.push(t?"".concat(o,"?").concat(t):o)})})(e.key),className:"px-2 py-0.5 text-[11px] rounded transition-colors font-mono ".concat(s===e.key?"bg-primary/15 text-primary":"text-ink-mute hover:text-ink-dim"),children:"all"===e.key?"All":e.key},e.key))})}}},e=>{e.O(0,[997,984,441,255,358],()=>e(e.s=48691)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[745],{11796:(e,s,a)=>{"use strict";a.d(s,{AnalyticsCharts:()=>p});var t=a(95155),i=a(26991),r=a(73850),n=a(68425),o=a(47734),l=a(73697),c=a(23508),d=a(77568),x=a(98128),m=a(16533),h=a(78765),f=a(12235),y=a(69386),k=a(20467);let j="#00f5ff",u={claude:"#00f5ff",codex:"#00ffab",unknown:"#6E7681"};function p(e){let{daily:s,providers:a,models:p,label:b="last 30 days"}=e,v=s.map(e=>({...e,label:e.day.slice(5)}));return(0,t.jsxs)("div",{className:"space-y-7",children:[(0,t.jsxs)("div",{className:"card",children:[(0,t.jsxs)("div",{className:"card-header",children:["Activity Over Time — ",b]}),(0,t.jsx)("div",{className:"p-4 h-72",children:(0,t.jsx)(i.u,{width:"100%",height:"100%",children:(0,t.jsxs)(r.Q,{data:v,margin:{top:8,right:12,bottom:0,left:-8},children:[(0,t.jsx)("defs",{children:(0,t.jsxs)("linearGradient",{id:"tokens",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,t.jsx)("stop",{offset:"0%",stopColor:j,stopOpacity:.3}),(0,t.jsx)("stop",{offset:"100%",stopColor:j,stopOpacity:0})]})}),(0,t.jsx)(n.d,{stroke:"#262a31",strokeDasharray:"2 4",vertical:!1}),(0,t.jsx)(o.W,{dataKey:"label",tick:{fill:"#849495",fontSize:11,fontFamily:"JetBrains Mono"},axisLine:{stroke:"#262a31"},tickLine:!1}),(0,t.jsx)(l.h,{tick:{fill:"#849495",fontSize:11,fontFamily:"JetBrains Mono"},axisLine:!1,tickLine:!1,tickFormatter:e=>(0,k.yj)(e)}),(0,t.jsx)(c.m,{cursor:{stroke:"#00f5ff",strokeOpacity:.3},contentStyle:{background:"#181c22",border:"1px solid #00f5ff",borderRadius:6,fontSize:12,color:"#dfe2eb"},formatter:e=>(0,k.yj)(e),labelFormatter:e=>"Day ".concat(e)}),(0,t.jsx)(d.G,{type:"monotone",dataKey:"tokens",stroke:j,strokeWidth:2,fill:"url(#tokens)"})]})})})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,t.jsxs)("div",{className:"card",children:[(0,t.jsx)("div",{className:"card-header",children:"Sessions Per Day"}),(0,t.jsx)("div",{className:"p-4 h-60",children:(0,t.jsx)(i.u,{width:"100%",height:"100%",children:(0,t.jsxs)(x.E,{data:v,margin:{top:8,right:8,bottom:0,left:-8},children:[(0,t.jsx)(n.d,{stroke:"#262a31",strokeDasharray:"2 4",vertical:!1}),(0,t.jsx)(o.W,{dataKey:"label",tick:{fill:"#849495",fontSize:10,fontFamily:"JetBrains Mono"},axisLine:{stroke:"#262a31"},tickLine:!1}),(0,t.jsx)(l.h,{tick:{fill:"#849495",fontSize:11,fontFamily:"JetBrains Mono"},axisLine:!1,tickLine:!1,allowDecimals:!1}),(0,t.jsx)(c.m,{contentStyle:{background:"#181c22",border:"1px solid #00ffab",borderRadius:6,fontSize:12,color:"#dfe2eb"}}),(0,t.jsx)(m.y,{dataKey:"sessions",fill:"#00ffab",radius:[2,2,0,0]})]})})})]}),(0,t.jsxs)("div",{className:"card",children:[(0,t.jsx)("div",{className:"card-header",children:"Provider Breakdown"}),(0,t.jsxs)("div",{className:"p-4 h-60 flex items-center gap-4",children:[(0,t.jsx)(i.u,{width:"50%",height:"100%",children:(0,t.jsxs)(h.r,{children:[(0,t.jsx)(f.F,{data:a,dataKey:"tokens",nameKey:"provider",innerRadius:45,outerRadius:75,stroke:"#10141a",strokeWidth:2,children:a.map(e=>(0,t.jsx)(y.f,{fill:u[e.provider]||"#6E7681"},e.provider))}),(0,t.jsx)(c.m,{contentStyle:{background:"#181c22",border:"1px solid #00f5ff",borderRadius:6,fontSize:12},formatter:e=>(0,k.yj)(e)})]})}),(0,t.jsx)("div",{className:"flex-1 space-y-2",children:a.map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-2 text-body-sm",children:[(0,t.jsx)("div",{className:"w-2.5 h-2.5 rounded-sm",style:{background:u[e.provider]||"#6E7681"}}),(0,t.jsx)("span",{className:"text-ink-dim capitalize flex-1",children:e.provider}),(0,t.jsx)("span",{className:"font-mono tabular text-ink",children:(0,k.yj)(e.tokens)})]},e.provider))})]})]})]}),(0,t.jsxs)("div",{className:"card",children:[(0,t.jsx)("div",{className:"card-header",children:"Model Breakdown"}),(0,t.jsx)("div",{className:"p-4 space-y-2",children:p.map(e=>{let s=Math.max(...p.map(e=>e.tokens),1),a=e.tokens/s*100;return(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex justify-between text-body-sm mb-1",children:[(0,t.jsx)("span",{className:"font-mono text-code-md text-ink truncate pr-2",children:e.model}),(0,t.jsxs)("span",{className:"font-mono tabular text-ink-mute",children:[(0,k.yj)(e.tokens)," \xb7 ",(0,k.F0)(e.cost)]})]}),(0,t.jsx)("div",{className:"h-1.5 bg-surface-2 rounded-full overflow-hidden",children:(0,t.jsx)("div",{className:"h-full bg-primary",style:{width:"".concat(a,"%")}})})]},e.model)})})]})]})}},20467:(e,s,a)=>{"use strict";function t(e){return e>=1e6?"".concat((e/1e6).toFixed(1),"M"):e>=1e3?"".concat((e/1e3).toFixed(1),"k"):e.toString()}function i(e){return e>=1e3?"$".concat(e.toFixed(0)):"$".concat(e.toFixed(2))}function r(e){let s=Math.floor(e/1e3);if(s<60)return"".concat(s,"s");let a=Math.floor(s/60);if(a<60)return"".concat(a,"m");let t=Math.floor(a/60);return"".concat(t,"h ").concat(a%60,"m")}a.d(s,{F0:()=>i,c5:()=>r,yj:()=>t})},28245:(e,s,a)=>{Promise.resolve().then(a.bind(a,11796)),Promise.resolve().then(a.bind(a,95925))},95925:(e,s,a)=>{"use strict";a.d(s,{RangePicker:()=>o});var t=a(95155),i=a(20063),r=a(12115);let n=[{key:"7d",label:"Last 7 days",days:7},{key:"30d",label:"Last 30 days",days:30},{key:"90d",label:"Last 90 days",days:90},{key:"all",label:"All time",days:null}];function o(e){let{current:s}=e,a=(0,i.useRouter)(),o=(0,i.usePathname)(),l=(0,i.useSearchParams)(),[c,d]=(0,r.useTransition)();return(0,t.jsx)("div",{className:"flex items-center gap-0.5 normal-case tracking-normal transition-opacity ".concat(c?"opacity-50":""),children:n.map(e=>(0,t.jsx)("button",{onClick:()=>(e=>{let s=new URLSearchParams(l.toString());"30d"===e?s.delete("range"):s.set("range",e);let t=s.toString();d(()=>{a.push(t?"".concat(o,"?").concat(t):o)})})(e.key),className:"px-2 py-0.5 text-[11px] rounded transition-colors font-mono ".concat(s===e.key?"bg-primary/15 text-primary":"text-ink-mute hover:text-ink-dim"),children:"all"===e.key?"All":e.key},e.key))})}}},e=>{e.O(0,[997,984,441,255,358],()=>e(e.s=28245)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{2821:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=function(){for(var e,t,r=0,n="",a=arguments.length;r<a;r++)(e=arguments[r])&&(t=function e(t){var r,n,a="";if("string"==typeof t||"number"==typeof t)a+=t;else if("object"==typeof t)if(Array.isArray(t)){var s=t.length;for(r=0;r<s;r++)t[r]&&(n=e(t[r]))&&(a&&(a+=" "),a+=n)}else for(n in t)t[n]&&(a&&(a+=" "),a+=n);return a}(e))&&(n&&(n+=" "),n+=t);return n}},13673:()=>{},16078:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,13673,23)),Promise.resolve().then(r.bind(r,82259))},20063:(e,t,r)=>{"use strict";var n=r(47260);r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}}),r.o(n,"useSearchParams")&&r.d(t,{useSearchParams:function(){return n.useSearchParams}})},82259:(e,t,r)=>{"use strict";r.d(t,{Sidebar:()=>y});var n=r(95155),a=r(52619),s=r.n(a),l=r(20063),o=r(2821),c=r(12115),i=r(47650);function d(e){var t,r,n,a;if(!e||!e.ok)return null;let s=null!=(n=null==(t=e.primary)?void 0:t.pct)?n:null,l=null!=(a=null==(r=e.secondary)?void 0:r.pct)?a:null;return null===s&&null===l?null:Math.max(null!=s?s:0,null!=l?l:0)}function u(e){let t=e-Date.now();if(t<=0&&t>-12e4)return"<1m";if(t<=0)return"resetting";let r=Math.round(t/6e4);if(r<1)return"<1m";if(r<60)return"".concat(r,"m");let n=Math.floor(r/60),a=r%60;return 0===a?"".concat(n,"h"):"".concat(n,"h").concat(a,"m")}function p(){let[e,t]=(0,c.useState)({claude:null,codex:null,fetchedAt:0,loading:!1}),[r,a]=(0,c.useState)(!1),[s,l]=(0,c.useState)(null),o=(0,c.useRef)(null),p=(0,c.useRef)(null);(0,c.useEffect)(()=>{if(!r||!o.current)return;let e=()=>{o.current&&l(o.current.getBoundingClientRect())};return e(),window.addEventListener("scroll",e,!0),window.addEventListener("resize",e),()=>{window.removeEventListener("scroll",e,!0),window.removeEventListener("resize",e)}},[r]);let m=(0,c.useCallback)(async()=>{t(e=>({...e,loading:!0}));let[e,r]=await Promise.all([fetch("/api/quota-probe?provider=claude",{method:"POST"}).then(e=>e.json()).catch(e=>({ok:!1,error:e.message})),fetch("/api/quota-probe?provider=codex",{method:"POST"}).then(e=>e.json()).catch(e=>({ok:!1,error:e.message}))]);t({claude:f("claude",e),codex:f("codex",r),fetchedAt:Date.now(),loading:!1})},[]);function h(){p.current&&clearTimeout(p.current),a(!0),Date.now()-e.fetchedAt>6e4&&!e.loading&&m()}function b(){p.current&&clearTimeout(p.current),p.current=setTimeout(()=>a(!1),120)}return(0,n.jsxs)("div",{ref:o,className:"relative px-3 py-2 border-b border-surface-2",onMouseEnter:h,onMouseLeave:b,onFocus:h,onBlur:b,children:[(0,n.jsxs)("button",{type:"button",onClick:m,className:"w-full flex items-center gap-2 text-[12px] text-ink-dim hover:text-ink","aria-haspopup":"dialog","aria-expanded":r,children:[(0,n.jsx)("span",{className:"w-1.5 h-1.5 rounded-full ".concat(function(e){var t,r;if(0===e.fetchedAt)return"bg-ink-mute";let n=Math.max(null!=(t=d(e.claude))?t:0,null!=(r=d(e.codex))?r:0);return n>=95?"bg-error":n>=80?"bg-secondary":"bg-primary"}(e)," ").concat(e.loading?"animate-pulse":"")}),(0,n.jsx)("span",{className:"font-mono tabular truncate",children:e.loading&&0===e.fetchedAt?"Probing…":function(e){var t;if(0===e.fetchedAt)return"Live quota";let r=d(e.claude);return null!==r&&(null==(t=e.claude)?void 0:t.primary)?"Claude ".concat(Math.round(r),"% \xb7 ").concat(u(e.claude.primary.resetsAt)):"Live quota"}(e)})]}),r&&s&&"undefined"!=typeof document&&(0,i.createPortal)((0,n.jsx)(x,{state:e,loading:e.loading,anchorRect:s,onEnter:h,onLeave:b}),document.body)]})}function x(e){let{state:t,loading:r,anchorRect:a,onEnter:s,onLeave:l}=e,o={position:"fixed",left:a.right+8,top:a.top,backgroundColor:"#1c2026",isolation:"isolate"};return(0,n.jsx)("div",{role:"dialog",onMouseEnter:s,onMouseLeave:l,className:"w-72 z-[9999] rounded-lg border border-surface-3 p-4 space-y-4 shadow-[0_20px_60px_-10px_rgba(0,0,0,0.8)]",style:o,children:r&&0===t.fetchedAt?(0,n.jsx)("div",{className:"text-body-sm text-ink-mute",children:"Probing Anthropic & OpenAI…"}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(m,{kpi:t.claude}),(0,n.jsx)("div",{className:"border-t border-surface-2"}),(0,n.jsx)(m,{kpi:t.codex}),(0,n.jsx)("div",{className:"text-[10px] text-ink-mute font-mono tabular pt-1 border-t border-surface-2",children:0===t.fetchedAt?"never probed":"updated ".concat(function(e){let t=Date.now()-e;return t<1e3?"just now":t<6e4?"".concat(Math.round(t/1e3),"s ago"):"".concat(Math.round(t/6e4),"m ago")}(t.fetchedAt)," \xb7 hover again after 60s to refresh")})]})})}function m(e){let{kpi:t}=e;if(!t)return(0,n.jsx)("div",{className:"text-body-sm text-ink-mute",children:"No data."});let r="claude"===t.provider?"Claude":"Codex";return(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsxs)("div",{className:"flex items-baseline justify-between",children:[(0,n.jsx)("span",{className:"text-label-caps text-ink-dim",children:r}),t.ok&&t.planType&&(0,n.jsx)("span",{className:"text-[10px] text-ink-mute font-mono uppercase tracking-wide",children:t.planType})]}),t.ok?(0,n.jsxs)(n.Fragment,{children:[t.primary&&(0,n.jsx)(h,{label:t.primary.label,pct:t.primary.pct,resetsAt:t.primary.resetsAt,accent:"primary"}),t.secondary&&(0,n.jsx)(h,{label:t.secondary.label,pct:t.secondary.pct,resetsAt:t.secondary.resetsAt,accent:"secondary"}),!t.primary&&!t.secondary&&(0,n.jsx)("div",{className:"text-body-sm text-ink-mute",children:"No rate-limit headers returned."})]}):(0,n.jsx)("div",{className:"text-[11px] text-ink-mute leading-relaxed",children:t.error})]})}function h(e){let{label:t,pct:r,resetsAt:a,accent:s}=e;return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{className:"flex items-baseline justify-between text-body-sm",children:[(0,n.jsx)("span",{className:"text-ink font-mono uppercase tracking-wider text-[10px]",children:t}),(0,n.jsxs)("span",{className:"font-mono tabular text-ink",children:[Math.round(r),"%"]})]}),(0,n.jsx)("div",{className:"h-1 bg-surface-2 rounded-full overflow-hidden mt-1",children:(0,n.jsx)("div",{className:"h-full ".concat("primary"===s?"bg-primary":"bg-secondary"),style:{width:"".concat(Math.min(100,Math.max(0,r)),"%")}})}),(0,n.jsxs)("div",{className:"text-[10px] text-ink-mute font-mono tabular mt-0.5",children:["resets in ",u(a)]})]})}function f(e,t){if(!t||!("ok"in t))return{provider:e,ok:!1,observedAt:Date.now(),planType:null,primary:null,secondary:null,error:"unexpected response"};if(!t.ok)return{provider:e,ok:!1,observedAt:Date.now(),planType:null,primary:null,secondary:null,error:t.error};let r=t.snapshot;return{provider:e,ok:!0,observedAt:r.observedAt,planType:r.planType,primary:r.primary?{pct:r.primary.pct,resetsAt:r.primary.resetsAt,label:"claude"===e?"5h":"1m"}:null,secondary:r.secondary?{pct:r.secondary.pct,resetsAt:r.secondary.resetsAt,label:"7d"}:null}}let b=[{href:"/",label:"Dashboard",icon:"◧"},{href:"/timeline",label:"Timeline",icon:"☰"},{href:"/projects",label:"Projects",icon:"▦"},{href:"/sessions",label:"Sessions",icon:"⌘"},{href:"/analytics",label:"Analytics",icon:"⌁"}];function y(){let e=(0,l.usePathname)();return(0,n.jsxs)("aside",{className:"w-56 shrink-0 border-r border-surface-2 bg-surface-0 flex flex-col sticky top-0 h-screen self-start",children:[(0,n.jsxs)("div",{className:"px-5 border-b border-surface-2 h-[72px] flex flex-col justify-center",children:[(0,n.jsxs)("div",{className:"flex items-baseline gap-1.5 leading-none",children:[(0,n.jsx)("span",{className:"text-primary text-base",children:"◧"}),(0,n.jsxs)("span",{className:"text-lg font-bold tracking-tight",children:[(0,n.jsx)("span",{className:"text-ink-dim",children:"Agent"}),(0,n.jsx)("span",{className:"text-primary",children:"Graphed"})]})]}),(0,n.jsx)("div",{className:"text-[10px] uppercase tracking-wider text-ink-mute mt-1.5",children:"See your AI work"})]}),(0,n.jsx)(p,{}),(0,n.jsx)("nav",{className:"px-2 py-3 flex-1 flex flex-col gap-0.5",children:b.map(t=>{let r="/"===t.href?"/"===e:e.startsWith(t.href);return(0,n.jsxs)(s(),{href:t.href,className:(0,o.A)("flex items-center gap-3 px-3 py-2 rounded text-[13px] transition-colors",r?"bg-surface-2 text-primary border-l-2 border-primary -ml-px":"text-ink-dim hover:text-ink hover:bg-surface-1"),children:[(0,n.jsx)("span",{className:"text-base w-4 text-center opacity-80",children:t.icon}),(0,n.jsx)("span",{children:t.label})]},t.href)})}),(0,n.jsx)("div",{className:"px-2 py-3 border-t border-surface-2",children:(0,n.jsxs)(s(),{href:"/settings",className:(0,o.A)("flex items-center gap-3 px-3 py-2 rounded text-[13px] transition-colors",e.startsWith("/settings")?"bg-surface-2 text-primary border-l-2 border-primary -ml-px":"text-ink-dim hover:text-ink hover:bg-surface-1"),children:[(0,n.jsx)("span",{className:"text-base w-4 text-center opacity-80",children:"⚙"}),(0,n.jsx)("span",{children:"Settings"})]})})]})}}},e=>{e.O(0,[978,619,441,255,358],()=>e(e.s=16078)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{2821:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=function(){for(var e,t,r=0,n="",a=arguments.length;r<a;r++)(e=arguments[r])&&(t=function e(t){var r,n,a="";if("string"==typeof t||"number"==typeof t)a+=t;else if("object"==typeof t)if(Array.isArray(t)){var s=t.length;for(r=0;r<s;r++)t[r]&&(n=e(t[r]))&&(a&&(a+=" "),a+=n)}else for(n in t)t[n]&&(a&&(a+=" "),a+=n);return a}(e))&&(n&&(n+=" "),n+=t);return n}},13673:()=>{},17696:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,13673,23)),Promise.resolve().then(r.bind(r,82259))},20063:(e,t,r)=>{"use strict";var n=r(47260);r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}}),r.o(n,"useSearchParams")&&r.d(t,{useSearchParams:function(){return n.useSearchParams}})},82259:(e,t,r)=>{"use strict";r.d(t,{Sidebar:()=>y});var n=r(95155),a=r(52619),s=r.n(a),l=r(20063),o=r(2821),c=r(12115),i=r(47650);function d(e){var t,r,n,a;if(!e||!e.ok)return null;let s=null!=(n=null==(t=e.primary)?void 0:t.pct)?n:null,l=null!=(a=null==(r=e.secondary)?void 0:r.pct)?a:null;return null===s&&null===l?null:Math.max(null!=s?s:0,null!=l?l:0)}function u(e){let t=e-Date.now();if(t<=0&&t>-12e4)return"<1m";if(t<=0)return"resetting";let r=Math.round(t/6e4);if(r<1)return"<1m";if(r<60)return"".concat(r,"m");let n=Math.floor(r/60),a=r%60;return 0===a?"".concat(n,"h"):"".concat(n,"h").concat(a,"m")}function p(){let[e,t]=(0,c.useState)({claude:null,codex:null,fetchedAt:0,loading:!1}),[r,a]=(0,c.useState)(!1),[s,l]=(0,c.useState)(null),o=(0,c.useRef)(null),p=(0,c.useRef)(null);(0,c.useEffect)(()=>{if(!r||!o.current)return;let e=()=>{o.current&&l(o.current.getBoundingClientRect())};return e(),window.addEventListener("scroll",e,!0),window.addEventListener("resize",e),()=>{window.removeEventListener("scroll",e,!0),window.removeEventListener("resize",e)}},[r]);let m=(0,c.useCallback)(async()=>{t(e=>({...e,loading:!0}));let[e,r]=await Promise.all([fetch("/api/quota-probe?provider=claude",{method:"POST"}).then(e=>e.json()).catch(e=>({ok:!1,error:e.message})),fetch("/api/quota-probe?provider=codex",{method:"POST"}).then(e=>e.json()).catch(e=>({ok:!1,error:e.message}))]);t({claude:f("claude",e),codex:f("codex",r),fetchedAt:Date.now(),loading:!1})},[]);function h(){p.current&&clearTimeout(p.current),a(!0),Date.now()-e.fetchedAt>6e4&&!e.loading&&m()}function b(){p.current&&clearTimeout(p.current),p.current=setTimeout(()=>a(!1),120)}return(0,n.jsxs)("div",{ref:o,className:"relative px-3 py-2 border-b border-surface-2",onMouseEnter:h,onMouseLeave:b,onFocus:h,onBlur:b,children:[(0,n.jsxs)("button",{type:"button",onClick:m,className:"w-full flex items-center gap-2 text-[12px] text-ink-dim hover:text-ink","aria-haspopup":"dialog","aria-expanded":r,children:[(0,n.jsx)("span",{className:"w-1.5 h-1.5 rounded-full ".concat(function(e){var t,r;if(0===e.fetchedAt)return"bg-ink-mute";let n=Math.max(null!=(t=d(e.claude))?t:0,null!=(r=d(e.codex))?r:0);return n>=95?"bg-error":n>=80?"bg-secondary":"bg-primary"}(e)," ").concat(e.loading?"animate-pulse":"")}),(0,n.jsx)("span",{className:"font-mono tabular truncate",children:e.loading&&0===e.fetchedAt?"Probing…":function(e){var t;if(0===e.fetchedAt)return"Live quota";let r=d(e.claude);return null!==r&&(null==(t=e.claude)?void 0:t.primary)?"Claude ".concat(Math.round(r),"% \xb7 ").concat(u(e.claude.primary.resetsAt)):"Live quota"}(e)})]}),r&&s&&"undefined"!=typeof document&&(0,i.createPortal)((0,n.jsx)(x,{state:e,loading:e.loading,anchorRect:s,onEnter:h,onLeave:b}),document.body)]})}function x(e){let{state:t,loading:r,anchorRect:a,onEnter:s,onLeave:l}=e,o={position:"fixed",left:a.right+8,top:a.top,backgroundColor:"#1c2026",isolation:"isolate"};return(0,n.jsx)("div",{role:"dialog",onMouseEnter:s,onMouseLeave:l,className:"w-72 z-[9999] rounded-lg border border-surface-3 p-4 space-y-4 shadow-[0_20px_60px_-10px_rgba(0,0,0,0.8)]",style:o,children:r&&0===t.fetchedAt?(0,n.jsx)("div",{className:"text-body-sm text-ink-mute",children:"Probing Anthropic & OpenAI…"}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(m,{kpi:t.claude}),(0,n.jsx)("div",{className:"border-t border-surface-2"}),(0,n.jsx)(m,{kpi:t.codex}),(0,n.jsx)("div",{className:"text-[10px] text-ink-mute font-mono tabular pt-1 border-t border-surface-2",children:0===t.fetchedAt?"never probed":"updated ".concat(function(e){let t=Date.now()-e;return t<1e3?"just now":t<6e4?"".concat(Math.round(t/1e3),"s ago"):"".concat(Math.round(t/6e4),"m ago")}(t.fetchedAt)," \xb7 hover again after 60s to refresh")})]})})}function m(e){let{kpi:t}=e;if(!t)return(0,n.jsx)("div",{className:"text-body-sm text-ink-mute",children:"No data."});let r="claude"===t.provider?"Claude":"Codex";return(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsxs)("div",{className:"flex items-baseline justify-between",children:[(0,n.jsx)("span",{className:"text-label-caps text-ink-dim",children:r}),t.ok&&t.planType&&(0,n.jsx)("span",{className:"text-[10px] text-ink-mute font-mono uppercase tracking-wide",children:t.planType})]}),t.ok?(0,n.jsxs)(n.Fragment,{children:[t.primary&&(0,n.jsx)(h,{label:t.primary.label,pct:t.primary.pct,resetsAt:t.primary.resetsAt,accent:"primary"}),t.secondary&&(0,n.jsx)(h,{label:t.secondary.label,pct:t.secondary.pct,resetsAt:t.secondary.resetsAt,accent:"secondary"}),!t.primary&&!t.secondary&&(0,n.jsx)("div",{className:"text-body-sm text-ink-mute",children:"No rate-limit headers returned."})]}):(0,n.jsx)("div",{className:"text-[11px] text-ink-mute leading-relaxed",children:t.error})]})}function h(e){let{label:t,pct:r,resetsAt:a,accent:s}=e;return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{className:"flex items-baseline justify-between text-body-sm",children:[(0,n.jsx)("span",{className:"text-ink font-mono uppercase tracking-wider text-[10px]",children:t}),(0,n.jsxs)("span",{className:"font-mono tabular text-ink",children:[Math.round(r),"%"]})]}),(0,n.jsx)("div",{className:"h-1 bg-surface-2 rounded-full overflow-hidden mt-1",children:(0,n.jsx)("div",{className:"h-full ".concat("primary"===s?"bg-primary":"bg-secondary"),style:{width:"".concat(Math.min(100,Math.max(0,r)),"%")}})}),(0,n.jsxs)("div",{className:"text-[10px] text-ink-mute font-mono tabular mt-0.5",children:["resets in ",u(a)]})]})}function f(e,t){if(!t||!("ok"in t))return{provider:e,ok:!1,observedAt:Date.now(),planType:null,primary:null,secondary:null,error:"unexpected response"};if(!t.ok)return{provider:e,ok:!1,observedAt:Date.now(),planType:null,primary:null,secondary:null,error:t.error};let r=t.snapshot;return{provider:e,ok:!0,observedAt:r.observedAt,planType:r.planType,primary:r.primary?{pct:r.primary.pct,resetsAt:r.primary.resetsAt,label:"claude"===e?"5h":"1m"}:null,secondary:r.secondary?{pct:r.secondary.pct,resetsAt:r.secondary.resetsAt,label:"7d"}:null}}let b=[{href:"/",label:"Dashboard",icon:"◧"},{href:"/timeline",label:"Timeline",icon:"☰"},{href:"/projects",label:"Projects",icon:"▦"},{href:"/sessions",label:"Sessions",icon:"⌘"},{href:"/analytics",label:"Analytics",icon:"⌁"}];function y(){let e=(0,l.usePathname)();return(0,n.jsxs)("aside",{className:"w-56 shrink-0 border-r border-surface-2 bg-surface-0 flex flex-col sticky top-0 h-screen self-start",children:[(0,n.jsxs)("div",{className:"px-5 border-b border-surface-2 h-[72px] flex flex-col justify-center",children:[(0,n.jsxs)("div",{className:"flex items-baseline gap-1.5 leading-none",children:[(0,n.jsx)("span",{className:"text-primary text-base",children:"◧"}),(0,n.jsxs)("span",{className:"text-lg font-bold tracking-tight",children:[(0,n.jsx)("span",{className:"text-ink-dim",children:"Agent"}),(0,n.jsx)("span",{className:"text-primary",children:"Graphed"})]})]}),(0,n.jsx)("div",{className:"text-[10px] uppercase tracking-wider text-ink-mute mt-1.5",children:"See your AI work"})]}),(0,n.jsx)(p,{}),(0,n.jsx)("nav",{className:"px-2 py-3 flex-1 flex flex-col gap-0.5",children:b.map(t=>{let r="/"===t.href?"/"===e:e.startsWith(t.href);return(0,n.jsxs)(s(),{href:t.href,className:(0,o.A)("flex items-center gap-3 px-3 py-2 rounded text-[13px] transition-colors",r?"bg-surface-2 text-primary border-l-2 border-primary -ml-px":"text-ink-dim hover:text-ink hover:bg-surface-1"),children:[(0,n.jsx)("span",{className:"text-base w-4 text-center opacity-80",children:t.icon}),(0,n.jsx)("span",{children:t.label})]},t.href)})}),(0,n.jsx)("div",{className:"px-2 py-3 border-t border-surface-2",children:(0,n.jsxs)(s(),{href:"/settings",className:(0,o.A)("flex items-center gap-3 px-3 py-2 rounded text-[13px] transition-colors",e.startsWith("/settings")?"bg-surface-2 text-primary border-l-2 border-primary -ml-px":"text-ink-dim hover:text-ink hover:bg-surface-1"),children:[(0,n.jsx)("span",{className:"text-base w-4 text-center opacity-80",children:"⚙"}),(0,n.jsx)("span",{children:"Settings"})]})})]})}}},e=>{e.O(0,[978,619,441,255,358],()=>e(e.s=17696)),_N_E=e.O()}]);