agentgraphed 0.2.0 → 0.2.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 (64) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +17 -17
  3. package/.next/standalone/.next/app-path-routes-manifest.json +3 -3
  4. package/.next/standalone/.next/build-manifest.json +2 -2
  5. package/.next/standalone/.next/server/app/_not-found/page.js +2 -2
  6. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  7. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  9. package/.next/standalone/.next/server/app/_not-found.rsc +3 -3
  10. package/.next/standalone/.next/server/app/analytics/page.js +2 -2
  11. package/.next/standalone/.next/server/app/analytics/page.js.nft.json +1 -1
  12. package/.next/standalone/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/api/ingest-local/route_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/api/quota-probe/route.js +2 -110
  15. package/.next/standalone/.next/server/app/api/quota-probe/route.js.nft.json +1 -1
  16. package/.next/standalone/.next/server/app/api/quota-probe/route_client-reference-manifest.js +1 -1
  17. package/.next/standalone/.next/server/app/page.js +2 -2
  18. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/.next/server/app/projects/[id]/page.js +2 -2
  21. package/.next/standalone/.next/server/app/projects/[id]/page.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/projects/[id]/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/.next/server/app/projects/page.js +2 -2
  24. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/.next/server/app/sessions/[id]/page.js +1 -1
  27. package/.next/standalone/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
  29. package/.next/standalone/.next/server/app/sessions/page.js +2 -2
  30. package/.next/standalone/.next/server/app/sessions/page.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app/settings/page.js +2 -2
  33. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  35. package/.next/standalone/.next/server/app/timeline/page.js +2 -2
  36. package/.next/standalone/.next/server/app/timeline/page.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/timeline/page_client-reference-manifest.js +1 -1
  38. package/.next/standalone/.next/server/app-paths-manifest.json +3 -3
  39. package/.next/standalone/.next/server/chunks/165.js +109 -0
  40. package/.next/standalone/.next/server/chunks/660.js +1 -0
  41. package/.next/standalone/.next/server/chunks/944.js +24 -24
  42. package/.next/standalone/.next/server/pages/404.html +1 -1
  43. package/.next/standalone/.next/server/pages/500.html +1 -1
  44. package/.next/standalone/.next/static/chunks/app/layout-359f69bd6ea201be.js +1 -0
  45. package/.next/standalone/.next/static/chunks/app/page-72efdd1b71c43e03.js +1 -0
  46. package/.next/standalone/.next/static/css/568a2d3dc76080d7.css +3 -0
  47. package/.next/standalone/package.json +1 -1
  48. package/.next/static/chunks/app/layout-359f69bd6ea201be.js +1 -0
  49. package/.next/static/chunks/app/page-72efdd1b71c43e03.js +1 -0
  50. package/.next/static/css/568a2d3dc76080d7.css +3 -0
  51. package/CHANGELOG.md +17 -0
  52. package/README.md +2 -0
  53. package/package.json +1 -1
  54. package/.next/standalone/.next/server/chunks/368.js +0 -109
  55. package/.next/standalone/.next/static/chunks/app/layout-9b69ebd975a7854c.js +0 -1
  56. package/.next/standalone/.next/static/chunks/app/page-beaf8e4a3ac0e533.js +0 -1
  57. package/.next/standalone/.next/static/css/e8b7ea34df142b21.css +0 -3
  58. package/.next/static/chunks/app/layout-9b69ebd975a7854c.js +0 -1
  59. package/.next/static/chunks/app/page-beaf8e4a3ac0e533.js +0 -1
  60. package/.next/static/css/e8b7ea34df142b21.css +0 -3
  61. /package/.next/standalone/.next/static/{bL7Df9c-sxVDK2-CBLFJb → x9UWQ4odHhvHvXGtRm2Bl}/_buildManifest.js +0 -0
  62. /package/.next/standalone/.next/static/{bL7Df9c-sxVDK2-CBLFJb → x9UWQ4odHhvHvXGtRm2Bl}/_ssgManifest.js +0 -0
  63. /package/.next/static/{bL7Df9c-sxVDK2-CBLFJb → x9UWQ4odHhvHvXGtRm2Bl}/_buildManifest.js +0 -0
  64. /package/.next/static/{bL7Df9c-sxVDK2-CBLFJb → x9UWQ4odHhvHvXGtRm2Bl}/_ssgManifest.js +0 -0
