tokentrace 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/app-build-manifest.json +167 -0
  3. package/.next/app-path-routes-manifest.json +22 -0
  4. package/.next/build-manifest.json +33 -0
  5. package/.next/export-marker.json +6 -0
  6. package/.next/images-manifest.json +58 -0
  7. package/.next/next-minimal-server.js.nft.json +1 -0
  8. package/.next/next-server.js.nft.json +1 -0
  9. package/.next/package.json +1 -0
  10. package/.next/prerender-manifest.json +37 -0
  11. package/.next/react-loadable-manifest.json +1 -0
  12. package/.next/required-server-files.json +323 -0
  13. package/.next/routes-manifest.json +119 -0
  14. package/.next/server/app/_not-found/page.js +2 -0
  15. package/.next/server/app/_not-found/page.js.nft.json +1 -0
  16. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
  17. package/.next/server/app/_not-found.html +1 -0
  18. package/.next/server/app/_not-found.meta +8 -0
  19. package/.next/server/app/_not-found.rsc +37 -0
  20. package/.next/server/app/api/analytics/route.js +1 -0
  21. package/.next/server/app/api/analytics/route.js.nft.json +1 -0
  22. package/.next/server/app/api/analytics/route_client-reference-manifest.js +1 -0
  23. package/.next/server/app/api/data/route.js +151 -0
  24. package/.next/server/app/api/data/route.js.nft.json +1 -0
  25. package/.next/server/app/api/data/route_client-reference-manifest.js +1 -0
  26. package/.next/server/app/api/export/route.js +1 -0
  27. package/.next/server/app/api/export/route.js.nft.json +1 -0
  28. package/.next/server/app/api/export/route_client-reference-manifest.js +1 -0
  29. package/.next/server/app/api/files/route.js +1 -0
  30. package/.next/server/app/api/files/route.js.nft.json +1 -0
  31. package/.next/server/app/api/files/route_client-reference-manifest.js +1 -0
  32. package/.next/server/app/api/prices/route.js +151 -0
  33. package/.next/server/app/api/prices/route.js.nft.json +1 -0
  34. package/.next/server/app/api/prices/route_client-reference-manifest.js +1 -0
  35. package/.next/server/app/api/scan/route.js +144 -0
  36. package/.next/server/app/api/scan/route.js.nft.json +1 -0
  37. package/.next/server/app/api/scan/route_client-reference-manifest.js +1 -0
  38. package/.next/server/app/api/settings/route.js +128 -0
  39. package/.next/server/app/api/settings/route.js.nft.json +1 -0
  40. package/.next/server/app/api/settings/route_client-reference-manifest.js +1 -0
  41. package/.next/server/app/debug/page.js +2 -0
  42. package/.next/server/app/debug/page.js.nft.json +1 -0
  43. package/.next/server/app/debug/page_client-reference-manifest.js +1 -0
  44. package/.next/server/app/diagnostics/page.js +2 -0
  45. package/.next/server/app/diagnostics/page.js.nft.json +1 -0
  46. package/.next/server/app/diagnostics/page_client-reference-manifest.js +1 -0
  47. package/.next/server/app/discovery/page.js +2 -0
  48. package/.next/server/app/discovery/page.js.nft.json +1 -0
  49. package/.next/server/app/discovery/page_client-reference-manifest.js +1 -0
  50. package/.next/server/app/models/page.js +2 -0
  51. package/.next/server/app/models/page.js.nft.json +1 -0
  52. package/.next/server/app/models/page_client-reference-manifest.js +1 -0
  53. package/.next/server/app/optimisation/page.js +2 -0
  54. package/.next/server/app/optimisation/page.js.nft.json +1 -0
  55. package/.next/server/app/optimisation/page_client-reference-manifest.js +1 -0
  56. package/.next/server/app/page.js +2 -0
  57. package/.next/server/app/page.js.nft.json +1 -0
  58. package/.next/server/app/page_client-reference-manifest.js +1 -0
  59. package/.next/server/app/parser-debug/page.js +2 -0
  60. package/.next/server/app/parser-debug/page.js.nft.json +1 -0
  61. package/.next/server/app/parser-debug/page_client-reference-manifest.js +1 -0
  62. package/.next/server/app/pricing/page.js +152 -0
  63. package/.next/server/app/pricing/page.js.nft.json +1 -0
  64. package/.next/server/app/pricing/page_client-reference-manifest.js +1 -0
  65. package/.next/server/app/projects/page.js +2 -0
  66. package/.next/server/app/projects/page.js.nft.json +1 -0
  67. package/.next/server/app/projects/page_client-reference-manifest.js +1 -0
  68. package/.next/server/app/sessions/page.js +2 -0
  69. package/.next/server/app/sessions/page.js.nft.json +1 -0
  70. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -0
  71. package/.next/server/app/settings/page.js +129 -0
  72. package/.next/server/app/settings/page.js.nft.json +1 -0
  73. package/.next/server/app/settings/page_client-reference-manifest.js +1 -0
  74. package/.next/server/app/tools/page.js +2 -0
  75. package/.next/server/app/tools/page.js.nft.json +1 -0
  76. package/.next/server/app/tools/page_client-reference-manifest.js +1 -0
  77. package/.next/server/app-paths-manifest.json +22 -0
  78. package/.next/server/chunks/123.js +9 -0
  79. package/.next/server/chunks/153.js +1 -0
  80. package/.next/server/chunks/237.js +13 -0
  81. package/.next/server/chunks/331.js +22 -0
  82. package/.next/server/chunks/366.js +1 -0
  83. package/.next/server/chunks/444.js +267 -0
  84. package/.next/server/chunks/611.js +6 -0
  85. package/.next/server/chunks/692.js +1 -0
  86. package/.next/server/chunks/779.js +1 -0
  87. package/.next/server/chunks/815.js +1 -0
  88. package/.next/server/chunks/868.js +1 -0
  89. package/.next/server/functions-config-manifest.json +4 -0
  90. package/.next/server/interception-route-rewrite-manifest.js +1 -0
  91. package/.next/server/middleware-build-manifest.js +1 -0
  92. package/.next/server/middleware-manifest.json +6 -0
  93. package/.next/server/middleware-react-loadable-manifest.js +1 -0
  94. package/.next/server/next-font-manifest.js +1 -0
  95. package/.next/server/next-font-manifest.json +1 -0
  96. package/.next/server/pages/404.html +1 -0
  97. package/.next/server/pages/500.html +1 -0
  98. package/.next/server/pages/_app.js +1 -0
  99. package/.next/server/pages/_app.js.nft.json +1 -0
  100. package/.next/server/pages/_document.js +1 -0
  101. package/.next/server/pages/_document.js.nft.json +1 -0
  102. package/.next/server/pages/_error.js +19 -0
  103. package/.next/server/pages/_error.js.nft.json +1 -0
  104. package/.next/server/pages-manifest.json +6 -0
  105. package/.next/server/server-reference-manifest.js +1 -0
  106. package/.next/server/server-reference-manifest.json +1 -0
  107. package/.next/server/webpack-runtime.js +1 -0
  108. package/.next/static/Fh8usqK3dgfncUx9s3VR1/_buildManifest.js +1 -0
  109. package/.next/static/Fh8usqK3dgfncUx9s3VR1/_ssgManifest.js +1 -0
  110. package/.next/static/chunks/125-ab0f8db8f84c1166.js +1 -0
  111. package/.next/static/chunks/255-e881f48ae1d2333a.js +1 -0
  112. package/.next/static/chunks/4bd1b696-409494caf8c83275.js +1 -0
  113. package/.next/static/chunks/619-f072ac750404f9da.js +1 -0
  114. package/.next/static/chunks/850-8bc31e41590b5831.js +1 -0
  115. package/.next/static/chunks/938-23236de1c47554ea.js +1 -0
  116. package/.next/static/chunks/app/_not-found/page-6d75243350d9e0b5.js +1 -0
  117. package/.next/static/chunks/app/api/analytics/route-33d3f29973de91a4.js +1 -0
  118. package/.next/static/chunks/app/api/data/route-33d3f29973de91a4.js +1 -0
  119. package/.next/static/chunks/app/api/export/route-33d3f29973de91a4.js +1 -0
  120. package/.next/static/chunks/app/api/files/route-33d3f29973de91a4.js +1 -0
  121. package/.next/static/chunks/app/api/prices/route-33d3f29973de91a4.js +1 -0
  122. package/.next/static/chunks/app/api/scan/route-33d3f29973de91a4.js +1 -0
  123. package/.next/static/chunks/app/api/settings/route-33d3f29973de91a4.js +1 -0
  124. package/.next/static/chunks/app/debug/page-33d3f29973de91a4.js +1 -0
  125. package/.next/static/chunks/app/diagnostics/page-053a5e810a59e548.js +1 -0
  126. package/.next/static/chunks/app/discovery/page-33d3f29973de91a4.js +1 -0
  127. package/.next/static/chunks/app/layout-8942804176ff26f3.js +1 -0
  128. package/.next/static/chunks/app/models/page-c0acf74dd8197e01.js +1 -0
  129. package/.next/static/chunks/app/optimisation/page-33d3f29973de91a4.js +1 -0
  130. package/.next/static/chunks/app/page-b6886ec802c03cbf.js +1 -0
  131. package/.next/static/chunks/app/parser-debug/page-33d3f29973de91a4.js +1 -0
  132. package/.next/static/chunks/app/pricing/page-5e27b1ae27314539.js +1 -0
  133. package/.next/static/chunks/app/projects/page-b6886ec802c03cbf.js +1 -0
  134. package/.next/static/chunks/app/sessions/page-0abcdc88aac9dcaf.js +1 -0
  135. package/.next/static/chunks/app/settings/page-59fc80673f0750cd.js +1 -0
  136. package/.next/static/chunks/app/tools/page-c0acf74dd8197e01.js +1 -0
  137. package/.next/static/chunks/framework-3457b9c2619cdd96.js +1 -0
  138. package/.next/static/chunks/main-8744520a8a31e6ae.js +1 -0
  139. package/.next/static/chunks/main-app-e9ccddef393e28c3.js +1 -0
  140. package/.next/static/chunks/pages/_app-5addca2b3b969fde.js +1 -0
  141. package/.next/static/chunks/pages/_error-022e4ac7bbb9914f.js +1 -0
  142. package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  143. package/.next/static/chunks/webpack-3fcacae817f3ffab.js +1 -0
  144. package/.next/static/css/366bb38b386229a5.css +3 -0
  145. package/LICENSE +21 -0
  146. package/README.md +216 -0
  147. package/app/api/analytics/route.ts +8 -0
  148. package/app/api/data/route.ts +9 -0
  149. package/app/api/export/route.ts +26 -0
  150. package/app/api/files/route.ts +8 -0
  151. package/app/api/prices/route.ts +33 -0
  152. package/app/api/scan/route.ts +15 -0
  153. package/app/api/settings/route.ts +25 -0
  154. package/app/debug/page.tsx +101 -0
  155. package/app/diagnostics/page.tsx +113 -0
  156. package/app/discovery/page.tsx +61 -0
  157. package/app/globals.css +51 -0
  158. package/app/layout.tsx +30 -0
  159. package/app/models/page.tsx +97 -0
  160. package/app/optimisation/page.tsx +67 -0
  161. package/app/page.tsx +164 -0
  162. package/app/parser-debug/page.tsx +57 -0
  163. package/app/pricing/page.tsx +18 -0
  164. package/app/projects/page.tsx +111 -0
  165. package/app/sessions/page.tsx +24 -0
  166. package/app/settings/page.tsx +26 -0
  167. package/app/tools/page.tsx +92 -0
  168. package/bin/tokentrace.js +316 -0
  169. package/components/charts/rank-bar-chart.tsx +69 -0
  170. package/components/charts/trend-chart.tsx +123 -0
  171. package/components/empty-state.tsx +14 -0
  172. package/components/pricing-settings.tsx +171 -0
  173. package/components/session-explorer.tsx +210 -0
  174. package/components/settings-panel.tsx +203 -0
  175. package/components/sidebar.tsx +88 -0
  176. package/components/ui/badge.tsx +30 -0
  177. package/components/ui/button.tsx +47 -0
  178. package/components/ui/card.tsx +22 -0
  179. package/components/ui/input.tsx +19 -0
  180. package/components/ui/label.tsx +6 -0
  181. package/components/ui/table.tsx +31 -0
  182. package/components/ui/textarea.tsx +18 -0
  183. package/components.json +16 -0
  184. package/dist/runtime/db-migrate.mjs +410 -0
  185. package/dist/runtime/db-seed.mjs +506 -0
  186. package/dist/runtime/reset.mjs +519 -0
  187. package/dist/runtime/scan.mjs +1817 -0
  188. package/fixtures/generic-jsonl/sample.jsonl +2 -0
  189. package/next.config.mjs +7 -0
  190. package/package.json +96 -0
  191. package/postcss.config.mjs +8 -0
  192. package/scripts/build-cli-runtime.mjs +40 -0
  193. package/scripts/db-migrate.ts +5 -0
  194. package/scripts/db-seed.ts +5 -0
  195. package/scripts/reset.ts +5 -0
  196. package/scripts/scan.ts +30 -0
  197. package/src/db/client.ts +32 -0
  198. package/src/db/migrate-core.ts +147 -0
  199. package/src/db/reset.ts +14 -0
  200. package/src/db/schema.ts +259 -0
  201. package/src/db/seed.ts +110 -0
  202. package/src/db/settings.ts +47 -0
  203. package/src/ingestion/adapters/claude-code.ts +78 -0
  204. package/src/ingestion/adapters/codex-cli.ts +82 -0
  205. package/src/ingestion/adapters/generic-json.ts +93 -0
  206. package/src/ingestion/adapters/generic-jsonl.ts +62 -0
  207. package/src/ingestion/adapters/generic-log.ts +144 -0
  208. package/src/ingestion/adapters/generic-records.ts +178 -0
  209. package/src/ingestion/adapters/helpers.ts +309 -0
  210. package/src/ingestion/adapters/index.ts +15 -0
  211. package/src/ingestion/discovery.ts +130 -0
  212. package/src/ingestion/persist.ts +283 -0
  213. package/src/ingestion/scan.ts +247 -0
  214. package/src/ingestion/types.ts +78 -0
  215. package/src/lib/analytics.ts +592 -0
  216. package/src/lib/cost.ts +62 -0
  217. package/src/lib/csv.ts +15 -0
  218. package/src/lib/format.ts +51 -0
  219. package/src/lib/ids.ts +23 -0
  220. package/src/lib/pricing.ts +86 -0
  221. package/src/lib/token-estimator.ts +24 -0
  222. package/src/lib/utils.ts +6 -0
  223. package/tailwind.config.ts +53 -0
  224. package/tsconfig.json +28 -0