@@ -1,113 +1,5 @@
1
- (()=>{var a={};a.id=407,a.ids=[407],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3421:(a,b,c)=>{"use strict";Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(71237),e=c(55088),f=c(17679);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},22446:(a,b,c)=>{"use strict";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(`
2
- CREATE TABLE IF NOT EXISTS projects (
3
- id TEXT PRIMARY KEY,
4
- name TEXT NOT NULL,
5
- root_path TEXT NOT NULL,
6
- git_remote TEXT,
7
- first_seen INTEGER NOT NULL,
8
- last_active INTEGER NOT NULL
9
- );
10
- CREATE UNIQUE INDEX IF NOT EXISTS projects_root_idx ON projects(root_path);
11
-
12
- CREATE TABLE IF NOT EXISTS sessions (
13
- id TEXT PRIMARY KEY,
14
- provider TEXT NOT NULL,
15
- project_id TEXT NOT NULL,
16
- cwd TEXT NOT NULL,
17
- started_at INTEGER NOT NULL,
18
- ended_at INTEGER NOT NULL,
19
- duration_ms INTEGER NOT NULL,
20
- model TEXT,
21
- message_count INTEGER NOT NULL DEFAULT 0,
22
- user_message_count INTEGER NOT NULL DEFAULT 0,
23
- input_tokens INTEGER NOT NULL DEFAULT 0,
24
- output_tokens INTEGER NOT NULL DEFAULT 0,
25
- cache_read_tokens INTEGER NOT NULL DEFAULT 0,
26
- cache_write_tokens INTEGER NOT NULL DEFAULT 0,
27
- est_cost_usd REAL NOT NULL DEFAULT 0,
28
- first_prompt TEXT,
29
- summary TEXT,
30
- summary_generated INTEGER NOT NULL DEFAULT 0,
31
- heuristic_title TEXT,
32
- category TEXT,
33
- keywords TEXT,
34
- git_branch TEXT,
35
- source_path TEXT NOT NULL
36
- );
37
- CREATE INDEX IF NOT EXISTS sessions_project_idx ON sessions(project_id);
38
- CREATE INDEX IF NOT EXISTS sessions_started_idx ON sessions(started_at);
39
- CREATE INDEX IF NOT EXISTS sessions_provider_idx ON sessions(provider);
40
- CREATE INDEX IF NOT EXISTS sessions_model_idx ON sessions(model);
41
-
42
- CREATE TABLE IF NOT EXISTS messages (
43
- id TEXT PRIMARY KEY,
44
- session_id TEXT NOT NULL,
45
- role TEXT NOT NULL,
46
- content TEXT NOT NULL,
47
- timestamp INTEGER NOT NULL,
48
- model TEXT
49
- );
50
- CREATE INDEX IF NOT EXISTS messages_session_idx ON messages(session_id);
51
- CREATE INDEX IF NOT EXISTS messages_timestamp_idx ON messages(timestamp);
52
-
53
- CREATE TABLE IF NOT EXISTS ingest_state (
54
- source_path TEXT PRIMARY KEY,
55
- mtime INTEGER NOT NULL,
56
- size INTEGER NOT NULL,
57
- session_id TEXT NOT NULL,
58
- ingested_at INTEGER NOT NULL
59
- );
60
-
61
- CREATE TABLE IF NOT EXISTS settings (
62
- key TEXT PRIMARY KEY,
63
- value TEXT NOT NULL
64
- );
65
-
66
- CREATE TABLE IF NOT EXISTS day_summaries (
67
- day TEXT PRIMARY KEY,
68
- summary TEXT NOT NULL,
69
- generated_at INTEGER NOT NULL
70
- );
71
-
72
- CREATE TABLE IF NOT EXISTS project_summaries (
73
- project_id TEXT PRIMARY KEY,
74
- summary TEXT NOT NULL,
75
- generated_at INTEGER NOT NULL
76
- );
77
-
78
- CREATE TABLE IF NOT EXISTS session_contexts (
79
- session_id TEXT PRIMARY KEY,
80
- context TEXT NOT NULL,
81
- generated_at INTEGER NOT NULL,
82
- model TEXT
83
- );
84
-
85
- CREATE TABLE IF NOT EXISTS quota_snapshots (
86
- provider TEXT PRIMARY KEY,
87
- observed_at INTEGER NOT NULL,
88
- plan_type TEXT,
89
- primary_pct REAL,
90
- primary_window_minutes INTEGER,
91
- primary_resets_at INTEGER,
92
- secondary_pct REAL,
93
- secondary_window_minutes INTEGER,
94
- secondary_resets_at INTEGER
95
- );
96
-
97
- CREATE TABLE IF NOT EXISTS claude_limit_events (
98
- id INTEGER PRIMARY KEY AUTOINCREMENT,
99
- session_id TEXT NOT NULL,
100
- observed_at INTEGER NOT NULL,
101
- reset_at INTEGER,
102
- kind TEXT NOT NULL,
103
- raw TEXT
104
- );
105
- CREATE INDEX IF NOT EXISTS claude_limit_events_observed_idx ON claude_limit_events(observed_at);
106
- CREATE INDEX IF NOT EXISTS claude_limit_events_session_idx ON claude_limit_events(session_id);
107
- `);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
108
- SET categories = json_array(category)
109
- WHERE category IS NOT NULL AND categories IS NULL`))}(v),u=(0,g.f)(v,{schema:d}))}function x(){return v||w(),v}},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},48161:a=>{"use strict";a.exports=require("node:os")},48211:(a,b,c)=>{"use strict";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")}},51455:a=>{"use strict";a.exports=require("node:fs/promises")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},66226:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>Q,patchFetch:()=>P,routeModule:()=>L,serverHooks:()=>O,workAsyncStorage:()=>M,workUnitAsyncStorage:()=>N});var d={};c.r(d),c.d(d,{POST:()=>K,dynamic:()=>J,runtime:()=>I});var e=c(95736),f=c(9117),g=c(4044),h=c(39326),i=c(32324),j=c(261),k=c(54290),l=c(85328),m=c(38928),n=c(46595),o=c(3421),p=c(17679),q=c(41681),r=c(63446),s=c(86439),t=c(51356),u=c(51455),v=c(48161),w=c(76760);let x=(0,w.join)((0,v.homedir)(),".claude",".credentials.json");async function y(){let a,b,c;try{a=await (0,u.readFile)(x,"utf8")}catch(a){return{ok:!1,error:"ENOENT"===a.code?"Claude Code credentials not found. Sign into Claude Code first.":`Could not read credentials: ${a.message}`}}try{b=JSON.parse(a)}catch{return{ok:!1,error:"credentials.json is not valid JSON"}}let d=b.claudeAiOauth;if(!d?.accessToken||!d.refreshToken||!d.expiresAt)return{ok:!1,error:"credentials.json is missing claudeAiOauth fields"};try{let a=await (0,u.stat)(x),b=511&a.mode;384!==b&&"win32"!==process.platform&&(c=`~/.claude/.credentials.json has mode ${b.toString(8)}; expected 600.`)}catch{}return{ok:!0,creds:{accessToken:d.accessToken,refreshToken:d.refreshToken,expiresAt:d.expiresAt,subscriptionType:d.subscriptionType??null,rateLimitTier:d.rateLimitTier??null},warning:c}}let z=(0,w.join)((0,v.homedir)(),".claude",".credentials.json");async function A(a){let b,c,d;try{b=await (0,u.readFile)(z,"utf8")}catch(a){return{ok:!1,error:`Cannot read credentials: ${a.message}`}}let e=0;try{let b=await fetch("https://console.anthropic.com/v1/oauth/token",{method:"POST",headers:{"Content-Type":"application/json","User-Agent":"anthropic"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:a.refreshToken,client_id:"9d1c250a-e61b-44d9-88ed-5944d1962f5e"})});if(e=b.status,429===b.status)return{ok:!1,error:"Rate limited by token endpoint",httpStatus:e};if(!b.ok)return{ok:!1,error:`Refresh rejected (HTTP ${b.status}); re-login with Claude Code may be needed`,httpStatus:e};c=await b.json()}catch(a){return{ok:!1,error:`Refresh request failed: ${a.message}`}}if(!c.access_token||"number"!=typeof c.expires_in)return{ok:!1,error:"Unexpected refresh response shape",httpStatus:e};let f=Date.now()+1e3*c.expires_in,g=c.access_token,h=c.refresh_token??a.refreshToken;try{d=JSON.parse(b)}catch{return{ok:!1,error:"credentials.json became unparseable mid-flight"}}d.claudeAiOauth={...d.claudeAiOauth??{},accessToken:g,refreshToken:h,expiresAt:f};let i=JSON.stringify(d,null,2),j=`${z}.agentgraphed-tmp-${process.pid}-${Date.now()}`;try{await (0,u.writeFile)(j,i,{encoding:"utf8",mode:384}),await (0,u.rename)(j,z)}catch(a){try{await (0,u.writeFile)(z,b,{encoding:"utf8",mode:384})}catch{}return{ok:!1,error:`Could not persist refreshed token: ${a.message}`,reverted:!0}}try{let a=await (0,u.readFile)(z,"utf8"),b=JSON.parse(a);if(b.claudeAiOauth?.accessToken!==g)throw Error("post-write token mismatch")}catch(a){try{await (0,u.writeFile)(z,b,{encoding:"utf8",mode:384})}catch{}return{ok:!1,error:`Verification failed: ${a.message}`,reverted:!0}}return{ok:!0,expiresAt:f}}let B={"anthropic-version":"2023-06-01","anthropic-beta":"oauth-2025-04-20","content-type":"application/json","user-agent":"claude-code/2.1.5"},C=JSON.stringify({model:"claude-haiku-4-5-20251001",max_tokens:1,messages:[{role:"user",content:"hi"}]});function D(a,b){let c=a.get(b);if(null===c)return null;let d=Number(c);return Number.isFinite(d)?d:null}function E(a,b){let c=a.get(b);if(null===c)return null;let d=Number(c);return Number.isFinite(d)?Math.floor(1e3*d):null}async function F(a){let b=await fetch("https://api.anthropic.com/v1/messages",{method:"POST",headers:{...B,authorization:`Bearer ${a}`},body:C});try{await b.text()}catch{}return{status:b.status,headers:b.headers}}async function G(){let a,b=await y();if(!b.ok)return{ok:!1,error:b.error};let c=b.creds,d=!1;if(function(a,b=Date.now()){return b+12e4>=a}(c.expiresAt)){let a=await A(c);if(!a.ok)return{ok:!1,error:429===a.httpStatus||400===a.httpStatus||401===a.httpStatus?"Stored token cannot be refreshed. Run `claude /login` in your terminal to rewrite ~/.claude/.credentials.json, then try again.":`Token expired and refresh failed: ${a.error}`};let b=await y();if(!b.ok)return{ok:!1,error:b.error};c=b.creds,d=!0}try{a=await F(c.accessToken)}catch(a){return{ok:!1,error:`Probe request failed: ${a.message}`}}if(401===a.status&&!d){let b=await A(c);if(!b.ok)return{ok:!1,error:`401 from API and refresh failed: ${b.error}`,httpStatus:401};let e=await y();if(!e.ok)return{ok:!1,error:e.error};c=e.creds,d=!0;try{a=await F(c.accessToken)}catch(a){return{ok:!1,error:`Retry probe failed: ${a.message}`}}}if(401===a.status)return{ok:!1,error:"Still unauthorized after refresh — re-login with `claude /login`",httpStatus:401};if(429===a.status)return{ok:!1,error:"Rate-limited by Anthropic — slow down polling",httpStatus:429};if(a.status>=500)return{ok:!1,error:`Anthropic returned ${a.status}`,httpStatus:a.status};let e=a.headers,f=D(e,"anthropic-ratelimit-unified-5h-utilization"),g=E(e,"anthropic-ratelimit-unified-5h-reset"),h=e.get("anthropic-ratelimit-unified-5h-status"),i=D(e,"anthropic-ratelimit-unified-7d-utilization"),j=E(e,"anthropic-ratelimit-unified-7d-reset"),k=e.get("anthropic-ratelimit-unified-7d-status");return{ok:!0,observedAt:Date.now(),planType:c.subscriptionType,primary:null!==f&&null!==g?{utilization:f,resetsAt:g,status:h}:null,secondary:null!==i&&null!==j?{utilization:i,resetsAt:j,status:k}:null,tokenWasRefreshed:d}}var H=c(22446);let I="nodejs",J="force-dynamic";async function K(){let a=await G();return a.ok?((0,H.x)().prepare(`INSERT OR REPLACE INTO quota_snapshots (
1
+ (()=>{var a={};a.id=407,a.ids=[407],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},2924:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>U,patchFetch:()=>T,routeModule:()=>P,serverHooks:()=>S,workAsyncStorage:()=>Q,workUnitAsyncStorage:()=>R});var d={};c.r(d),c.d(d,{POST:()=>O,dynamic:()=>N,runtime:()=>M});var e=c(95736),f=c(9117),g=c(4044),h=c(39326),i=c(32324),j=c(261),k=c(54290),l=c(85328),m=c(38928),n=c(46595),o=c(3421),p=c(17679),q=c(41681),r=c(63446),s=c(86439),t=c(51356),u=c(51455),v=c(48161),w=c(76760),x=c(31421);let y=process.env.CLAUDE_CREDENTIALS_PATH||(0,w.join)((0,v.homedir)(),".claude",".credentials.json");async function z(){let a,b,c=await new Promise(a=>{if("darwin"!==(0,v.platform)())return a(null);let b=(0,x.spawn)("security",["find-generic-password","-s","Claude Code-credentials","-w"],{stdio:["ignore","pipe","pipe"]}),c="";b.stdout.on("data",a=>{c+=a.toString()}),b.on("error",()=>a(null)),b.on("close",b=>{if(0!==b)return a(null);let d=c.trim();a(d.length>0?d:null)})}),d="keychain";if(!c){d="file";try{c=await (0,u.readFile)(y,"utf8")}catch(a){return{ok:!1,error:"ENOENT"===a.code?"Claude Code credentials not found. Sign into Claude Code first with `claude /login`.":`Could not read credentials: ${a.message}`}}}try{a=JSON.parse(c)}catch{return{ok:!1,error:"credentials.json is not valid JSON"}}let e=a.claudeAiOauth;if(!e?.accessToken||!e.refreshToken||!e.expiresAt)return{ok:!1,error:"credentials.json is missing claudeAiOauth fields"};if("file"===d)try{let a=await (0,u.stat)(y),c=511&a.mode;384!==c&&"win32"!==process.platform&&(b=`~/.claude/.credentials.json has mode ${c.toString(8)}; expected 600.`)}catch{}return{ok:!0,source:d,creds:{accessToken:e.accessToken,refreshToken:e.refreshToken,expiresAt:e.expiresAt,subscriptionType:e.subscriptionType??null,rateLimitTier:e.rateLimitTier??null},warning:b}}let A=process.env.CLAUDE_CREDENTIALS_PATH||(0,w.join)((0,v.homedir)(),".claude",".credentials.json");async function B(a,b="file"){let c,d,e;if("keychain"===b)return{ok:!1,error:"Token expired in Keychain. Reopen Claude Code (or run a `claude` command) so it can refresh, then probe again."};try{c=await (0,u.readFile)(A,"utf8")}catch(a){return{ok:!1,error:`Cannot read credentials: ${a.message}`}}let f=0;try{let b=await fetch("https://console.anthropic.com/v1/oauth/token",{method:"POST",headers:{"Content-Type":"application/json","User-Agent":"anthropic"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:a.refreshToken,client_id:"9d1c250a-e61b-44d9-88ed-5944d1962f5e"})});if(f=b.status,429===b.status)return{ok:!1,error:"Rate limited by token endpoint",httpStatus:f};if(!b.ok)return{ok:!1,error:`Refresh rejected (HTTP ${b.status}); re-login with Claude Code may be needed`,httpStatus:f};d=await b.json()}catch(a){return{ok:!1,error:`Refresh request failed: ${a.message}`}}if(!d.access_token||"number"!=typeof d.expires_in)return{ok:!1,error:"Unexpected refresh response shape",httpStatus:f};let g=Date.now()+1e3*d.expires_in,h=d.access_token,i=d.refresh_token??a.refreshToken;try{e=JSON.parse(c)}catch{return{ok:!1,error:"credentials.json became unparseable mid-flight"}}e.claudeAiOauth={...e.claudeAiOauth??{},accessToken:h,refreshToken:i,expiresAt:g};let j=JSON.stringify(e,null,2),k=`${A}.agentgraphed-tmp-${process.pid}-${Date.now()}`;try{await (0,u.writeFile)(k,j,{encoding:"utf8",mode:384}),await (0,u.rename)(k,A)}catch(a){try{await (0,u.writeFile)(A,c,{encoding:"utf8",mode:384})}catch{}return{ok:!1,error:`Could not persist refreshed token: ${a.message}`,reverted:!0}}try{let a=await (0,u.readFile)(A,"utf8"),b=JSON.parse(a);if(b.claudeAiOauth?.accessToken!==h)throw Error("post-write token mismatch")}catch(a){try{await (0,u.writeFile)(A,c,{encoding:"utf8",mode:384})}catch{}return{ok:!1,error:`Verification failed: ${a.message}`,reverted:!0}}return{ok:!0,expiresAt:g}}let C={"anthropic-version":"2023-06-01","anthropic-beta":"oauth-2025-04-20","content-type":"application/json","user-agent":"claude-code/2.1.5"},D=JSON.stringify({model:"claude-haiku-4-5-20251001",max_tokens:1,messages:[{role:"user",content:"hi"}]});function E(a,b){let c=a.get(b);if(null===c)return null;let d=Number(c);return Number.isFinite(d)?d:null}function F(a,b){let c=a.get(b);if(null===c)return null;let d=Number(c);return Number.isFinite(d)?Math.floor(1e3*d):null}async function G(a){let b=await fetch("https://api.anthropic.com/v1/messages",{method:"POST",headers:{...C,authorization:`Bearer ${a}`},body:D});try{await b.text()}catch{}return{status:b.status,headers:b.headers}}async function H(){let a,b=await z();if(!b.ok)return{ok:!1,error:b.error};let c=b.creds,d=b.source,e=!1;if(function(a,b=Date.now()){return b+12e4>=a}(c.expiresAt)){let a=await B(c,d);if(!a.ok)return{ok:!1,error:429===a.httpStatus||400===a.httpStatus||401===a.httpStatus?"Stored token cannot be refreshed. Run `claude /login` in your terminal, then try again.":a.error};let b=await z();if(!b.ok)return{ok:!1,error:b.error};c=b.creds,d=b.source,e=!0}try{a=await G(c.accessToken)}catch(a){return{ok:!1,error:`Probe request failed: ${a.message}`}}if(401===a.status&&!e){let b=await B(c,d);if(!b.ok)return{ok:!1,error:`401 from API: ${b.error}`,httpStatus:401};let f=await z();if(!f.ok)return{ok:!1,error:f.error};c=f.creds,d=f.source,e=!0;try{a=await G(c.accessToken)}catch(a){return{ok:!1,error:`Retry probe failed: ${a.message}`}}}if(401===a.status)return{ok:!1,error:"Still unauthorized after refresh — re-login with `claude /login`",httpStatus:401};if(429===a.status)return{ok:!1,error:"Rate-limited by Anthropic — slow down polling",httpStatus:429};if(a.status>=500)return{ok:!1,error:`Anthropic returned ${a.status}`,httpStatus:a.status};let f=a.headers,g=E(f,"anthropic-ratelimit-unified-5h-utilization"),h=F(f,"anthropic-ratelimit-unified-5h-reset"),i=f.get("anthropic-ratelimit-unified-5h-status"),j=E(f,"anthropic-ratelimit-unified-7d-utilization"),k=F(f,"anthropic-ratelimit-unified-7d-reset"),l=f.get("anthropic-ratelimit-unified-7d-status");return{ok:!0,observedAt:Date.now(),planType:c.subscriptionType,primary:null!==g&&null!==h?{utilization:g,resetsAt:h,status:i}:null,secondary:null!==j&&null!==k?{utilization:j,resetsAt:k,status:l}:null,tokenWasRefreshed:e}}var I=c(10944);let J=JSON.stringify({model:"gpt-5-mini",max_tokens:1,messages:[{role:"user",content:"hi"}]});async function K(){let a,b=(0,I.PL)("openai_api_key");if(!b)return{ok:!1,error:"No OpenAI API key configured. Add one in Settings → LLM provider to enable Codex live quota."};try{a=await fetch("https://api.openai.com/v1/chat/completions",{method:"POST",headers:{authorization:`Bearer ${b}`,"content-type":"application/json"},body:J});try{await a.text()}catch{}}catch(a){return{ok:!1,error:`Probe request failed: ${a.message}`}}if(401===a.status)return{ok:!1,error:"OpenAI returned 401 — check the key in Settings.",httpStatus:401};if(a.status>=500)return{ok:!1,error:`OpenAI returned ${a.status}`,httpStatus:a.status};let c=a.headers,d=Number(c.get("x-ratelimit-limit-tokens")??""),e=Number(c.get("x-ratelimit-remaining-tokens")??""),f=function(a){if(!a)return null;let b=a.match(/(?:(\d+)h)?(?:(\d+)m(?!s))?(?:(\d+(?:\.\d+)?)s)?(?:(\d+)ms)?/);if(!b)return null;let c=parseInt(b[1]||"0",10),d=parseInt(b[2]||"0",10),e=36e5*c+6e4*d+Math.round(1e3*parseFloat(b[3]||"0"))+parseInt(b[4]||"0",10);return e<=0?Date.now():Date.now()+e}(c.get("x-ratelimit-reset-tokens"));return Number.isFinite(d)&&Number.isFinite(e)&&null!==f?{ok:!0,observedAt:Date.now(),planType:"api",primary:{utilization:d>0?(d-e)/d:0,resetsAt:f,status:429===a.status?"rate_limited":"allowed"},secondary:null,tokenWasRefreshed:!1}:{ok:!1,error:`OpenAI did not return rate-limit headers (HTTP ${a.status}). The key may be restricted.`,httpStatus:a.status}}var L=c(22446);let M="nodejs",N="force-dynamic";async function O(a){let b=(a.nextUrl.searchParams.get("provider")??"claude").toLowerCase();if("claude"!==b&&"codex"!==b)return new Response(JSON.stringify({ok:!1,error:`Unknown provider: ${b}`}),{status:400,headers:{"content-type":"application/json"}});let c="claude"===b?await H():await K();return c.ok?((0,L.x)().prepare(`INSERT OR REPLACE INTO quota_snapshots (
110
2
  provider, observed_at, plan_type,
111
3
  primary_pct, primary_window_minutes, primary_resets_at,
112
4
  secondary_pct, secondary_window_minutes, secondary_resets_at
113
- ) VALUES ('claude', ?, ?, ?, ?, ?, ?, ?, ?)`).run(a.observedAt,a.planType,a.primary?Math.round(1e3*a.primary.utilization)/10:null,a.primary?300:null,a.primary?a.primary.resetsAt:null,a.secondary?Math.round(1e3*a.secondary.utilization)/10:null,a.secondary?10080:null,a.secondary?a.secondary.resetsAt:null),new Response(JSON.stringify({ok:!0,snapshot:{observedAt:a.observedAt,planType:a.planType,primary:a.primary?{pct:100*a.primary.utilization,resetsAt:a.primary.resetsAt,status:a.primary.status}:null,secondary:a.secondary?{pct:100*a.secondary.utilization,resetsAt:a.secondary.resetsAt,status:a.secondary.status}:null,tokenWasRefreshed:a.tokenWasRefreshed}}),{status:200,headers:{"content-type":"application/json"}})):new Response(JSON.stringify({ok:!1,error:a.error,httpStatus:a.httpStatus}),{status:200,headers:{"content-type":"application/json"}})}let L=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/quota-probe/route",pathname:"/api/quota-probe",filename:"route",bundlePath:"app/api/quota-probe/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/api/quota-probe/route.ts",nextConfigOutput:"standalone",userland:d}),{workAsyncStorage:M,workUnitAsyncStorage:N,serverHooks:O}=L;function P(){return(0,g.patchFetch)({workAsyncStorage:M,workUnitAsyncStorage:N})}async function Q(a,b,c){var d;let e="/api/quota-probe/route";"/index"===e&&(e="/");let g=await L.prepare(a,b,{srcPage:e,multiZoneDraftMode:!1});if(!g)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:u,params:v,nextConfig:w,isDraftMode:x,prerenderManifest:y,routerServerContext:z,isOnDemandRevalidate:A,revalidateOnlyGenerated:B,resolvedPathname:C}=g,D=(0,j.normalizeAppPath)(e),E=!!(y.dynamicRoutes[D]||y.routes[C]);if(E&&!x){let a=!!y.routes[C],b=y.dynamicRoutes[D];if(b&&!1===b.fallback&&!a)throw new s.NoFallbackError}let F=null;!E||L.isDev||x||(F="/index"===(F=C)?"/":F);let G=!0===L.isDev||!E,H=E&&!G,I=a.method||"GET",J=(0,i.getTracer)(),K=J.getActiveScopeSpan(),M={params:v,prerenderManifest:y,renderOpts:{experimental:{cacheComponents:!!w.experimental.cacheComponents,authInterrupts:!!w.experimental.authInterrupts},supportsDynamicResponse:G,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:null==(d=w.experimental)?void 0:d.cacheLife,isRevalidate:H,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d)=>L.onRequestError(a,b,d,z)},sharedContext:{buildId:u}},N=new k.NodeNextRequest(a),O=new k.NodeNextResponse(b),P=l.NextRequestAdapter.fromNodeNextRequest(N,(0,l.signalFromNodeResponse)(b));try{let d=async c=>L.handle(P,M).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=J.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==m.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${I} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${I} ${a.url}`)}),g=async g=>{var i,j;let k=async({previousCacheEntry:f})=>{try{if(!(0,h.getRequestMeta)(a,"minimalMode")&&A&&B&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let e=await d(g);a.fetchMetrics=M.renderOpts.fetchMetrics;let i=M.renderOpts.pendingWaitUntil;i&&c.waitUntil&&(c.waitUntil(i),i=void 0);let j=M.renderOpts.collectedTags;if(!E)return await (0,o.I)(N,O,e,M.renderOpts.pendingWaitUntil),null;{let a=await e.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(e.headers);j&&(b[r.NEXT_CACHE_TAGS_HEADER]=j),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==M.renderOpts.collectedRevalidate&&!(M.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&M.renderOpts.collectedRevalidate,d=void 0===M.renderOpts.collectedExpire||M.renderOpts.collectedExpire>=r.INFINITE_CACHE?void 0:M.renderOpts.collectedExpire;return{value:{kind:t.CachedRouteKind.APP_ROUTE,status:e.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:d}}}}catch(b){throw(null==f?void 0:f.isStale)&&await L.onRequestError(a,b,{routerKind:"App Router",routePath:e,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:H,isOnDemandRevalidate:A})},z),b}},l=await L.handleResponse({req:a,nextConfig:w,cacheKey:F,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:y,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:B,responseGenerator:k,waitUntil:c.waitUntil});if(!E)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==t.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(j=l.value)?void 0:j.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});(0,h.getRequestMeta)(a,"minimalMode")||b.setHeader("x-nextjs-cache",A?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),x&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,p.fromNodeOutgoingHttpHeaders)(l.value.headers);return(0,h.getRequestMeta)(a,"minimalMode")&&E||m.delete(r.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||b.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,q.getCacheControlHeader)(l.cacheControl)),await (0,o.I)(N,O,new Response(l.value.body,{headers:m,status:l.value.status||200})),null};K?await g(K):await J.withPropagatedContext(a.headers,()=>J.trace(m.BaseServerSpan.handleRequest,{spanName:`${I} ${a.url}`,kind:i.SpanKind.SERVER,attributes:{"http.method":I,"http.target":a.url}},g))}catch(b){if(b instanceof s.NoFallbackError||await L.onRequestError(a,b,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:H,isOnDemandRevalidate:A})}),E)throw b;return await (0,o.I)(N,O,new Response(null,{status:500})),null}}},73024:a=>{"use strict";a.exports=require("node:fs")},76760:a=>{"use strict";a.exports=require("node:path")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},95736:(a,b,c)=>{"use strict";a.exports=c(44870)},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[873,609],()=>b(b.s=66226));module.exports=c})();
5
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(b,c.observedAt,c.planType,c.primary?Math.round(1e3*c.primary.utilization)/10:null,c.primary?"claude"===b?300:1:null,c.primary?c.primary.resetsAt:null,c.secondary?Math.round(1e3*c.secondary.utilization)/10:null,c.secondary?10080:null,c.secondary?c.secondary.resetsAt:null),new Response(JSON.stringify({ok:!0,provider:b,snapshot:{observedAt:c.observedAt,planType:c.planType,primary:c.primary?{pct:100*c.primary.utilization,resetsAt:c.primary.resetsAt,status:c.primary.status}:null,secondary:c.secondary?{pct:100*c.secondary.utilization,resetsAt:c.secondary.resetsAt,status:c.secondary.status}:null,tokenWasRefreshed:c.tokenWasRefreshed}}),{status:200,headers:{"content-type":"application/json"}})):new Response(JSON.stringify({ok:!1,provider:b,error:c.error,httpStatus:c.httpStatus}),{status:200,headers:{"content-type":"application/json"}})}let P=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/quota-probe/route",pathname:"/api/quota-probe",filename:"route",bundlePath:"app/api/quota-probe/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/api/quota-probe/route.ts",nextConfigOutput:"standalone",userland:d}),{workAsyncStorage:Q,workUnitAsyncStorage:R,serverHooks:S}=P;function T(){return(0,g.patchFetch)({workAsyncStorage:Q,workUnitAsyncStorage:R})}async function U(a,b,c){var d;let e="/api/quota-probe/route";"/index"===e&&(e="/");let g=await P.prepare(a,b,{srcPage:e,multiZoneDraftMode:!1});if(!g)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:u,params:v,nextConfig:w,isDraftMode:x,prerenderManifest:y,routerServerContext:z,isOnDemandRevalidate:A,revalidateOnlyGenerated:B,resolvedPathname:C}=g,D=(0,j.normalizeAppPath)(e),E=!!(y.dynamicRoutes[D]||y.routes[C]);if(E&&!x){let a=!!y.routes[C],b=y.dynamicRoutes[D];if(b&&!1===b.fallback&&!a)throw new s.NoFallbackError}let F=null;!E||P.isDev||x||(F="/index"===(F=C)?"/":F);let G=!0===P.isDev||!E,H=E&&!G,I=a.method||"GET",J=(0,i.getTracer)(),K=J.getActiveScopeSpan(),L={params:v,prerenderManifest:y,renderOpts:{experimental:{cacheComponents:!!w.experimental.cacheComponents,authInterrupts:!!w.experimental.authInterrupts},supportsDynamicResponse:G,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:null==(d=w.experimental)?void 0:d.cacheLife,isRevalidate:H,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d)=>P.onRequestError(a,b,d,z)},sharedContext:{buildId:u}},M=new k.NodeNextRequest(a),N=new k.NodeNextResponse(b),O=l.NextRequestAdapter.fromNodeNextRequest(M,(0,l.signalFromNodeResponse)(b));try{let d=async c=>P.handle(O,L).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=J.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==m.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${I} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${I} ${a.url}`)}),g=async g=>{var i,j;let k=async({previousCacheEntry:f})=>{try{if(!(0,h.getRequestMeta)(a,"minimalMode")&&A&&B&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let e=await d(g);a.fetchMetrics=L.renderOpts.fetchMetrics;let i=L.renderOpts.pendingWaitUntil;i&&c.waitUntil&&(c.waitUntil(i),i=void 0);let j=L.renderOpts.collectedTags;if(!E)return await (0,o.I)(M,N,e,L.renderOpts.pendingWaitUntil),null;{let a=await e.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(e.headers);j&&(b[r.NEXT_CACHE_TAGS_HEADER]=j),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,d=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=r.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:t.CachedRouteKind.APP_ROUTE,status:e.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:d}}}}catch(b){throw(null==f?void 0:f.isStale)&&await P.onRequestError(a,b,{routerKind:"App Router",routePath:e,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:H,isOnDemandRevalidate:A})},z),b}},l=await P.handleResponse({req:a,nextConfig:w,cacheKey:F,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:y,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:B,responseGenerator:k,waitUntil:c.waitUntil});if(!E)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==t.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(j=l.value)?void 0:j.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});(0,h.getRequestMeta)(a,"minimalMode")||b.setHeader("x-nextjs-cache",A?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),x&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,p.fromNodeOutgoingHttpHeaders)(l.value.headers);return(0,h.getRequestMeta)(a,"minimalMode")&&E||m.delete(r.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||b.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,q.getCacheControlHeader)(l.cacheControl)),await (0,o.I)(M,N,new Response(l.value.body,{headers:m,status:l.value.status||200})),null};K?await g(K):await J.withPropagatedContext(a.headers,()=>J.trace(m.BaseServerSpan.handleRequest,{spanName:`${I} ${a.url}`,kind:i.SpanKind.SERVER,attributes:{"http.method":I,"http.target":a.url}},g))}catch(b){if(b instanceof s.NoFallbackError||await P.onRequestError(a,b,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:H,isOnDemandRevalidate:A})}),E)throw b;return await (0,o.I)(M,N,new Response(null,{status:500})),null}}},3421:(a,b,c)=>{"use strict";Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(71237),e=c(55088),f=c(17679);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{"use strict";a.exports=require("node:child_process")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},48161:a=>{"use strict";a.exports=require("node:os")},51455:a=>{"use strict";a.exports=require("node:fs/promises")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},76760:a=>{"use strict";a.exports=require("node:path")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},95736:(a,b,c)=>{"use strict";a.exports=c(44870)},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[873,609,944],()=>b(b.s=2924));module.exports=c})();
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../../node_modules/better-sqlite3/build/Release/better_sqlite3.node","../../../../../node_modules/better-sqlite3/lib/database.js","../../../../../node_modules/better-sqlite3/lib/index.js","../../../../../node_modules/better-sqlite3/lib/methods/aggregate.js","../../../../../node_modules/better-sqlite3/lib/methods/backup.js","../../../../../node_modules/better-sqlite3/lib/methods/function.js","../../../../../node_modules/better-sqlite3/lib/methods/inspect.js","../../../../../node_modules/better-sqlite3/lib/methods/pragma.js","../../../../../node_modules/better-sqlite3/lib/methods/serialize.js","../../../../../node_modules/better-sqlite3/lib/methods/table.js","../../../../../node_modules/better-sqlite3/lib/methods/transaction.js","../../../../../node_modules/better-sqlite3/lib/methods/wrappers.js","../../../../../node_modules/better-sqlite3/lib/sqlite-error.js","../../../../../node_modules/better-sqlite3/lib/util.js","../../../../../node_modules/better-sqlite3/package.json","../../../../../node_modules/bindings/bindings.js","../../../../../node_modules/bindings/package.json","../../../../../node_modules/file-uri-to-path/index.js","../../../../../node_modules/file-uri-to-path/package.json","../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../node_modules/next/dist/lib/constants.js","../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../node_modules/next/dist/lib/is-error.js","../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../../node_modules/next/dist/shared/lib/segment.js","../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../node_modules/next/package.json","../../../../../package.json","../../../../package.json","../../../chunks/609.js","../../../chunks/873.js","../../../webpack-runtime.js","route_client-reference-manifest.js"]}
1
+ {"version":1,"files":["../../../../../node_modules/better-sqlite3/build/Release/better_sqlite3.node","../../../../../node_modules/better-sqlite3/lib/database.js","../../../../../node_modules/better-sqlite3/lib/index.js","../../../../../node_modules/better-sqlite3/lib/methods/aggregate.js","../../../../../node_modules/better-sqlite3/lib/methods/backup.js","../../../../../node_modules/better-sqlite3/lib/methods/function.js","../../../../../node_modules/better-sqlite3/lib/methods/inspect.js","../../../../../node_modules/better-sqlite3/lib/methods/pragma.js","../../../../../node_modules/better-sqlite3/lib/methods/serialize.js","../../../../../node_modules/better-sqlite3/lib/methods/table.js","../../../../../node_modules/better-sqlite3/lib/methods/transaction.js","../../../../../node_modules/better-sqlite3/lib/methods/wrappers.js","../../../../../node_modules/better-sqlite3/lib/sqlite-error.js","../../../../../node_modules/better-sqlite3/lib/util.js","../../../../../node_modules/better-sqlite3/package.json","../../../../../node_modules/bindings/bindings.js","../../../../../node_modules/bindings/package.json","../../../../../node_modules/file-uri-to-path/index.js","../../../../../node_modules/file-uri-to-path/package.json","../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../node_modules/next/dist/lib/constants.js","../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../node_modules/next/dist/lib/is-error.js","../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../../node_modules/next/dist/shared/lib/segment.js","../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../node_modules/next/package.json","../../../../../package.json","../../../../../src/lib/pricing-data/litellm.json","../../../../package.json","../../../chunks/609.js","../../../chunks/873.js","../../../chunks/944.js","../../../webpack-runtime.js","route_client-reference-manifest.js"]}
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/quota-probe/route"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"9766":{"*":{"id":"77526","name":"*","chunks":[],"async":false}},"11796":{"*":{"id":"67640","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"78922","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"68495","name":"*","chunks":[],"async":false}},"20535":{"*":{"id":"58205","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"12263","name":"*","chunks":[],"async":false}},"29366":{"*":{"id":"70285","name":"*","chunks":[],"async":false}},"35248":{"*":{"id":"95753","name":"*","chunks":[],"async":false}},"38250":{"*":{"id":"21757","name":"*","chunks":[],"async":false}},"52619":{"*":{"id":"3991","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"54160","name":"*","chunks":[],"async":false}},"61871":{"*":{"id":"44237","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"75170","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"82146","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"31603","name":"*","chunks":[],"async":false}},"95828":{"*":{"id":"92437","name":"*","chunks":[],"async":false}},"95925":{"*":{"id":"94709","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"29234","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/globals.css":{"id":13673,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","177","static/chunks/app/layout-9b69ebd975a7854c.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/Sidebar.tsx":{"id":61871,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","177","static/chunks/app/layout-9b69ebd975a7854c.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/AnalyticsCharts.tsx":{"id":11796,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/RangePicker.tsx":{"id":95925,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-beaf8e4a3ac0e533.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/app-dir/link.js":{"id":52619,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-beaf8e4a3ac0e533.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/app-dir/link.js":{"id":52619,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-beaf8e4a3ac0e533.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/LlmSection.tsx":{"id":35248,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/SessionRow.tsx":{"id":38250,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/SessionActions.tsx":{"id":95828,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/LiveQuotaCard.tsx":{"id":20535,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-beaf8e4a3ac0e533.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/UsageChartCard.tsx":{"id":29366,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-beaf8e4a3ac0e533.js"],"async":false}},"entryCSSFiles":{"/Users/mikekuehn/devProjects/agentgraphed/oss/src/":[],"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/layout":[{"inlined":false,"path":"static/css/e8b7ea34df142b21.css"}],"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/page":[],"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/api/quota-probe/route":[]},"rscModuleMapping":{"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}},"11796":{"*":{"id":"32192","name":"*","chunks":[],"async":false}},"13673":{"*":{"id":"61135","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"36893","name":"*","chunks":[],"async":false}},"20535":{"*":{"id":"55775","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"73041","name":"*","chunks":[],"async":false}},"29366":{"*":{"id":"47290","name":"*","chunks":[],"async":false}},"35248":{"*":{"id":"15073","name":"*","chunks":[],"async":false}},"38250":{"*":{"id":"14631","name":"*","chunks":[],"async":false}},"52619":{"*":{"id":"65169","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"81170","name":"*","chunks":[],"async":false}},"61871":{"*":{"id":"87907","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"89748","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"51384","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"23597","name":"*","chunks":[],"async":false}},"95828":{"*":{"id":"9998","name":"*","chunks":[],"async":false}},"95925":{"*":{"id":"51094","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"69576","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/quota-probe/route"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"9766":{"*":{"id":"77526","name":"*","chunks":[],"async":false}},"11796":{"*":{"id":"67640","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"78922","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"68495","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"12263","name":"*","chunks":[],"async":false}},"29366":{"*":{"id":"70285","name":"*","chunks":[],"async":false}},"34077":{"*":{"id":"47621","name":"*","chunks":[],"async":false}},"35248":{"*":{"id":"95753","name":"*","chunks":[],"async":false}},"38250":{"*":{"id":"21757","name":"*","chunks":[],"async":false}},"52619":{"*":{"id":"3991","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"54160","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"75170","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"82146","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"31603","name":"*","chunks":[],"async":false}},"82259":{"*":{"id":"65610","name":"*","chunks":[],"async":false}},"95828":{"*":{"id":"92437","name":"*","chunks":[],"async":false}},"95925":{"*":{"id":"94709","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"29234","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/globals.css":{"id":13673,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","177","static/chunks/app/layout-359f69bd6ea201be.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/Sidebar.tsx":{"id":82259,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","177","static/chunks/app/layout-359f69bd6ea201be.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/AnalyticsCharts.tsx":{"id":11796,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/RangePicker.tsx":{"id":95925,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-72efdd1b71c43e03.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/SessionRow.tsx":{"id":38250,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/app-dir/link.js":{"id":52619,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-72efdd1b71c43e03.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/app-dir/link.js":{"id":52619,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-72efdd1b71c43e03.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/LlmSection.tsx":{"id":35248,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/SessionActions.tsx":{"id":95828,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/FreshnessIndicator.tsx":{"id":34077,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-72efdd1b71c43e03.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/UsageChartCard.tsx":{"id":29366,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-72efdd1b71c43e03.js"],"async":false}},"entryCSSFiles":{"/Users/mikekuehn/devProjects/agentgraphed/oss/src/":[],"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/layout":[{"inlined":false,"path":"static/css/568a2d3dc76080d7.css"}],"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/page":[],"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/api/quota-probe/route":[]},"rscModuleMapping":{"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}},"11796":{"*":{"id":"32192","name":"*","chunks":[],"async":false}},"13673":{"*":{"id":"61135","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"36893","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"73041","name":"*","chunks":[],"async":false}},"29366":{"*":{"id":"47290","name":"*","chunks":[],"async":false}},"34077":{"*":{"id":"39115","name":"*","chunks":[],"async":false}},"35248":{"*":{"id":"15073","name":"*","chunks":[],"async":false}},"38250":{"*":{"id":"14631","name":"*","chunks":[],"async":false}},"52619":{"*":{"id":"65169","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"81170","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"89748","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"51384","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"23597","name":"*","chunks":[],"async":false}},"82259":{"*":{"id":"87907","name":"*","chunks":[],"async":false}},"95828":{"*":{"id":"9998","name":"*","chunks":[],"async":false}},"95925":{"*":{"id":"51094","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"69576","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
@@ -1,2 +1,2 @@
1
- (()=>{var a={};a.id=974,a.ids=[974],a.modules={74:(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))},261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},25972:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,3991,23)),Promise.resolve().then(c.bind(c,58205)),Promise.resolve().then(c.bind(c,94709)),Promise.resolve().then(c.bind(c,70285))},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},29509:(a,b,c)=>{"use strict";c.d(b,{Ig:()=>h,QT:()=>g,RC:()=>e,du:()=>f});let d=[{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 e(a){let b=(a||"").toLowerCase(),c=d.find(a=>a.key===b);return c?c.key:"30d"}function f(a){return d.find(b=>b.key===a)?.days??30}function g(a){return d.find(b=>b.key===a)?.label??"Last 30 days"}function h(a){return"all"===a?"all time":a}},33873:a=>{"use strict";a.exports=require("path")},37229:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>E.a,__next_app__:()=>K,handler:()=>M,pages:()=>J,routeModule:()=>L,tree:()=>I});var d=c(49754),e=c(9117),f=c(46595),g=c(32324),h=c(39326),i=c(38928),j=c(20175),k=c(12),l=c(54290),m=c(12696),n=c(52574),o=c(82802),p=c(77533),q=c(45229),r=c(32822),s=c(261),t=c(26453),u=c(52474),v=c(26713),w=c(51356),x=c(62685),y=c(36225),z=c(63446),A=c(2762),B=c(45742),C=c(86439),D=c(81170),E=c.n(D),F=c(62506),G=c(91203),H={};for(let a in F)0>["default","tree","pages","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(H[a]=()=>F[a]);c.d(b,H);let I=["",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,60967)),"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/page.tsx"]}]},{layout:[()=>Promise.resolve().then(c.bind(c,51472)),"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,81170,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,87028,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,90461,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,32768,23)),"next/dist/client/components/builtin/unauthorized.js"]}],J=["/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/page.tsx"],K={require:c,loadChunk:()=>Promise.resolve()},L=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/page",pathname:"/",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:I},distDir:".next",relativeProjectDir:""});async function M(a,b,d){var D;let H="/page";"/index"===H&&(H="/");let N=(0,h.getRequestMeta)(a,"postponed"),O=(0,h.getRequestMeta)(a,"minimalMode"),P=await L.prepare(a,b,{srcPage:H,multiZoneDraftMode:!1});if(!P)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:Q,query:R,params:S,parsedUrl:T,pageIsDynamic:U,buildManifest:V,nextFontManifest:W,reactLoadableManifest:X,serverActionsManifest:Y,clientReferenceManifest:Z,subresourceIntegrityManifest:$,prerenderManifest:_,isDraftMode:aa,resolvedPathname:ab,revalidateOnlyGenerated:ac,routerServerContext:ad,nextConfig:ae,interceptionRoutePatterns:af}=P,ag=T.pathname||"/",ah=(0,s.normalizeAppPath)(H),{isOnDemandRevalidate:ai}=P,aj=L.match(ag,_),ak=!!_.routes[ab],al=!!(aj||ak||_.routes[ah]),am=a.headers["user-agent"]||"",an=(0,v.getBotType)(am),ao=(0,q.isHtmlBotRequest)(a),ap=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[u.NEXT_ROUTER_PREFETCH_HEADER],aq=(0,h.getRequestMeta)(a,"isRSCRequest")??(0,n.f)(a.headers[u.RSC_HEADER]),ar=(0,t.getIsPossibleServerAction)(a),as=(0,m.checkIsAppPPREnabled)(ae.experimental.ppr)&&(null==(D=_.routes[ah]??_.dynamicRoutes[ah])?void 0:D.renderingMode)==="PARTIALLY_STATIC",at=!1,au=!1,av=as?N:void 0,aw=as&&aq&&!ap,ax=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ay=!am||(0,q.shouldServeStreamingMetadata)(am,ae.htmlLimitedBots);ao&&as&&(al=!1,ay=!1);let az=!0===L.isDev||!al||"string"==typeof N||aw,aA=ao&&as,aB=null;aa||!al||az||ar||av||aw||(aB=ab);let aC=aB;!aC&&L.isDev&&(aC=ab),L.isDev||aa||!al||!aq||aw||(0,k.d)(a.headers);let aD={...F,tree:I,pages:J,GlobalError:E(),handler:M,routeModule:L,__next_app__:K};Y&&Z&&(0,p.setReferenceManifestsSingleton)({page:H,clientReferenceManifest:Z,serverActionsManifest:Y,serverModuleMap:(0,r.createServerModuleMap)({serverActionsManifest:Y})});let aE=a.method||"GET",aF=(0,g.getTracer)(),aG=aF.getActiveScopeSpan();try{let f=L.getVaryHeader(ab,af);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return L.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=aF.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${aE} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aE} ${a.url}`)})},m=async({span:e,postponed:f,fallbackRouteParams:g})=>{let i={query:R,params:S,page:ah,sharedContext:{buildId:Q},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aD,Component:(0,j.T)(aD),params:S,routeModule:L,page:H,postponed:f,shouldWaitOnAllReady:aA,serveStreamingMetadata:ay,supportsDynamicResponse:"string"==typeof f||az,buildManifest:V,nextFontManifest:W,reactLoadableManifest:X,subresourceIntegrityManifest:$,serverActionsManifest:Y,clientReferenceManifest:Z,setIsrStatus:null==ad?void 0:ad.setIsrStatus,dir:c(33873).join(process.cwd(),L.relativeProjectDir),isDraftMode:aa,isRevalidate:al&&!f&&!aw,botType:an,isOnDemandRevalidate:ai,isPossibleServerAction:ar,assetPrefix:ae.assetPrefix,nextConfigOutput:ae.output,crossOrigin:ae.crossOrigin,trailingSlash:ae.trailingSlash,previewProps:_.preview,deploymentId:ae.deploymentId,enableTainting:ae.experimental.taint,htmlLimitedBots:ae.htmlLimitedBots,devtoolSegmentExplorer:ae.experimental.devtoolSegmentExplorer,reactMaxHeadersLength:ae.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:ae.experimental.cacheLife,basePath:ae.basePath,serverActions:ae.experimental.serverActions,...at?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isRevalidate:!0,isDebugDynamicAccesses:at}:{},experimental:{isRoutePPREnabled:as,expireTime:ae.expireTime,staleTimes:ae.experimental.staleTimes,cacheComponents:!!ae.experimental.cacheComponents,clientSegmentCache:!!ae.experimental.clientSegmentCache,clientParamParsing:!!ae.experimental.clientParamParsing,dynamicOnHover:!!ae.experimental.dynamicOnHover,inlineCss:!!ae.experimental.inlineCss,authInterrupts:!!ae.experimental.authInterrupts,clientTraceMetadata:ae.experimental.clientTraceMetadata||[]},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d)=>L.onRequestError(a,b,d,ad),err:(0,h.getRequestMeta)(a,"invokeError"),dev:L.isDev}},l=await k(e,i),{metadata:m}=l,{cacheControl:n,headers:o={},fetchTags:p}=m;if(p&&(o[z.NEXT_CACHE_TAGS_HEADER]=p),a.fetchMetrics=m.fetchMetrics,al&&(null==n?void 0:n.revalidate)===0&&!L.isDev&&!as){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ab}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
- see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:w.CachedRouteKind.APP_PAGE,html:l,headers:o,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:n}},n=async({hasResolved:c,previousCacheEntry:f,isRevalidating:g,span:i})=>{let j,k=!1===L.isDev,l=c||b.writableEnded;if(ai&&ac&&!f&&!O)return(null==ad?void 0:ad.render404)?await ad.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(aj&&(j=(0,x.parseFallbackField)(aj.fallback)),j===x.FallbackMode.PRERENDER&&(0,v.isBot)(am)&&(!as||ao)&&(j=x.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ai=!0),ai&&(j!==x.FallbackMode.NOT_FOUND||f)&&(j=x.FallbackMode.BLOCKING_STATIC_RENDER),!O&&j!==x.FallbackMode.BLOCKING_STATIC_RENDER&&aC&&!l&&!aa&&U&&(k||!ak)){let b;if((k||aj)&&j===x.FallbackMode.NOT_FOUND)throw new C.NoFallbackError;if(as&&!aq){let c="string"==typeof(null==aj?void 0:aj.fallback)?aj.fallback:k?ah:null;if(b=await L.handleResponse({cacheKey:c,req:a,nextConfig:ae,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:_,isRoutePPREnabled:as,responseGenerator:async()=>m({span:i,postponed:void 0,fallbackRouteParams:k||au?(0,o.u)(ah):null}),waitUntil:d.waitUntil}),null===b)return null;if(b)return delete b.cacheControl,b}}let n=ai||g||!av?void 0:av;if(at&&void 0!==n)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:w.CachedRouteKind.PAGES,html:y.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let p=U&&as&&((0,h.getRequestMeta)(a,"renderFallbackShell")||au)?(0,o.u)(ag):null;return m({span:i,postponed:n,fallbackRouteParams:p})},p=async c=>{var f,g,i,j,k;let l,o=await L.handleResponse({cacheKey:aB,responseGenerator:a=>n({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ai,isRoutePPREnabled:as,req:a,nextConfig:ae,prerenderManifest:_,waitUntil:d.waitUntil});if(aa&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),L.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!o){if(aB)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=o.value)?void 0:f.kind)!==w.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=o.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let p="string"==typeof o.value.postponed;al&&!aw&&(!p||ap)&&(O||b.setHeader("x-nextjs-cache",ai?"REVALIDATED":o.isMiss?"MISS":o.isStale?"STALE":"HIT"),b.setHeader(u.NEXT_IS_PRERENDER_HEADER,"1"));let{value:q}=o;if(av)l={revalidate:0,expire:void 0};else if(O&&aq&&!ap&&as)l={revalidate:0,expire:void 0};else if(!L.isDev)if(aa)l={revalidate:0,expire:void 0};else if(al){if(o.cacheControl)if("number"==typeof o.cacheControl.revalidate){if(o.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${o.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:o.cacheControl.revalidate,expire:(null==(j=o.cacheControl)?void 0:j.expire)??ae.expireTime}}else l={revalidate:z.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(o.cacheControl=l,"string"==typeof ax&&(null==q?void 0:q.kind)===w.CachedRouteKind.APP_PAGE&&q.segmentData){b.setHeader(u.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=q.headers)?void 0:k[z.NEXT_CACHE_TAGS_HEADER];O&&al&&c&&"string"==typeof c&&b.setHeader(z.NEXT_CACHE_TAGS_HEADER,c);let d=q.segmentData.get(ax);return void 0!==d?(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:y.default.fromStatic(d,u.RSC_CONTENT_TYPE_HEADER),cacheControl:o.cacheControl}):(b.statusCode=204,(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:y.default.EMPTY,cacheControl:o.cacheControl}))}let r=(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r({...o,value:{...o.value,kind:"PAGE"}},{url:(0,h.getRequestMeta)(a,"initURL")}))return null;if(p&&av)throw Object.defineProperty(Error("Invariant: postponed state should not be present on a resume request"),"__NEXT_ERROR_CODE",{value:"E396",enumerable:!1,configurable:!0});if(q.headers){let a={...q.headers};for(let[c,d]of(O&&al||delete a[z.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let s=null==(g=q.headers)?void 0:g[z.NEXT_CACHE_TAGS_HEADER];if(O&&al&&s&&"string"==typeof s&&b.setHeader(z.NEXT_CACHE_TAGS_HEADER,s),!q.status||aq&&as||(b.statusCode=q.status),!O&&q.status&&G.RedirectStatusCode[q.status]&&aq&&(b.statusCode=200),p&&b.setHeader(u.NEXT_DID_POSTPONE_HEADER,"1"),aq&&!aa){if(void 0===q.rscData){if(q.postponed)throw Object.defineProperty(Error("Invariant: Expected postponed to be undefined"),"__NEXT_ERROR_CODE",{value:"E372",enumerable:!1,configurable:!0});return(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:q.html,cacheControl:aw?{revalidate:0,expire:void 0}:o.cacheControl})}return(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:y.default.fromStatic(q.rscData,u.RSC_CONTENT_TYPE_HEADER),cacheControl:o.cacheControl})}let t=q.html;if(!p||O||aq)return(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:t,cacheControl:o.cacheControl});if(at)return t.push(new ReadableStream({start(a){a.enqueue(A.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:t,cacheControl:{revalidate:0,expire:void 0}});let v=new TransformStream;return t.push(v.readable),m({span:c,postponed:q.postponed,fallbackRouteParams:null}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==w.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(v.writable)}).catch(a=>{v.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:t,cacheControl:{revalidate:0,expire:void 0}})};if(!aG)return await aF.withPropagatedContext(a.headers,()=>aF.trace(i.BaseServerSpan.handleRequest,{spanName:`${aE} ${a.url}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aE,"http.target":a.url}},p));await p(aG)}catch(b){throw b instanceof C.NoFallbackError||await L.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"render",revalidateReason:(0,f.c)({isRevalidate:al,isOnDemandRevalidate:ai})},ad),b}}},40753:(a,b,c)=>{"use strict";c.d(b,{z:()=>e});var d=c(75338);function e({title:a,subtitle:b,right:c}){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.jsx)("h1",{className:"text-headline-md text-ink font-semibold",children:a}),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})]})}},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},44237:(a,b,c)=>{"use strict";c.d(b,{Sidebar:()=>j});var d=c(21124),e=c(3991),f=c.n(e),g=c(42378),h=c(43249);let i=[{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 j(){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)("nav",{className:"px-2 py-3 flex-1 flex flex-col gap-0.5",children:i.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"})]})})]})}},46194:(a,b,c)=>{Promise.resolve().then(c.bind(c,44237))},47290:(a,b,c)=>{"use strict";c.d(b,{UsageChartCard:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call UsageChartCard() from the server but UsageChartCard is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/UsageChartCard.tsx","UsageChartCard")},48161:a=>{"use strict";a.exports=require("node:os")},51094:(a,b,c)=>{"use strict";c.d(b,{RangePicker:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call RangePicker() from the server but RangePicker is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/RangePicker.tsx","RangePicker")},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})]})})})}},55775:(a,b,c)=>{"use strict";c.d(b,{LiveQuotaCard:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call LiveQuotaCard() from the server but LiveQuotaCard is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/LiveQuotaCard.tsx","LiveQuotaCard")},58205:(a,b,c)=>{"use strict";c.d(b,{LiveQuotaCard:()=>g});var d=c(21124),e=c(38301);function f({pct:a,accent:b="bg-primary"}){let c=Math.max(0,Math.min(100,a));return(0,d.jsx)("div",{className:"h-1.5 bg-surface-2 rounded-full overflow-hidden",children:(0,d.jsx)("div",{className:`h-full ${b}`,style:{width:`${c}%`}})})}function g(){let[a,b]=(0,e.useState)({kind:"idle"}),[c,f]=(0,e.useState)(!1),g=(0,e.useRef)(!1);(0,e.useRef)(null);let i=(0,e.useCallback)(async()=>{if(!g.current){g.current=!0,b(a=>"ok"===a.kind?a:{kind:"loading"});try{let a=await fetch("/api/quota-probe",{method:"POST"}),c=await a.json();c.ok?b({kind:"ok",snap:c.snapshot}):b({kind:"err",error:c.error})}catch(a){b({kind:"err",error:a.message})}finally{g.current=!1}}},[]),j="ok"===a.kind?a.snap:null,k="err"===a.kind?a.error:null,l="loading"===a.kind;return(0,d.jsxs)("div",{className:"card",children:[(0,d.jsxs)("div",{className:"card-header flex items-center justify-between",children:[(0,d.jsx)("span",{children:"Live Quota \xb7 Anthropic"}),(0,d.jsxs)("div",{className:"flex items-center gap-2 normal-case tracking-normal",children:[(0,d.jsxs)("label",{className:"text-[11px] text-ink-mute flex items-center gap-1.5 cursor-pointer",children:[(0,d.jsx)("input",{type:"checkbox",checked:c,onChange:a=>(function(a){f(a);try{window.localStorage.setItem("agentgraphed.quota.autopoll",a?"on":"off")}catch{}})(a.target.checked),className:"accent-primary"}),"Poll every 60s"]}),(0,d.jsx)("button",{onClick:i,disabled:l,className:"btn !h-7 !px-2 text-[11px] disabled:opacity-50",children:l?"Probing…":"Probe now"})]})]}),(0,d.jsx)("div",{className:"p-4",children:j?(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)(h,{label:"5-hour window",snap:j.primary,fallback:"Not reported"}),(0,d.jsx)(h,{label:"7-day window",snap:j.secondary,fallback:"Not reported",accent:"bg-secondary"}),(0,d.jsxs)("div",{className:"flex items-center justify-between text-[11px] text-ink-mute",children:[(0,d.jsxs)("span",{children:[j.planType?`Plan: ${j.planType}`:"Plan: unknown",j.tokenWasRefreshed&&(0,d.jsx)("span",{className:"ml-2",children:"\xb7 token refreshed"})]}),(0,d.jsxs)("span",{className:"font-mono tabular",children:["Updated ",function(a){let b=Date.now()-a;return b<1e3?"just now":b<6e4?`${Math.round(b/1e3)}s`:`${Math.round(b/6e4)}m`}(j.observedAt)," ago"]})]})]}):k?(0,d.jsxs)("div",{className:"text-body-sm text-ink-dim",children:[(0,d.jsx)("div",{className:"text-error mb-1",children:"Probe failed"}),(0,d.jsx)("div",{children:k})]}):(0,d.jsxs)("div",{className:"text-body-sm text-ink-mute",children:["One probe costs ~$0.00006 (a single token on Haiku 4.5). Continuous polling at 60s is roughly $0.09/day. Off by default. Click ",(0,d.jsx)("em",{children:"Probe now"})," or enable ",(0,d.jsx)("em",{children:"Poll every 60s"}),"."]})})]})}function h({label:a,snap:b,fallback:c,accent:e}){if(!b)return(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-baseline justify-between text-body-sm mb-1",children:[(0,d.jsx)("span",{className:"text-ink",children:a}),(0,d.jsx)("span",{className:"text-ink-mute font-mono text-code-sm",children:c})]}),(0,d.jsx)(f,{pct:0,accent:e})]});let g=Math.round(b.pct),h="allowed_warning"===b.status||g>=80?"text-secondary":"allowed"===b.status||g<80?"text-ink":"text-error";return(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-baseline justify-between text-body-sm mb-1",children:[(0,d.jsx)("span",{className:"text-ink",children:a}),(0,d.jsxs)("span",{className:"font-mono text-code-sm tabular",children:[(0,d.jsxs)("span",{className:h,children:[g,"%"]}),(0,d.jsxs)("span",{className:"text-ink-mute",children:[" \xb7 resets in ",function(a){let b=a-Date.now();if(b<=0)return"resetting…";let c=Math.round(b/6e4);if(c<60)return`${c}m`;let d=Math.floor(c/60),e=c%60;return 0===e?`${d}h`:`${d}h ${e}m`}(b.resetsAt)]})]})]}),(0,d.jsx)(f,{pct:g,accent:e})]})}},59482:(a,b,c)=>{"use strict";c.d(b,{E:()=>k});var d=c(75338),e=c(65169),f=c.n(e),g=c(97064),h=c(46145),i=c(92490);function j({role:a,spanDays:b}){if("single"===a)return null;let c="started"===a?`Started \xb7 spans ${b}d`:"closed"===a?"Closed":"Continued";return(0,d.jsx)("span",{className:"text-code-sm font-mono uppercase tracking-wide px-1.5 py-0.5 rounded border border-surface-3 text-ink-mute",children:c})}function k({session:a,role:b="single",spanDays:c=1}){var e;let k=(0,g.x)(a),l=a.input_tokens+a.output_tokens+a.cache_read_tokens+a.cache_write_tokens,m=(0,g.L)(a),n="continued"===b,o="closed"===b?a.ended_at:a.started_at;return(0,d.jsxs)(f(),{href:`/sessions/${a.id}`,className:`flex items-stretch gap-3 border-l-2 border-surface-3 hover:border-primary transition-colors pl-3 py-2 group ${n?"opacity-60":""}`,children:[(0,d.jsxs)("div",{className:"flex flex-col items-center pt-1 min-w-[60px]",children:[(0,d.jsx)("div",{className:"font-mono text-code-sm text-ink-mute tabular",children:(0,h.ME)(o)}),(0,d.jsx)("div",{className:`w-1.5 h-1.5 rounded-full mt-2 ${"claude"===(e=a.provider)?"bg-primary":"codex"===e?"bg-secondary":"bg-ink-mute"}`})]}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,d.jsx)("div",{className:"text-body-md text-ink truncate group-hover:text-primary transition-colors",children:k}),(0,d.jsx)(j,{role:b,spanDays:c}),m.map(a=>(0,d.jsx)(i.i,{category:a},a))]}),(0,d.jsxs)("div",{className:"text-body-sm text-ink-mute mt-0.5 flex items-center gap-2 flex-wrap",children:[(0,d.jsx)("span",{children:a.project_name}),(0,d.jsx)("span",{children:"\xb7"}),(0,d.jsx)("span",{className:"font-mono text-code-sm",children:a.model||"unknown"}),(0,d.jsx)("span",{children:"\xb7"}),(0,d.jsxs)("span",{className:"font-mono text-code-sm tabular",children:[(0,h.yj)(l)," tok"]}),(0,d.jsx)("span",{children:"\xb7"}),(0,d.jsx)("span",{className:"font-mono text-code-sm tabular",children:(0,h.c5)(a.duration_ms)})]})]})]})}},60967:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>s,dynamic:()=>q});var d=c(75338),e=c(65169),f=c.n(e),g=c(40753),h=c(73169),i=c(59482),j=c(47290),k=c(92490),l=c(51094),m=c(55775),n=c(10944),o=c(46145),p=c(29509);let q="force-dynamic";function r(a,b){if(0===b)return{text:a>0?"new":"—",positive:a>0||null};let c=(a-b)/b*100,d=c>=0?"+":"";return{text:`${d}${c.toFixed(0)}% vs prev`,positive:c>=0}}async function s({searchParams:a}){let b=await a,c=(0,p.RC)(b.range),e=(0,p.du)(c),q=(0,p.Ig)(c),s=(0,p.QT)(c).toLowerCase(),u=(0,n.K6)(),v=(0,n.Qd)(e),w=(0,n.dS)(e),x=(0,n.jU)(e,8),y=(0,n.Cj)(e),z=(0,n.rz)(),A=(0,n.zR)(8),B=(0,n.fZ)((0,o.EL)(Date.now()));if(0===u.sessions)return(0,d.jsx)(t,{});let C=null!==e,D=r(v.tokens,v.tokens_prev),E=r(v.sessions,v.sessions_prev),F=r(v.cost,v.cost_prev);return(0,d.jsxs)("div",{children:[(0,d.jsx)(g.z,{title:"Dashboard",subtitle:(0,o.I_)(Date.now()),right:(0,d.jsxs)("div",{className:"flex items-center gap-4",children:[(0,d.jsx)(l.RangePicker,{current:c}),(0,d.jsxs)("div",{className:"text-[11px] text-ink-mute font-mono",children:[u.sessions.toLocaleString()," sessions all-time \xb7 ",(0,o.yj)(u.tokens)," tokens"]})]})}),(0,d.jsxs)("div",{className:"p-7 space-y-7",children:[(0,d.jsxs)("div",{className:"grid grid-cols-4 gap-4",children:[(0,d.jsx)(h.f,{label:`Tokens \xb7 ${q}`,value:(0,o.yj)(v.tokens),accent:"primary",hint:C?D.text:void 0}),(0,d.jsx)(h.f,{label:`Sessions \xb7 ${q}`,value:v.sessions.toString(),hint:C?E.text:void 0}),(0,d.jsx)(h.f,{label:`Projects \xb7 ${q}`,value:v.projects.toString(),hint:"active"}),(0,d.jsx)(h.f,{label:`Est. Cost \xb7 ${q}`,value:(0,o.F0)(v.cost),accent:"secondary",hint:C?F.text:"retail token prices"})]}),(0,d.jsx)(m.LiveQuotaCard,{}),(0,d.jsx)(j.UsageChartCard,{data:w,label:s}),(0,d.jsxs)("div",{className:"grid grid-cols-3 gap-4",children:[(0,d.jsxs)("div",{className:"card col-span-2",children:[(0,d.jsxs)("div",{className:"card-header flex items-center justify-between",children:[(0,d.jsx)("span",{children:z.length>0?"Today’s Activity":"Recent Activity"}),(0,d.jsx)(f(),{href:"/timeline",className:"normal-case tracking-normal text-ink-mute hover:text-primary text-[11px]",children:"Full timeline →"})]}),(0,d.jsx)("div",{className:"p-3 space-y-1",children:(z.length>0?z:A).slice(0,8).map(a=>(0,d.jsx)(i.E,{session:a},a.id))})]}),(0,d.jsxs)("div",{className:"card h-fit",children:[(0,d.jsx)("div",{className:"card-header",children:"Daily Summary"}),(0,d.jsx)("div",{className:"p-4 text-body-md text-ink-dim leading-relaxed",children:B||function(a){if(0===a.length)return"No AI coding sessions yet today.";let b=new Set(a.map(a=>a.project_name)),c=new Map;for(let b of a)b.category&&c.set(b.category,(c.get(b.category)||0)+1);let d=[...c.entries()].sort((a,b)=>b[1]-a[1]).slice(0,2).map(([a])=>a.toLowerCase()),e=[...new Map(a.map(a=>[a.project_name,a])).values()].sort((a,b)=>(b.message_count||0)-(a.message_count||0)).slice(0,2).map(a=>a.project_name).join(" and "),f=d.length?` Activity skewed toward ${d.join(" and ")}.`:"";return`You ran ${a.length} ${1===a.length?"session":"sessions"} across ${b.size} ${1===b.size?"project":"projects"}${e?`, mostly on ${e}`:""}.${f}`}(z)}),!B&&(0,d.jsxs)("div",{className:"px-4 pb-4 text-[11px] text-ink-mute",children:["Add an Anthropic key in"," ",(0,d.jsx)(f(),{href:"/settings",className:"text-primary hover:underline",children:"Settings"})," ","for AI-written summaries."]})]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-3 gap-4",children:[(0,d.jsxs)("div",{className:"card col-span-2",children:[(0,d.jsxs)("div",{className:"card-header flex items-center justify-between",children:[(0,d.jsxs)("span",{children:["Top Projects \xb7 ",s]}),(0,d.jsx)(f(),{href:"/projects",className:"normal-case tracking-normal text-ink-mute hover:text-primary text-[11px]",children:"See all →"})]}),(0,d.jsxs)("div",{className:"p-4 space-y-2.5",children:[x.map(a=>{let b=Math.max(...x.map(a=>a.tokens),1),c=a.tokens/b*100;return(0,d.jsxs)(f(),{href:`/projects/${a.id}`,className:"block group hover:bg-surface-2/40 -mx-2 px-2 py-1.5 rounded",children:[(0,d.jsxs)("div",{className:"flex items-baseline justify-between text-body-sm mb-1",children:[(0,d.jsx)("span",{className:"text-ink group-hover:text-primary transition-colors",children:a.name}),(0,d.jsxs)("span",{className:"font-mono text-ink-mute tabular text-code-sm",children:[a.sessions," ",1===a.sessions?"session":"sessions"," \xb7 ",(0,o.yj)(a.tokens)," \xb7 ",(0,o.F0)(a.cost)]})]}),(0,d.jsx)("div",{className:"h-1 bg-surface-2 rounded-full overflow-hidden",children:(0,d.jsx)("div",{className:"h-full bg-primary",style:{width:`${c}%`}})})]},a.id)}),0===x.length&&(0,d.jsx)("div",{className:"text-body-sm text-ink-mute text-center py-4",children:"No project activity in the last 30 days."})]})]}),(0,d.jsxs)("div",{className:"card h-fit",children:[(0,d.jsxs)("div",{className:"card-header",children:["Work Type \xb7 ",q]}),(0,d.jsxs)("div",{className:"p-4 space-y-2",children:[y.map(a=>{let b=Math.max(...y.map(a=>a.sessions),1),c=a.sessions/b*100;return(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between text-body-sm",children:[(0,d.jsx)(k.i,{category:a.category}),(0,d.jsx)("span",{className:"font-mono tabular text-ink-mute text-code-sm",children:a.sessions})]}),(0,d.jsx)("div",{className:"h-1 bg-surface-2 rounded-full overflow-hidden",children:(0,d.jsx)("div",{className:"h-full bg-primary/60",style:{width:`${c}%`}})})]},a.category)}),0===y.length&&(0,d.jsx)("div",{className:"text-body-sm text-ink-mute text-center py-4",children:"No data yet."})]})]})]})]})]})}function t(){return(0,d.jsxs)("div",{children:[(0,d.jsx)(g.z,{title:"Dashboard",subtitle:"No AI coding sessions found yet"}),(0,d.jsx)("div",{className:"p-7",children:(0,d.jsxs)("div",{className:"card p-10 text-center",children:[(0,d.jsx)("div",{className:"text-headline-md text-ink mb-2",children:"No sessions to show"}),(0,d.jsxs)("div",{className:"text-body-md text-ink-mute mb-4",children:["AgentGraphed looks in ",(0,d.jsx)("span",{className:"font-mono text-ink",children:"~/.claude/projects"})," and"," ",(0,d.jsx)("span",{className:"font-mono text-ink",children:"~/.codex/sessions"}),"."]}),(0,d.jsx)("div",{className:"text-body-sm text-ink-mute",children:"Run a session with Claude Code or Codex CLI and come back. AgentGraphed picks them up automatically."})]})})]})}},61135:()=>{},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},65169:(a,b,c)=>{let{createProxy:d}=c(39893);a.exports=d("/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/app-dir/link.js")},70285:(a,b,c)=>{"use strict";c.d(b,{UsageChartCard:()=>o});var d=c(21124),e=c(38301),f=c(6077),g=c(12868),h=c(57495),i=c(59296),j=c(16803),k=c(11767),l=c(57188),m=c(92155);function n({data:a,metric:b="tokens",scale:c="lin"}){let e=a.map(a=>{let d=a[b];return{...a,label:a.day.slice(5),value:"log"===c&&d<=0?1:d,raw:d}}),n="cost"===b?"#00ffab":"#00f5ff";return(0,d.jsx)("div",{className:"h-64 -mx-1",children:(0,d.jsx)(f.u,{width:"100%",height:"100%",children:(0,d.jsxs)(g.Q,{data:e,margin:{top:8,right:8,bottom:0,left:-8},children:[(0,d.jsx)("defs",{children:(0,d.jsxs)("linearGradient",{id:`grad-${b}`,x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,d.jsx)("stop",{offset:"0%",stopColor:n,stopOpacity:.35}),(0,d.jsx)("stop",{offset:"100%",stopColor:n,stopOpacity:0})]})}),(0,d.jsx)(h.d,{stroke:"#262a31",strokeDasharray:"2 4",vertical:!1}),(0,d.jsx)(i.W,{dataKey:"label",tick:{fill:"#849495",fontSize:11,fontFamily:"JetBrains Mono"},axisLine:{stroke:"#262a31"},tickLine:!1,minTickGap:48}),(0,d.jsx)(j.h,{scale:"log"===c?"log":"auto",domain:"log"===c?[1,"auto"]:["auto","auto"],allowDataOverflow:!0,tick:{fill:"#849495",fontSize:11,fontFamily:"JetBrains Mono"},axisLine:!1,tickLine:!1,tickFormatter:a=>"cost"===b?`$${Math.round(a)}`:(0,m.yj)(a)}),(0,d.jsx)(k.m,{cursor:{stroke:n,strokeOpacity:.3},contentStyle:{background:"#181c22",border:`1px solid ${n}`,borderRadius:6,fontSize:12,color:"#dfe2eb"},formatter:(a,c,d)=>{let e=d?.payload?.raw??0;return"tokens"===b?[(0,m.yj)(e),"tokens"]:"sessions"===b?[e.toString(),"sessions"]:[`$${e.toFixed(2)}`,"cost"]},labelFormatter:a=>`Day ${a}`}),(0,d.jsx)(l.G,{type:"monotone",dataKey:"value",stroke:n,strokeWidth:2,fill:`url(#grad-${b})`,isAnimationActive:!1})]})})})}function o({data:a,label:b="last 30 days"}){let[c,f]=(0,e.useState)("tokens"),g=(0,e.useMemo)(()=>!function(a,b){let c=a.map(a=>a[b]).filter(a=>a>0);if(c.length<5)return!1;let d=[...c].sort((a,b)=>a-b);return d[d.length-1]/Math.max(d[Math.floor(d.length/2)],1)>10}(a,c)?"lin":"log",[a,c]),[h,i]=(0,e.useState)(null),j=h??g;return(0,d.jsxs)("div",{className:"card",children:[(0,d.jsxs)("div",{className:"card-header flex items-center justify-between",children:[(0,d.jsxs)("span",{children:["Usage — ",b]}),(0,d.jsxs)("div",{className:"flex items-center gap-3 normal-case tracking-normal",children:[(0,d.jsx)("div",{className:"flex items-center gap-0.5",children:[{id:"tokens",label:"Tokens"},{id:"sessions",label:"Sessions"},{id:"cost",label:"Est. Cost"}].map(a=>(0,d.jsx)("button",{onClick:()=>f(a.id),className:`px-2 py-0.5 text-[11px] rounded transition-colors font-mono ${c===a.id?"bg-primary/15 text-primary":"text-ink-mute hover:text-ink-dim"}`,children:a.label},a.id))}),(0,d.jsx)("div",{className:"w-px h-4 bg-surface-3"}),(0,d.jsx)("div",{className:"flex items-center gap-0.5",children:["lin","log"].map(a=>(0,d.jsxs)("button",{onClick:()=>i(a),className:`px-1.5 py-0.5 text-[10px] rounded transition-colors font-mono uppercase relative ${j===a?"bg-secondary/15 text-secondary":"text-ink-mute hover:text-ink-dim"}`,title:"log"===a?"Logarithmic scale — better when one day dwarfs the rest":"Linear scale",children:[a,null===h&&g===a&&(0,d.jsx)("span",{className:"absolute -top-0.5 -right-0.5 w-1.5 h-1.5 rounded-full bg-secondary",title:"auto-selected based on data range"})]},a))})]})]}),(0,d.jsx)("div",{className:"p-4",children:(0,d.jsx)(n,{data:a,metric:c,scale:j})})]})}},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},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})]})}},76760:a=>{"use strict";a.exports=require("node:path")},81922:(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))},83146:(a,b,c)=>{Promise.resolve().then(c.bind(c,87907))},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},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.")},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/Sidebar.tsx","Sidebar")},89588:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,65169,23)),Promise.resolve().then(c.bind(c,55775)),Promise.resolve().then(c.bind(c,51094)),Promise.resolve().then(c.bind(c,47290))},92155:(a,b,c)=>{"use strict";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(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`}c.d(b,{F0:()=>e,c5:()=>f,yj:()=>d})},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})}},94709:(a,b,c)=>{"use strict";c.d(b,{RangePicker:()=>h});var d=c(21124),e=c(42378),f=c(38301);let g=[{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 h({current:a}){let b=(0,e.useRouter)(),c=(0,e.usePathname)(),h=(0,e.useSearchParams)(),[i,j]=(0,f.useTransition)();return(0,d.jsx)("div",{className:`flex items-center gap-0.5 normal-case tracking-normal transition-opacity ${i?"opacity-50":""}`,children:g.map(e=>(0,d.jsx)("button",{onClick:()=>(a=>{let d=new URLSearchParams(h.toString());"30d"===a?d.delete("range"):d.set("range",a);let e=d.toString();j(()=>{b.push(e?`${c}?${e}`:c)})})(e.key),className:`px-2 py-0.5 text-[11px] rounded transition-colors font-mono ${a===e.key?"bg-primary/15 text-primary":"text-ink-mute hover:text-ink-dim"}`,children:"all"===e.key?"All":e.key},e.key))})}}};var b=require("../webpack-runtime.js");b.C(a);var c=b.X(0,[873,609,564,634,944],()=>b(b.s=37229));module.exports=c})();
1
+ (()=>{var a={};a.id=974,a.ids=[974],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},15872:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,65169,23)),Promise.resolve().then(c.bind(c,39115)),Promise.resolve().then(c.bind(c,51094)),Promise.resolve().then(c.bind(c,47290))},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},29509:(a,b,c)=>{"use strict";c.d(b,{Ig:()=>h,QT:()=>g,RC:()=>e,du:()=>f});let d=[{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 e(a){let b=(a||"").toLowerCase(),c=d.find(a=>a.key===b);return c?c.key:"30d"}function f(a){return d.find(b=>b.key===a)?.days??30}function g(a){return d.find(b=>b.key===a)?.label??"Last 30 days"}function h(a){return"all"===a?"all time":a}},31421:a=>{"use strict";a.exports=require("node:child_process")},33873:a=>{"use strict";a.exports=require("path")},37229:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>E.a,__next_app__:()=>K,handler:()=>M,pages:()=>J,routeModule:()=>L,tree:()=>I});var d=c(49754),e=c(9117),f=c(46595),g=c(32324),h=c(39326),i=c(38928),j=c(20175),k=c(12),l=c(54290),m=c(12696),n=c(52574),o=c(82802),p=c(77533),q=c(45229),r=c(32822),s=c(261),t=c(26453),u=c(52474),v=c(26713),w=c(51356),x=c(62685),y=c(36225),z=c(63446),A=c(2762),B=c(45742),C=c(86439),D=c(81170),E=c.n(D),F=c(62506),G=c(91203),H={};for(let a in F)0>["default","tree","pages","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(H[a]=()=>F[a]);c.d(b,H);let I=["",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,60967)),"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/page.tsx"]}]},{layout:[()=>Promise.resolve().then(c.bind(c,51472)),"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,81170,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,87028,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,90461,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,32768,23)),"next/dist/client/components/builtin/unauthorized.js"]}],J=["/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/page.tsx"],K={require:c,loadChunk:()=>Promise.resolve()},L=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/page",pathname:"/",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:I},distDir:".next",relativeProjectDir:""});async function M(a,b,d){var D;let H="/page";"/index"===H&&(H="/");let N=(0,h.getRequestMeta)(a,"postponed"),O=(0,h.getRequestMeta)(a,"minimalMode"),P=await L.prepare(a,b,{srcPage:H,multiZoneDraftMode:!1});if(!P)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:Q,query:R,params:S,parsedUrl:T,pageIsDynamic:U,buildManifest:V,nextFontManifest:W,reactLoadableManifest:X,serverActionsManifest:Y,clientReferenceManifest:Z,subresourceIntegrityManifest:$,prerenderManifest:_,isDraftMode:aa,resolvedPathname:ab,revalidateOnlyGenerated:ac,routerServerContext:ad,nextConfig:ae,interceptionRoutePatterns:af}=P,ag=T.pathname||"/",ah=(0,s.normalizeAppPath)(H),{isOnDemandRevalidate:ai}=P,aj=L.match(ag,_),ak=!!_.routes[ab],al=!!(aj||ak||_.routes[ah]),am=a.headers["user-agent"]||"",an=(0,v.getBotType)(am),ao=(0,q.isHtmlBotRequest)(a),ap=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[u.NEXT_ROUTER_PREFETCH_HEADER],aq=(0,h.getRequestMeta)(a,"isRSCRequest")??(0,n.f)(a.headers[u.RSC_HEADER]),ar=(0,t.getIsPossibleServerAction)(a),as=(0,m.checkIsAppPPREnabled)(ae.experimental.ppr)&&(null==(D=_.routes[ah]??_.dynamicRoutes[ah])?void 0:D.renderingMode)==="PARTIALLY_STATIC",at=!1,au=!1,av=as?N:void 0,aw=as&&aq&&!ap,ax=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ay=!am||(0,q.shouldServeStreamingMetadata)(am,ae.htmlLimitedBots);ao&&as&&(al=!1,ay=!1);let az=!0===L.isDev||!al||"string"==typeof N||aw,aA=ao&&as,aB=null;aa||!al||az||ar||av||aw||(aB=ab);let aC=aB;!aC&&L.isDev&&(aC=ab),L.isDev||aa||!al||!aq||aw||(0,k.d)(a.headers);let aD={...F,tree:I,pages:J,GlobalError:E(),handler:M,routeModule:L,__next_app__:K};Y&&Z&&(0,p.setReferenceManifestsSingleton)({page:H,clientReferenceManifest:Z,serverActionsManifest:Y,serverModuleMap:(0,r.createServerModuleMap)({serverActionsManifest:Y})});let aE=a.method||"GET",aF=(0,g.getTracer)(),aG=aF.getActiveScopeSpan();try{let f=L.getVaryHeader(ab,af);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return L.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=aF.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${aE} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aE} ${a.url}`)})},m=async({span:e,postponed:f,fallbackRouteParams:g})=>{let i={query:R,params:S,page:ah,sharedContext:{buildId:Q},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aD,Component:(0,j.T)(aD),params:S,routeModule:L,page:H,postponed:f,shouldWaitOnAllReady:aA,serveStreamingMetadata:ay,supportsDynamicResponse:"string"==typeof f||az,buildManifest:V,nextFontManifest:W,reactLoadableManifest:X,subresourceIntegrityManifest:$,serverActionsManifest:Y,clientReferenceManifest:Z,setIsrStatus:null==ad?void 0:ad.setIsrStatus,dir:c(33873).join(process.cwd(),L.relativeProjectDir),isDraftMode:aa,isRevalidate:al&&!f&&!aw,botType:an,isOnDemandRevalidate:ai,isPossibleServerAction:ar,assetPrefix:ae.assetPrefix,nextConfigOutput:ae.output,crossOrigin:ae.crossOrigin,trailingSlash:ae.trailingSlash,previewProps:_.preview,deploymentId:ae.deploymentId,enableTainting:ae.experimental.taint,htmlLimitedBots:ae.htmlLimitedBots,devtoolSegmentExplorer:ae.experimental.devtoolSegmentExplorer,reactMaxHeadersLength:ae.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:ae.experimental.cacheLife,basePath:ae.basePath,serverActions:ae.experimental.serverActions,...at?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isRevalidate:!0,isDebugDynamicAccesses:at}:{},experimental:{isRoutePPREnabled:as,expireTime:ae.expireTime,staleTimes:ae.experimental.staleTimes,cacheComponents:!!ae.experimental.cacheComponents,clientSegmentCache:!!ae.experimental.clientSegmentCache,clientParamParsing:!!ae.experimental.clientParamParsing,dynamicOnHover:!!ae.experimental.dynamicOnHover,inlineCss:!!ae.experimental.inlineCss,authInterrupts:!!ae.experimental.authInterrupts,clientTraceMetadata:ae.experimental.clientTraceMetadata||[]},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d)=>L.onRequestError(a,b,d,ad),err:(0,h.getRequestMeta)(a,"invokeError"),dev:L.isDev}},l=await k(e,i),{metadata:m}=l,{cacheControl:n,headers:o={},fetchTags:p}=m;if(p&&(o[z.NEXT_CACHE_TAGS_HEADER]=p),a.fetchMetrics=m.fetchMetrics,al&&(null==n?void 0:n.revalidate)===0&&!L.isDev&&!as){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ab}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
+ see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:w.CachedRouteKind.APP_PAGE,html:l,headers:o,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:n}},n=async({hasResolved:c,previousCacheEntry:f,isRevalidating:g,span:i})=>{let j,k=!1===L.isDev,l=c||b.writableEnded;if(ai&&ac&&!f&&!O)return(null==ad?void 0:ad.render404)?await ad.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(aj&&(j=(0,x.parseFallbackField)(aj.fallback)),j===x.FallbackMode.PRERENDER&&(0,v.isBot)(am)&&(!as||ao)&&(j=x.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ai=!0),ai&&(j!==x.FallbackMode.NOT_FOUND||f)&&(j=x.FallbackMode.BLOCKING_STATIC_RENDER),!O&&j!==x.FallbackMode.BLOCKING_STATIC_RENDER&&aC&&!l&&!aa&&U&&(k||!ak)){let b;if((k||aj)&&j===x.FallbackMode.NOT_FOUND)throw new C.NoFallbackError;if(as&&!aq){let c="string"==typeof(null==aj?void 0:aj.fallback)?aj.fallback:k?ah:null;if(b=await L.handleResponse({cacheKey:c,req:a,nextConfig:ae,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:_,isRoutePPREnabled:as,responseGenerator:async()=>m({span:i,postponed:void 0,fallbackRouteParams:k||au?(0,o.u)(ah):null}),waitUntil:d.waitUntil}),null===b)return null;if(b)return delete b.cacheControl,b}}let n=ai||g||!av?void 0:av;if(at&&void 0!==n)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:w.CachedRouteKind.PAGES,html:y.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let p=U&&as&&((0,h.getRequestMeta)(a,"renderFallbackShell")||au)?(0,o.u)(ag):null;return m({span:i,postponed:n,fallbackRouteParams:p})},p=async c=>{var f,g,i,j,k;let l,o=await L.handleResponse({cacheKey:aB,responseGenerator:a=>n({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ai,isRoutePPREnabled:as,req:a,nextConfig:ae,prerenderManifest:_,waitUntil:d.waitUntil});if(aa&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),L.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!o){if(aB)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=o.value)?void 0:f.kind)!==w.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=o.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let p="string"==typeof o.value.postponed;al&&!aw&&(!p||ap)&&(O||b.setHeader("x-nextjs-cache",ai?"REVALIDATED":o.isMiss?"MISS":o.isStale?"STALE":"HIT"),b.setHeader(u.NEXT_IS_PRERENDER_HEADER,"1"));let{value:q}=o;if(av)l={revalidate:0,expire:void 0};else if(O&&aq&&!ap&&as)l={revalidate:0,expire:void 0};else if(!L.isDev)if(aa)l={revalidate:0,expire:void 0};else if(al){if(o.cacheControl)if("number"==typeof o.cacheControl.revalidate){if(o.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${o.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:o.cacheControl.revalidate,expire:(null==(j=o.cacheControl)?void 0:j.expire)??ae.expireTime}}else l={revalidate:z.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(o.cacheControl=l,"string"==typeof ax&&(null==q?void 0:q.kind)===w.CachedRouteKind.APP_PAGE&&q.segmentData){b.setHeader(u.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=q.headers)?void 0:k[z.NEXT_CACHE_TAGS_HEADER];O&&al&&c&&"string"==typeof c&&b.setHeader(z.NEXT_CACHE_TAGS_HEADER,c);let d=q.segmentData.get(ax);return void 0!==d?(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:y.default.fromStatic(d,u.RSC_CONTENT_TYPE_HEADER),cacheControl:o.cacheControl}):(b.statusCode=204,(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:y.default.EMPTY,cacheControl:o.cacheControl}))}let r=(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r({...o,value:{...o.value,kind:"PAGE"}},{url:(0,h.getRequestMeta)(a,"initURL")}))return null;if(p&&av)throw Object.defineProperty(Error("Invariant: postponed state should not be present on a resume request"),"__NEXT_ERROR_CODE",{value:"E396",enumerable:!1,configurable:!0});if(q.headers){let a={...q.headers};for(let[c,d]of(O&&al||delete a[z.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let s=null==(g=q.headers)?void 0:g[z.NEXT_CACHE_TAGS_HEADER];if(O&&al&&s&&"string"==typeof s&&b.setHeader(z.NEXT_CACHE_TAGS_HEADER,s),!q.status||aq&&as||(b.statusCode=q.status),!O&&q.status&&G.RedirectStatusCode[q.status]&&aq&&(b.statusCode=200),p&&b.setHeader(u.NEXT_DID_POSTPONE_HEADER,"1"),aq&&!aa){if(void 0===q.rscData){if(q.postponed)throw Object.defineProperty(Error("Invariant: Expected postponed to be undefined"),"__NEXT_ERROR_CODE",{value:"E372",enumerable:!1,configurable:!0});return(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:q.html,cacheControl:aw?{revalidate:0,expire:void 0}:o.cacheControl})}return(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:y.default.fromStatic(q.rscData,u.RSC_CONTENT_TYPE_HEADER),cacheControl:o.cacheControl})}let t=q.html;if(!p||O||aq)return(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:t,cacheControl:o.cacheControl});if(at)return t.push(new ReadableStream({start(a){a.enqueue(A.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:t,cacheControl:{revalidate:0,expire:void 0}});let v=new TransformStream;return t.push(v.readable),m({span:c,postponed:q.postponed,fallbackRouteParams:null}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==w.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(v.writable)}).catch(a=>{v.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:t,cacheControl:{revalidate:0,expire:void 0}})};if(!aG)return await aF.withPropagatedContext(a.headers,()=>aF.trace(i.BaseServerSpan.handleRequest,{spanName:`${aE} ${a.url}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aE,"http.target":a.url}},p));await p(aG)}catch(b){throw b instanceof C.NoFallbackError||await L.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"render",revalidateReason:(0,f.c)({isRevalidate:al,isOnDemandRevalidate:ai})},ad),b}}},39115:(a,b,c)=>{"use strict";c.d(b,{FreshnessIndicator:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call FreshnessIndicator() from the server but FreshnessIndicator is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/FreshnessIndicator.tsx","FreshnessIndicator")},40753:(a,b,c)=>{"use strict";c.d(b,{z:()=>e});var d=c(75338);function e({title:a,subtitle:b,right:c}){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.jsx)("h1",{className:"text-headline-md text-ink font-semibold",children:a}),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})]})}},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},47290:(a,b,c)=>{"use strict";c.d(b,{UsageChartCard:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call UsageChartCard() from the server but UsageChartCard is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/UsageChartCard.tsx","UsageChartCard")},47621:(a,b,c)=>{"use strict";c.d(b,{FreshnessIndicator:()=>g});var d=c(21124),e=c(38301),f=c(42378);function g({lastIngestedAt:a}){let[,b]=(0,e.useState)(0),[c,g]=(0,e.useTransition)(),h=(0,f.useRouter)(),i=0===a?"never scanned":`updated ${function(a){let b=Date.now()-a;return b<1e3?"just now":b<6e4?`${Math.round(b/1e3)}s`:b<36e5?`${Math.round(b/6e4)}m`:`${Math.round(b/36e5)}h`}(a)} ago`;return(0,d.jsxs)("span",{className:"text-[11px] text-ink-mute font-mono tabular flex items-center gap-2",children:[(0,d.jsx)("span",{children:i}),(0,d.jsx)("button",{onClick:function(){g(()=>h.refresh())},disabled:c,className:"text-ink-mute hover:text-primary uppercase tracking-wide disabled:opacity-50",title:"Re-scan local sessions and refresh",children:c?"…":"refresh"})]})}},48161:a=>{"use strict";a.exports=require("node:os")},51094:(a,b,c)=>{"use strict";c.d(b,{RangePicker:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call RangePicker() from the server but RangePicker is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/RangePicker.tsx","RangePicker")},59482:(a,b,c)=>{"use strict";c.d(b,{E:()=>k});var d=c(75338),e=c(65169),f=c.n(e),g=c(97064),h=c(46145),i=c(92490);function j({role:a,spanDays:b}){if("single"===a)return null;let c="started"===a?`Started \xb7 spans ${b}d`:"closed"===a?"Closed":"Continued";return(0,d.jsx)("span",{className:"text-code-sm font-mono uppercase tracking-wide px-1.5 py-0.5 rounded border border-surface-3 text-ink-mute",children:c})}function k({session:a,role:b="single",spanDays:c=1}){var e;let k=(0,g.x)(a),l=a.input_tokens+a.output_tokens+a.cache_read_tokens+a.cache_write_tokens,m=(0,g.L)(a),n="continued"===b,o="closed"===b?a.ended_at:a.started_at;return(0,d.jsxs)(f(),{href:`/sessions/${a.id}`,className:`flex items-stretch gap-3 border-l-2 border-surface-3 hover:border-primary transition-colors pl-3 py-2 group ${n?"opacity-60":""}`,children:[(0,d.jsxs)("div",{className:"flex flex-col items-center pt-1 min-w-[60px]",children:[(0,d.jsx)("div",{className:"font-mono text-code-sm text-ink-mute tabular",children:(0,h.ME)(o)}),(0,d.jsx)("div",{className:`w-1.5 h-1.5 rounded-full mt-2 ${"claude"===(e=a.provider)?"bg-primary":"codex"===e?"bg-secondary":"bg-ink-mute"}`})]}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,d.jsx)("div",{className:"text-body-md text-ink truncate group-hover:text-primary transition-colors",children:k}),(0,d.jsx)(j,{role:b,spanDays:c}),m.map(a=>(0,d.jsx)(i.i,{category:a},a))]}),(0,d.jsxs)("div",{className:"text-body-sm text-ink-mute mt-0.5 flex items-center gap-2 flex-wrap",children:[(0,d.jsx)("span",{children:a.project_name}),(0,d.jsx)("span",{children:"\xb7"}),(0,d.jsx)("span",{className:"font-mono text-code-sm",children:a.model||"unknown"}),(0,d.jsx)("span",{children:"\xb7"}),(0,d.jsxs)("span",{className:"font-mono text-code-sm tabular",children:[(0,h.yj)(l)," tok"]}),(0,d.jsx)("span",{children:"\xb7"}),(0,d.jsx)("span",{className:"font-mono text-code-sm tabular",children:(0,h.c5)(a.duration_ms)})]})]})]})}},60967:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>t,dynamic:()=>r});var d=c(75338),e=c(65169),f=c.n(e),g=c(40753),h=c(73169),i=c(59482),j=c(47290),k=c(92490),l=c(51094),m=c(39115),n=c(10944),o=c(86718),p=c(46145),q=c(29509);let r="force-dynamic";function s(a,b){if(0===b)return{text:a>0?"new":"—",positive:a>0||null};let c=(a-b)/b*100,d=c>=0?"+":"";return{text:`${d}${c.toFixed(0)}% vs prev`,positive:c>=0}}async function t({searchParams:a}){let b=await a,c=(0,q.RC)(b.range),e=(0,q.du)(c),r=(0,q.Ig)(c),t=(0,q.QT)(c).toLowerCase();(0,o.N)();let v=(0,n.K6)(),w=(0,n.Qd)(e),x=(0,n.dS)(e),y=(0,n.jU)(e,8),z=(0,n.Cj)(e),A=(0,n.rz)(),B=(0,n.zR)(8),C=(0,n.fZ)((0,p.EL)(Date.now())),D=(0,n.PL)("llm_provider")||"anthropic",E="anthropic"===D?!!(0,n.PL)("anthropic_api_key"):!!(0,n.PL)("openai_api_key");if(0===v.sessions)return(0,d.jsx)(u,{});let F=null!==e,G=s(w.tokens,w.tokens_prev),H=s(w.sessions,w.sessions_prev),I=s(w.cost,w.cost_prev);return(0,d.jsxs)("div",{children:[(0,d.jsx)(g.z,{title:"Dashboard",subtitle:(0,p.I_)(Date.now()),right:(0,d.jsxs)("div",{className:"flex items-center gap-4",children:[(0,d.jsx)(l.RangePicker,{current:c}),(0,d.jsxs)("div",{className:"text-[11px] text-ink-mute font-mono",children:[v.sessions.toLocaleString()," sessions all-time \xb7 ",(0,p.yj)(v.tokens)," tokens"]}),(0,d.jsx)(m.FreshnessIndicator,{lastIngestedAt:(0,o.L)()})]})}),(0,d.jsxs)("div",{className:"p-7 space-y-7",children:[(0,d.jsxs)("div",{className:"grid grid-cols-4 gap-4",children:[(0,d.jsx)(h.f,{label:`Tokens \xb7 ${r}`,value:(0,p.yj)(w.tokens),accent:"primary",hint:F?G.text:void 0}),(0,d.jsx)(h.f,{label:`Sessions \xb7 ${r}`,value:w.sessions.toString(),hint:F?H.text:void 0}),(0,d.jsx)(h.f,{label:`Projects \xb7 ${r}`,value:w.projects.toString(),hint:"active"}),(0,d.jsx)(h.f,{label:`Est. Cost \xb7 ${r}`,value:(0,p.F0)(w.cost),accent:"secondary",hint:F?I.text:"retail token prices"})]}),(0,d.jsx)(j.UsageChartCard,{data:x,label:t}),(0,d.jsxs)("div",{className:"grid grid-cols-3 gap-4",children:[(0,d.jsxs)("div",{className:"card col-span-2",children:[(0,d.jsxs)("div",{className:"card-header flex items-center justify-between",children:[(0,d.jsx)("span",{children:A.length>0?"Today’s Activity":"Recent Activity"}),(0,d.jsx)(f(),{href:"/timeline",className:"normal-case tracking-normal text-ink-mute hover:text-primary text-[11px]",children:"Full timeline →"})]}),(0,d.jsx)("div",{className:"p-3 space-y-1",children:(A.length>0?A:B).slice(0,8).map(a=>(0,d.jsx)(i.E,{session:a},a.id))})]}),(0,d.jsxs)("div",{className:"card h-fit",children:[(0,d.jsx)("div",{className:"card-header",children:"Daily Summary"}),(0,d.jsx)("div",{className:"p-4 text-body-md text-ink-dim leading-relaxed",children:C||function(a){if(0===a.length)return"No AI coding sessions yet today.";let b=new Set(a.map(a=>a.project_name)),c=new Map;for(let b of a)b.category&&c.set(b.category,(c.get(b.category)||0)+1);let d=[...c.entries()].sort((a,b)=>b[1]-a[1]).slice(0,2).map(([a])=>a.toLowerCase()),e=[...new Map(a.map(a=>[a.project_name,a])).values()].sort((a,b)=>(b.message_count||0)-(a.message_count||0)).slice(0,2).map(a=>a.project_name).join(" and "),f=d.length?` Activity skewed toward ${d.join(" and ")}.`:"";return`You ran ${a.length} ${1===a.length?"session":"sessions"} across ${b.size} ${1===b.size?"project":"projects"}${e?`, mostly on ${e}`:""}.${f}`}(A)}),!C&&!E&&(0,d.jsxs)("div",{className:"px-4 pb-4 text-[11px] text-ink-mute",children:["Add an ","openai"===D?"OpenAI":"Anthropic"," key in"," ",(0,d.jsx)(f(),{href:"/settings",className:"text-primary hover:underline",children:"Settings"})," ","to enable AI-written summaries."]})]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-3 gap-4",children:[(0,d.jsxs)("div",{className:"card col-span-2",children:[(0,d.jsxs)("div",{className:"card-header flex items-center justify-between",children:[(0,d.jsxs)("span",{children:["Top Projects \xb7 ",t]}),(0,d.jsx)(f(),{href:"/projects",className:"normal-case tracking-normal text-ink-mute hover:text-primary text-[11px]",children:"See all →"})]}),(0,d.jsxs)("div",{className:"p-4 space-y-2.5",children:[y.map(a=>{let b=Math.max(...y.map(a=>a.tokens),1),c=a.tokens/b*100;return(0,d.jsxs)(f(),{href:`/projects/${a.id}`,className:"block group hover:bg-surface-2/40 -mx-2 px-2 py-1.5 rounded",children:[(0,d.jsxs)("div",{className:"flex items-baseline justify-between text-body-sm mb-1",children:[(0,d.jsx)("span",{className:"text-ink group-hover:text-primary transition-colors",children:a.name}),(0,d.jsxs)("span",{className:"font-mono text-ink-mute tabular text-code-sm",children:[a.sessions," ",1===a.sessions?"session":"sessions"," \xb7 ",(0,p.yj)(a.tokens)," \xb7 ",(0,p.F0)(a.cost)]})]}),(0,d.jsx)("div",{className:"h-1 bg-surface-2 rounded-full overflow-hidden",children:(0,d.jsx)("div",{className:"h-full bg-primary",style:{width:`${c}%`}})})]},a.id)}),0===y.length&&(0,d.jsx)("div",{className:"text-body-sm text-ink-mute text-center py-4",children:"No project activity in the last 30 days."})]})]}),(0,d.jsxs)("div",{className:"card h-fit",children:[(0,d.jsxs)("div",{className:"card-header",children:["Work Type \xb7 ",r]}),(0,d.jsxs)("div",{className:"p-4 space-y-2",children:[z.map(a=>{let b=Math.max(...z.map(a=>a.sessions),1),c=a.sessions/b*100;return(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between text-body-sm",children:[(0,d.jsx)(k.i,{category:a.category}),(0,d.jsx)("span",{className:"font-mono tabular text-ink-mute text-code-sm",children:a.sessions})]}),(0,d.jsx)("div",{className:"h-1 bg-surface-2 rounded-full overflow-hidden",children:(0,d.jsx)("div",{className:"h-full bg-primary/60",style:{width:`${c}%`}})})]},a.category)}),0===z.length&&(0,d.jsx)("div",{className:"text-body-sm text-ink-mute text-center py-4",children:"No data yet."})]})]})]})]})]})}function u(){return(0,d.jsxs)("div",{children:[(0,d.jsx)(g.z,{title:"Dashboard",subtitle:"No AI coding sessions found yet"}),(0,d.jsx)("div",{className:"p-7",children:(0,d.jsxs)("div",{className:"card p-10 text-center",children:[(0,d.jsx)("div",{className:"text-headline-md text-ink mb-2",children:"No sessions to show"}),(0,d.jsxs)("div",{className:"text-body-md text-ink-mute mb-4",children:["AgentGraphed looks in ",(0,d.jsx)("span",{className:"font-mono text-ink",children:"~/.claude/projects"})," and"," ",(0,d.jsx)("span",{className:"font-mono text-ink",children:"~/.codex/sessions"}),"."]}),(0,d.jsx)("div",{className:"text-body-sm text-ink-mute",children:"Run a session with Claude Code or Codex CLI and come back. AgentGraphed picks them up automatically."})]})})]})}},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},65169:(a,b,c)=>{let{createProxy:d}=c(39893);a.exports=d("/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/app-dir/link.js")},70285:(a,b,c)=>{"use strict";c.d(b,{UsageChartCard:()=>o});var d=c(21124),e=c(38301),f=c(6077),g=c(12868),h=c(57495),i=c(59296),j=c(16803),k=c(11767),l=c(57188),m=c(92155);function n({data:a,metric:b="tokens",scale:c="lin"}){let e=a.map(a=>{let d=a[b];return{...a,label:a.day.slice(5),value:"log"===c&&d<=0?1:d,raw:d}}),n="cost"===b?"#00ffab":"#00f5ff";return(0,d.jsx)("div",{className:"h-64 -mx-1",children:(0,d.jsx)(f.u,{width:"100%",height:"100%",children:(0,d.jsxs)(g.Q,{data:e,margin:{top:8,right:8,bottom:0,left:-8},children:[(0,d.jsx)("defs",{children:(0,d.jsxs)("linearGradient",{id:`grad-${b}`,x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,d.jsx)("stop",{offset:"0%",stopColor:n,stopOpacity:.35}),(0,d.jsx)("stop",{offset:"100%",stopColor:n,stopOpacity:0})]})}),(0,d.jsx)(h.d,{stroke:"#262a31",strokeDasharray:"2 4",vertical:!1}),(0,d.jsx)(i.W,{dataKey:"label",tick:{fill:"#849495",fontSize:11,fontFamily:"JetBrains Mono"},axisLine:{stroke:"#262a31"},tickLine:!1,minTickGap:48}),(0,d.jsx)(j.h,{scale:"log"===c?"log":"auto",domain:"log"===c?[1,"auto"]:["auto","auto"],allowDataOverflow:!0,tick:{fill:"#849495",fontSize:11,fontFamily:"JetBrains Mono"},axisLine:!1,tickLine:!1,tickFormatter:a=>"cost"===b?`$${Math.round(a)}`:(0,m.yj)(a)}),(0,d.jsx)(k.m,{cursor:{stroke:n,strokeOpacity:.3},contentStyle:{background:"#181c22",border:`1px solid ${n}`,borderRadius:6,fontSize:12,color:"#dfe2eb"},formatter:(a,c,d)=>{let e=d?.payload?.raw??0;return"tokens"===b?[(0,m.yj)(e),"tokens"]:"sessions"===b?[e.toString(),"sessions"]:[`$${e.toFixed(2)}`,"cost"]},labelFormatter:a=>`Day ${a}`}),(0,d.jsx)(l.G,{type:"monotone",dataKey:"value",stroke:n,strokeWidth:2,fill:`url(#grad-${b})`,isAnimationActive:!1})]})})})}function o({data:a,label:b="last 30 days"}){let[c,f]=(0,e.useState)("tokens"),g=(0,e.useMemo)(()=>!function(a,b){let c=a.map(a=>a[b]).filter(a=>a>0);if(c.length<5)return!1;let d=[...c].sort((a,b)=>a-b);return d[d.length-1]/Math.max(d[Math.floor(d.length/2)],1)>10}(a,c)?"lin":"log",[a,c]),[h,i]=(0,e.useState)(null),j=h??g;return(0,d.jsxs)("div",{className:"card",children:[(0,d.jsxs)("div",{className:"card-header flex items-center justify-between",children:[(0,d.jsxs)("span",{children:["Usage — ",b]}),(0,d.jsxs)("div",{className:"flex items-center gap-3 normal-case tracking-normal",children:[(0,d.jsx)("div",{className:"flex items-center gap-0.5",children:[{id:"tokens",label:"Tokens"},{id:"sessions",label:"Sessions"},{id:"cost",label:"Est. Cost"}].map(a=>(0,d.jsx)("button",{onClick:()=>f(a.id),className:`px-2 py-0.5 text-[11px] rounded transition-colors font-mono ${c===a.id?"bg-primary/15 text-primary":"text-ink-mute hover:text-ink-dim"}`,children:a.label},a.id))}),(0,d.jsx)("div",{className:"w-px h-4 bg-surface-3"}),(0,d.jsx)("div",{className:"flex items-center gap-0.5",children:["lin","log"].map(a=>(0,d.jsxs)("button",{onClick:()=>i(a),className:`px-1.5 py-0.5 text-[10px] rounded transition-colors font-mono uppercase relative ${j===a?"bg-secondary/15 text-secondary":"text-ink-mute hover:text-ink-dim"}`,title:"log"===a?"Logarithmic scale — better when one day dwarfs the rest":"Linear scale",children:[a,null===h&&g===a&&(0,d.jsx)("span",{className:"absolute -top-0.5 -right-0.5 w-1.5 h-1.5 rounded-full bg-secondary",title:"auto-selected based on data range"})]},a))})]})]}),(0,d.jsx)("div",{className:"p-4",children:(0,d.jsx)(n,{data:a,metric:c,scale:j})})]})}},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},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})]})}},76760:a=>{"use strict";a.exports=require("node:path")},77598:a=>{"use strict";a.exports=require("node:crypto")},79424:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,3991,23)),Promise.resolve().then(c.bind(c,47621)),Promise.resolve().then(c.bind(c,94709)),Promise.resolve().then(c.bind(c,70285))},80481:a=>{"use strict";a.exports=require("node:readline")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},86718:(a,b,c)=>{"use strict";c.d(b,{L:()=>i,N:()=>h});var d=c(90027),e=c(10944),f=c(25742);let g=null;function h(){if(g)return;let a=(0,e.PL)("dashboard_last_auto_ingest_ms"),b=a?parseInt(a,10):0;Date.now()-b<1e4||((0,e.ZC)("dashboard_last_auto_ingest_ms",String(Date.now())),g=(async()=>{try{let a=await (0,d.U)();(a.claude.filesIngested>0||a.codex.filesIngested>0)&&(0,f.e)()}catch{}finally{g=null}})())}function i(){let a=(0,e.PL)("dashboard_last_auto_ingest_ms");return a?parseInt(a,10):0}},87550:a=>{"use strict";a.exports=require("better-sqlite3")},92155:(a,b,c)=>{"use strict";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(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`}c.d(b,{F0:()=>e,c5:()=>f,yj:()=>d})},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})}},94709:(a,b,c)=>{"use strict";c.d(b,{RangePicker:()=>h});var d=c(21124),e=c(42378),f=c(38301);let g=[{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 h({current:a}){let b=(0,e.useRouter)(),c=(0,e.usePathname)(),h=(0,e.useSearchParams)(),[i,j]=(0,f.useTransition)();return(0,d.jsx)("div",{className:`flex items-center gap-0.5 normal-case tracking-normal transition-opacity ${i?"opacity-50":""}`,children:g.map(e=>(0,d.jsx)("button",{onClick:()=>(a=>{let d=new URLSearchParams(h.toString());"30d"===a?d.delete("range"):d.set("range",a);let e=d.toString();j(()=>{b.push(e?`${c}?${e}`:c)})})(e.key),className:`px-2 py-0.5 text-[11px] rounded transition-colors font-mono ${a===e.key?"bg-primary/15 text-primary":"text-ink-mute hover:text-ink-dim"}`,children:"all"===e.key?"All":e.key},e.key))})}}};var b=require("../webpack-runtime.js");b.C(a);var c=b.X(0,[873,609,564,634,944,660,27],()=>b(b.s=37229));module.exports=c})();
@@ -1 +1 @@
1
- {"version":1,"files":["../../../node_modules/better-sqlite3/build/Release/better_sqlite3.node","../../../node_modules/better-sqlite3/lib/database.js","../../../node_modules/better-sqlite3/lib/index.js","../../../node_modules/better-sqlite3/lib/methods/aggregate.js","../../../node_modules/better-sqlite3/lib/methods/backup.js","../../../node_modules/better-sqlite3/lib/methods/function.js","../../../node_modules/better-sqlite3/lib/methods/inspect.js","../../../node_modules/better-sqlite3/lib/methods/pragma.js","../../../node_modules/better-sqlite3/lib/methods/serialize.js","../../../node_modules/better-sqlite3/lib/methods/table.js","../../../node_modules/better-sqlite3/lib/methods/transaction.js","../../../node_modules/better-sqlite3/lib/methods/wrappers.js","../../../node_modules/better-sqlite3/lib/sqlite-error.js","../../../node_modules/better-sqlite3/lib/util.js","../../../node_modules/better-sqlite3/package.json","../../../node_modules/bindings/bindings.js","../../../node_modules/bindings/package.json","../../../node_modules/file-uri-to-path/index.js","../../../node_modules/file-uri-to-path/package.json","../../../node_modules/next/dist/client/components/app-router-headers.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../node_modules/next/dist/lib/client-and-server-references.js","../../../node_modules/next/dist/lib/constants.js","../../../node_modules/next/dist/lib/interop-default.js","../../../node_modules/next/dist/lib/is-error.js","../../../node_modules/next/dist/lib/semver-noop.js","../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../node_modules/next/dist/server/lib/lru-cache.js","../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/dist/server/load-manifest.external.js","../../../node_modules/next/dist/server/response-cache/types.js","../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../node_modules/next/dist/shared/lib/router/utils/html-bots.js","../../../node_modules/next/dist/shared/lib/router/utils/is-bot.js","../../../node_modules/next/dist/shared/lib/segment.js","../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../node_modules/next/package.json","../../../package.json","../../../src/lib/pricing-data/litellm.json","../../package.json","../chunks/564.js","../chunks/609.js","../chunks/634.js","../chunks/873.js","../chunks/944.js","../webpack-runtime.js","page_client-reference-manifest.js"]}
1
+ {"version":1,"files":["../../../node_modules/better-sqlite3/build/Release/better_sqlite3.node","../../../node_modules/better-sqlite3/lib/database.js","../../../node_modules/better-sqlite3/lib/index.js","../../../node_modules/better-sqlite3/lib/methods/aggregate.js","../../../node_modules/better-sqlite3/lib/methods/backup.js","../../../node_modules/better-sqlite3/lib/methods/function.js","../../../node_modules/better-sqlite3/lib/methods/inspect.js","../../../node_modules/better-sqlite3/lib/methods/pragma.js","../../../node_modules/better-sqlite3/lib/methods/serialize.js","../../../node_modules/better-sqlite3/lib/methods/table.js","../../../node_modules/better-sqlite3/lib/methods/transaction.js","../../../node_modules/better-sqlite3/lib/methods/wrappers.js","../../../node_modules/better-sqlite3/lib/sqlite-error.js","../../../node_modules/better-sqlite3/lib/util.js","../../../node_modules/better-sqlite3/package.json","../../../node_modules/bindings/bindings.js","../../../node_modules/bindings/package.json","../../../node_modules/file-uri-to-path/index.js","../../../node_modules/file-uri-to-path/package.json","../../../node_modules/next/dist/client/components/app-router-headers.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../node_modules/next/dist/lib/client-and-server-references.js","../../../node_modules/next/dist/lib/constants.js","../../../node_modules/next/dist/lib/interop-default.js","../../../node_modules/next/dist/lib/is-error.js","../../../node_modules/next/dist/lib/semver-noop.js","../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../node_modules/next/dist/server/lib/lru-cache.js","../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/dist/server/load-manifest.external.js","../../../node_modules/next/dist/server/response-cache/types.js","../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../node_modules/next/dist/shared/lib/router/utils/html-bots.js","../../../node_modules/next/dist/shared/lib/router/utils/is-bot.js","../../../node_modules/next/dist/shared/lib/segment.js","../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../node_modules/next/package.json","../../../package.json","../../../src/lib/pricing-data/litellm.json","../../package.json","../chunks/27.js","../chunks/564.js","../chunks/609.js","../chunks/634.js","../chunks/660.js","../chunks/873.js","../chunks/944.js","../webpack-runtime.js","page_client-reference-manifest.js"]}