@@ -0,0 +1,144 @@
1
+ (()=>{var a={};a.id=949,a.ids=[949],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")},11670:(a,b,c)=>{"use strict";c.d(b,{W:()=>i,t:()=>h});var d=c(48689),e=c(89820),f=c(74608);let g={customFolders:[],storeRawMessageContent:!1};function h(){var a;let b=e.db.select().from(f.settings).where((0,d.eq)(f.settings.key,"app")).get();return(a=b?.value)&&"object"==typeof a?{customFolders:Array.isArray(a.customFolders)?a.customFolders.filter(a=>"string"==typeof a):[],storeRawMessageContent:!!a.storeRawMessageContent}:g}function i(a){return e.db.insert(f.settings).values({key:"app",value:a,updatedAt:new Date}).onConflictDoUpdate({target:f.settings.key,set:{value:a,updatedAt:new Date}}).run(),a}},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},24151:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>aA,patchFetch:()=>az,routeModule:()=>av,serverHooks:()=>ay,workAsyncStorage:()=>aw,workUnitAsyncStorage:()=>ax});var d={};c.r(d),c.d(d,{POST:()=>au,dynamic:()=>at});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(10641);let v=require("node:fs/promises");var w=c.n(v),x=c(76760),y=c.n(x),z=c(89820),A=c(11670),B=c(30727);function C(a){let b=(a??"").trim();return b?{tokens:Math.max(1,Math.ceil(b.length/4)),method:"chars-div-4"}:{tokens:0,method:"chars-div-4"}}function D(a,b=240){let c=(a??"").replace(/\s+/g," ").trim();return c.length<=b?c:`${c.slice(0,b-3)}...`}async function E(a,b=64e3){let c=await w().open(a,"r");try{let a=Buffer.alloc(b),{bytesRead:d}=await c.read(a,0,b,0);return a.subarray(0,d).toString("utf8")}finally{await c.close()}}async function F(a,b=0x1900000){if((await w().stat(a)).size>b)throw Error(`File is larger than ${Math.round(b/1024/1024)} MB.`);return w().readFile(a,"utf8")}function G(a){try{return JSON.parse(a)}catch{return null}}function H(a){return a&&"object"==typeof a&&!Array.isArray(a)?a:null}function I(a){return Array.isArray(a)?a:[]}function J(...a){for(let b of a)if("string"==typeof b&&b.trim())return b.trim();return null}function K(...a){for(let b of a){if("number"==typeof b&&Number.isFinite(b))return Math.max(0,Math.round(b));if("string"==typeof b&&b.trim()&&Number.isFinite(Number(b)))return Math.max(0,Math.round(Number(b)))}return null}function L(...a){for(let b of a){if(b instanceof Date&&!Number.isNaN(b.getTime()))return b;if("number"==typeof b&&Number.isFinite(b)){let a=new Date(b>1e10?b:1e3*b);if(!Number.isNaN(a.getTime()))return a}if("string"==typeof b&&b.trim()){let a=new Date(b);if(!Number.isNaN(a.getTime()))return a}}return null}function M(a){if("string"==typeof a)return a;if(Array.isArray(a))return a.map(a=>{if("string"==typeof a)return a;let b=H(a);return J(b?.text,b?.content,b?.input,b?.output)}).filter(Boolean).join("\n");let b=H(a);return b?J(b.text,b.content,b.value,b.input,b.output):null}function N(a){let b=H(a.message),c=H(a.payload),d=H(a.response);return M(a.text)??M(a.content)??M(a.prompt)??M(a.completion)??M(a.output)??M(b?.content)??M(c?.content)??M(c?.message)??M(d?.content)??null}function O(a){let b=H(a.message),c=H(a.payload),d=H(a.response)??H(c?.response),e=H(a.usage)??H(b?.usage)??H(c?.usage)??H(d?.usage)??H(a.token_usage)??H(a.tokens),f=H(e?.input_tokens_details)??H(e?.prompt_tokens_details)??H(e?.cache),g=H(e?.output_tokens_details)??H(e?.completion_tokens_details);return{inputTokens:K(e?.input_tokens,e?.prompt_tokens,e?.inputTokens,e?.promptTokens,a.input_tokens,a.prompt_tokens),outputTokens:K(e?.output_tokens,e?.completion_tokens,e?.outputTokens,e?.completionTokens,a.output_tokens,a.completion_tokens),cacheReadTokens:K(e?.cache_read_input_tokens,e?.cached_input_tokens,f?.cached_tokens,f?.cache_read_tokens,a.cache_read_tokens),cacheWriteTokens:K(e?.cache_creation_input_tokens,e?.cache_write_input_tokens,f?.cache_creation_tokens,f?.cache_write_tokens,a.cache_write_tokens),reasoningTokens:K(e?.reasoning_tokens,g?.reasoning_tokens,a.reasoning_tokens),totalTokens:K(e?.total_tokens,e?.totalTokens,e?.tokens,a.total_tokens,a.totalTokens)}}function P(a){let b=H(a.message),c=H(a.payload),d=H(a.response)??H(c?.response);return J(a.model,a.model_name,a.modelName,b?.model,c?.model,d?.model)}function Q(a){let b=H(a.message),c=J(a.role,a.type,b?.role);if(!c)return"unknown";let d=c.toLowerCase();return d.includes("assistant")||d.includes("completion")?"assistant":d.includes("user")||d.includes("prompt")?"user":d.includes("system")?"system":d.includes("tool")?"tool":"unknown"}function R(a){let b=H(a.message),c=H(a.payload),d=[...I(a.tool_calls),...I(a.toolCalls),...I(b?.tool_calls),...I(c?.tool_calls),...I(c?.toolCalls)],e=[];return d.forEach((a,b)=>{let c=H(a);if(!c)return;let d=J(c.name,c.tool,c.function_name,H(c.function)?.name);d&&e.push({externalId:J(c.id,c.call_id)??`${b}`,name:d,status:J(c.status,c.state),durationMs:K(c.duration_ms,c.durationMs),rawMetadata:c})}),e}let S=new Set(["content","text","prompt","completion","input","output","arguments","message"]);function T(a,b=0){return null==a?a:"string"==typeof a?D(a,160):"object"!=typeof a?a:b>3?"[nested metadata]":Array.isArray(a)?a.slice(0,5).map(a=>T(a,b+1)):Object.fromEntries(Object.entries(a).map(([a,c])=>S.has(a.toLowerCase())?[a,"[redacted: raw storage disabled]"]:[a,T(c,b+1)]))}function U(a){return y().basename(a).replace(/\.(jsonl|json|log|txt|md)$/i,"")}function V(a){let b=a.split(/\r?\n/).map(a=>a.trim()).filter(Boolean).slice(0,5);return b.length>0&&b.every(a=>null!==G(a))}function W(a){let b=a.defaultSessionId??U(a.file.path),c=new Map;return a.records.forEach((d,e)=>{let f=function(a,b){let c=H(a.message),d=H(a.payload);return J(a.session_id,a.sessionId,a.conversation_id,a.conversationId,a.thread_id,a.threadId,c?.session_id,c?.sessionId,d?.session_id,d?.sessionId,d?.conversation_id)??b}(d,b),g=c.get(f)??{interactions:[],projectPath:a.defaultProjectPath??null,title:null,timestamps:[],metadata:[]};g.projectPath=g.projectPath??function(a){let b=H(a.payload);return J(a.cwd,a.project_path,a.projectPath,a.repository,b?.cwd,b?.project_path,b?.projectPath)}(d),g.title=g.title??function(a){let b=H(a.payload);return J(a.title,a.summary,b?.title,b?.summary)}(d),g.metadata.push(d);let h=L(d.timestamp,d.created_at,d.createdAt,d.time,d.ts);if(h&&g.timestamps.push(h),function(a){let b=O(a);return!!(N(a)||Object.values(b).some(a=>"number"==typeof a&&a>0)||P(a)||R(a).length||"unknown"!==Q(a))}(d)){var i;let b="unknown"!==(i=function(a,b,c){let d=N(a),e=O(a),f=Object.values(e).some(a=>null!=a&&a>0),g=H(a.message),h=H(a.payload);return{externalId:b,timestamp:L(a.timestamp,a.created_at,a.createdAt,a.time,a.ts),role:Q(a),modelName:P(a),inputTokens:e.inputTokens,outputTokens:e.outputTokens,cacheReadTokens:e.cacheReadTokens,cacheWriteTokens:e.cacheWriteTokens,reasoningTokens:e.reasoningTokens,totalTokens:e.totalTokens,estimatedTokens:!1,tokenConfidence:f?"exact":d?"high-confidence estimate":"unknown",latencyMs:K(a.latency_ms,a.latencyMs,h?.latency_ms,g?.latency_ms),rawText:c?d:null,rawTextPreview:D(d),rawMetadata:c?a:T(a),toolCalls:R(a).map(a=>({...a,rawMetadata:c?a.rawMetadata:T(a.rawMetadata)}))}}(d,function(a,b){let c=H(a.message),d=H(a.payload),e=H(a.response)??H(d?.response);return J(a.uuid,a.id,a.message_id,a.messageId,c?.id,d?.id,e?.id)??`${b}`}(d,e),a.storeRawMessageContent)).role?i:(i.outputTokens??0)>0||(i.reasoningTokens??0)>0?{...i,role:"assistant"}:(i.inputTokens??0)>0?{...i,role:"user"}:i;g.interactions.push(b)}c.set(f,g)}),Array.from(c.entries()).filter(([,a])=>a.interactions.length>0).map(([b,c])=>{let d=[...c.timestamps].sort((a,b)=>a.getTime()-b.getTime());return{externalId:b,provider:a.provider,tool:a.tool,projectPath:c.projectPath,projectName:c.projectPath?void 0:"Unknown project",startedAt:d[0]??a.file.modifiedTime,endedAt:d[d.length-1]??a.file.modifiedTime,title:c.title??U(a.file.path),sourceFile:a.file.path,rawMetadata:{parserInputRecords:c.metadata.length},interactions:c.interactions}})}function X(a){let b=H(a.payload),c=H(b?.response)??H(a.response),d=H(c?.usage)??H(b?.usage)??H(a.usage),e=H(b?.message)??H(a.message),f=J(a.type,b?.type,e?.type);return{...a,...b,response:c,usage:d,model:J(a.model,b?.model,c?.model),role:J(a.role,b?.role,e?.role)??(f?.includes("response")?"assistant":void 0),content:a.content??b?.content??e?.content,cwd:a.cwd??b?.cwd,id:J(a.id,b?.id,c?.id,e?.id),timestamp:a.timestamp??b?.timestamp}}function Y(a,b){for(let c of b){let b=a.match(c);if(b?.[1])return K(b[1])}return null}function Z(a,b){for(let c of b){let b=a.match(c);if(b?.[1])return b[1].trim()}return null}let $=[{id:"claude-code",displayName:"Claude Code",async detect(a){let b=a.path.toLowerCase(),c=y().extname(a.path).toLowerCase();if(b.includes(`${y().sep}.claude${y().sep}`)&&[".jsonl",".json"].includes(c))return{detected:!0,confidence:.95,reason:"Path is inside a .claude directory"};if(![".jsonl",".json",".log"].includes(c))return{detected:!1,confidence:0};let d=await E(a.path);return/claude|anthropic|cache_creation_input_tokens|cache_read_input_tokens/i.test(d)?{detected:!0,confidence:.72,reason:"Claude/Anthropic fields found"}:{detected:!1,confidence:0}},async parse(a,b){let c=[],d=[],e=await F(a.path);if(V(e))e.split(/\r?\n/).forEach((a,b)=>{let e=a.trim();if(!e)return;let f=H(G(e));if(!f)return void c.push(`Line ${b+1} is not a JSON object.`);let g=H(f.message);d.push({...f,model:J(f.model,g?.model),role:f.type??g?.role??f.role})});else{let a=H(G(e));a&&d.push(a)}let f=function(a){let b=a.split(y().sep),c=b.lastIndexOf("projects");if(-1===c||!b[c+1])return null;let d=b[c+1];return d.startsWith("-")?d.replace(/-/g,y().sep):null}(a.path);return{sessions:W({file:a,records:d,provider:{id:"anthropic",name:"Anthropic",type:"llm-provider"},tool:{id:"claude-code",name:"Claude Code"},storeRawMessageContent:b.storeRawMessageContent,defaultProjectPath:f}),warnings:c,errors:d.length?[]:["No Claude Code JSON records were parsed."]}}},{id:"codex-cli",displayName:"Codex CLI",async detect(a){let b=a.path.toLowerCase(),c=y().extname(a.path).toLowerCase();if(b.includes(`${y().sep}.codex${y().sep}`)&&[".jsonl",".json",".log"].includes(c))return{detected:!0,confidence:.95,reason:"Path is inside a .codex directory"};if(![".jsonl",".json",".log"].includes(c))return{detected:!1,confidence:0};let d=await E(a.path);return/codex|openai|response\.completed|response_completed|turn_context/i.test(d)?{detected:!0,confidence:.72,reason:"Codex/OpenAI event fields found"}:{detected:!1,confidence:0}},async parse(a,b){let c=[],d=[],e=await F(a.path);if(V(e))e.split(/\r?\n/).forEach((a,b)=>{let e=a.trim();if(!e)return;let f=H(G(e));if(!f)return void c.push(`Line ${b+1} is not a JSON object.`);d.push(X(f))});else{let a=H(G(e));a&&d.push(X(a))}return{sessions:W({file:a,records:d,provider:{id:"openai",name:"OpenAI",type:"llm-provider"},tool:{id:"codex-cli",name:"Codex CLI"},storeRawMessageContent:b.storeRawMessageContent}),warnings:c,errors:d.length?[]:["No Codex CLI JSON records were parsed."]}}},{id:"generic-jsonl",displayName:"Generic JSONL",async detect(a){let b=y().extname(a.path).toLowerCase();return".jsonl"===b||a.path.endsWith(".jsonl.gz")?{detected:!0,confidence:.75,reason:"JSONL extension"}:[".log",".txt",""].includes(b)&&V(await E(a.path))?{detected:!0,confidence:.55,reason:"First lines are JSON objects"}:{detected:!1,confidence:0}},async parse(a,b){let c=[],d=[],e=await F(a.path),f=[];return e.split(/\r?\n/).forEach((a,b)=>{let d=a.trim();if(!d)return;let e=H(G(d));if(!e)return void c.push(`Line ${b+1} is not a JSON object.`);f.push(e)}),f.length||d.push("No JSON objects were parsed."),{sessions:W({file:a,records:f,provider:{id:"generic",name:"Generic",type:"local-log"},tool:{id:"generic-jsonl",name:"Generic JSONL"},storeRawMessageContent:b.storeRawMessageContent}),warnings:c,errors:d}}},{id:"generic-json",displayName:"Generic JSON",detect:async a=>".json"!==y().extname(a.path).toLowerCase()?{detected:!1,confidence:0}:G(await E(a.path))?{detected:!0,confidence:.65,reason:"JSON extension and valid JSON sample"}:{detected:!0,confidence:.35,reason:"JSON extension"},async parse(a,b){let c=[],d=function(a){let b=H(a);if(Array.isArray(a))return a.map(H).filter(a=>!!a);if(!b)return[];let c=I(b.sessions);if(c.length)return c.flatMap((a,b)=>{let c=H(a);if(!c)return[];let d=[...I(c.messages),...I(c.interactions),...I(c.events)];return d.length?d.map(H).filter(a=>!!a).map((a,d)=>({...a,session_id:c.session_id??c.sessionId??c.id??`session-${b}`,cwd:a.cwd??c.cwd??c.project_path,title:a.title??c.title,id:a.id??`${b}-${d}`})):[c]});let d=[...I(b.messages),...I(b.interactions),...I(b.events),...I(b.records)];return d.length?d.map(H).filter(a=>!!a):[b]}(G(await F(a.path)));return d.length||c.push("No usable JSON records were found."),{sessions:W({file:a,records:d,provider:{id:"generic",name:"Generic",type:"local-log"},tool:{id:"generic-json",name:"Generic JSON"},storeRawMessageContent:b.storeRawMessageContent}),warnings:[],errors:c}}},{id:"generic-log",displayName:"Generic Text Log",async detect(a){if(![".log",".txt",".md",""].includes(y().extname(a.path).toLowerCase()))return{detected:!1,confidence:0};let b=await E(a.path);return/(tokens?|prompt_tokens|completion_tokens|model|session|cost|\$[0-9.]+)/i.test(b)?{detected:!0,confidence:.45,reason:"Token/model/cost-like text found"}:{detected:!1,confidence:0}},async parse(a,b){let c=await F(a.path),d=c.split(/\r?\n/),e=[],f=[],g=U(a.path),h=null;if(d.forEach((c,d)=>{let f=Z(c,[/session(?:_id)?\s*[:=]\s*([^\s,]+)/i]);f&&(g=f),h=h??Z(c,[/(?:cwd|project|path)\s*[:=]\s*(.+)$/i]);let i=Z(c,[/model\s*[:=]\s*([A-Za-z0-9_.:/-]+)/i]),j=Y(c,[/(?:input_tokens|prompt_tokens|input tokens|prompt tokens)\s*[:=]\s*([0-9,]+)/i]),k=Y(c,[/(?:output_tokens|completion_tokens|output tokens|completion tokens)\s*[:=]\s*([0-9,]+)/i]),l=Y(c,[/(?:total_tokens|total tokens|tokens)\s*[:=]\s*([0-9,]+)/i]),m=Y(c,[/(?:reasoning_tokens|reasoning tokens)\s*[:=]\s*([0-9,]+)/i]),n=null!=j||null!=k||null!=l||null!=m;if(!i&&!n)return;let o=L(Z(c,[/^(\d{4}-\d{2}-\d{2}T[^\s]+)/,/^(\d{4}-\d{2}-\d{2} [^\]]+)/]))??a.modifiedTime,p=!n,q=p?C(c):{tokens:0},r=l??(j??0)+(k??0)+(m??0);e.push({externalId:`${g}-${d}`,timestamp:o,role:k||m?"assistant":"unknown",modelName:i,inputTokens:j??(p?q.tokens:0),outputTokens:k??0,reasoningTokens:m??0,cacheReadTokens:0,cacheWriteTokens:0,totalTokens:r||q.tokens,estimatedTokens:p,tokenConfidence:p?"low-confidence estimate":"high-confidence estimate",rawText:b.storeRawMessageContent?c:null,rawTextPreview:D(c),rawMetadata:{source:"generic-log-line",line:d+1},toolCalls:[]})}),!e.length&&c.trim()){let d=C(c);f.push("No structured token lines found; created one estimated file-level interaction."),e.push({externalId:`${g}-estimated-file`,timestamp:a.modifiedTime,role:"unknown",modelName:"unknown",inputTokens:d.tokens,outputTokens:0,reasoningTokens:0,cacheReadTokens:0,cacheWriteTokens:0,totalTokens:d.tokens,estimatedTokens:!0,tokenConfidence:"low-confidence estimate",rawText:b.storeRawMessageContent?c:null,rawTextPreview:D(c),rawMetadata:{source:"generic-log-file-estimate"},toolCalls:[]})}return{sessions:e.length?[{externalId:g,provider:{id:"generic",name:"Generic",type:"local-log"},tool:{id:"generic-log",name:"Generic Log"},projectPath:h,projectName:h?void 0:"Unknown project",startedAt:e[0]?.timestamp??a.modifiedTime,endedAt:e[e.length-1]?.timestamp??a.modifiedTime,title:U(a.path),sourceFile:a.path,rawMetadata:{parser:"generic-log"},interactions:e}]:[],warnings:f,errors:e.length?[]:["No text log records were inferred."]}}}],_=require("node:os");var aa=c.n(_);let ab=new Set([".jsonl",".json",".log",".txt",".md",".db",".sqlite",".sqlite3"]),ac=new Set(["node_modules",".git",".next","dist","out","build","coverage","Library","Applications"]);function ad(a){return"~"===a?aa().homedir():a.startsWith("~/")?y().join(aa().homedir(),a.slice(2)):a}async function ae(a){try{return await w().access(a),!0}catch{return!1}}async function af(a=[]){let b=aa().homedir(),c=process.env.TOKENTRACE_WORKDIR??process.cwd(),d=process.env.TOKENTRACE_APP_DATA_DIR,e=Array.from(new Set([y().join(b,".claude"),y().join(b,".config","claude"),y().join(b,".codex"),y().join(b,".config","codex"),y().join(b,".openai"),y().join(c,".claude"),y().join(c,".codex"),y().join(c,".openai"),y().join(c,".ai"),...d?[y().join(d,"wrapper-runs")]:[],...a.map(ad)].map(a=>y().resolve(a)))),f=[];for(let a of e)await ae(a)&&f.push(a);return f}async function ag(a,b,c,d){let e;if(!(b>c)){try{e=await w().readdir(a,{withFileTypes:!0})}catch{return}for(let f of e){let e=y().join(a,f.name);if(f.isDirectory()){if(ac.has(f.name))continue;await ag(e,b+1,c,d);continue}if(!f.isFile())continue;let g=y().extname(f.name).toLowerCase();if(ab.has(g))try{let a=await w().stat(e);if(a.size<=0||a.size>0x1900000)continue;d.push({path:e,modifiedTime:a.mtime,sizeBytes:a.size})}catch{continue}}}}async function ah(a){let b=[];for(let c of a){let a=await w().stat(c).catch(()=>null);if(a){if(a.isFile()){let d=y().extname(c).toLowerCase();ab.has(d)&&b.push({path:c,modifiedTime:a.mtime,sizeBytes:a.size});continue}a.isDirectory()&&await ag(c,0,12,b)}}let c=new Map;for(let a of b)c.set(a.path,a);return Array.from(c.values()).sort((a,b)=>a.path.localeCompare(b.path))}var ai=c(73024),aj=c.n(ai);function ak(a,b){return a&&null!=b?a*b/1e6:0}function al(a){return JSON.stringify(a??null)}function am(a,b){return z.F.prepare(a).run(...b).changes}function an(a,b){return z.F.prepare(`SELECT id, input_token_price, output_token_price, cached_input_token_price, currency
2
+ FROM models WHERE provider_id = ? AND lower(name) = lower(?)`).get(a,b)}function ao(a){return JSON.stringify(a??null)}async function ap(a){let b=await w().readFile(a.path);return{...a,hash:(0,B.sW)(b)}}async function aq(a){let b=[],c=[];for(let d of $)try{let c=await d.detect(a);c.detected&&b.push({adapter:d,confidence:c.confidence,reason:c.reason})}catch(a){c.push(`${d.displayName} detection failed: ${a instanceof Error?a.message:"Unknown error"}`)}return b.sort((a,b)=>b.confidence-a.confidence),{selected:b[0]??null,warnings:c}}function ar(a){let b=(0,B.dD)("scanfile",[a.scanRunId,a.file.path,a.file.hash,a.status,a.parser]);z.F.prepare(`INSERT INTO scan_files
3
+ (id, scan_run_id, path, modified_time, size_bytes, file_hash, parser, status,
4
+ records_imported, warnings, errors, raw_metadata)
5
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(b,a.scanRunId,a.file.path,a.file.modifiedTime?.getTime()??null,a.file.sizeBytes,a.file.hash??null,a.parser,a.status,a.recordsImported,ao(a.warnings),ao(a.errors),ao(a.rawMetadata??{}))}async function as(a={}){let b=(0,A.t)(),c=a.folders??[],d=!1===a.includeDefaults?c.map(a=>y().resolve(ad(a))):await af([...b.customFolders,...c]),e=await ah(d),f=new Date,g=(0,B.dD)("scan",[f.getTime(),d.join("|")]),h=[],i=[],j=0,k=0;for(let c of(z.F.prepare("INSERT INTO scan_runs (id, started_at, warnings, errors) VALUES (?, ?, '[]', '[]')").run(g,f.getTime()),e)){k+=1;let d=c,e=[],f=[];try{var l;if(d=await ap(c),!a.force&&(l=d).hash&&z.F.prepare("SELECT id FROM scan_files WHERE path = ? AND file_hash = ? AND status = 'imported' LIMIT 1").get(l.path,l.hash)){ar({scanRunId:g,file:d,parser:null,status:"skipped_duplicate",recordsImported:0,warnings:["File hash already imported. Use force rescan to parse again."],errors:[]});continue}let h=await aq(d);if(e.push(...h.warnings),!h.selected){ar({scanRunId:g,file:d,parser:null,status:"skipped_unknown",recordsImported:0,warnings:e,errors:["No parser detected a compatible format."]});continue}let i=await h.selected.adapter.parse(d,{storeRawMessageContent:a.storeRawMessageContent??b.storeRawMessageContent});e.push(...i.warnings),f.push(...i.errors);let k=function(a){let b=0,c=0,d=0;return z.F.transaction(a=>{for(let f of a){var e;am("INSERT OR IGNORE INTO providers (id, name, type) VALUES (?, ?, ?)",[f.provider.id,f.provider.name,f.provider.type]),am("INSERT OR IGNORE INTO tools (id, provider_id, name) VALUES (?, ?, ?)",[f.tool.id,f.provider.id,f.tool.name]);let a=(e=f.tool.id,z.F.prepare("SELECT provider_id FROM tools WHERE id = ?").get(e))?.provider_id??f.provider.id,g=function(a){let b=a.projectPath||function(a){let b=aj().statSync(a).isDirectory()?a:y().dirname(a),c=process.env.HOME??y().parse(b).root;for(;b!==y().dirname(b);){if(aj().existsSync(y().join(b,".git"))||aj().existsSync(y().join(b,"package.json"))||aj().existsSync(y().join(b,"pyproject.toml"))||aj().existsSync(y().join(b,"Cargo.toml")))return b;if(b===c)break;b=y().dirname(b)}return y().dirname(a)}(a.sourceFile),c=y().resolve(b),d=a.projectName||y().basename(c)||"Unknown project",e=(0,B.dD)("project",[c]);return am("INSERT OR IGNORE INTO projects (id, name, path) VALUES (?, ?, ?)",[e,d,c]),e}(f),h=(0,B.dD)("session-source",[f.tool.id,f.sourceFile,f.externalId??f.title]),i=(0,B.dD)("session",[h]),j=am(`INSERT OR IGNORE INTO sessions
6
+ (id, source_id, tool_id, project_id, started_at, ended_at, title, source_file, raw_metadata)
7
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[i,h,f.tool.id,g,f.startedAt?.getTime()??null,f.endedAt?.getTime()??null,f.title??null,f.sourceFile,al(f.rawMetadata)]);for(let e of(b+=j,f.interactions)){let b=function(a,b){let c=b?.trim()||"unknown",d=an(a,c);if(d)return d;let e=(0,B.dD)("model",[a,c]);return am(`INSERT OR IGNORE INTO models
8
+ (id, provider_id, name, input_token_price, output_token_price, cached_input_token_price, currency, raw_metadata)
9
+ VALUES (?, ?, ?, NULL, NULL, NULL, 'USD', ?)`,[e,a,c,al({note:"Observed during import. Add prices on the Pricing page to enable cost calculation."})]),an(a,c)??{id:e,input_token_price:null,output_token_price:null,cached_input_token_price:null,currency:"USD"}}(a,e.modelName),g=function(a){let b=[a.inputTokens,a.outputTokens,a.cacheReadTokens,a.cacheWriteTokens,a.reasoningTokens,a.totalTokens].some(a=>null!=a&&a>0),c=C(a.rawText||a.rawTextPreview||"").tokens,d=!!(a.estimatedTokens||!b),e=a.tokenConfidence??"unknown",f=a.inputTokens??0,g=a.outputTokens??0,h=a.cacheReadTokens??0,i=a.cacheWriteTokens??0,j=a.reasoningTokens??0;!b&&c>0&&("assistant"===a.role?g=c:f=c,"unknown"===e&&(e="low-confidence estimate"));let k=f+g+h+i+j;return{inputTokens:f,outputTokens:g,cacheReadTokens:h,cacheWriteTokens:i,reasoningTokens:j,totalTokens:Math.max(a.totalTokens??0,k),estimatedTokens:d,tokenConfidence:e}}(e),j=function(a,b){if(!b||null==b.inputTokenPrice||null==b.outputTokenPrice)return{amount:null,currency:b?.currency??"USD",estimated:a.estimatedTokens,status:"unknown",explanation:"No complete model pricing is configured."};let c=ak(a.inputTokens,b.inputTokenPrice),d=ak(a.outputTokens+a.reasoningTokens,b.outputTokenPrice),e=ak(a.cacheReadTokens,b.cachedInputTokenPrice??b.inputTokenPrice),f=ak(a.cacheWriteTokens,b.inputTokenPrice);return{amount:c+d+e+f,currency:b.currency,estimated:a.estimatedTokens,status:a.estimatedTokens?"estimated":"exact",explanation:a.estimatedTokens?"Token counts were estimated before applying configured prices.":"Exact token counts were multiplied by configured prices."}}(g,{inputTokenPrice:b.input_token_price,outputTokenPrice:b.output_token_price,cachedInputTokenPrice:b.cached_input_token_price,currency:b.currency}),k=(0,B.dD)("interaction-source",[h,e.externalId,e.timestamp?.getTime(),e.role,e.rawTextPreview]),l=(0,B.dD)("interaction",[k]),m=am(`INSERT OR IGNORE INTO interactions
10
+ (id, source_id, session_id, timestamp, role, model_id, input_tokens, output_tokens,
11
+ cache_read_tokens, cache_write_tokens, reasoning_tokens, total_tokens, estimated_tokens,
12
+ token_confidence, cost, cost_estimated, latency_ms, raw_text_preview, raw_text, raw_metadata)
13
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[l,k,i,e.timestamp?.getTime()??f.startedAt?.getTime()??null,e.role,b.id,g.inputTokens,g.outputTokens,g.cacheReadTokens,g.cacheWriteTokens,g.reasoningTokens,g.totalTokens,+!!g.estimatedTokens,g.tokenConfidence,j.amount,+("estimated"===j.status),e.latencyMs??null,D(e.rawTextPreview||e.rawText),e.rawText??null,al({...e.rawMetadata??{},costStatus:j.status,costExplanation:j.explanation})]);for(let[a,b]of(c+=m,(e.toolCalls??[]).entries())){let c=(0,B.dD)("toolcall",[l,b.externalId??a,b.name]);d+=am(`INSERT OR IGNORE INTO tool_calls
14
+ (id, interaction_id, name, status, duration_ms, raw_metadata)
15
+ VALUES (?, ?, ?, ?, ?, ?)`,[c,l,b.name,b.status??null,b.durationMs??null,al(b.rawMetadata)])}}}})(a),{sessionsImported:b,interactionsImported:c,toolCallsImported:d,warnings:[]}}(i.sessions),m=i.sessions.flatMap(a=>a.interactions).reduce((a,b)=>{let c=b.tokenConfidence??"unknown";return a[c]=(a[c]??0)+1,a},{});e.push(...k.warnings),j+=k.interactionsImported,ar({scanRunId:g,file:d,parser:h.selected.adapter.id,status:f.length?"imported_with_errors":"imported",recordsImported:k.interactionsImported,warnings:e,errors:f,rawMetadata:{confidence:h.selected.confidence,reason:h.selected.reason,tokenConfidence:m,sessionsParsed:i.sessions.length,sessionsImported:k.sessionsImported,toolCallsImported:k.toolCallsImported}})}catch(b){let a=b instanceof Error?b.message:"Unknown scan error";f.push(a),ar({scanRunId:g,file:d,parser:null,status:"failed",recordsImported:0,warnings:e,errors:f})}h.push(...e.map(a=>`${c.path}: ${a}`)),i.push(...f.map(a=>`${c.path}: ${a}`))}return z.F.prepare(`UPDATE scan_runs
16
+ SET completed_at = ?, files_scanned = ?, records_imported = ?, warnings = ?, errors = ?
17
+ WHERE id = ?`).run(Date.now(),k,j,ao(h),ao(i),g),{scanRunId:g,filesScanned:k,recordsImported:j,warnings:h,errors:i}}let at="force-dynamic";async function au(a){let b=await a.json().catch(()=>({})),c=await as({folders:Array.isArray(b.folders)?b.folders.filter(a=>"string"==typeof a):void 0,force:!!b.force});return u.NextResponse.json(c)}let av=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/scan/route",pathname:"/api/scan",filename:"route",bundlePath:"app/api/scan/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/abhyoh/Documents/Brand/Apps/token-usage/app/api/scan/route.ts",nextConfigOutput:"",userland:d}),{workAsyncStorage:aw,workUnitAsyncStorage:ax,serverHooks:ay}=av;function az(){return(0,g.patchFetch)({workAsyncStorage:aw,workUnitAsyncStorage:ax})}async function aA(a,b,c){var d;let e="/api/scan/route";"/index"===e&&(e="/");let g=await av.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||av.isDev||x||(F="/index"===(F=C)?"/":F);let G=!0===av.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)=>av.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=>av.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 av.onRequestError(a,b,{routerKind:"App Router",routePath:e,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:H,isOnDemandRevalidate:A})},z),b}},l=await av.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 av.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}}},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},30727:(a,b,c)=>{"use strict";c.d(b,{sW:()=>g,dD:()=>f});let d=require("node:crypto");var e=c.n(d);function f(a,b){let c=e().createHash("sha1").update(b.map(a=>String(a??"")).join("\x1f")).digest("hex").slice(0,24);return`${a}_${c}`}function g(a){return e().createHash("sha256").update(a).digest("hex")}},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},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")},74608:(a,b,c)=>{"use strict";c.r(b),c.d(b,{interactionRelations:()=>z,interactions:()=>p,modelRelations:()=>w,models:()=>m,projectRelations:()=>x,projects:()=>n,providerRelations:()=>u,providers:()=>k,scanFiles:()=>s,scanRuns:()=>r,sessionRelations:()=>y,sessions:()=>o,settings:()=>t,toolCalls:()=>q,toolRelations:()=>v,tools:()=>l});var d=c(85766),e=c(47543),f=c(95417),g=c(58040),h=c(20377),i=c(4035),j=c(19643);let k=(0,f.D)("providers",{id:(0,g.Qq)("id").primaryKey(),name:(0,g.Qq)("name").notNull(),type:(0,g.Qq)("type").notNull(),createdAt:(0,h.nd)("created_at",{mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)}),l=(0,f.D)("tools",{id:(0,g.Qq)("id").primaryKey(),providerId:(0,g.Qq)("provider_id").notNull().references(()=>k.id,{onDelete:"cascade"}),name:(0,g.Qq)("name").notNull(),createdAt:(0,h.nd)("created_at",{mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},a=>({providerNameIdx:(0,i.GL)("tools_provider_name_idx").on(a.providerId,a.name)})),m=(0,f.D)("models",{id:(0,g.Qq)("id").primaryKey(),providerId:(0,g.Qq)("provider_id").notNull().references(()=>k.id,{onDelete:"cascade"}),name:(0,g.Qq)("name").notNull(),inputTokenPrice:(0,j.x)("input_token_price"),outputTokenPrice:(0,j.x)("output_token_price"),cachedInputTokenPrice:(0,j.x)("cached_input_token_price"),currency:(0,g.Qq)("currency").notNull().default("USD"),effectiveFrom:(0,h.nd)("effective_from",{mode:"timestamp_ms"}),rawMetadata:(0,g.Qq)("raw_metadata",{mode:"json"}).$type()},a=>({providerModelIdx:(0,i.GL)("models_provider_name_idx").on(a.providerId,a.name)})),n=(0,f.D)("projects",{id:(0,g.Qq)("id").primaryKey(),name:(0,g.Qq)("name").notNull(),path:(0,g.Qq)("path").notNull(),createdAt:(0,h.nd)("created_at",{mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},a=>({pathIdx:(0,i.GL)("projects_path_idx").on(a.path)})),o=(0,f.D)("sessions",{id:(0,g.Qq)("id").primaryKey(),sourceId:(0,g.Qq)("source_id").notNull(),toolId:(0,g.Qq)("tool_id").notNull().references(()=>l.id,{onDelete:"cascade"}),projectId:(0,g.Qq)("project_id").references(()=>n.id,{onDelete:"set null"}),startedAt:(0,h.nd)("started_at",{mode:"timestamp_ms"}),endedAt:(0,h.nd)("ended_at",{mode:"timestamp_ms"}),title:(0,g.Qq)("title"),sourceFile:(0,g.Qq)("source_file").notNull(),rawMetadata:(0,g.Qq)("raw_metadata",{mode:"json"}).$type()},a=>({sourceIdx:(0,i.GL)("sessions_source_id_idx").on(a.sourceId),toolIdx:(0,i.Pe)("sessions_tool_idx").on(a.toolId),projectIdx:(0,i.Pe)("sessions_project_idx").on(a.projectId),startedIdx:(0,i.Pe)("sessions_started_idx").on(a.startedAt)})),p=(0,f.D)("interactions",{id:(0,g.Qq)("id").primaryKey(),sourceId:(0,g.Qq)("source_id").notNull(),sessionId:(0,g.Qq)("session_id").notNull().references(()=>o.id,{onDelete:"cascade"}),timestamp:(0,h.nd)("timestamp",{mode:"timestamp_ms"}),role:(0,g.Qq)("role").notNull(),modelId:(0,g.Qq)("model_id").references(()=>m.id,{onDelete:"set null"}),inputTokens:(0,h.nd)("input_tokens").notNull().default(0),outputTokens:(0,h.nd)("output_tokens").notNull().default(0),cacheReadTokens:(0,h.nd)("cache_read_tokens").notNull().default(0),cacheWriteTokens:(0,h.nd)("cache_write_tokens").notNull().default(0),reasoningTokens:(0,h.nd)("reasoning_tokens").notNull().default(0),totalTokens:(0,h.nd)("total_tokens").notNull().default(0),estimatedTokens:(0,h.nd)("estimated_tokens",{mode:"boolean"}).notNull().default(!1),tokenConfidence:(0,g.Qq)("token_confidence").notNull().default("unknown"),cost:(0,j.x)("cost"),costEstimated:(0,h.nd)("cost_estimated",{mode:"boolean"}).notNull().default(!1),latencyMs:(0,h.nd)("latency_ms"),rawTextPreview:(0,g.Qq)("raw_text_preview"),rawText:(0,g.Qq)("raw_text"),rawMetadata:(0,g.Qq)("raw_metadata",{mode:"json"}).$type()},a=>({sourceIdx:(0,i.GL)("interactions_source_id_idx").on(a.sourceId),sessionIdx:(0,i.Pe)("interactions_session_idx").on(a.sessionId),modelIdx:(0,i.Pe)("interactions_model_idx").on(a.modelId),timestampIdx:(0,i.Pe)("interactions_timestamp_idx").on(a.timestamp)})),q=(0,f.D)("tool_calls",{id:(0,g.Qq)("id").primaryKey(),interactionId:(0,g.Qq)("interaction_id").notNull().references(()=>p.id,{onDelete:"cascade"}),name:(0,g.Qq)("name").notNull(),status:(0,g.Qq)("status"),durationMs:(0,h.nd)("duration_ms"),rawMetadata:(0,g.Qq)("raw_metadata",{mode:"json"}).$type()},a=>({interactionIdx:(0,i.Pe)("tool_calls_interaction_idx").on(a.interactionId)})),r=(0,f.D)("scan_runs",{id:(0,g.Qq)("id").primaryKey(),startedAt:(0,h.nd)("started_at",{mode:"timestamp_ms"}).notNull(),completedAt:(0,h.nd)("completed_at",{mode:"timestamp_ms"}),filesScanned:(0,h.nd)("files_scanned").notNull().default(0),recordsImported:(0,h.nd)("records_imported").notNull().default(0),warnings:(0,g.Qq)("warnings",{mode:"json"}).$type().notNull().default((0,d.ll)`'[]'`),errors:(0,g.Qq)("errors",{mode:"json"}).$type().notNull().default((0,d.ll)`'[]'`)}),s=(0,f.D)("scan_files",{id:(0,g.Qq)("id").primaryKey(),scanRunId:(0,g.Qq)("scan_run_id").notNull().references(()=>r.id,{onDelete:"cascade"}),path:(0,g.Qq)("path").notNull(),modifiedTime:(0,h.nd)("modified_time",{mode:"timestamp_ms"}),sizeBytes:(0,h.nd)("size_bytes").notNull().default(0),fileHash:(0,g.Qq)("file_hash"),parser:(0,g.Qq)("parser"),status:(0,g.Qq)("status").notNull(),recordsImported:(0,h.nd)("records_imported").notNull().default(0),warnings:(0,g.Qq)("warnings",{mode:"json"}).$type().notNull().default((0,d.ll)`'[]'`),errors:(0,g.Qq)("errors",{mode:"json"}).$type().notNull().default((0,d.ll)`'[]'`),rawMetadata:(0,g.Qq)("raw_metadata",{mode:"json"}).$type()},a=>({pathHashIdx:(0,i.Pe)("scan_files_path_hash_idx").on(a.path,a.fileHash),scanRunIdx:(0,i.Pe)("scan_files_run_idx").on(a.scanRunId)})),t=(0,f.D)("settings",{key:(0,g.Qq)("key").primaryKey(),value:(0,g.Qq)("value",{mode:"json"}).$type().notNull(),updatedAt:(0,h.nd)("updated_at",{mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)}),u=(0,e.K1)(k,({many:a})=>({tools:a(l),models:a(m)})),v=(0,e.K1)(l,({one:a,many:b})=>({provider:a(k,{fields:[l.providerId],references:[k.id]}),sessions:b(o)})),w=(0,e.K1)(m,({one:a,many:b})=>({provider:a(k,{fields:[m.providerId],references:[k.id]}),interactions:b(p)})),x=(0,e.K1)(n,({many:a})=>({sessions:a(o)})),y=(0,e.K1)(o,({one:a,many:b})=>({tool:a(l,{fields:[o.toolId],references:[l.id]}),project:a(n,{fields:[o.projectId],references:[n.id]}),interactions:b(p)})),z=(0,e.K1)(p,({one:a,many:b})=>({session:a(o,{fields:[p.sessionId],references:[o.id]}),model:a(m,{fields:[p.modelId],references:[m.id]}),toolCalls:b(q)}))},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")},89820:(a,b,c)=>{"use strict";c.d(b,{db:()=>q,X:()=>r,F:()=>p});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(73136),i=c(87550),j=c.n(i),k=c(64947);let l=`
18
+ PRAGMA journal_mode = WAL;
19
+ PRAGMA foreign_keys = ON;
20
+
21
+ CREATE TABLE IF NOT EXISTS providers (
22
+ id TEXT PRIMARY KEY,
23
+ name TEXT NOT NULL,
24
+ type TEXT NOT NULL,
25
+ created_at INTEGER NOT NULL DEFAULT (unixepoch() * 1000)
26
+ );
27
+
28
+ CREATE TABLE IF NOT EXISTS tools (
29
+ id TEXT PRIMARY KEY,
30
+ provider_id TEXT NOT NULL REFERENCES providers(id) ON DELETE CASCADE,
31
+ name TEXT NOT NULL,
32
+ created_at INTEGER NOT NULL DEFAULT (unixepoch() * 1000)
33
+ );
34
+ CREATE UNIQUE INDEX IF NOT EXISTS tools_provider_name_idx ON tools(provider_id, name);
35
+
36
+ CREATE TABLE IF NOT EXISTS models (
37
+ id TEXT PRIMARY KEY,
38
+ provider_id TEXT NOT NULL REFERENCES providers(id) ON DELETE CASCADE,
39
+ name TEXT NOT NULL,
40
+ input_token_price REAL,
41
+ output_token_price REAL,
42
+ cached_input_token_price REAL,
43
+ currency TEXT NOT NULL DEFAULT 'USD',
44
+ effective_from INTEGER,
45
+ raw_metadata TEXT
46
+ );
47
+ CREATE UNIQUE INDEX IF NOT EXISTS models_provider_name_idx ON models(provider_id, name);
48
+
49
+ CREATE TABLE IF NOT EXISTS projects (
50
+ id TEXT PRIMARY KEY,
51
+ name TEXT NOT NULL,
52
+ path TEXT NOT NULL,
53
+ created_at INTEGER NOT NULL DEFAULT (unixepoch() * 1000)
54
+ );
55
+ CREATE UNIQUE INDEX IF NOT EXISTS projects_path_idx ON projects(path);
56
+
57
+ CREATE TABLE IF NOT EXISTS sessions (
58
+ id TEXT PRIMARY KEY,
59
+ source_id TEXT NOT NULL,
60
+ tool_id TEXT NOT NULL REFERENCES tools(id) ON DELETE CASCADE,
61
+ project_id TEXT REFERENCES projects(id) ON DELETE SET NULL,
62
+ started_at INTEGER,
63
+ ended_at INTEGER,
64
+ title TEXT,
65
+ source_file TEXT NOT NULL,
66
+ raw_metadata TEXT
67
+ );
68
+ CREATE UNIQUE INDEX IF NOT EXISTS sessions_source_id_idx ON sessions(source_id);
69
+ CREATE INDEX IF NOT EXISTS sessions_tool_idx ON sessions(tool_id);
70
+ CREATE INDEX IF NOT EXISTS sessions_project_idx ON sessions(project_id);
71
+ CREATE INDEX IF NOT EXISTS sessions_started_idx ON sessions(started_at);
72
+
73
+ CREATE TABLE IF NOT EXISTS interactions (
74
+ id TEXT PRIMARY KEY,
75
+ source_id TEXT NOT NULL,
76
+ session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
77
+ timestamp INTEGER,
78
+ role TEXT NOT NULL,
79
+ model_id TEXT REFERENCES models(id) ON DELETE SET NULL,
80
+ input_tokens INTEGER NOT NULL DEFAULT 0,
81
+ output_tokens INTEGER NOT NULL DEFAULT 0,
82
+ cache_read_tokens INTEGER NOT NULL DEFAULT 0,
83
+ cache_write_tokens INTEGER NOT NULL DEFAULT 0,
84
+ reasoning_tokens INTEGER NOT NULL DEFAULT 0,
85
+ total_tokens INTEGER NOT NULL DEFAULT 0,
86
+ estimated_tokens INTEGER NOT NULL DEFAULT 0,
87
+ token_confidence TEXT NOT NULL DEFAULT 'unknown',
88
+ cost REAL,
89
+ cost_estimated INTEGER NOT NULL DEFAULT 0,
90
+ latency_ms INTEGER,
91
+ raw_text_preview TEXT,
92
+ raw_text TEXT,
93
+ raw_metadata TEXT
94
+ );
95
+ CREATE UNIQUE INDEX IF NOT EXISTS interactions_source_id_idx ON interactions(source_id);
96
+ CREATE INDEX IF NOT EXISTS interactions_session_idx ON interactions(session_id);
97
+ CREATE INDEX IF NOT EXISTS interactions_model_idx ON interactions(model_id);
98
+ CREATE INDEX IF NOT EXISTS interactions_timestamp_idx ON interactions(timestamp);
99
+
100
+ PRAGMA user_version;
101
+
102
+ CREATE TABLE IF NOT EXISTS tool_calls (
103
+ id TEXT PRIMARY KEY,
104
+ interaction_id TEXT NOT NULL REFERENCES interactions(id) ON DELETE CASCADE,
105
+ name TEXT NOT NULL,
106
+ status TEXT,
107
+ duration_ms INTEGER,
108
+ raw_metadata TEXT
109
+ );
110
+ CREATE INDEX IF NOT EXISTS tool_calls_interaction_idx ON tool_calls(interaction_id);
111
+
112
+ CREATE TABLE IF NOT EXISTS scan_runs (
113
+ id TEXT PRIMARY KEY,
114
+ started_at INTEGER NOT NULL,
115
+ completed_at INTEGER,
116
+ files_scanned INTEGER NOT NULL DEFAULT 0,
117
+ records_imported INTEGER NOT NULL DEFAULT 0,
118
+ warnings TEXT NOT NULL DEFAULT '[]',
119
+ errors TEXT NOT NULL DEFAULT '[]'
120
+ );
121
+
122
+ CREATE TABLE IF NOT EXISTS scan_files (
123
+ id TEXT PRIMARY KEY,
124
+ scan_run_id TEXT NOT NULL REFERENCES scan_runs(id) ON DELETE CASCADE,
125
+ path TEXT NOT NULL,
126
+ modified_time INTEGER,
127
+ size_bytes INTEGER NOT NULL DEFAULT 0,
128
+ file_hash TEXT,
129
+ parser TEXT,
130
+ status TEXT NOT NULL,
131
+ records_imported INTEGER NOT NULL DEFAULT 0,
132
+ warnings TEXT NOT NULL DEFAULT '[]',
133
+ errors TEXT NOT NULL DEFAULT '[]',
134
+ raw_metadata TEXT
135
+ );
136
+ CREATE INDEX IF NOT EXISTS scan_files_path_hash_idx ON scan_files(path, file_hash);
137
+ CREATE INDEX IF NOT EXISTS scan_files_run_idx ON scan_files(scan_run_id);
138
+
139
+ CREATE TABLE IF NOT EXISTS settings (
140
+ key TEXT PRIMARY KEY,
141
+ value TEXT NOT NULL,
142
+ updated_at INTEGER NOT NULL DEFAULT (unixepoch() * 1000)
143
+ );
144
+ `;var m=c(74608);let n=g().join(process.cwd(),".tokentrace","tokentrace.db"),o=process.env.TOKENTRACE_DB??function(a){if(!a?.startsWith("file:"))return null;try{return(0,h.fileURLToPath)(a)}catch{return a.slice(5)}}(process.env.DATABASE_URL)??n;e().mkdirSync(g().dirname(o),{recursive:!0});let p=new(j())(o);p.pragma("foreign_keys = ON"),function(a){if(a.exec(l),!a.prepare("PRAGMA table_info(interactions)").all().some(a=>"token_confidence"===a.name))try{a.exec("ALTER TABLE interactions ADD COLUMN token_confidence TEXT NOT NULL DEFAULT 'unknown'")}catch(a){if(!(a instanceof Error)||!a.message.toLowerCase().includes("duplicate column"))throw a}}(p);let q=(0,k.f)(p,{schema:m});function r(){return o}},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[331,237,692],()=>b(b.s=24151));module.exports=c})();
@@ -0,0 +1 @@
1
+ {"version":1,"files":["../../../../../.tokentrace/tokentrace.db","../../../../../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/237.js","../../../chunks/331.js","../../../chunks/692.js","../../../webpack-runtime.js","route_client-reference-manifest.js"]}
@@ -0,0 +1 @@
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/scan/route"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"5813":{"*":{"id":"1551","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"77526","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"78922","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"68495","name":"*","chunks":[],"async":false}},"23050":{"*":{"id":"30438","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"12263","name":"*","chunks":[],"async":false}},"33055":{"*":{"id":"13879","name":"*","chunks":[],"async":false}},"36918":{"*":{"id":"13860","name":"*","chunks":[],"async":false}},"40675":{"*":{"id":"37524","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}},"98924":{"*":{"id":"29234","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/app/globals.css":{"id":41290,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","558","static/chunks/app/layout-8942804176ff26f3.js"],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/client/app-dir/link.js":{"id":52619,"name":"*","chunks":["125","static/chunks/125-ab0f8db8f84c1166.js","938","static/chunks/938-23236de1c47554ea.js","619","static/chunks/619-f072ac750404f9da.js","850","static/chunks/850-8bc31e41590b5831.js","974","static/chunks/app/page-b6886ec802c03cbf.js"],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/client/app-dir/link.js":{"id":52619,"name":"*","chunks":["125","static/chunks/125-ab0f8db8f84c1166.js","938","static/chunks/938-23236de1c47554ea.js","619","static/chunks/619-f072ac750404f9da.js","850","static/chunks/850-8bc31e41590b5831.js","974","static/chunks/app/page-b6886ec802c03cbf.js"],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/components/pricing-settings.tsx":{"id":40675,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/components/session-explorer.tsx":{"id":33055,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/components/charts/rank-bar-chart.tsx":{"id":5813,"name":"*","chunks":["125","static/chunks/125-ab0f8db8f84c1166.js","938","static/chunks/938-23236de1c47554ea.js","619","static/chunks/619-f072ac750404f9da.js","850","static/chunks/850-8bc31e41590b5831.js","974","static/chunks/app/page-b6886ec802c03cbf.js"],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/components/charts/trend-chart.tsx":{"id":23050,"name":"*","chunks":["125","static/chunks/125-ab0f8db8f84c1166.js","938","static/chunks/938-23236de1c47554ea.js","619","static/chunks/619-f072ac750404f9da.js","850","static/chunks/850-8bc31e41590b5831.js","974","static/chunks/app/page-b6886ec802c03cbf.js"],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/components/settings-panel.tsx":{"id":36918,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/abhyoh/Documents/Brand/Apps/token-usage/":[],"/Users/abhyoh/Documents/Brand/Apps/token-usage/app/layout":[{"inlined":false,"path":"static/css/366bb38b386229a5.css"}],"/Users/abhyoh/Documents/Brand/Apps/token-usage/app/page":[],"/Users/abhyoh/Documents/Brand/Apps/token-usage/app/api/scan/route":[]},"rscModuleMapping":{"5813":{"*":{"id":"62317","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"36893","name":"*","chunks":[],"async":false}},"23050":{"*":{"id":"25268","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"73041","name":"*","chunks":[],"async":false}},"33055":{"*":{"id":"44300","name":"*","chunks":[],"async":false}},"36918":{"*":{"id":"3570","name":"*","chunks":[],"async":false}},"40675":{"*":{"id":"61488","name":"*","chunks":[],"async":false}},"41290":{"*":{"id":"82704","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}},"98924":{"*":{"id":"69576","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
@@ -0,0 +1,128 @@
1
+ (()=>{var a={};a.id=177,a.ids=[177],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")},11670:(a,b,c)=>{"use strict";c.d(b,{W:()=>i,t:()=>h});var d=c(48689),e=c(89820),f=c(74608);let g={customFolders:[],storeRawMessageContent:!1};function h(){var a;let b=e.db.select().from(f.settings).where((0,d.eq)(f.settings.key,"app")).get();return(a=b?.value)&&"object"==typeof a?{customFolders:Array.isArray(a.customFolders)?a.customFolders.filter(a=>"string"==typeof a):[],storeRawMessageContent:!!a.storeRawMessageContent}:g}function i(a){return e.db.insert(f.settings).values({key:"app",value:a,updatedAt:new Date}).onConflictDoUpdate({target:f.settings.key,set:{value:a,updatedAt:new Date}}).run(),a}},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},39461:(a,b,c)=>{"use strict";c.r(b),c.d(b,{handler:()=>F,patchFetch:()=>E,routeModule:()=>A,serverHooks:()=>D,workAsyncStorage:()=>B,workUnitAsyncStorage:()=>C});var d={};c.r(d),c.d(d,{GET:()=>y,PUT:()=>z,dynamic:()=>x});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(10641),v=c(89820),w=c(11670);let x="force-dynamic";async function y(){return u.NextResponse.json({...(0,w.t)(),databasePath:(0,v.X)()})}async function z(a){let b=await a.json(),c=Array.isArray(b.customFolders)?b.customFolders.filter(a=>"string"==typeof a):[],d=(0,w.W)({customFolders:c,storeRawMessageContent:!!b.storeRawMessageContent});return u.NextResponse.json(d)}let A=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/settings/route",pathname:"/api/settings",filename:"route",bundlePath:"app/api/settings/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/abhyoh/Documents/Brand/Apps/token-usage/app/api/settings/route.ts",nextConfigOutput:"",userland:d}),{workAsyncStorage:B,workUnitAsyncStorage:C,serverHooks:D}=A;function E(){return(0,g.patchFetch)({workAsyncStorage:B,workUnitAsyncStorage:C})}async function F(a,b,c){var d;let e="/api/settings/route";"/index"===e&&(e="/");let g=await A.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:B,revalidateOnlyGenerated:C,resolvedPathname:D}=g,E=(0,j.normalizeAppPath)(e),F=!!(y.dynamicRoutes[E]||y.routes[D]);if(F&&!x){let a=!!y.routes[D],b=y.dynamicRoutes[E];if(b&&!1===b.fallback&&!a)throw new s.NoFallbackError}let G=null;!F||A.isDev||x||(G="/index"===(G=D)?"/":G);let H=!0===A.isDev||!F,I=F&&!H,J=a.method||"GET",K=(0,i.getTracer)(),L=K.getActiveScopeSpan(),M={params:v,prerenderManifest:y,renderOpts:{experimental:{cacheComponents:!!w.experimental.cacheComponents,authInterrupts:!!w.experimental.authInterrupts},supportsDynamicResponse:H,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:null==(d=w.experimental)?void 0:d.cacheLife,isRevalidate:I,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d)=>A.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=>A.handle(P,M).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=K.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=`${J} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${J} ${a.url}`)}),g=async g=>{var i,j;let k=async({previousCacheEntry:f})=>{try{if(!(0,h.getRequestMeta)(a,"minimalMode")&&B&&C&&!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(!F)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 A.onRequestError(a,b,{routerKind:"App Router",routePath:e,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:I,isOnDemandRevalidate:B})},z),b}},l=await A.handleResponse({req:a,nextConfig:w,cacheKey:G,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:y,isRoutePPREnabled:!1,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,responseGenerator:k,waitUntil:c.waitUntil});if(!F)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",B?"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")&&F||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};L?await g(L):await K.withPropagatedContext(a.headers,()=>K.trace(m.BaseServerSpan.handleRequest,{spanName:`${J} ${a.url}`,kind:i.SpanKind.SERVER,attributes:{"http.method":J,"http.target":a.url}},g))}catch(b){if(b instanceof s.NoFallbackError||await A.onRequestError(a,b,{routerKind:"App Router",routePath:E,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:I,isOnDemandRevalidate:B})}),F)throw b;return await (0,o.I)(N,O,new Response(null,{status:500})),null}}},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},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")},74608:(a,b,c)=>{"use strict";c.r(b),c.d(b,{interactionRelations:()=>z,interactions:()=>p,modelRelations:()=>w,models:()=>m,projectRelations:()=>x,projects:()=>n,providerRelations:()=>u,providers:()=>k,scanFiles:()=>s,scanRuns:()=>r,sessionRelations:()=>y,sessions:()=>o,settings:()=>t,toolCalls:()=>q,toolRelations:()=>v,tools:()=>l});var d=c(85766),e=c(47543),f=c(95417),g=c(58040),h=c(20377),i=c(4035),j=c(19643);let k=(0,f.D)("providers",{id:(0,g.Qq)("id").primaryKey(),name:(0,g.Qq)("name").notNull(),type:(0,g.Qq)("type").notNull(),createdAt:(0,h.nd)("created_at",{mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)}),l=(0,f.D)("tools",{id:(0,g.Qq)("id").primaryKey(),providerId:(0,g.Qq)("provider_id").notNull().references(()=>k.id,{onDelete:"cascade"}),name:(0,g.Qq)("name").notNull(),createdAt:(0,h.nd)("created_at",{mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},a=>({providerNameIdx:(0,i.GL)("tools_provider_name_idx").on(a.providerId,a.name)})),m=(0,f.D)("models",{id:(0,g.Qq)("id").primaryKey(),providerId:(0,g.Qq)("provider_id").notNull().references(()=>k.id,{onDelete:"cascade"}),name:(0,g.Qq)("name").notNull(),inputTokenPrice:(0,j.x)("input_token_price"),outputTokenPrice:(0,j.x)("output_token_price"),cachedInputTokenPrice:(0,j.x)("cached_input_token_price"),currency:(0,g.Qq)("currency").notNull().default("USD"),effectiveFrom:(0,h.nd)("effective_from",{mode:"timestamp_ms"}),rawMetadata:(0,g.Qq)("raw_metadata",{mode:"json"}).$type()},a=>({providerModelIdx:(0,i.GL)("models_provider_name_idx").on(a.providerId,a.name)})),n=(0,f.D)("projects",{id:(0,g.Qq)("id").primaryKey(),name:(0,g.Qq)("name").notNull(),path:(0,g.Qq)("path").notNull(),createdAt:(0,h.nd)("created_at",{mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},a=>({pathIdx:(0,i.GL)("projects_path_idx").on(a.path)})),o=(0,f.D)("sessions",{id:(0,g.Qq)("id").primaryKey(),sourceId:(0,g.Qq)("source_id").notNull(),toolId:(0,g.Qq)("tool_id").notNull().references(()=>l.id,{onDelete:"cascade"}),projectId:(0,g.Qq)("project_id").references(()=>n.id,{onDelete:"set null"}),startedAt:(0,h.nd)("started_at",{mode:"timestamp_ms"}),endedAt:(0,h.nd)("ended_at",{mode:"timestamp_ms"}),title:(0,g.Qq)("title"),sourceFile:(0,g.Qq)("source_file").notNull(),rawMetadata:(0,g.Qq)("raw_metadata",{mode:"json"}).$type()},a=>({sourceIdx:(0,i.GL)("sessions_source_id_idx").on(a.sourceId),toolIdx:(0,i.Pe)("sessions_tool_idx").on(a.toolId),projectIdx:(0,i.Pe)("sessions_project_idx").on(a.projectId),startedIdx:(0,i.Pe)("sessions_started_idx").on(a.startedAt)})),p=(0,f.D)("interactions",{id:(0,g.Qq)("id").primaryKey(),sourceId:(0,g.Qq)("source_id").notNull(),sessionId:(0,g.Qq)("session_id").notNull().references(()=>o.id,{onDelete:"cascade"}),timestamp:(0,h.nd)("timestamp",{mode:"timestamp_ms"}),role:(0,g.Qq)("role").notNull(),modelId:(0,g.Qq)("model_id").references(()=>m.id,{onDelete:"set null"}),inputTokens:(0,h.nd)("input_tokens").notNull().default(0),outputTokens:(0,h.nd)("output_tokens").notNull().default(0),cacheReadTokens:(0,h.nd)("cache_read_tokens").notNull().default(0),cacheWriteTokens:(0,h.nd)("cache_write_tokens").notNull().default(0),reasoningTokens:(0,h.nd)("reasoning_tokens").notNull().default(0),totalTokens:(0,h.nd)("total_tokens").notNull().default(0),estimatedTokens:(0,h.nd)("estimated_tokens",{mode:"boolean"}).notNull().default(!1),tokenConfidence:(0,g.Qq)("token_confidence").notNull().default("unknown"),cost:(0,j.x)("cost"),costEstimated:(0,h.nd)("cost_estimated",{mode:"boolean"}).notNull().default(!1),latencyMs:(0,h.nd)("latency_ms"),rawTextPreview:(0,g.Qq)("raw_text_preview"),rawText:(0,g.Qq)("raw_text"),rawMetadata:(0,g.Qq)("raw_metadata",{mode:"json"}).$type()},a=>({sourceIdx:(0,i.GL)("interactions_source_id_idx").on(a.sourceId),sessionIdx:(0,i.Pe)("interactions_session_idx").on(a.sessionId),modelIdx:(0,i.Pe)("interactions_model_idx").on(a.modelId),timestampIdx:(0,i.Pe)("interactions_timestamp_idx").on(a.timestamp)})),q=(0,f.D)("tool_calls",{id:(0,g.Qq)("id").primaryKey(),interactionId:(0,g.Qq)("interaction_id").notNull().references(()=>p.id,{onDelete:"cascade"}),name:(0,g.Qq)("name").notNull(),status:(0,g.Qq)("status"),durationMs:(0,h.nd)("duration_ms"),rawMetadata:(0,g.Qq)("raw_metadata",{mode:"json"}).$type()},a=>({interactionIdx:(0,i.Pe)("tool_calls_interaction_idx").on(a.interactionId)})),r=(0,f.D)("scan_runs",{id:(0,g.Qq)("id").primaryKey(),startedAt:(0,h.nd)("started_at",{mode:"timestamp_ms"}).notNull(),completedAt:(0,h.nd)("completed_at",{mode:"timestamp_ms"}),filesScanned:(0,h.nd)("files_scanned").notNull().default(0),recordsImported:(0,h.nd)("records_imported").notNull().default(0),warnings:(0,g.Qq)("warnings",{mode:"json"}).$type().notNull().default((0,d.ll)`'[]'`),errors:(0,g.Qq)("errors",{mode:"json"}).$type().notNull().default((0,d.ll)`'[]'`)}),s=(0,f.D)("scan_files",{id:(0,g.Qq)("id").primaryKey(),scanRunId:(0,g.Qq)("scan_run_id").notNull().references(()=>r.id,{onDelete:"cascade"}),path:(0,g.Qq)("path").notNull(),modifiedTime:(0,h.nd)("modified_time",{mode:"timestamp_ms"}),sizeBytes:(0,h.nd)("size_bytes").notNull().default(0),fileHash:(0,g.Qq)("file_hash"),parser:(0,g.Qq)("parser"),status:(0,g.Qq)("status").notNull(),recordsImported:(0,h.nd)("records_imported").notNull().default(0),warnings:(0,g.Qq)("warnings",{mode:"json"}).$type().notNull().default((0,d.ll)`'[]'`),errors:(0,g.Qq)("errors",{mode:"json"}).$type().notNull().default((0,d.ll)`'[]'`),rawMetadata:(0,g.Qq)("raw_metadata",{mode:"json"}).$type()},a=>({pathHashIdx:(0,i.Pe)("scan_files_path_hash_idx").on(a.path,a.fileHash),scanRunIdx:(0,i.Pe)("scan_files_run_idx").on(a.scanRunId)})),t=(0,f.D)("settings",{key:(0,g.Qq)("key").primaryKey(),value:(0,g.Qq)("value",{mode:"json"}).$type().notNull(),updatedAt:(0,h.nd)("updated_at",{mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)}),u=(0,e.K1)(k,({many:a})=>({tools:a(l),models:a(m)})),v=(0,e.K1)(l,({one:a,many:b})=>({provider:a(k,{fields:[l.providerId],references:[k.id]}),sessions:b(o)})),w=(0,e.K1)(m,({one:a,many:b})=>({provider:a(k,{fields:[m.providerId],references:[k.id]}),interactions:b(p)})),x=(0,e.K1)(n,({many:a})=>({sessions:a(o)})),y=(0,e.K1)(o,({one:a,many:b})=>({tool:a(l,{fields:[o.toolId],references:[l.id]}),project:a(n,{fields:[o.projectId],references:[n.id]}),interactions:b(p)})),z=(0,e.K1)(p,({one:a,many:b})=>({session:a(o,{fields:[p.sessionId],references:[o.id]}),model:a(m,{fields:[p.modelId],references:[m.id]}),toolCalls:b(q)}))},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")},89820:(a,b,c)=>{"use strict";c.d(b,{db:()=>q,X:()=>r,F:()=>p});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(73136),i=c(87550),j=c.n(i),k=c(64947);let l=`
2
+ PRAGMA journal_mode = WAL;
3
+ PRAGMA foreign_keys = ON;
4
+
5
+ CREATE TABLE IF NOT EXISTS providers (
6
+ id TEXT PRIMARY KEY,
7
+ name TEXT NOT NULL,
8
+ type TEXT NOT NULL,
9
+ created_at INTEGER NOT NULL DEFAULT (unixepoch() * 1000)
10
+ );
11
+
12
+ CREATE TABLE IF NOT EXISTS tools (
13
+ id TEXT PRIMARY KEY,
14
+ provider_id TEXT NOT NULL REFERENCES providers(id) ON DELETE CASCADE,
15
+ name TEXT NOT NULL,
16
+ created_at INTEGER NOT NULL DEFAULT (unixepoch() * 1000)
17
+ );
18
+ CREATE UNIQUE INDEX IF NOT EXISTS tools_provider_name_idx ON tools(provider_id, name);
19
+
20
+ CREATE TABLE IF NOT EXISTS models (
21
+ id TEXT PRIMARY KEY,
22
+ provider_id TEXT NOT NULL REFERENCES providers(id) ON DELETE CASCADE,
23
+ name TEXT NOT NULL,
24
+ input_token_price REAL,
25
+ output_token_price REAL,
26
+ cached_input_token_price REAL,
27
+ currency TEXT NOT NULL DEFAULT 'USD',
28
+ effective_from INTEGER,
29
+ raw_metadata TEXT
30
+ );
31
+ CREATE UNIQUE INDEX IF NOT EXISTS models_provider_name_idx ON models(provider_id, name);
32
+
33
+ CREATE TABLE IF NOT EXISTS projects (
34
+ id TEXT PRIMARY KEY,
35
+ name TEXT NOT NULL,
36
+ path TEXT NOT NULL,
37
+ created_at INTEGER NOT NULL DEFAULT (unixepoch() * 1000)
38
+ );
39
+ CREATE UNIQUE INDEX IF NOT EXISTS projects_path_idx ON projects(path);
40
+
41
+ CREATE TABLE IF NOT EXISTS sessions (
42
+ id TEXT PRIMARY KEY,
43
+ source_id TEXT NOT NULL,
44
+ tool_id TEXT NOT NULL REFERENCES tools(id) ON DELETE CASCADE,
45
+ project_id TEXT REFERENCES projects(id) ON DELETE SET NULL,
46
+ started_at INTEGER,
47
+ ended_at INTEGER,
48
+ title TEXT,
49
+ source_file TEXT NOT NULL,
50
+ raw_metadata TEXT
51
+ );
52
+ CREATE UNIQUE INDEX IF NOT EXISTS sessions_source_id_idx ON sessions(source_id);
53
+ CREATE INDEX IF NOT EXISTS sessions_tool_idx ON sessions(tool_id);
54
+ CREATE INDEX IF NOT EXISTS sessions_project_idx ON sessions(project_id);
55
+ CREATE INDEX IF NOT EXISTS sessions_started_idx ON sessions(started_at);
56
+
57
+ CREATE TABLE IF NOT EXISTS interactions (
58
+ id TEXT PRIMARY KEY,
59
+ source_id TEXT NOT NULL,
60
+ session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
61
+ timestamp INTEGER,
62
+ role TEXT NOT NULL,
63
+ model_id TEXT REFERENCES models(id) ON DELETE SET NULL,
64
+ input_tokens INTEGER NOT NULL DEFAULT 0,
65
+ output_tokens INTEGER NOT NULL DEFAULT 0,
66
+ cache_read_tokens INTEGER NOT NULL DEFAULT 0,
67
+ cache_write_tokens INTEGER NOT NULL DEFAULT 0,
68
+ reasoning_tokens INTEGER NOT NULL DEFAULT 0,
69
+ total_tokens INTEGER NOT NULL DEFAULT 0,
70
+ estimated_tokens INTEGER NOT NULL DEFAULT 0,
71
+ token_confidence TEXT NOT NULL DEFAULT 'unknown',
72
+ cost REAL,
73
+ cost_estimated INTEGER NOT NULL DEFAULT 0,
74
+ latency_ms INTEGER,
75
+ raw_text_preview TEXT,
76
+ raw_text TEXT,
77
+ raw_metadata TEXT
78
+ );
79
+ CREATE UNIQUE INDEX IF NOT EXISTS interactions_source_id_idx ON interactions(source_id);
80
+ CREATE INDEX IF NOT EXISTS interactions_session_idx ON interactions(session_id);
81
+ CREATE INDEX IF NOT EXISTS interactions_model_idx ON interactions(model_id);
82
+ CREATE INDEX IF NOT EXISTS interactions_timestamp_idx ON interactions(timestamp);
83
+
84
+ PRAGMA user_version;
85
+
86
+ CREATE TABLE IF NOT EXISTS tool_calls (
87
+ id TEXT PRIMARY KEY,
88
+ interaction_id TEXT NOT NULL REFERENCES interactions(id) ON DELETE CASCADE,
89
+ name TEXT NOT NULL,
90
+ status TEXT,
91
+ duration_ms INTEGER,
92
+ raw_metadata TEXT
93
+ );
94
+ CREATE INDEX IF NOT EXISTS tool_calls_interaction_idx ON tool_calls(interaction_id);
95
+
96
+ CREATE TABLE IF NOT EXISTS scan_runs (
97
+ id TEXT PRIMARY KEY,
98
+ started_at INTEGER NOT NULL,
99
+ completed_at INTEGER,
100
+ files_scanned INTEGER NOT NULL DEFAULT 0,
101
+ records_imported INTEGER NOT NULL DEFAULT 0,
102
+ warnings TEXT NOT NULL DEFAULT '[]',
103
+ errors TEXT NOT NULL DEFAULT '[]'
104
+ );
105
+
106
+ CREATE TABLE IF NOT EXISTS scan_files (
107
+ id TEXT PRIMARY KEY,
108
+ scan_run_id TEXT NOT NULL REFERENCES scan_runs(id) ON DELETE CASCADE,
109
+ path TEXT NOT NULL,
110
+ modified_time INTEGER,
111
+ size_bytes INTEGER NOT NULL DEFAULT 0,
112
+ file_hash TEXT,
113
+ parser TEXT,
114
+ status TEXT NOT NULL,
115
+ records_imported INTEGER NOT NULL DEFAULT 0,
116
+ warnings TEXT NOT NULL DEFAULT '[]',
117
+ errors TEXT NOT NULL DEFAULT '[]',
118
+ raw_metadata TEXT
119
+ );
120
+ CREATE INDEX IF NOT EXISTS scan_files_path_hash_idx ON scan_files(path, file_hash);
121
+ CREATE INDEX IF NOT EXISTS scan_files_run_idx ON scan_files(scan_run_id);
122
+
123
+ CREATE TABLE IF NOT EXISTS settings (
124
+ key TEXT PRIMARY KEY,
125
+ value TEXT NOT NULL,
126
+ updated_at INTEGER NOT NULL DEFAULT (unixepoch() * 1000)
127
+ );
128
+ `;var m=c(74608);let n=g().join(process.cwd(),".tokentrace","tokentrace.db"),o=process.env.TOKENTRACE_DB??function(a){if(!a?.startsWith("file:"))return null;try{return(0,h.fileURLToPath)(a)}catch{return a.slice(5)}}(process.env.DATABASE_URL)??n;e().mkdirSync(g().dirname(o),{recursive:!0});let p=new(j())(o);p.pragma("foreign_keys = ON"),function(a){if(a.exec(l),!a.prepare("PRAGMA table_info(interactions)").all().some(a=>"token_confidence"===a.name))try{a.exec("ALTER TABLE interactions ADD COLUMN token_confidence TEXT NOT NULL DEFAULT 'unknown'")}catch(a){if(!(a instanceof Error)||!a.message.toLowerCase().includes("duplicate column"))throw a}}(p);let q=(0,k.f)(p,{schema:m});function r(){return o}},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[331,237,692],()=>b(b.s=39461));module.exports=c})();
@@ -0,0 +1 @@
1
+ {"version":1,"files":["../../../../../.tokentrace/tokentrace.db","../../../../../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/237.js","../../../chunks/331.js","../../../chunks/692.js","../../../webpack-runtime.js","route_client-reference-manifest.js"]}
@@ -0,0 +1 @@
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/api/settings/route"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"5813":{"*":{"id":"1551","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"77526","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"78922","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"68495","name":"*","chunks":[],"async":false}},"23050":{"*":{"id":"30438","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"12263","name":"*","chunks":[],"async":false}},"33055":{"*":{"id":"13879","name":"*","chunks":[],"async":false}},"36918":{"*":{"id":"13860","name":"*","chunks":[],"async":false}},"40675":{"*":{"id":"37524","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}},"98924":{"*":{"id":"29234","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/app/globals.css":{"id":41290,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","558","static/chunks/app/layout-8942804176ff26f3.js"],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/client/app-dir/link.js":{"id":52619,"name":"*","chunks":["125","static/chunks/125-ab0f8db8f84c1166.js","938","static/chunks/938-23236de1c47554ea.js","619","static/chunks/619-f072ac750404f9da.js","850","static/chunks/850-8bc31e41590b5831.js","974","static/chunks/app/page-b6886ec802c03cbf.js"],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/node_modules/next/dist/esm/client/app-dir/link.js":{"id":52619,"name":"*","chunks":["125","static/chunks/125-ab0f8db8f84c1166.js","938","static/chunks/938-23236de1c47554ea.js","619","static/chunks/619-f072ac750404f9da.js","850","static/chunks/850-8bc31e41590b5831.js","974","static/chunks/app/page-b6886ec802c03cbf.js"],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/components/pricing-settings.tsx":{"id":40675,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/components/session-explorer.tsx":{"id":33055,"name":"*","chunks":[],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/components/charts/rank-bar-chart.tsx":{"id":5813,"name":"*","chunks":["125","static/chunks/125-ab0f8db8f84c1166.js","938","static/chunks/938-23236de1c47554ea.js","619","static/chunks/619-f072ac750404f9da.js","850","static/chunks/850-8bc31e41590b5831.js","974","static/chunks/app/page-b6886ec802c03cbf.js"],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/components/charts/trend-chart.tsx":{"id":23050,"name":"*","chunks":["125","static/chunks/125-ab0f8db8f84c1166.js","938","static/chunks/938-23236de1c47554ea.js","619","static/chunks/619-f072ac750404f9da.js","850","static/chunks/850-8bc31e41590b5831.js","974","static/chunks/app/page-b6886ec802c03cbf.js"],"async":false},"/Users/abhyoh/Documents/Brand/Apps/token-usage/components/settings-panel.tsx":{"id":36918,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/abhyoh/Documents/Brand/Apps/token-usage/":[],"/Users/abhyoh/Documents/Brand/Apps/token-usage/app/layout":[{"inlined":false,"path":"static/css/366bb38b386229a5.css"}],"/Users/abhyoh/Documents/Brand/Apps/token-usage/app/page":[],"/Users/abhyoh/Documents/Brand/Apps/token-usage/app/api/settings/route":[]},"rscModuleMapping":{"5813":{"*":{"id":"62317","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"36893","name":"*","chunks":[],"async":false}},"23050":{"*":{"id":"25268","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"73041","name":"*","chunks":[],"async":false}},"33055":{"*":{"id":"44300","name":"*","chunks":[],"async":false}},"36918":{"*":{"id":"3570","name":"*","chunks":[],"async":false}},"40675":{"*":{"id":"61488","name":"*","chunks":[],"async":false}},"41290":{"*":{"id":"82704","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}},"98924":{"*":{"id":"69576","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
@@ -0,0 +1,2 @@
1
+ (()=>{var a={};a.id=302,a.ids=[302],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")},9958:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,65169,23))},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")},22821:(a,b,c)=>{"use strict";c.d(b,{BT:()=>i,Wu:()=>j,ZB:()=>h,Zp:()=>f,aR:()=>g});var d=c(75338);c(74515);var e=c(70673);function f({className:a,...b}){return(0,d.jsx)("div",{className:(0,e.cn)("rounded-lg border bg-card text-card-foreground",a),...b})}function g({className:a,...b}){return(0,d.jsx)("div",{className:(0,e.cn)("flex flex-col gap-1.5 p-4",a),...b})}function h({className:a,...b}){return(0,d.jsx)("h3",{className:(0,e.cn)("text-sm font-semibold",a),...b})}function i({className:a,...b}){return(0,d.jsx)("p",{className:(0,e.cn)("text-sm text-muted-foreground",a),...b})}function j({className:a,...b}){return(0,d.jsx)("div",{className:(0,e.cn)("p-4 pt-0",a),...b})}},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")},33873:a=>{"use strict";a.exports=require("path")},36599:(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))},37762:(a,b,c)=>{"use strict";c.d(b,{E:()=>h});var d=c(75338);c(74515);var e=c(86281),f=c(70673);let g=(0,e.F)("inline-flex items-center rounded-md border px-2 py-0.5 text-xs font-medium",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground",secondary:"border-transparent bg-muted text-muted-foreground",outline:"text-foreground",warning:"border-amber-300 bg-amber-50 text-amber-800",success:"border-emerald-300 bg-emerald-50 text-emerald-800",destructive:"border-red-300 bg-red-50 text-red-800"}},defaultVariants:{variant:"default"}});function h({className:a,variant:b,...c}){return(0,d.jsx)("div",{className:(0,f.cn)(g({variant:b}),a),...c})}},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},46145:(a,b,c)=>{"use strict";function d(a){let b=a??0;return b>=1e6?`${(b/1e6).toFixed(2)}M`:b>=1e3?`${(b/1e3).toFixed(1)}K`:b.toLocaleString()}function e(a,b="USD"){return null==a?"Unknown":new Intl.NumberFormat("en-US",{style:"currency",currency:b,maximumFractionDigits:a<1?4:2}).format(a)}function f(a){if(!a)return"Unknown";let b=a instanceof Date?a:new Date(a);return Number.isNaN(b.getTime())?"Unknown":new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"}).format(b)}function g(a){return`${Math.round((a??0)*100)}%`}c.d(b,{KN:()=>g,Yq:()=>f,_y:()=>d,vv:()=>e})},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},63299:(a,b,c)=>{"use strict";c.d(b,{A0:()=>g,BF:()=>h,Hj:()=>i,XI:()=>f,nA:()=>k,nd:()=>j});var d=c(75338);c(74515);var e=c(70673);function f({className:a,...b}){return(0,d.jsx)("table",{className:(0,e.cn)("w-full caption-bottom text-sm",a),...b})}function g({className:a,...b}){return(0,d.jsx)("thead",{className:(0,e.cn)("[&_tr]:border-b",a),...b})}function h({className:a,...b}){return(0,d.jsx)("tbody",{className:(0,e.cn)("[&_tr:last-child]:border-0",a),...b})}function i({className:a,...b}){return(0,d.jsx)("tr",{className:(0,e.cn)("border-b transition-colors hover:bg-muted/50",a),...b})}function j({className:a,...b}){return(0,d.jsx)("th",{className:(0,e.cn)("h-10 px-3 text-left align-middle text-xs font-medium text-muted-foreground",a),...b})}function k({className:a,...b}){return(0,d.jsx)("td",{className:(0,e.cn)("p-3 align-middle",a),...b})}},70673:(a,b,c)=>{"use strict";c.d(b,{cn:()=>f});var d=c(81171),e=c(11167);function f(...a){return(0,e.QP)((0,d.$)(a))}},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},75022:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>k,dynamic:()=>j});var d=c(75338),e=c(37762),f=c(22821),g=c(63299),h=c(66444),i=c(46145);let j="force-dynamic";function k(){let a=(0,h.U)();return(0,d.jsxs)("div",{className:"space-y-6",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h1",{className:"text-2xl font-semibold tracking-normal",children:"Raw Data"}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"Inspect recent scan runs, parser selection, imported records, warnings, and failures."})]}),(0,d.jsxs)(f.Zp,{children:[(0,d.jsxs)(f.aR,{children:[(0,d.jsx)(f.ZB,{children:"Recent Scan Runs"}),(0,d.jsx)(f.BT,{children:"High-level import history."})]}),(0,d.jsx)(f.Wu,{className:"table-scroll",children:(0,d.jsxs)(g.XI,{children:[(0,d.jsx)(g.A0,{children:(0,d.jsxs)(g.Hj,{children:[(0,d.jsx)(g.nd,{children:"Started"}),(0,d.jsx)(g.nd,{children:"Completed"}),(0,d.jsx)(g.nd,{children:"Files"}),(0,d.jsx)(g.nd,{children:"Imported"}),(0,d.jsx)(g.nd,{children:"Warnings"}),(0,d.jsx)(g.nd,{children:"Errors"})]})}),(0,d.jsx)(g.BF,{children:a.scanRuns.map(a=>(0,d.jsxs)(g.Hj,{children:[(0,d.jsx)(g.nA,{children:(0,i.Yq)(a.startedAt)}),(0,d.jsx)(g.nA,{children:(0,i.Yq)(a.completedAt)}),(0,d.jsx)(g.nA,{children:a.filesScanned.toLocaleString()}),(0,d.jsx)(g.nA,{children:a.recordsImported.toLocaleString()}),(0,d.jsx)(g.nA,{children:a.warnings.length.toLocaleString()}),(0,d.jsx)(g.nA,{children:a.errors.length.toLocaleString()})]},a.id))})]})})]}),(0,d.jsxs)(f.Zp,{children:[(0,d.jsxs)(f.aR,{children:[(0,d.jsx)(f.ZB,{children:"Scanned Files"}),(0,d.jsx)(f.BT,{children:"Parser, status, warning, error, and metadata preview per file."})]}),(0,d.jsx)(f.Wu,{className:"table-scroll",children:(0,d.jsxs)(g.XI,{children:[(0,d.jsx)(g.A0,{children:(0,d.jsxs)(g.Hj,{children:[(0,d.jsx)(g.nd,{children:"File"}),(0,d.jsx)(g.nd,{children:"Parser"}),(0,d.jsx)(g.nd,{children:"Status"}),(0,d.jsx)(g.nd,{children:"Imported"}),(0,d.jsx)(g.nd,{children:"Warnings"}),(0,d.jsx)(g.nd,{children:"Errors"}),(0,d.jsx)(g.nd,{children:"Metadata"})]})}),(0,d.jsx)(g.BF,{children:a.scanFiles.map(a=>{var b;return(0,d.jsxs)(g.Hj,{children:[(0,d.jsx)(g.nA,{className:"max-w-96 truncate font-mono text-xs",children:a.path}),(0,d.jsx)(g.nA,{children:a.parser??"None"}),(0,d.jsx)(g.nA,{children:(0,d.jsx)(e.E,{variant:"imported"===(b=a.status)?"success":b.includes("error")||"failed"===b?"destructive":b.includes("skipped")?"secondary":"warning",children:a.status})}),(0,d.jsx)(g.nA,{children:a.recordsImported.toLocaleString()}),(0,d.jsx)(g.nA,{className:"max-w-64 truncate",children:a.warnings.join("; ")||"None"}),(0,d.jsx)(g.nA,{className:"max-w-64 truncate",children:a.errors.join("; ")||"None"}),(0,d.jsx)(g.nA,{className:"max-w-80 truncate font-mono text-xs",children:JSON.stringify(a.rawMetadata)})]},a.id)})})]})})]})]})}},76760:a=>{"use strict";a.exports=require("node:path")},78335:()=>{},79694:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,3991,23))},82704:()=>{},86281:(a,b,c)=>{"use strict";c.d(b,{F:()=>g});var d=c(81171);let e=a=>"boolean"==typeof a?`${a}`:0===a?"0":a,f=d.$,g=(a,b)=>c=>{var d;if((null==b?void 0:b.variants)==null)return f(a,null==c?void 0:c.class,null==c?void 0:c.className);let{variants:g,defaultVariants:h}=b,i=Object.keys(g).map(a=>{let b=null==c?void 0:c[a],d=null==h?void 0:h[a];if(null===b)return null;let f=e(b)||e(d);return g[a][f]}),j=c&&Object.entries(c).reduce((a,b)=>{let[c,d]=b;return void 0===d||(a[c]=d),a},{});return f(a,i,null==b||null==(d=b.compoundVariants)?void 0:d.reduce((a,b)=>{let{class:c,className:d,...e}=b;return Object.entries(e).every(a=>{let[b,c]=a;return Array.isArray(c)?c.includes({...h,...j}[b]):({...h,...j})[b]===c})?[...a,c,d]:a},[]),null==c?void 0:c.class,null==c?void 0:c.className)}},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},89743:(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))},92158:(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:["",{children:["debug",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,75022)),"/Users/abhyoh/Documents/Brand/Apps/token-usage/app/debug/page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(c.bind(c,98635)),"/Users/abhyoh/Documents/Brand/Apps/token-usage/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"]}]}.children,J=["/Users/abhyoh/Documents/Brand/Apps/token-usage/app/debug/page.tsx"],K={require:c,loadChunk:()=>Promise.resolve()},L=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/debug/page",pathname:"/debug",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:I},distDir:".next",relativeProjectDir:""});async function M(a,b,d){var D;let H="/debug/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}}},96487:()=>{},98635:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>w,metadata:()=>v});var d=c(75338);c(82704);var e=c(65169),f=c.n(e),g=c(95904),h=c(87859),i=c(23554),j=c(50629),k=c(44391),l=c(17448),m=c(93238),n=c(69138),o=c(47186),p=c(27765),q=c(5794),r=c(99618);let s=[{href:"/",label:"Overview",icon:g.A},{href:"/tools",label:"Tools",icon:h.A},{href:"/models",label:"Models",icon:i.A},{href:"/projects",label:"Projects",icon:j.A},{href:"/sessions",label:"Sessions",icon:k.A},{href:"/optimisation",label:"Insights",icon:l.A},{href:"/pricing",label:"Pricing",icon:m.A},{href:"/diagnostics",label:"Diagnostics",icon:n.A},{href:"/discovery",label:"Discovery",icon:o.A},{href:"/parser-debug",label:"Parsers",icon:p.A},{href:"/debug",label:"Raw Data",icon:p.A},{href:"/settings",label:"Settings",icon:q.A}];function t(){return(0,d.jsx)("aside",{className:"sticky top-0 hidden h-screen w-64 shrink-0 border-r bg-card md:block",children:(0,d.jsxs)("div",{className:"flex h-full flex-col",children:[(0,d.jsx)("div",{className:"border-b p-5",children:(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("div",{className:"flex h-9 w-9 items-center justify-center rounded-md bg-primary text-primary-foreground",children:(0,d.jsx)(r.A,{className:"h-5 w-5"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-sm font-semibold",children:"TokenTrace CLI"}),(0,d.jsx)("div",{className:"text-xs text-muted-foreground",children:"Local analytics"})]})]})}),(0,d.jsx)("nav",{className:"flex-1 space-y-1 p-3",children:s.map(a=>{let b=a.icon;return(0,d.jsxs)(f(),{href:a.href,className:"flex items-center gap-3 rounded-md px-3 py-2 text-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",children:[(0,d.jsx)(b,{className:"h-4 w-4"}),a.label]},a.href)})}),(0,d.jsx)("div",{className:"border-t p-4 text-xs text-muted-foreground",children:"Local only. No telemetry. Raw content off by default."})]})})}function u(){return(0,d.jsx)("nav",{className:"flex gap-2 overflow-x-auto border-b bg-card px-4 py-2 md:hidden",children:s.map(a=>{let b=a.icon;return(0,d.jsxs)(f(),{href:a.href,className:"flex shrink-0 items-center gap-2 rounded-md border px-3 py-2 text-xs text-muted-foreground",children:[(0,d.jsx)(b,{className:"h-3.5 w-3.5"}),a.label]},a.href)})})}let v={title:"TokenTrace CLI",description:"Local-first AI CLI token and cost analytics"};function w({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)(t,{}),(0,d.jsxs)("main",{className:"min-w-0 flex-1",children:[(0,d.jsxs)("div",{className:"border-b bg-card px-4 py-3 md:hidden",children:[(0,d.jsx)("div",{className:"text-sm font-semibold",children:"TokenTrace CLI"}),(0,d.jsx)("div",{className:"text-xs text-muted-foreground",children:"Local analytics dashboard"})]}),(0,d.jsx)(u,{}),(0,d.jsx)("div",{className:"mx-auto w-full max-w-7xl px-4 py-6 sm:px-6 lg:px-8",children:a})]})]})})})}}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[331,237,123,153,444],()=>b(b.s=92158));module.exports=c})();
@@ -0,0 +1 @@
1
+ {"version":1,"files":["../../../../.tokentrace/tokentrace.db","../../../../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","../../../package.json","../../chunks/123.js","../../chunks/153.js","../../chunks/237.js","../../chunks/331.js","../../chunks/444.js","../../webpack-runtime.js","page_client-reference-manifest.js"]}