agentgraphed 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-build-manifest.json +39 -39
- package/.next/standalone/.next/app-path-routes-manifest.json +6 -6
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/required-server-files.json +6 -6
- package/.next/standalone/.next/server/app/_not-found/page.js +2 -2
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
- package/.next/standalone/.next/server/app/analytics/page.js +2 -2
- package/.next/standalone/.next/server/app/analytics/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/ingest-local/route.js +1 -1
- package/.next/standalone/.next/server/app/api/ingest-local/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/quota-probe/route.js +2 -2
- package/.next/standalone/.next/server/app/api/quota-probe/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/share/dashboard/route.js +1 -1
- package/.next/standalone/.next/server/app/api/share/dashboard/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/share/project/[id]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/share/project/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/share/session/[id]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/share/session/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/page.js +3 -3
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/[id]/page.js +2 -2
- package/.next/standalone/.next/server/app/projects/[id]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/projects/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/page.js +2 -44
- package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/sessions/[id]/page.js +3 -3
- package/.next/standalone/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/sessions/page.js +2 -44
- package/.next/standalone/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page.js +4 -4
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/timeline/page.js +2 -44
- package/.next/standalone/.next/server/app/timeline/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/timeline/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +6 -6
- package/.next/standalone/.next/server/chunks/27.js +15 -3
- package/.next/standalone/.next/server/chunks/450.js +137 -0
- package/.next/standalone/.next/server/chunks/564.js +4 -4
- package/.next/standalone/.next/server/chunks/694.js +43 -0
- package/.next/standalone/.next/server/chunks/903.js +1 -0
- package/.next/standalone/.next/server/chunks/944.js +61 -25
- package/.next/standalone/.next/server/chunks/954.js +1 -0
- package/.next/standalone/.next/server/functions-config-manifest.json +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/app/_not-found/{page-dc1cbec20c205394.js → page-01ad39d2ead973c7.js} +1 -1
- package/.next/{static/chunks/app/analytics/page-42186370029f753c.js → standalone/.next/static/chunks/app/analytics/page-79a1781c3529dcb6.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/{layout-4527370a1e451501.js → layout-bbab14e77aaeeb67.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/page-d5393f25e2553a0c.js +1 -0
- package/.next/standalone/.next/static/chunks/app/projects/[id]/page-32fe8cf66558be7c.js +1 -0
- package/.next/standalone/.next/static/chunks/app/projects/page-dce207c2f75422be.js +1 -0
- package/.next/standalone/.next/static/chunks/app/sessions/[id]/{page-a887f742425eb49c.js → page-49542233907f7f6b.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/sessions/page-aec145af506da55b.js +1 -0
- package/.next/standalone/.next/static/chunks/app/settings/page-b961ca195748ef3b.js +1 -0
- package/.next/standalone/.next/static/chunks/app/timeline/page-dce207c2f75422be.js +1 -0
- package/.next/standalone/.next/static/chunks/{main-app-c9ae70e5bb48ac77.js → main-app-27b331c894fe5037.js} +1 -1
- package/.next/standalone/node_modules/@img/{sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib → sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3} +0 -0
- package/.next/standalone/node_modules/@img/{sharp-libvips-darwin-arm64 → sharp-libvips-linux-x64}/package.json +11 -5
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +1 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +42 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +30 -0
- package/.next/standalone/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
- package/.next/standalone/node_modules/@img/{sharp-darwin-arm64 → sharp-linux-x64}/package.json +13 -7
- package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/LICENSE +191 -0
- package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
- package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/package.json +46 -0
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/server.js +1 -1
- package/.next/standalone/src/lib/pricing-data/litellm.json +615 -92
- package/.next/standalone/src/lib/pricing-data/litellm.meta.json +2 -2
- package/.next/static/chunks/app/_not-found/{page-dc1cbec20c205394.js → page-01ad39d2ead973c7.js} +1 -1
- package/.next/{standalone/.next/static/chunks/app/analytics/page-42186370029f753c.js → static/chunks/app/analytics/page-79a1781c3529dcb6.js} +1 -1
- package/.next/static/chunks/app/{layout-4527370a1e451501.js → layout-bbab14e77aaeeb67.js} +1 -1
- package/.next/static/chunks/app/page-d5393f25e2553a0c.js +1 -0
- package/.next/static/chunks/app/projects/[id]/page-32fe8cf66558be7c.js +1 -0
- package/.next/static/chunks/app/projects/page-dce207c2f75422be.js +1 -0
- package/.next/static/chunks/app/sessions/[id]/{page-a887f742425eb49c.js → page-49542233907f7f6b.js} +1 -1
- package/.next/static/chunks/app/sessions/page-aec145af506da55b.js +1 -0
- package/.next/static/chunks/app/settings/page-b961ca195748ef3b.js +1 -0
- package/.next/static/chunks/app/timeline/page-dce207c2f75422be.js +1 -0
- package/.next/static/chunks/{main-app-c9ae70e5bb48ac77.js → main-app-27b331c894fe5037.js} +1 -1
- package/CHANGELOG.md +22 -0
- package/README.md +52 -46
- package/package.json +1 -1
- package/src/lib/pricing-data/litellm.json +615 -92
- package/src/lib/pricing-data/litellm.meta.json +2 -2
- package/.next/standalone/.next/server/chunks/165.js +0 -109
- package/.next/standalone/.next/server/chunks/191.js +0 -1
- package/.next/standalone/.next/server/chunks/367.js +0 -43
- package/.next/standalone/.next/server/chunks/660.js +0 -1
- package/.next/standalone/.next/static/chunks/app/page-aa358006ddd29e91.js +0 -1
- package/.next/standalone/.next/static/chunks/app/projects/[id]/page-15f21aaacdacb59c.js +0 -1
- package/.next/standalone/.next/static/chunks/app/projects/page-d794cc35674274a4.js +0 -1
- package/.next/standalone/.next/static/chunks/app/sessions/page-35c503eef7e53742.js +0 -1
- package/.next/standalone/.next/static/chunks/app/settings/page-dc0bec0bd2577322.js +0 -1
- package/.next/standalone/.next/static/chunks/app/timeline/page-d794cc35674274a4.js +0 -1
- package/.next/standalone/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
- package/.next/standalone/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
- package/.next/standalone/node_modules/better-sqlite3/lib/database.js +0 -90
- package/.next/standalone/node_modules/better-sqlite3/lib/index.js +0 -3
- package/.next/standalone/node_modules/better-sqlite3/lib/methods/aggregate.js +0 -43
- package/.next/standalone/node_modules/better-sqlite3/lib/methods/backup.js +0 -67
- package/.next/standalone/node_modules/better-sqlite3/lib/methods/function.js +0 -31
- package/.next/standalone/node_modules/better-sqlite3/lib/methods/inspect.js +0 -7
- package/.next/standalone/node_modules/better-sqlite3/lib/methods/pragma.js +0 -12
- package/.next/standalone/node_modules/better-sqlite3/lib/methods/serialize.js +0 -16
- package/.next/standalone/node_modules/better-sqlite3/lib/methods/table.js +0 -189
- package/.next/standalone/node_modules/better-sqlite3/lib/methods/transaction.js +0 -78
- package/.next/standalone/node_modules/better-sqlite3/lib/methods/wrappers.js +0 -54
- package/.next/standalone/node_modules/better-sqlite3/lib/sqlite-error.js +0 -20
- package/.next/standalone/node_modules/better-sqlite3/lib/util.js +0 -12
- package/.next/standalone/node_modules/better-sqlite3/package.json +0 -54
- package/.next/static/chunks/app/page-aa358006ddd29e91.js +0 -1
- package/.next/static/chunks/app/projects/[id]/page-15f21aaacdacb59c.js +0 -1
- package/.next/static/chunks/app/projects/page-d794cc35674274a4.js +0 -1
- package/.next/static/chunks/app/sessions/page-35c503eef7e53742.js +0 -1
- package/.next/static/chunks/app/settings/page-dc0bec0bd2577322.js +0 -1
- package/.next/static/chunks/app/timeline/page-d794cc35674274a4.js +0 -1
- /package/.next/standalone/.next/static/{A6dvfHR2KYz42pasM2hyV → hnOq_d-GplXbWU5EnSBzF}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{A6dvfHR2KYz42pasM2hyV → hnOq_d-GplXbWU5EnSBzF}/_ssgManifest.js +0 -0
- /package/.next/standalone/node_modules/@img/{sharp-libvips-darwin-arm64 → sharp-libvips-linux-x64}/lib/index.js +0 -0
- /package/.next/standalone/node_modules/@img/{sharp-libvips-darwin-arm64 → sharp-libvips-linux-x64}/versions.json +0 -0
- /package/.next/standalone/node_modules/@img/{sharp-darwin-arm64 → sharp-linux-x64}/LICENSE +0 -0
- /package/.next/static/{A6dvfHR2KYz42pasM2hyV → hnOq_d-GplXbWU5EnSBzF}/_buildManifest.js +0 -0
- /package/.next/static/{A6dvfHR2KYz42pasM2hyV → hnOq_d-GplXbWU5EnSBzF}/_ssgManifest.js +0 -0
|
@@ -1,44 +1,2 @@
|
|
|
1
|
-
(()=>{var a={};a.id=404,a.ids=[404],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")},11997:a=>{"use strict";a.exports=require("punycode")},
|
|
2
|
-
|
|
3
|
-
For each session you receive a list of the user's prompts in order ("prompts": [...]).
|
|
4
|
-
The first prompt is the opening goal; later prompts show how the session evolved
|
|
5
|
-
(e.g. "let's plan this" → "now add the route" → "fix this bug"). Sessions
|
|
6
|
-
often span multiple kinds of work.
|
|
7
|
-
|
|
8
|
-
Return JSON only:
|
|
9
|
-
{
|
|
10
|
-
"results": [
|
|
11
|
-
{ "id": "...", "categories": ["Primary", "Secondary?"], "title": "..." }
|
|
12
|
-
]
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
Categories (pick 1–3, ordered by how much of the session they represent,
|
|
16
|
-
most-significant first; only include a label if it materially appears):
|
|
17
|
-
- Planning — brainstorming, PRDs, deciding whether to build something, product strategy
|
|
18
|
-
- Debugging — fixing bugs, errors, broken things, failing tests
|
|
19
|
-
- Refactor — restructuring or renaming existing code without behavior change
|
|
20
|
-
- Feature — building or adding new functionality
|
|
21
|
-
- Styling — UI, CSS, layout, design, theme
|
|
22
|
-
- SEO/Content — SEO, blog content, headlines, meta tags
|
|
23
|
-
- DevOps — deploy, CI/CD, env vars, infrastructure, DNS
|
|
24
|
-
- Data — databases, schemas, migrations, scraping, ETL
|
|
25
|
-
- Payments — Stripe, checkout, billing, invoices, subscriptions
|
|
26
|
-
- Docs — README, documentation, changelog
|
|
27
|
-
- Unknown — when you genuinely can't tell (prefer this over guessing)
|
|
28
|
-
|
|
29
|
-
When in doubt, prefer fewer labels. A session that's 90% Feature with a tiny
|
|
30
|
-
bug fix at the end is just Feature.
|
|
31
|
-
|
|
32
|
-
Title rules:
|
|
33
|
-
- 4-9 words, past tense ("Added", "Fixed", "Drafted")
|
|
34
|
-
- Capture the dominant outcome of the session, not just the opening prompt
|
|
35
|
-
- Concrete object ("Stripe checkout reminder" not "payments stuff")
|
|
36
|
-
- No quotes, no period
|
|
37
|
-
- Keep acronyms (PRD, API, CLI) and proper nouns (Stripe, Drizzle, Next.js) capitalized
|
|
38
|
-
- Never repeat a category in the title
|
|
39
|
-
|
|
40
|
-
Return the JSON only, no prose.`;async function i(a){let b=(0,e.Q)();if(!b)throw Error("No LLM provider configured");let c=(0,f.P6)(b.classifierModel),d=(0,f.nG)(c,600*a,50*a);return{totalUsd:d,perSessionUsd:0===a?0:d/a,modelId:c.id,modelLabel:c.label}}async function j(a){let b,c=(0,e.Q)();if(!c)throw Error("No LLM provider configured");let i=(0,f.P6)(c.classifierModel),j=a.batchSize??20,k=(0,d.x)(),l=k.prepare("UPDATE sessions SET heuristic_title = ?, category = ?, categories = ? WHERE id = ?"),m=0,n=0,o=0;for(let p=0;p<a.rows.length;p+=j){let q=a.rows.slice(p,p+j),r=q.map(a=>({id:a.id,prompts:function(a,b){let c=(0,d.x)().prepare("SELECT content FROM messages WHERE session_id = ? AND role = 'user' ORDER BY timestamp ASC").all(a);if(0===c.length)return[b];if(c.length<=8)return c.map(a=>a.content);let e=[c[0].content],f=(c.length-2)/7;for(let a=1;a<=6;a++)e.push(c[Math.round(a*f)].content);return e.push(c[c.length-1].content),e}(a.id,a.first_prompt)})),s=function(a){let b={sessions:a.map(a=>({id:a.id,prompts:a.prompts.map(a=>a.slice(0,400))}))};return`Sessions to classify:
|
|
41
|
-
${JSON.stringify(b,null,2)}`}(r);r.reduce((a,b)=>a+b.prompts.reduce((a,b)=>a+Math.ceil(b.length/4),0),0);let t=Math.min(3e3,Math.max(800,100*q.length));try{let{text:a,inputTokens:d,outputTokens:j}=await (0,e.M)({model:c.classifierModel,systemPrompt:h,userPrompt:s,maxTokens:t,responseFormat:"json"});m+=(0,f.nG)(i,d,j);let p=function(a){let b=a.trim(),c=b.match(/```(?:json)?\s*([\s\S]*?)```/);c&&(b=c[1].trim());let d=b.indexOf("{"),e=b.lastIndexOf("}");if(-1===d||-1===e)return[];try{let a=JSON.parse(b.slice(d,e+1));if(Array.isArray(a?.results))return a.results}catch{}return[]}(a);if(0===p.length&&a.length>0){o+=1,b||(b=`Could not parse model response. First 200 chars: ${a.slice(0,200)}`);continue}k.transaction(a=>{for(let b of a){if(!b.id)continue;let a=[...new Set((b.categories??(b.category?[b.category]:[])).filter(a=>"string"==typeof a).map(a=>a.trim()).filter(a=>g.includes(a)))].slice(0,3);if(0===a.length)continue;let c=(b.title||"").trim().replace(/[.\s]+$/,"").slice(0,120);c&&(l.run(c,a[0],JSON.stringify(a),b.id),n+=1)}})(p)}catch(c){o+=1;let a=c.message;console.error("classify batch failed",a),b||(b=a)}a.onProgress?.(Math.min(p+j,a.rows.length),a.rows.length)}return{classified:n,costUsd:m,firstError:b,batchesFailed:o}}function k(a){let b=(0,d.x)(),c=`SELECT id, first_prompt FROM sessions
|
|
42
|
-
WHERE category IS NULL AND first_prompt IS NOT NULL AND length(first_prompt) > 0
|
|
43
|
-
ORDER BY started_at DESC${a?` LIMIT ${a}`:""}`;return b.prepare(c).all()}},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{"use strict";a.exports=require("node:child_process")},33497:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,65169,23))},33873:a=>{"use strict";a.exports=require("path")},37830:a=>{"use strict";a.exports=require("node:stream/web")},40753:(a,b,c)=>{"use strict";c.d(b,{z:()=>e});var d=c(75338);function e({title:a,subtitle:b,right:c,titleAdornment:e}){return(0,d.jsxs)("header",{className:"px-7 h-[72px] border-b border-surface-2 flex items-center justify-between sticky top-0 z-20 bg-canvas/95 backdrop-blur supports-[backdrop-filter]:bg-canvas/80",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("h1",{className:"text-headline-md text-ink font-semibold",children:a}),e]}),b&&(0,d.jsx)("div",{className:"text-body-sm text-ink-mute mt-0.5",children:b})]}),c&&(0,d.jsx)("div",{className:"flex items-center gap-2",children:c})]})}},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},46649:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,3991,23))},48161:a=>{"use strict";a.exports=require("node:os")},49145:(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:["timeline",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,51149)),"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/timeline/page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(c.bind(c,51472)),"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,81170,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,87028,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,90461,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,32768,23)),"next/dist/client/components/builtin/unauthorized.js"]}]}.children,J=["/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/timeline/page.tsx"],K={require:c,loadChunk:()=>Promise.resolve()},L=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/timeline/page",pathname:"/timeline",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:I},distDir:".next",relativeProjectDir:""});async function M(a,b,d){var D;let H="/timeline/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}`:""}
|
|
44
|
-
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}}},51149:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>k,dynamic:()=>j});var d=c(75338),e=c(40753),f=c(59482),g=c(10944),h=c(86718),i=c(46145);let j="force-dynamic";async function k({searchParams:a}){(0,h.N)();let b=await a,c=(0,g.JQ)(),j=(0,g.k$)({projectId:b.project,provider:b.provider,search:b.q,limit:200});return(0,d.jsxs)("div",{children:[(0,d.jsx)(e.z,{title:"Timeline",subtitle:"Chronological record of every AI coding session"}),(0,d.jsxs)("form",{className:"px-7 pt-5 pb-3 flex items-center gap-3 border-b border-surface-2",method:"get",children:[(0,d.jsx)("input",{name:"q",defaultValue:b.q??"",placeholder:"Search prompts…",className:"bg-surface-1 border border-surface-3 rounded px-3 h-8 text-body-md flex-1 max-w-md focus:outline-none focus:border-primary"}),(0,d.jsxs)("select",{name:"project",defaultValue:b.project??"",className:"bg-surface-1 border border-surface-3 rounded px-2 h-8 text-body-sm",children:[(0,d.jsx)("option",{value:"",children:"All projects"}),c.map(a=>(0,d.jsx)("option",{value:a.id,children:a.name},a.id))]}),(0,d.jsxs)("select",{name:"provider",defaultValue:b.provider??"",className:"bg-surface-1 border border-surface-3 rounded px-2 h-8 text-body-sm",children:[(0,d.jsx)("option",{value:"",children:"All providers"}),(0,d.jsx)("option",{value:"claude",children:"Claude"}),(0,d.jsx)("option",{value:"codex",children:"Codex"})]}),(0,d.jsx)("button",{type:"submit",className:"btn",children:"Filter"})]}),(0,d.jsxs)("div",{className:"p-7 space-y-7",children:[0===j.length&&(0,d.jsx)("div",{className:"text-body-sm text-ink-mute text-center py-12",children:"No sessions match these filters."}),j.map(a=>{let b=a.entries.filter(a=>"single"===a.role||"closed"===a.role).length;return(0,d.jsxs)("section",{children:[(0,d.jsxs)("header",{className:"flex items-baseline gap-3 mb-3",children:[(0,d.jsx)("h2",{className:"text-headline-md text-ink",children:new Date(a.dayMs).toLocaleDateString(void 0,{weekday:"long",month:"long",day:"numeric",year:"numeric"})}),(0,d.jsxs)("span",{className:"text-body-sm text-ink-mute font-mono tabular",children:[b," closed \xb7 ",a.entries.length," active \xb7 ",(0,i.yj)(a.totalTokens)," tok \xb7 ",(0,i.F0)(a.totalCost)]})]}),(0,d.jsx)("div",{className:"card divide-y divide-surface-2",children:(0,d.jsx)("div",{className:"p-3 space-y-1",children:a.entries.map(a=>(0,d.jsx)(f.E,{session:a.session,role:a.role,spanDays:a.spanDays},`${a.session.id}-${a.role}`))})})]},a.day)})]})]})}},55591:a=>{"use strict";a.exports=require("https")},57075:a=>{"use strict";a.exports=require("node:stream")},59482:(a,b,c)=>{"use strict";c.d(b,{E:()=>k});var d=c(75338),e=c(65169),f=c.n(e),g=c(97064),h=c(46145),i=c(92490);function j({role:a,spanDays:b}){if("single"===a)return null;let c="started"===a?`Started \xb7 spans ${b}d`:"closed"===a?"Closed":"Continued";return(0,d.jsx)("span",{className:"text-code-sm font-mono uppercase tracking-wide px-1.5 py-0.5 rounded border border-surface-3 text-ink-mute",children:c})}function k({session:a,role:b="single",spanDays:c=1}){var e;let k=(0,g.xU)(a),l=a.input_tokens+a.output_tokens+a.cache_read_tokens+a.cache_write_tokens,m=(0,g.LQ)(a),n="continued"===b,o="closed"===b?a.ended_at:a.started_at;return(0,d.jsxs)(f(),{href:`/sessions/${a.id}`,className:`flex items-stretch gap-3 border-l-2 border-surface-3 hover:border-primary transition-colors pl-3 py-2 group ${n?"opacity-60":""}`,children:[(0,d.jsxs)("div",{className:"flex flex-col items-center pt-1 min-w-[60px]",children:[(0,d.jsx)("div",{className:"font-mono text-code-sm text-ink-mute tabular",children:(0,h.ME)(o)}),(0,d.jsx)("div",{className:`w-1.5 h-1.5 rounded-full mt-2 ${"claude"===(e=a.provider)?"bg-primary":"codex"===e?"bg-secondary":"bg-ink-mute"}`})]}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,d.jsx)("div",{className:"text-body-md text-ink truncate group-hover:text-primary transition-colors",children:k}),(0,d.jsx)(j,{role:b,spanDays:c}),m.map(a=>(0,d.jsx)(i.i,{category:a},a))]}),(0,d.jsxs)("div",{className:"text-body-sm text-ink-mute mt-0.5 flex items-center gap-2 flex-wrap",children:[(0,d.jsx)("span",{children:a.project_name}),(0,d.jsx)("span",{children:"\xb7"}),(0,d.jsx)("span",{className:"font-mono text-code-sm",children:a.model||"unknown"}),(0,d.jsx)("span",{children:"\xb7"}),(0,d.jsxs)("span",{className:"font-mono text-code-sm tabular",children:[(0,h.yj)(l)," tok"]}),(0,d.jsx)("span",{children:"\xb7"}),(0,d.jsx)("span",{className:"font-mono text-code-sm tabular",children:(0,h.c5)(a.duration_ms)})]})]})]})}},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},65169:(a,b,c)=>{let{createProxy:d}=c(39893);a.exports=d("/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/app-dir/link.js")},71277:(a,b,c)=>{"use strict";c.d(b,{M:()=>i,Q:()=>h});var d=c(19283),e=c(9244),f=c(10944),g=c(92568);function h(){let a=(0,f.PL)("llm_provider")||"anthropic",b="openai"===a?"openai_api_key":"anthropic_api_key",c=(0,f.PL)(b)||process.env["openai"===a?"OPENAI_API_KEY":"ANTHROPIC_API_KEY"]||"";if(!c)return null;let d=(0,f.PL)("classifier_model")||(0,g.$I)(a),e=(0,f.PL)("summarizer_model")||(0,g.$I)(a);return{provider:a,apiKey:c,classifierModel:d,summarizerModel:e}}async function i(a){let b=h();if(!b)throw Error("No LLM provider configured");let c=(0,g.P6)(a.model)??(0,g.P6)(b.classifierModel);if(!c)throw Error(`Unknown model: ${a.model}`);if("anthropic"===c.provider){let e=new d.Ay({apiKey:b.apiKey}),f=await e.messages.create({model:c.id,max_tokens:a.maxTokens??1024,system:a.systemPrompt,messages:[{role:"user",content:a.userPrompt}]});return{text:f.content.map(a=>"text"in a?a.text:"").join("").trim(),inputTokens:f.usage.input_tokens,outputTokens:f.usage.output_tokens}}{let d=new e.Ay({apiKey:b.apiKey}),f=/^gpt-5/i.test(c.id)||/^o\d/i.test(c.id),g=await d.chat.completions.create({model:c.id,messages:[...a.systemPrompt?[{role:"system",content:a.systemPrompt}]:[],{role:"user",content:a.userPrompt}],max_completion_tokens:a.maxTokens??1024,...f?{reasoning_effort:"minimal"}:{},..."json"===a.responseFormat?{response_format:{type:"json_object"}}:{}}),h=g.choices[0]?.message?.content?.trim()||"",i=g.usage?.completion_tokens_details?.reasoning_tokens??0,j=g.choices[0]?.finish_reason;if(!h)throw Error("length"===j&&i>0?`model used all ${i} output tokens on reasoning before producing any visible content; raise the token budget or use a non-reasoning model`:`model returned empty content (finish_reason=${j})`);return{text:h,inputTokens:g.usage?.prompt_tokens??0,outputTokens:g.usage?.completion_tokens??0}}}},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},73566:a=>{"use strict";a.exports=require("worker_threads")},74075:a=>{"use strict";a.exports=require("zlib")},76760:a=>{"use strict";a.exports=require("node:path")},77598:a=>{"use strict";a.exports=require("node:crypto")},79551:a=>{"use strict";a.exports=require("url")},80481:a=>{"use strict";a.exports=require("node:readline")},81630:a=>{"use strict";a.exports=require("http")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},86718:(a,b,c)=>{"use strict";c.d(b,{L:()=>l,N:()=>j});var d=c(90027),e=c(10944),f=c(25742),g=c(15988),h=c(71277);let i=null;function j(){if(i)return;let a=(0,e.PL)("dashboard_last_auto_ingest_ms"),b=a?parseInt(a,10):0;Date.now()-b<1e4||((0,e.ZC)("dashboard_last_auto_ingest_ms",String(Date.now())),i=(async()=>{try{let a=await (0,d.U)();(a.claude.filesIngested>0||a.codex.filesIngested>0)&&(0,f.e)(),await k()}catch{}finally{i=null}})())}async function k(){try{if("off"===(0,e.PL)("auto_classify")||!(0,h.Q)())return;let a=(0,g.Kv)();if(a.length<5)return;(await (0,g.N6)({rows:a})).classified>0&&(0,f.e)()}catch{}}function l(){let a=(0,e.PL)("dashboard_last_auto_ingest_ms");return a?parseInt(a,10):0}},87550:a=>{"use strict";a.exports=require("better-sqlite3")},92490:(a,b,c)=>{"use strict";c.d(b,{i:()=>f});var d=c(75338);let e={Planning:"bg-tertiary-soft text-ink-dim border-ink-mute/30",Debugging:"bg-error/15 text-error border-error/30",Refactor:"bg-primary/10 text-primary border-primary/30",Feature:"bg-secondary/10 text-secondary border-secondary/30",Styling:"bg-fuchsia-400/10 text-fuchsia-300 border-fuchsia-400/30","SEO/Content":"bg-amber-400/10 text-amber-300 border-amber-400/30",DevOps:"bg-orange-400/10 text-orange-300 border-orange-400/30",Data:"bg-sky-400/10 text-sky-300 border-sky-400/30",Payments:"bg-emerald-400/10 text-emerald-300 border-emerald-400/30",Docs:"bg-violet-400/10 text-violet-300 border-violet-400/30",Unknown:"bg-surface-3 text-ink-mute border-surface-4"};function f({category:a,size:b="sm"}){let c=e[a]||e.Unknown;return(0,d.jsx)("span",{className:`inline-block ${"xs"===b?"text-[9px] px-1 py-0":"text-[10px] px-1.5 py-0.5"} rounded font-mono uppercase tracking-wider border ${c} shrink-0`,children:a})}},92568:(a,b,c)=>{"use strict";c.d(b,{$I:()=>f,P6:()=>e,nG:()=>g});let d=[{id:"claude-haiku-4-5",label:"Claude Haiku 4.5 (cheapest)",provider:"anthropic",input:1,output:5},{id:"claude-sonnet-4-6",label:"Claude Sonnet 4.6 (smarter)",provider:"anthropic",input:3,output:15},{id:"gpt-5-mini",label:"GPT-5 Mini (cheapest)",provider:"openai",input:.5,output:2},{id:"gpt-4o-mini",label:"GPT-4o Mini (very cheap)",provider:"openai",input:.15,output:.6},{id:"gpt-5",label:"GPT-5 (smarter)",provider:"openai",input:2.5,output:10}];function e(a){return d.find(b=>b.id===a)}function f(a){return"openai"===a?"gpt-5-mini":"claude-haiku-4-5"}function g(a,b,c){return(b*a.input+c*a.output)/1e6}}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[873,609,564,970,944,660,27],()=>b(b.s=49145));module.exports=c})();
|
|
1
|
+
(()=>{var a={};a.id=404,a.ids=[404],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")},11997:a=>{"use strict";a.exports=require("punycode")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},21194:(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:["timeline",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,51149)),"/home/runner/work/agentgraphed/agentgraphed/src/app/timeline/page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(c.bind(c,51472)),"/home/runner/work/agentgraphed/agentgraphed/src/app/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,81170,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,87028,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,90461,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,32768,23)),"next/dist/client/components/builtin/unauthorized.js"]}]}.children,J=["/home/runner/work/agentgraphed/agentgraphed/src/app/timeline/page.tsx"],K={require:c,loadChunk:()=>Promise.resolve()},L=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/timeline/page",pathname:"/timeline",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:I},distDir:".next",relativeProjectDir:""});async function M(a,b,d){var D;let H="/timeline/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}}},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},27910:a=>{"use strict";a.exports=require("stream")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{"use strict";a.exports=require("node:child_process")},33873:a=>{"use strict";a.exports=require("path")},37830:a=>{"use strict";a.exports=require("node:stream/web")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},46674:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,3991,23))},48161:a=>{"use strict";a.exports=require("node:os")},51149:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>k,dynamic:()=>j});var d=c(75338),e=c(40753),f=c(59482),g=c(10944),h=c(86718),i=c(46145);let j="force-dynamic";async function k({searchParams:a}){(0,h.N)();let b=await a,c=(0,g.JQ)(),j=(0,g.k$)({projectId:b.project,provider:b.provider,search:b.q,limit:200});return(0,d.jsxs)("div",{children:[(0,d.jsx)(e.z,{title:"Timeline",subtitle:"Chronological record of every AI coding session"}),(0,d.jsxs)("form",{className:"px-7 pt-5 pb-3 flex items-center gap-3 border-b border-surface-2",method:"get",children:[(0,d.jsx)("input",{name:"q",defaultValue:b.q??"",placeholder:"Search prompts…",className:"bg-surface-1 border border-surface-3 rounded px-3 h-8 text-body-md flex-1 max-w-md focus:outline-none focus:border-primary"}),(0,d.jsxs)("select",{name:"project",defaultValue:b.project??"",className:"bg-surface-1 border border-surface-3 rounded px-2 h-8 text-body-sm",children:[(0,d.jsx)("option",{value:"",children:"All projects"}),c.map(a=>(0,d.jsx)("option",{value:a.id,children:a.name},a.id))]}),(0,d.jsxs)("select",{name:"provider",defaultValue:b.provider??"",className:"bg-surface-1 border border-surface-3 rounded px-2 h-8 text-body-sm",children:[(0,d.jsx)("option",{value:"",children:"All providers"}),(0,d.jsx)("option",{value:"claude",children:"Claude"}),(0,d.jsx)("option",{value:"codex",children:"Codex"})]}),(0,d.jsx)("button",{type:"submit",className:"btn",children:"Filter"})]}),(0,d.jsxs)("div",{className:"p-7 space-y-7",children:[0===j.length&&(0,d.jsx)("div",{className:"text-body-sm text-ink-mute text-center py-12",children:"No sessions match these filters."}),j.map(a=>{let b=a.entries.filter(a=>"single"===a.role||"closed"===a.role).length;return(0,d.jsxs)("section",{children:[(0,d.jsxs)("header",{className:"flex items-baseline gap-3 mb-3",children:[(0,d.jsx)("h2",{className:"text-headline-md text-ink",children:new Date(a.dayMs).toLocaleDateString(void 0,{weekday:"long",month:"long",day:"numeric",year:"numeric"})}),(0,d.jsxs)("span",{className:"text-body-sm text-ink-mute font-mono tabular",children:[b," closed \xb7 ",a.entries.length," active \xb7 ",(0,i.yj)(a.totalTokens)," tok \xb7 ",(0,i.F0)(a.totalCost)]})]}),(0,d.jsx)("div",{className:"card divide-y divide-surface-2",children:(0,d.jsx)("div",{className:"p-3 space-y-1",children:a.entries.map(a=>(0,d.jsx)(f.E,{session:a.session,role:a.role,spanDays:a.spanDays},`${a.session.id}-${a.role}`))})})]},a.day)})]})]})}},55591:a=>{"use strict";a.exports=require("https")},57075:a=>{"use strict";a.exports=require("node:stream")},59482:(a,b,c)=>{"use strict";c.d(b,{E:()=>k});var d=c(75338),e=c(65169),f=c.n(e),g=c(97064),h=c(46145),i=c(92490);function j({role:a,spanDays:b}){if("single"===a)return null;let c="started"===a?`Started \xb7 spans ${b}d`:"closed"===a?"Closed":"Continued";return(0,d.jsx)("span",{className:"text-code-sm font-mono uppercase tracking-wide px-1.5 py-0.5 rounded border border-surface-3 text-ink-mute",children:c})}function k({session:a,role:b="single",spanDays:c=1}){var e;let k=(0,g.xU)(a),l=a.input_tokens+a.output_tokens+a.cache_read_tokens+a.cache_write_tokens,m=(0,g.LQ)(a),n="continued"===b,o="closed"===b?a.ended_at:a.started_at;return(0,d.jsxs)(f(),{href:`/sessions/${a.id}`,className:`flex items-stretch gap-3 border-l-2 border-surface-3 hover:border-primary transition-colors pl-3 py-2 group ${n?"opacity-60":""}`,children:[(0,d.jsxs)("div",{className:"flex flex-col items-center pt-1 min-w-[60px]",children:[(0,d.jsx)("div",{className:"font-mono text-code-sm text-ink-mute tabular",children:(0,h.ME)(o)}),(0,d.jsx)("div",{className:`w-1.5 h-1.5 rounded-full mt-2 ${"claude"===(e=a.provider)?"bg-primary":"codex"===e?"bg-secondary":"bg-ink-mute"}`})]}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,d.jsx)("div",{className:"text-body-md text-ink truncate group-hover:text-primary transition-colors",children:k}),(0,d.jsx)(j,{role:b,spanDays:c}),m.map(a=>(0,d.jsx)(i.i,{category:a},a))]}),(0,d.jsxs)("div",{className:"text-body-sm text-ink-mute mt-0.5 flex items-center gap-2 flex-wrap",children:[(0,d.jsx)("span",{children:a.project_name}),(0,d.jsx)("span",{children:"\xb7"}),(0,d.jsx)("span",{className:"font-mono text-code-sm",children:a.model||"unknown"}),(0,d.jsx)("span",{children:"\xb7"}),(0,d.jsxs)("span",{className:"font-mono text-code-sm tabular",children:[(0,h.yj)(l)," tok"]}),(0,d.jsx)("span",{children:"\xb7"}),(0,d.jsx)("span",{className:"font-mono text-code-sm tabular",children:(0,h.c5)(a.duration_ms)})]})]})]})}},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},65169:(a,b,c)=>{let{createProxy:d}=c(39893);a.exports=d("/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/client/app-dir/link.js")},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},73566:a=>{"use strict";a.exports=require("worker_threads")},74075:a=>{"use strict";a.exports=require("zlib")},76760:a=>{"use strict";a.exports=require("node:path")},77598:a=>{"use strict";a.exports=require("node:crypto")},79551:a=>{"use strict";a.exports=require("url")},80481:a=>{"use strict";a.exports=require("node:readline")},81630:a=>{"use strict";a.exports=require("http")},83626:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,65169,23))},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{"use strict";a.exports=require("better-sqlite3")},92490:(a,b,c)=>{"use strict";c.d(b,{i:()=>f});var d=c(75338);let e={Planning:"bg-tertiary-soft text-ink-dim border-ink-mute/30",Debugging:"bg-error/15 text-error border-error/30",Refactor:"bg-primary/10 text-primary border-primary/30",Feature:"bg-secondary/10 text-secondary border-secondary/30",Styling:"bg-fuchsia-400/10 text-fuchsia-300 border-fuchsia-400/30","SEO/Content":"bg-amber-400/10 text-amber-300 border-amber-400/30",DevOps:"bg-orange-400/10 text-orange-300 border-orange-400/30",Data:"bg-sky-400/10 text-sky-300 border-sky-400/30",Payments:"bg-emerald-400/10 text-emerald-300 border-emerald-400/30",Docs:"bg-violet-400/10 text-violet-300 border-violet-400/30",Unknown:"bg-surface-3 text-ink-mute border-surface-4"};function f({category:a,size:b="sm"}){let c=e[a]||e.Unknown;return(0,d.jsx)("span",{className:`inline-block ${"xs"===b?"text-[9px] px-1 py-0":"text-[10px] px-1.5 py-0.5"} rounded font-mono uppercase tracking-wider border ${c} shrink-0`,children:a})}}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[873,609,564,970,944,954,27,694],()=>b(b.s=21194));module.exports=c})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":1,"files":["../../../../node_modules/better-sqlite3/build/Release/better_sqlite3.node","../../../../node_modules/better-sqlite3/lib/database.js","../../../../node_modules/better-sqlite3/lib/index.js","../../../../node_modules/better-sqlite3/lib/methods/aggregate.js","../../../../node_modules/better-sqlite3/lib/methods/backup.js","../../../../node_modules/better-sqlite3/lib/methods/function.js","../../../../node_modules/better-sqlite3/lib/methods/inspect.js","../../../../node_modules/better-sqlite3/lib/methods/pragma.js","../../../../node_modules/better-sqlite3/lib/methods/serialize.js","../../../../node_modules/better-sqlite3/lib/methods/table.js","../../../../node_modules/better-sqlite3/lib/methods/transaction.js","../../../../node_modules/better-sqlite3/lib/methods/wrappers.js","../../../../node_modules/better-sqlite3/lib/sqlite-error.js","../../../../node_modules/better-sqlite3/lib/util.js","../../../../node_modules/better-sqlite3/package.json","../../../../node_modules/bindings/bindings.js","../../../../node_modules/bindings/package.json","../../../../node_modules/file-uri-to-path/index.js","../../../../node_modules/file-uri-to-path/package.json","../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../node_modules/next/dist/shared/lib/router/utils/html-bots.js","../../../../node_modules/next/dist/shared/lib/router/utils/is-bot.js","../../../../node_modules/next/dist/shared/lib/segment.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../../../package.json","../../../../src/lib/pricing-data/litellm.json","../../../package.json","../../chunks/27.js","../../chunks/564.js","../../chunks/609.js","../../chunks/
|
|
1
|
+
{"version":1,"files":["../../../../node_modules/better-sqlite3/build/Release/better_sqlite3.node","../../../../node_modules/better-sqlite3/lib/database.js","../../../../node_modules/better-sqlite3/lib/index.js","../../../../node_modules/better-sqlite3/lib/methods/aggregate.js","../../../../node_modules/better-sqlite3/lib/methods/backup.js","../../../../node_modules/better-sqlite3/lib/methods/function.js","../../../../node_modules/better-sqlite3/lib/methods/inspect.js","../../../../node_modules/better-sqlite3/lib/methods/pragma.js","../../../../node_modules/better-sqlite3/lib/methods/serialize.js","../../../../node_modules/better-sqlite3/lib/methods/table.js","../../../../node_modules/better-sqlite3/lib/methods/transaction.js","../../../../node_modules/better-sqlite3/lib/methods/wrappers.js","../../../../node_modules/better-sqlite3/lib/sqlite-error.js","../../../../node_modules/better-sqlite3/lib/util.js","../../../../node_modules/better-sqlite3/package.json","../../../../node_modules/bindings/bindings.js","../../../../node_modules/bindings/package.json","../../../../node_modules/file-uri-to-path/index.js","../../../../node_modules/file-uri-to-path/package.json","../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../node_modules/next/dist/shared/lib/router/utils/html-bots.js","../../../../node_modules/next/dist/shared/lib/router/utils/is-bot.js","../../../../node_modules/next/dist/shared/lib/segment.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../../../package.json","../../../../src/lib/pricing-data/litellm.json","../../../package.json","../../chunks/27.js","../../chunks/564.js","../../chunks/609.js","../../chunks/693.js","../../chunks/694.js","../../chunks/873.js","../../chunks/944.js","../../chunks/954.js","../../chunks/970.js","../../webpack-runtime.js","page_client-reference-manifest.js"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/timeline/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"9766":{"*":{"id":"77526","name":"*","chunks":[],"async":false}},"11796":{"*":{"id":"67640","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"78922","name":"*","chunks":[],"async":false}},"15433":{"*":{"id":"76394","name":"*","chunks":[],"async":false}},"17834":{"*":{"id":"22412","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"68495","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"12263","name":"*","chunks":[],"async":false}},"29366":{"*":{"id":"70285","name":"*","chunks":[],"async":false}},"34077":{"*":{"id":"47621","name":"*","chunks":[],"async":false}},"38250":{"*":{"id":"21757","name":"*","chunks":[],"async":false}},"44782":{"*":{"id":"28380","name":"*","chunks":[],"async":false}},"52619":{"*":{"id":"3991","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"54160","name":"*","chunks":[],"async":false}},"61438":{"*":{"id":"3276","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"75170","name":"*","chunks":[],"async":false}},"68566":{"*":{"id":"91967","name":"*","chunks":[],"async":false}},"74050":{"*":{"id":"86216","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"82146","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"31603","name":"*","chunks":[],"async":false}},"82259":{"*":{"id":"65610","name":"*","chunks":[],"async":false}},"95828":{"*":{"id":"92437","name":"*","chunks":[],"async":false}},"95925":{"*":{"id":"94709","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"29234","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/globals.css":{"id":13673,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","177","static/chunks/app/layout-4527370a1e451501.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/Sidebar.tsx":{"id":82259,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","177","static/chunks/app/layout-4527370a1e451501.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/AnalyticsCharts.tsx":{"id":11796,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/RangePicker.tsx":{"id":95925,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-aa358006ddd29e91.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/client/app-dir/link.js":{"id":52619,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","404","static/chunks/app/timeline/page-d794cc35674274a4.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/node_modules/next/dist/esm/client/app-dir/link.js":{"id":52619,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","404","static/chunks/app/timeline/page-d794cc35674274a4.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/LlmSection.tsx":{"id":68566,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/ShareButton.tsx":{"id":17834,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-aa358006ddd29e91.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/SessionRow.tsx":{"id":38250,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/ResumePanel.tsx":{"id":44782,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/SessionActions.tsx":{"id":95828,"name":"*","chunks":[],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/ClassifyChip.tsx":{"id":15433,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-aa358006ddd29e91.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/FreshnessIndicator.tsx":{"id":34077,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-aa358006ddd29e91.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/ModelFilter.tsx":{"id":74050,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-aa358006ddd29e91.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/ProjectFilter.tsx":{"id":61438,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-aa358006ddd29e91.js"],"async":false},"/Users/mikekuehn/devProjects/agentgraphed/oss/src/components/UsageChartCard.tsx":{"id":29366,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-aa358006ddd29e91.js"],"async":false}},"entryCSSFiles":{"/Users/mikekuehn/devProjects/agentgraphed/oss/src/":[],"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/layout":[{"inlined":false,"path":"static/css/fff107f5d96e58c9.css"}],"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/page":[],"/Users/mikekuehn/devProjects/agentgraphed/oss/src/app/timeline/page":[]},"rscModuleMapping":{"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}},"11796":{"*":{"id":"32192","name":"*","chunks":[],"async":false}},"13673":{"*":{"id":"61135","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"15433":{"*":{"id":"70807","name":"*","chunks":[],"async":false}},"17834":{"*":{"id":"35530","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"36893","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"73041","name":"*","chunks":[],"async":false}},"29366":{"*":{"id":"47290","name":"*","chunks":[],"async":false}},"34077":{"*":{"id":"39115","name":"*","chunks":[],"async":false}},"38250":{"*":{"id":"14631","name":"*","chunks":[],"async":false}},"44782":{"*":{"id":"63186","name":"*","chunks":[],"async":false}},"52619":{"*":{"id":"65169","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"81170","name":"*","chunks":[],"async":false}},"61438":{"*":{"id":"15166","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"89748","name":"*","chunks":[],"async":false}},"68566":{"*":{"id":"15073","name":"*","chunks":[],"async":false}},"74050":{"*":{"id":"28342","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"51384","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"23597","name":"*","chunks":[],"async":false}},"82259":{"*":{"id":"87907","name":"*","chunks":[],"async":false}},"95828":{"*":{"id":"9998","name":"*","chunks":[],"async":false}},"95925":{"*":{"id":"51094","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"69576","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
|
|
1
|
+
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/timeline/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"9766":{"*":{"id":"77526","name":"*","chunks":[],"async":false}},"11796":{"*":{"id":"67640","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"78922","name":"*","chunks":[],"async":false}},"15433":{"*":{"id":"70365","name":"*","chunks":[],"async":false}},"17834":{"*":{"id":"22412","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"68495","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"12263","name":"*","chunks":[],"async":false}},"29366":{"*":{"id":"70285","name":"*","chunks":[],"async":false}},"34077":{"*":{"id":"47621","name":"*","chunks":[],"async":false}},"38250":{"*":{"id":"21757","name":"*","chunks":[],"async":false}},"44782":{"*":{"id":"28380","name":"*","chunks":[],"async":false}},"48642":{"*":{"id":"37098","name":"*","chunks":[],"async":false}},"52619":{"*":{"id":"3991","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"54160","name":"*","chunks":[],"async":false}},"61438":{"*":{"id":"3276","name":"*","chunks":[],"async":false}},"63637":{"*":{"id":"89106","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"75170","name":"*","chunks":[],"async":false}},"74050":{"*":{"id":"86216","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"82146","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"31603","name":"*","chunks":[],"async":false}},"82259":{"*":{"id":"65610","name":"*","chunks":[],"async":false}},"95925":{"*":{"id":"94709","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"29234","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/esm/client/components/client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/esm/client/components/client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/esm/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/src/app/globals.css":{"id":13673,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","177","static/chunks/app/layout-bbab14e77aaeeb67.js"],"async":false},"/home/runner/work/agentgraphed/agentgraphed/src/components/Sidebar.tsx":{"id":82259,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","177","static/chunks/app/layout-bbab14e77aaeeb67.js"],"async":false},"/home/runner/work/agentgraphed/agentgraphed/src/components/AnalyticsCharts.tsx":{"id":11796,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/src/components/RangePicker.tsx":{"id":95925,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-d5393f25e2553a0c.js"],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/client/app-dir/link.js":{"id":52619,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","404","static/chunks/app/timeline/page-dce207c2f75422be.js"],"async":false},"/home/runner/work/agentgraphed/agentgraphed/node_modules/next/dist/esm/client/app-dir/link.js":{"id":52619,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","404","static/chunks/app/timeline/page-dce207c2f75422be.js"],"async":false},"/home/runner/work/agentgraphed/agentgraphed/src/components/ShareButton.tsx":{"id":17834,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-d5393f25e2553a0c.js"],"async":false},"/home/runner/work/agentgraphed/agentgraphed/src/components/ResumePanel.tsx":{"id":44782,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/src/components/SessionActions.tsx":{"id":63637,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/src/components/ClassifyChip.tsx":{"id":15433,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-d5393f25e2553a0c.js"],"async":false},"/home/runner/work/agentgraphed/agentgraphed/src/components/FreshnessIndicator.tsx":{"id":34077,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-d5393f25e2553a0c.js"],"async":false},"/home/runner/work/agentgraphed/agentgraphed/src/components/ModelFilter.tsx":{"id":74050,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-d5393f25e2553a0c.js"],"async":false},"/home/runner/work/agentgraphed/agentgraphed/src/components/ProjectFilter.tsx":{"id":61438,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-d5393f25e2553a0c.js"],"async":false},"/home/runner/work/agentgraphed/agentgraphed/src/components/UsageChartCard.tsx":{"id":29366,"name":"*","chunks":["619","static/chunks/619-f072ac750404f9da.js","997","static/chunks/997-0bc10efbbb03a5ca.js","974","static/chunks/app/page-d5393f25e2553a0c.js"],"async":false},"/home/runner/work/agentgraphed/agentgraphed/src/components/SessionRow.tsx":{"id":38250,"name":"*","chunks":[],"async":false},"/home/runner/work/agentgraphed/agentgraphed/src/components/LlmSection.tsx":{"id":48642,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/home/runner/work/agentgraphed/agentgraphed/src/":[],"/home/runner/work/agentgraphed/agentgraphed/src/app/layout":[{"inlined":false,"path":"static/css/fff107f5d96e58c9.css"}],"/home/runner/work/agentgraphed/agentgraphed/src/app/page":[],"/home/runner/work/agentgraphed/agentgraphed/src/app/timeline/page":[]},"rscModuleMapping":{"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}},"11796":{"*":{"id":"32192","name":"*","chunks":[],"async":false}},"13673":{"*":{"id":"61135","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"15433":{"*":{"id":"70807","name":"*","chunks":[],"async":false}},"17834":{"*":{"id":"35530","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"36893","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"73041","name":"*","chunks":[],"async":false}},"29366":{"*":{"id":"47290","name":"*","chunks":[],"async":false}},"34077":{"*":{"id":"39115","name":"*","chunks":[],"async":false}},"38250":{"*":{"id":"14631","name":"*","chunks":[],"async":false}},"44782":{"*":{"id":"63186","name":"*","chunks":[],"async":false}},"48642":{"*":{"id":"15073","name":"*","chunks":[],"async":false}},"52619":{"*":{"id":"65169","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"81170","name":"*","chunks":[],"async":false}},"61438":{"*":{"id":"15166","name":"*","chunks":[],"async":false}},"63637":{"*":{"id":"9998","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"89748","name":"*","chunks":[],"async":false}},"74050":{"*":{"id":"28342","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"51384","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"23597","name":"*","chunks":[],"async":false}},"82259":{"*":{"id":"87907","name":"*","chunks":[],"async":false}},"95925":{"*":{"id":"51094","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"69576","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
"/_not-found/page": "app/_not-found/page.js",
|
|
3
3
|
"/api/ingest-local/route": "app/api/ingest-local/route.js",
|
|
4
4
|
"/api/quota-probe/route": "app/api/quota-probe/route.js",
|
|
5
|
-
"/api/share/dashboard/route": "app/api/share/dashboard/route.js",
|
|
6
|
-
"/api/share/session/[id]/route": "app/api/share/session/[id]/route.js",
|
|
7
5
|
"/api/share/project/[id]/route": "app/api/share/project/[id]/route.js",
|
|
6
|
+
"/api/share/session/[id]/route": "app/api/share/session/[id]/route.js",
|
|
7
|
+
"/api/share/dashboard/route": "app/api/share/dashboard/route.js",
|
|
8
8
|
"/analytics/page": "app/analytics/page.js",
|
|
9
|
-
"/projects/page": "app/projects/page.js",
|
|
10
|
-
"/settings/page": "app/settings/page.js",
|
|
11
9
|
"/projects/[id]/page": "app/projects/[id]/page.js",
|
|
10
|
+
"/sessions/[id]/page": "app/sessions/[id]/page.js",
|
|
11
|
+
"/projects/page": "app/projects/page.js",
|
|
12
|
+
"/page": "app/page.js",
|
|
12
13
|
"/sessions/page": "app/sessions/page.js",
|
|
13
14
|
"/timeline/page": "app/timeline/page.js",
|
|
14
|
-
"/
|
|
15
|
-
"/page": "app/page.js"
|
|
15
|
+
"/settings/page": "app/settings/page.js"
|
|
16
16
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";exports.id=27,exports.ids=[27],exports.modules={40913:(a,b,c)=>{c.d(b,{P:()=>f});var d=c(22446),e=c(76846);function f(){let a=(0,d.x)(),b=a.prepare(`SELECT id, model, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens
|
|
2
|
-
FROM sessions`).all(),c=a.prepare("UPDATE sessions SET est_cost_usd = ? WHERE id = ?");return a.transaction(a=>{for(let b of a){let a=(0,e.a3)({model:b.model,inputTokens:b.input_tokens,outputTokens:b.output_tokens,cacheReadTokens:b.cache_read_tokens,cacheWriteTokens:b.cache_write_tokens});c.run(a,b.id)}})(b),{updated:b.length}}a=c.hmd(a),c.c[c.s]===a&&console.log(JSON.stringify(f()))},90027:(a,b,c)=>{c.d(b,{U:()=>w});var d=c(73024),e=c(76760),f=c(48161),g=c(80481),h=c(77598),i=c(22446),j=c(31421);let k=new Map;function l(a){var b;if(k.has(a))return k.get(a);let c=a,f=null;if((0,d.existsSync)(a)){let b=function(a){if(!(0,d.existsSync)(a))return null;try{let b=(0,j.execSync)("git rev-parse --show-toplevel",{cwd:a,stdio:["ignore","pipe","ignore"],encoding:"utf8"}).trim(),c=null;try{c=(0,j.execSync)("git remote get-url origin",{cwd:b,stdio:["ignore","pipe","ignore"],encoding:"utf8"}).trim()}catch{}return{root:b,remote:c}}catch{return null}}(a);b&&(c=b.root,f=b.remote)}let g={id:(b=c,(0,h.createHash)("sha1").update(b).digest("hex").slice(0,16)),name:f?function(a){let b=a.match(/[\/:]([^\/:]+?)(?:\.git)?$/);return b?b[1]:a}(f):(0,e.basename)(c)||c,rootPath:c,gitRemote:f};return k.set(a,g),g}function m(a,b){let c=(0,i.x)();c.prepare("SELECT first_seen FROM projects WHERE id = ?").get(a.id)?c.prepare("UPDATE projects SET last_active = MAX(last_active, ?), name = ?, root_path = ?, git_remote = ? WHERE id = ?").run(b,a.name,a.rootPath,a.gitRemote,a.id):c.prepare("INSERT INTO projects (id, name, root_path, git_remote, first_seen, last_active) VALUES (?, ?, ?, ?, ?, ?)").run(a.id,a.name,a.rootPath,a.gitRemote,b,b)}d.statSync;var n=c(76846),o=c(10944);function p(a){return"string"==typeof a?a:Array.isArray(a)?a.map(a=>{if("string"==typeof a)return a;if(a&&"object"==typeof a){if("text"===a.type&&"string"==typeof a.text)return a.text;if("tool_use"===a.type)return"";"tool_result"===a.type&&a.content}return""}).join("\n").trim():""}function q(a){let b=a.match(/limit reached\|(\d{9,11})/);if(!b)return null;let c=parseInt(b[1],10);return!Number.isFinite(c)||c<16e8?null:c}async function r(a={}){let b=(0,o.PL)("claude_log_dir")||process.env.AGENTGRAPHED_CLAUDE_DIR||process.env.AGENTGRAPH_CLAUDE_DIR||(0,e.join)((0,f.homedir)(),".claude","projects"),c={filesScanned:0,filesIngested:0,sessions:0,messages:0},g=[];if((0,d.existsSync)(b))for(let a of(0,d.readdirSync)(b,{withFileTypes:!0}))a.isDirectory()&&function a(b,c){let f;try{f=(0,d.readdirSync)(b,{withFileTypes:!0})}catch{return}for(let d of f){let f=(0,e.join)(b,d.name);d.isDirectory()?a(f,c):d.isFile()&&d.name.endsWith(".jsonl")&&c.push(f)}}((0,e.join)(b,a.name),g);c.filesScanned=g.length;let h=(0,i.x)(),j=h.prepare("SELECT mtime, size FROM ingest_state WHERE source_path = ?"),k=h.prepare("INSERT OR REPLACE INTO ingest_state (source_path, mtime, size, session_id, ingested_at) VALUES (?, ?, ?, ?, ?)");for(let b of g){let e=(0,d.statSync)(b),f=j.get(b);if(!f||f.mtime!==Math.floor(e.mtimeMs)||f.size!==e.size)try{let d=await s(b);d&&(k.run(b,Math.floor(e.mtimeMs),e.size,d.sessionId,Date.now()),c.filesIngested+=1,c.sessions+=1,c.messages+=d.messageCount,a.onProgress?.(`Claude: ${c.filesIngested}/${g.length}`))}catch(c){a.onProgress?.(`Claude: skipped ${b} (${c.message})`)}}return c}async function s(a){let b=(0,i.x)(),c=(0,g.createInterface)({input:(0,d.createReadStream)(a,"utf8"),crlfDelay:1/0}),e=null,f=null,j=null,k=null,o=null,r=null,s=0,t=0,u=0,v=0,w=0,x=0,y=null,z=[],A=[];for await(let a of c){let b;if(!a.trim())continue;try{b=JSON.parse(a)}catch{continue}b.sessionId&&!e&&(e=b.sessionId),b.cwd&&!f&&(f=b.cwd),b.gitBranch&&!j&&(j=b.gitBranch);let c=b.timestamp?Date.parse(b.timestamp):NaN;if(!Number.isNaN(c)&&((null===k||c<k)&&(k=c),(null===o||c>o)&&(o=c)),"user"===b.type||"system"===b.type){let a=function a(b){if("string"==typeof b)return q(b);if(Array.isArray(b)){for(let c of b)if("string"==typeof c){let a=q(c);if(a)return a}else if(c&&"object"==typeof c){if("string"==typeof c.text){let a=q(c.text);if(a)return a}if("tool_result"===c.type){let b=a(c.content);if(b)return b}}}return null}(b.message?.content);if(a){let d=Number.isNaN(c)?Date.now():c;z.push({observed_at:d,reset_at:1e3*a,kind:b.type,raw:p(b.message?.content).slice(0,500)})}}if("user"===b.type&&b.message?.role==="user"){let a=p(b.message.content);!a||a.startsWith("<environment_context>")||a.startsWith("<command-")||(y||(y=a.slice(0,500)),t+=1,A.push({id:b.uuid||(0,h.randomUUID)(),role:"user",content:a,timestamp:Number.isNaN(c)?Date.now():c,model:null}),s+=1)}else if("assistant"===b.type&&b.message){b.message.model&&(r=b.message.model);let a=b.message.usage
|
|
2
|
+
FROM sessions`).all(),c=a.prepare("UPDATE sessions SET est_cost_usd = ? WHERE id = ?");return a.transaction(a=>{for(let b of a){let a=(0,e.a3)({model:b.model,inputTokens:b.input_tokens,outputTokens:b.output_tokens,cacheReadTokens:b.cache_read_tokens,cacheWriteTokens:b.cache_write_tokens});c.run(a,b.id)}})(b),{updated:b.length}}a=c.hmd(a),c.c[c.s]===a&&console.log(JSON.stringify(f()))},90027:(a,b,c)=>{c.d(b,{U:()=>w});var d=c(73024),e=c(76760),f=c(48161),g=c(80481),h=c(77598),i=c(22446),j=c(31421);let k=new Map;function l(a){var b;if(k.has(a))return k.get(a);let c=a,f=null;if((0,d.existsSync)(a)){let b=function(a){if(!(0,d.existsSync)(a))return null;try{let b=(0,j.execSync)("git rev-parse --show-toplevel",{cwd:a,stdio:["ignore","pipe","ignore"],encoding:"utf8"}).trim(),c=null;try{c=(0,j.execSync)("git remote get-url origin",{cwd:b,stdio:["ignore","pipe","ignore"],encoding:"utf8"}).trim()}catch{}return{root:b,remote:c}}catch{return null}}(a);b&&(c=b.root,f=b.remote)}let g={id:(b=c,(0,h.createHash)("sha1").update(b).digest("hex").slice(0,16)),name:f?function(a){let b=a.match(/[\/:]([^\/:]+?)(?:\.git)?$/);return b?b[1]:a}(f):(0,e.basename)(c)||c,rootPath:c,gitRemote:f};return k.set(a,g),g}function m(a,b){let c=(0,i.x)();c.prepare("SELECT first_seen FROM projects WHERE id = ?").get(a.id)?c.prepare("UPDATE projects SET last_active = MAX(last_active, ?), name = ?, root_path = ?, git_remote = ? WHERE id = ?").run(b,a.name,a.rootPath,a.gitRemote,a.id):c.prepare("INSERT INTO projects (id, name, root_path, git_remote, first_seen, last_active) VALUES (?, ?, ?, ?, ?, ?)").run(a.id,a.name,a.rootPath,a.gitRemote,b,b)}d.statSync;var n=c(76846),o=c(10944);function p(a){return"string"==typeof a?a:Array.isArray(a)?a.map(a=>{if("string"==typeof a)return a;if(a&&"object"==typeof a){if("text"===a.type&&"string"==typeof a.text)return a.text;if("tool_use"===a.type)return"";"tool_result"===a.type&&a.content}return""}).join("\n").trim():""}function q(a){let b=a.match(/limit reached\|(\d{9,11})/);if(!b)return null;let c=parseInt(b[1],10);return!Number.isFinite(c)||c<16e8?null:c}async function r(a={}){let b=(0,o.PL)("claude_log_dir")||process.env.AGENTGRAPHED_CLAUDE_DIR||process.env.AGENTGRAPH_CLAUDE_DIR||(0,e.join)((0,f.homedir)(),".claude","projects"),c={filesScanned:0,filesIngested:0,sessions:0,messages:0},g=[];if((0,d.existsSync)(b))for(let a of(0,d.readdirSync)(b,{withFileTypes:!0}))a.isDirectory()&&function a(b,c){let f;try{f=(0,d.readdirSync)(b,{withFileTypes:!0})}catch{return}for(let d of f){let f=(0,e.join)(b,d.name);d.isDirectory()?a(f,c):d.isFile()&&d.name.endsWith(".jsonl")&&c.push(f)}}((0,e.join)(b,a.name),g);c.filesScanned=g.length;let h=(0,i.x)(),j=h.prepare("SELECT mtime, size FROM ingest_state WHERE source_path = ?"),k=h.prepare("INSERT OR REPLACE INTO ingest_state (source_path, mtime, size, session_id, ingested_at) VALUES (?, ?, ?, ?, ?)");for(let b of g){let e=(0,d.statSync)(b),f=j.get(b);if(!f||f.mtime!==Math.floor(e.mtimeMs)||f.size!==e.size)try{let d=await s(b);d&&(k.run(b,Math.floor(e.mtimeMs),e.size,d.sessionId,Date.now()),c.filesIngested+=1,c.sessions+=1,c.messages+=d.messageCount,a.onProgress?.(`Claude: ${c.filesIngested}/${g.length}`))}catch(c){a.onProgress?.(`Claude: skipped ${b} (${c.message})`)}}return c}async function s(a){let b=(0,i.x)(),c=(0,g.createInterface)({input:(0,d.createReadStream)(a,"utf8"),crlfDelay:1/0}),e=null,f=null,j=null,k=null,o=null,r=null,s=0,t=0,u=0,v=0,w=0,x=0,y=null,z=[],A=[];for await(let a of c){let b;if(!a.trim())continue;try{b=JSON.parse(a)}catch{continue}b.sessionId&&!e&&(e=b.sessionId),b.cwd&&!f&&(f=b.cwd),b.gitBranch&&!j&&(j=b.gitBranch);let c=b.timestamp?Date.parse(b.timestamp):NaN;if(!Number.isNaN(c)&&((null===k||c<k)&&(k=c),(null===o||c>o)&&(o=c)),"user"===b.type||"system"===b.type){let a=function a(b){if("string"==typeof b)return q(b);if(Array.isArray(b)){for(let c of b)if("string"==typeof c){let a=q(c);if(a)return a}else if(c&&"object"==typeof c){if("string"==typeof c.text){let a=q(c.text);if(a)return a}if("tool_result"===c.type){let b=a(c.content);if(b)return b}}}return null}(b.message?.content);if(a){let d=Number.isNaN(c)?Date.now():c;z.push({observed_at:d,reset_at:1e3*a,kind:b.type,raw:p(b.message?.content).slice(0,500)})}}if("user"===b.type&&b.message?.role==="user"){let a=p(b.message.content);!a||a.startsWith("<environment_context>")||a.startsWith("<command-")||(y||(y=a.slice(0,500)),t+=1,A.push({id:b.uuid||(0,h.randomUUID)(),role:"user",content:a,timestamp:Number.isNaN(c)?Date.now():c,model:null,input_tokens:0,output_tokens:0,cache_read_tokens:0,cache_write_tokens:0,est_cost_usd:0}),s+=1)}else if("assistant"===b.type&&b.message){b.message.model&&(r=b.message.model);let a=b.message.usage,d=a?.input_tokens||0,e=a?.output_tokens||0,f=a?.cache_read_input_tokens||0,g=a?.cache_creation_input_tokens||0;a&&(u+=d,v+=e,w+=f,x+=g);let i=p(b.message.content);if(i){let a=(0,n.a3)({model:b.message.model||r,inputTokens:d,outputTokens:e,cacheReadTokens:f,cacheWriteTokens:g});A.push({id:b.uuid||(0,h.randomUUID)(),role:"assistant",content:i.slice(0,4e3),timestamp:Number.isNaN(c)?Date.now():c,model:b.message.model||null,input_tokens:d,output_tokens:e,cache_read_tokens:f,cache_write_tokens:g,est_cost_usd:a}),s+=1}}}if(!e||null===k||null===o)return null;f||(f=process.cwd());let B=l(f);m(B,o);let C=(0,n.a3)({model:r,inputTokens:u,outputTokens:v,cacheReadTokens:w,cacheWriteTokens:x});b.prepare(`
|
|
3
3
|
INSERT OR REPLACE INTO sessions (
|
|
4
4
|
id, provider, project_id, cwd, started_at, ended_at, duration_ms, model,
|
|
5
5
|
message_count, user_message_count, input_tokens, output_tokens,
|
|
@@ -13,7 +13,16 @@
|
|
|
13
13
|
(SELECT category FROM sessions WHERE id = ?),
|
|
14
14
|
(SELECT keywords FROM sessions WHERE id = ?),
|
|
15
15
|
?, ?)
|
|
16
|
-
`).run(e,B.id,f,k,o,o-k,r,s,t,u,v,w,x,C,y,e,e,e,e,e,j,a)
|
|
16
|
+
`).run(e,B.id,f,k,o,o-k,r,s,t,u,v,w,x,C,y,e,e,e,e,e,j,a);let D=b.prepare(`INSERT INTO messages (
|
|
17
|
+
id, session_id, role, content, timestamp, model,
|
|
18
|
+
input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, est_cost_usd
|
|
19
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
20
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
21
|
+
input_tokens = excluded.input_tokens,
|
|
22
|
+
output_tokens = excluded.output_tokens,
|
|
23
|
+
cache_read_tokens = excluded.cache_read_tokens,
|
|
24
|
+
cache_write_tokens = excluded.cache_write_tokens,
|
|
25
|
+
est_cost_usd = excluded.est_cost_usd`);if(b.transaction(a=>{for(let b of a)D.run(b.id,e,b.role,b.content,b.timestamp,b.model,b.input_tokens,b.output_tokens,b.cache_read_tokens,b.cache_write_tokens,b.est_cost_usd)})(A),b.prepare("DELETE FROM claude_limit_events WHERE session_id = ?").run(e),z.length>0){let a=b.prepare("INSERT INTO claude_limit_events (session_id, observed_at, reset_at, kind, raw) VALUES (?, ?, ?, ?, ?)");b.transaction(b=>{for(let c of b)a.run(e,c.observed_at,c.reset_at,c.kind,c.raw)})(z)}return{sessionId:e,messageCount:s}}async function t(a={}){let b=(0,o.PL)("codex_log_dir")||process.env.AGENTGRAPHED_CODEX_DIR||process.env.AGENTGRAPH_CODEX_DIR||(0,e.join)((0,f.homedir)(),".codex","sessions"),c={filesScanned:0,filesIngested:0,sessions:0,messages:0},g=function(a){if(!(0,d.existsSync)(a))return[];let b=[],c=[a];for(;c.length;){let a,f=c.pop();try{a=(0,d.readdirSync)(f,{withFileTypes:!0})}catch{continue}for(let d of a){let a=(0,e.join)(f,d.name);d.isDirectory()?c.push(a):d.isFile()&&d.name.endsWith(".jsonl")&&b.push(a)}}return b}(b);c.filesScanned=g.length;let h=(0,i.x)(),j=h.prepare("SELECT mtime, size FROM ingest_state WHERE source_path = ?"),k=h.prepare("INSERT OR REPLACE INTO ingest_state (source_path, mtime, size, session_id, ingested_at) VALUES (?, ?, ?, ?, ?)");for(let b of g){let e=(0,d.statSync)(b),f=j.get(b);if(!f||f.mtime!==Math.floor(e.mtimeMs)||f.size!==e.size)try{let d=await u(b);d&&(k.run(b,Math.floor(e.mtimeMs),e.size,d.sessionId,Date.now()),c.filesIngested+=1,c.sessions+=1,c.messages+=d.messageCount,a.onProgress?.(`Codex: ${c.filesIngested}/${g.length}`))}catch(c){a.onProgress?.(`Codex: skipped ${b} (${c.message})`)}}return c}async function u(a){let b=(0,i.x)(),c=(0,g.createInterface)({input:(0,d.createReadStream)(a,"utf8"),crlfDelay:1/0}),e=null,f=null,j=null,k=null,o=null,p=null,q=0,r=0,s=0,t=0,u=0,v=null,w=null,x=null,y=[],z=0,A=0,B=0;for await(let a of c){let b;if(!a.trim())continue;try{b=JSON.parse(a)}catch{continue}let c=b.timestamp?Date.parse(b.timestamp):NaN;if(!Number.isNaN(c)&&((null===o||c<o)&&(o=c),(null===p||c>p)&&(p=c)),"session_meta"===b.type&&b.payload)e=b.payload.id||e,f=b.payload.cwd||f,j=b.payload.git?.branch||j;else if("turn_context"===b.type&&b.payload?.model)k=b.payload.model,b.payload.cwd&&!f&&(f=b.payload.cwd);else if("response_item"===b.type&&b.payload?.type==="message"){var C;let a=b.payload.role,d="string"==typeof(C=b.payload.content)?C:Array.isArray(C)?C.map(a=>"string"==typeof a?a:a&&"object"==typeof a&&("input_text"===a.type||"output_text"===a.type||"text"===a.type)&&a.text?a.text:"").join("\n").trim():"";if(!d||"developer"===a||"system"===a)continue;if("user"===a){if(d.startsWith("<environment_context>")||d.startsWith("<user_instructions>"))continue;v||(v=d.slice(0,500)),r+=1,y.push({id:(0,h.randomUUID)(),role:"user",content:d,timestamp:Number.isNaN(c)?Date.now():c,model:null,input_tokens:0,output_tokens:0,cache_read_tokens:0,cache_write_tokens:0,est_cost_usd:0}),q+=1}else"assistant"===a&&(y.push({id:(0,h.randomUUID)(),role:"assistant",content:d.slice(0,4e3),timestamp:Number.isNaN(c)?Date.now():c,model:k,input_tokens:0,output_tokens:0,cache_read_tokens:0,cache_write_tokens:0,est_cost_usd:0}),q+=1)}else if("event_msg"===b.type&&b.payload?.type==="token_count"){let a=b.payload.info;if(a?.total_token_usage){let b=a.total_token_usage;s=b.input_tokens??s,t=(b.output_tokens??0)+(b.reasoning_output_tokens??0),u=b.cached_input_tokens??u}else if(a?.last_token_usage){let b=a.last_token_usage;s+=b.input_tokens??0,t+=(b.output_tokens??0)+(b.reasoning_output_tokens??0),u+=b.cached_input_tokens??0}let d=s-z,e=t-A,f=u-B;if(d>0||e>0||f>0)for(let a=y.length-1;a>=0;a--){let b=y[a];if("assistant"===b.role&&!b.input_tokens&&!b.output_tokens&&!b.cache_read_tokens){b.input_tokens=d,b.output_tokens=e,b.cache_read_tokens=f,b.est_cost_usd=(0,n.a3)({model:b.model||k,inputTokens:d,outputTokens:e,cacheReadTokens:f}),z=s,A=t,B=u;break}}let g=b.payload.rate_limits;g&&!Number.isNaN(c)&&(null===w||c>w)&&(w=c,x={plan_type:g.plan_type??null,primary_pct:g.primary?.used_percent??null,primary_window_minutes:g.primary?.window_minutes??null,primary_resets_at:g.primary?.resets_at??null,secondary_pct:g.secondary?.used_percent??null,secondary_window_minutes:g.secondary?.window_minutes??null,secondary_resets_at:g.secondary?.resets_at??null})}}if(!e||null===o||null===p)return null;f||(f=process.cwd());let D=l(f);m(D,p);let E=(0,n.a3)({model:k,inputTokens:s,outputTokens:t,cacheReadTokens:u});b.prepare(`
|
|
17
26
|
INSERT OR REPLACE INTO sessions (
|
|
18
27
|
id, provider, project_id, cwd, started_at, ended_at, duration_ms, model,
|
|
19
28
|
message_count, user_message_count, input_tokens, output_tokens,
|
|
@@ -27,7 +36,10 @@
|
|
|
27
36
|
(SELECT category FROM sessions WHERE id = ?),
|
|
28
37
|
(SELECT keywords FROM sessions WHERE id = ?),
|
|
29
38
|
?, ?)
|
|
30
|
-
`).run(e,
|
|
39
|
+
`).run(e,D.id,f,o,p,p-o,k,q,r,s,t,u,E,v,e,e,e,e,e,j,a),b.prepare("DELETE FROM messages WHERE session_id = ?").run(e);let F=b.prepare(`INSERT INTO messages (
|
|
40
|
+
id, session_id, role, content, timestamp, model,
|
|
41
|
+
input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, est_cost_usd
|
|
42
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);if(b.transaction(a=>{for(let b of a)F.run(b.id,e,b.role,b.content,b.timestamp,b.model,b.input_tokens,b.output_tokens,b.cache_read_tokens,b.cache_write_tokens,b.est_cost_usd)})(y),x&&null!==w){let a=b.prepare("SELECT observed_at FROM quota_snapshots WHERE provider = ?").get("codex");(!a||w>a.observed_at)&&b.prepare(`INSERT OR REPLACE INTO quota_snapshots (
|
|
31
43
|
provider, observed_at, plan_type,
|
|
32
44
|
primary_pct, primary_window_minutes, primary_resets_at,
|
|
33
45
|
secondary_pct, secondary_window_minutes, secondary_resets_at
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";exports.id=450,exports.ids=[450],exports.modules={53223:(a,b,c)=>{c.d(b,{x:()=>y});var d={};c.r(d),c.d(d,{daySummaries:()=>u,ingestState:()=>s,messages:()=>r,projectSummaries:()=>v,projects:()=>p,sessions:()=>q,settings:()=>t});var e=c(87550),f=c.n(e),g=c(35674),h=c(48161),i=c(76760),j=c(73024),k=c(37444),l=c(72873),m=c(51166),n=c(92780),o=c(41444);let p=(0,k.D)("projects",{id:(0,l.Qq)("id").primaryKey(),name:(0,l.Qq)("name").notNull(),rootPath:(0,l.Qq)("root_path").notNull(),gitRemote:(0,l.Qq)("git_remote"),firstSeen:(0,m.nd)("first_seen").notNull(),lastActive:(0,m.nd)("last_active").notNull()},a=>({rootIdx:(0,n.GL)("projects_root_idx").on(a.rootPath)})),q=(0,k.D)("sessions",{id:(0,l.Qq)("id").primaryKey(),provider:(0,l.Qq)("provider").notNull(),projectId:(0,l.Qq)("project_id").notNull(),cwd:(0,l.Qq)("cwd").notNull(),startedAt:(0,m.nd)("started_at").notNull(),endedAt:(0,m.nd)("ended_at").notNull(),durationMs:(0,m.nd)("duration_ms").notNull(),model:(0,l.Qq)("model"),messageCount:(0,m.nd)("message_count").notNull().default(0),userMessageCount:(0,m.nd)("user_message_count").notNull().default(0),inputTokens:(0,m.nd)("input_tokens").notNull().default(0),outputTokens:(0,m.nd)("output_tokens").notNull().default(0),cacheReadTokens:(0,m.nd)("cache_read_tokens").notNull().default(0),cacheWriteTokens:(0,m.nd)("cache_write_tokens").notNull().default(0),estCostUsd:(0,o.x)("est_cost_usd").notNull().default(0),firstPrompt:(0,l.Qq)("first_prompt"),summary:(0,l.Qq)("summary"),summaryGenerated:(0,m.nd)("summary_generated").notNull().default(0),heuristicTitle:(0,l.Qq)("heuristic_title"),category:(0,l.Qq)("category"),keywords:(0,l.Qq)("keywords"),gitBranch:(0,l.Qq)("git_branch"),sourcePath:(0,l.Qq)("source_path").notNull()},a=>({projectIdx:(0,n.Pe)("sessions_project_idx").on(a.projectId),startedIdx:(0,n.Pe)("sessions_started_idx").on(a.startedAt),providerIdx:(0,n.Pe)("sessions_provider_idx").on(a.provider),modelIdx:(0,n.Pe)("sessions_model_idx").on(a.model)})),r=(0,k.D)("messages",{id:(0,l.Qq)("id").primaryKey(),sessionId:(0,l.Qq)("session_id").notNull(),role:(0,l.Qq)("role").notNull(),content:(0,l.Qq)("content").notNull(),timestamp:(0,m.nd)("timestamp").notNull(),model:(0,l.Qq)("model")},a=>({sessionIdx:(0,n.Pe)("messages_session_idx").on(a.sessionId),timestampIdx:(0,n.Pe)("messages_timestamp_idx").on(a.timestamp)})),s=(0,k.D)("ingest_state",{sourcePath:(0,l.Qq)("source_path").primaryKey(),mtime:(0,m.nd)("mtime").notNull(),size:(0,m.nd)("size").notNull(),sessionId:(0,l.Qq)("session_id").notNull(),ingestedAt:(0,m.nd)("ingested_at").notNull()}),t=(0,k.D)("settings",{key:(0,l.Qq)("key").primaryKey(),value:(0,l.Qq)("value").notNull()}),u=(0,k.D)("day_summaries",{day:(0,l.Qq)("day").primaryKey(),summary:(0,l.Qq)("summary").notNull(),generatedAt:(0,m.nd)("generated_at").notNull()}),v=(0,k.D)("project_summaries",{projectId:(0,l.Qq)("project_id").primaryKey(),summary:(0,l.Qq)("summary").notNull(),generatedAt:(0,m.nd)("generated_at").notNull()}),w=null,x=null;function y(){return!x&&(w||((x=new(f())((0,i.join)(function(){let a=process.env.AGENTGRAPHED_DATA_DIR||(0,i.join)((0,h.homedir)(),".agentgraphed");return(0,j.existsSync)(a)||(0,j.mkdirSync)(a,{recursive:!0}),a}(),"agentgraphed.sqlite"))).pragma("journal_mode = WAL"),x.pragma("synchronous = NORMAL"),function(a){a.exec(`
|
|
2
|
+
CREATE TABLE IF NOT EXISTS projects (
|
|
3
|
+
id TEXT PRIMARY KEY,
|
|
4
|
+
name TEXT NOT NULL,
|
|
5
|
+
root_path TEXT NOT NULL,
|
|
6
|
+
git_remote TEXT,
|
|
7
|
+
first_seen INTEGER NOT NULL,
|
|
8
|
+
last_active INTEGER NOT NULL
|
|
9
|
+
);
|
|
10
|
+
CREATE UNIQUE INDEX IF NOT EXISTS projects_root_idx ON projects(root_path);
|
|
11
|
+
|
|
12
|
+
CREATE TABLE IF NOT EXISTS sessions (
|
|
13
|
+
id TEXT PRIMARY KEY,
|
|
14
|
+
provider TEXT NOT NULL,
|
|
15
|
+
project_id TEXT NOT NULL,
|
|
16
|
+
cwd TEXT NOT NULL,
|
|
17
|
+
started_at INTEGER NOT NULL,
|
|
18
|
+
ended_at INTEGER NOT NULL,
|
|
19
|
+
duration_ms INTEGER NOT NULL,
|
|
20
|
+
model TEXT,
|
|
21
|
+
message_count INTEGER NOT NULL DEFAULT 0,
|
|
22
|
+
user_message_count INTEGER NOT NULL DEFAULT 0,
|
|
23
|
+
input_tokens INTEGER NOT NULL DEFAULT 0,
|
|
24
|
+
output_tokens INTEGER NOT NULL DEFAULT 0,
|
|
25
|
+
cache_read_tokens INTEGER NOT NULL DEFAULT 0,
|
|
26
|
+
cache_write_tokens INTEGER NOT NULL DEFAULT 0,
|
|
27
|
+
est_cost_usd REAL NOT NULL DEFAULT 0,
|
|
28
|
+
first_prompt TEXT,
|
|
29
|
+
summary TEXT,
|
|
30
|
+
summary_generated INTEGER NOT NULL DEFAULT 0,
|
|
31
|
+
heuristic_title TEXT,
|
|
32
|
+
category TEXT,
|
|
33
|
+
keywords TEXT,
|
|
34
|
+
git_branch TEXT,
|
|
35
|
+
source_path TEXT NOT NULL
|
|
36
|
+
);
|
|
37
|
+
CREATE INDEX IF NOT EXISTS sessions_project_idx ON sessions(project_id);
|
|
38
|
+
CREATE INDEX IF NOT EXISTS sessions_started_idx ON sessions(started_at);
|
|
39
|
+
CREATE INDEX IF NOT EXISTS sessions_provider_idx ON sessions(provider);
|
|
40
|
+
CREATE INDEX IF NOT EXISTS sessions_model_idx ON sessions(model);
|
|
41
|
+
|
|
42
|
+
CREATE TABLE IF NOT EXISTS messages (
|
|
43
|
+
id TEXT PRIMARY KEY,
|
|
44
|
+
session_id TEXT NOT NULL,
|
|
45
|
+
role TEXT NOT NULL,
|
|
46
|
+
content TEXT NOT NULL,
|
|
47
|
+
timestamp INTEGER NOT NULL,
|
|
48
|
+
model TEXT
|
|
49
|
+
);
|
|
50
|
+
CREATE INDEX IF NOT EXISTS messages_session_idx ON messages(session_id);
|
|
51
|
+
CREATE INDEX IF NOT EXISTS messages_timestamp_idx ON messages(timestamp);
|
|
52
|
+
|
|
53
|
+
CREATE TABLE IF NOT EXISTS ingest_state (
|
|
54
|
+
source_path TEXT PRIMARY KEY,
|
|
55
|
+
mtime INTEGER NOT NULL,
|
|
56
|
+
size INTEGER NOT NULL,
|
|
57
|
+
session_id TEXT NOT NULL,
|
|
58
|
+
ingested_at INTEGER NOT NULL
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
CREATE TABLE IF NOT EXISTS settings (
|
|
62
|
+
key TEXT PRIMARY KEY,
|
|
63
|
+
value TEXT NOT NULL
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
CREATE TABLE IF NOT EXISTS day_summaries (
|
|
67
|
+
day TEXT PRIMARY KEY,
|
|
68
|
+
summary TEXT NOT NULL,
|
|
69
|
+
generated_at INTEGER NOT NULL
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
CREATE TABLE IF NOT EXISTS project_summaries (
|
|
73
|
+
project_id TEXT PRIMARY KEY,
|
|
74
|
+
summary TEXT NOT NULL,
|
|
75
|
+
generated_at INTEGER NOT NULL
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
CREATE TABLE IF NOT EXISTS session_contexts (
|
|
79
|
+
session_id TEXT PRIMARY KEY,
|
|
80
|
+
context TEXT NOT NULL,
|
|
81
|
+
generated_at INTEGER NOT NULL,
|
|
82
|
+
model TEXT
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
CREATE TABLE IF NOT EXISTS quota_snapshots (
|
|
86
|
+
provider TEXT PRIMARY KEY,
|
|
87
|
+
observed_at INTEGER NOT NULL,
|
|
88
|
+
plan_type TEXT,
|
|
89
|
+
primary_pct REAL,
|
|
90
|
+
primary_window_minutes INTEGER,
|
|
91
|
+
primary_resets_at INTEGER,
|
|
92
|
+
secondary_pct REAL,
|
|
93
|
+
secondary_window_minutes INTEGER,
|
|
94
|
+
secondary_resets_at INTEGER
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
CREATE TABLE IF NOT EXISTS claude_limit_events (
|
|
98
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
99
|
+
session_id TEXT NOT NULL,
|
|
100
|
+
observed_at INTEGER NOT NULL,
|
|
101
|
+
reset_at INTEGER,
|
|
102
|
+
kind TEXT NOT NULL,
|
|
103
|
+
raw TEXT
|
|
104
|
+
);
|
|
105
|
+
CREATE INDEX IF NOT EXISTS claude_limit_events_observed_idx ON claude_limit_events(observed_at);
|
|
106
|
+
CREATE INDEX IF NOT EXISTS claude_limit_events_session_idx ON claude_limit_events(session_id);
|
|
107
|
+
`);let b=new Set(a.prepare("PRAGMA table_info(sessions)").all().map(a=>a.name));b.has("heuristic_title")||a.exec("ALTER TABLE sessions ADD COLUMN heuristic_title TEXT"),b.has("category")||a.exec("ALTER TABLE sessions ADD COLUMN category TEXT"),b.has("keywords")||a.exec("ALTER TABLE sessions ADD COLUMN keywords TEXT"),a.exec("CREATE INDEX IF NOT EXISTS sessions_category_idx ON sessions(category)"),b.has("categories")||(a.exec("ALTER TABLE sessions ADD COLUMN categories TEXT"),a.exec(`UPDATE sessions
|
|
108
|
+
SET categories = json_array(category)
|
|
109
|
+
WHERE category IS NOT NULL AND categories IS NULL`));let c=new Set(a.prepare("PRAGMA table_info(messages)").all().map(a=>a.name));c.has("input_tokens")||a.exec("ALTER TABLE messages ADD COLUMN input_tokens INTEGER NOT NULL DEFAULT 0"),c.has("output_tokens")||a.exec("ALTER TABLE messages ADD COLUMN output_tokens INTEGER NOT NULL DEFAULT 0"),c.has("cache_read_tokens")||a.exec("ALTER TABLE messages ADD COLUMN cache_read_tokens INTEGER NOT NULL DEFAULT 0"),c.has("cache_write_tokens")||a.exec("ALTER TABLE messages ADD COLUMN cache_write_tokens INTEGER NOT NULL DEFAULT 0"),c.has("est_cost_usd")||a.exec("ALTER TABLE messages ADD COLUMN est_cost_usd REAL NOT NULL DEFAULT 0");let d=a.prepare("SELECT value FROM settings WHERE key = ?").get("schema_version");d?.value!=="3"&&(a.exec("DELETE FROM ingest_state"),a.exec("DELETE FROM messages"),a.prepare("INSERT OR REPLACE INTO settings (key, value) VALUES (?, ?)").run("schema_version","3")),function(a){let b=a.prepare(`SELECT s.id, s.started_at, s.model,
|
|
110
|
+
s.input_tokens, s.output_tokens, s.cache_read_tokens, s.cache_write_tokens, s.est_cost_usd
|
|
111
|
+
FROM sessions s LEFT JOIN messages m ON m.session_id = s.id
|
|
112
|
+
WHERE m.id IS NULL
|
|
113
|
+
AND (s.input_tokens + s.output_tokens + s.cache_read_tokens + s.cache_write_tokens) > 0
|
|
114
|
+
GROUP BY s.id`).all();if(b.length>0){let c=a.prepare(`INSERT INTO messages (
|
|
115
|
+
id, session_id, role, content, timestamp, model,
|
|
116
|
+
input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, est_cost_usd
|
|
117
|
+
) VALUES (?, ?, 'assistant', '', ?, ?, ?, ?, ?, ?, ?)`);a.transaction(()=>{for(let a of b)c.run(`${a.id}-orphan`,a.id,a.started_at,a.model,a.input_tokens,a.output_tokens,a.cache_read_tokens,a.cache_write_tokens,a.est_cost_usd)})()}let c=a.prepare(`SELECT s.id,
|
|
118
|
+
s.input_tokens AS s_in, s.output_tokens AS s_out,
|
|
119
|
+
s.cache_read_tokens AS s_cr, s.cache_write_tokens AS s_cw,
|
|
120
|
+
s.est_cost_usd AS s_cost,
|
|
121
|
+
COALESCE(SUM(m.input_tokens), 0) AS m_in,
|
|
122
|
+
COALESCE(SUM(m.output_tokens), 0) AS m_out,
|
|
123
|
+
COALESCE(SUM(m.cache_read_tokens), 0) AS m_cr,
|
|
124
|
+
COALESCE(SUM(m.cache_write_tokens), 0) AS m_cw,
|
|
125
|
+
COALESCE(SUM(m.est_cost_usd), 0) AS m_cost,
|
|
126
|
+
COUNT(CASE WHEN m.role = 'assistant' THEN 1 END) AS asst_count
|
|
127
|
+
FROM sessions s LEFT JOIN messages m ON m.session_id = s.id
|
|
128
|
+
GROUP BY s.id
|
|
129
|
+
HAVING ((s_in + s_out + s_cr + s_cw) > (m_in + m_out + m_cr + m_cw)
|
|
130
|
+
OR s_cost > m_cost + 0.001)
|
|
131
|
+
AND asst_count > 0`).all();if(0===c.length)return;let d=a.prepare("SELECT id FROM messages WHERE session_id = ? AND role = 'assistant' ORDER BY timestamp"),e=a.prepare(`UPDATE messages SET
|
|
132
|
+
input_tokens = input_tokens + ?,
|
|
133
|
+
output_tokens = output_tokens + ?,
|
|
134
|
+
cache_read_tokens = cache_read_tokens + ?,
|
|
135
|
+
cache_write_tokens = cache_write_tokens + ?,
|
|
136
|
+
est_cost_usd = est_cost_usd + ?
|
|
137
|
+
WHERE id = ?`);a.transaction(()=>{for(let a of c){let b=d.all(a.id);if(0===b.length)continue;let c=b.length,f=Math.max(0,a.s_in-a.m_in),g=Math.max(0,a.s_out-a.m_out),h=Math.max(0,a.s_cr-a.m_cr),i=Math.max(0,a.s_cw-a.m_cw),j=Math.max(0,a.s_cost-a.m_cost),k=Math.floor(f/c),l=Math.floor(g/c),m=Math.floor(h/c),n=Math.floor(i/c),o=j/c,p=f-k*c,q=g-l*c,r=h-m*c,s=i-n*c;for(let a=0;a<c;a++){let d=a===c-1;e.run(k+(d?p:0),l+(d?q:0),m+(d?r:0),n+(d?s:0),o,b[a].id)}}})()}(a)}(x),w=(0,g.f)(x,{schema:d}))),x}},74498:(a,b,c)=>{let d;c.d(b,{PL:()=>i,ZC:()=>h});var e=c(53223),f=c(73024),g=c(76760);function h(a,b){(0,e.x)().prepare("INSERT OR REPLACE INTO settings (key, value) VALUES (?, ?)").run(a,b)}function i(a){let b=(0,e.x)().prepare("SELECT value FROM settings WHERE key = ?").get(a);return b?.value??null}c(73136),!function(){let a=function(){if(void 0!==d)return d;try{let a=__dirname,b=(0,g.join)(a,"pricing-data","litellm.meta.json");d=(0,f.existsSync)(b)?JSON.parse((0,f.readFileSync)(b,"utf8")):null}catch{d=null}return d}();a?.fetchedAt&&a.fetchedAt.slice(0,10)}()},88009:(a,b,c)=>{c.d(b,{$I:()=>f,P6:()=>e,nG:()=>g});let d=[{id:"claude-haiku-4-5",label:"Claude Haiku 4.5 (cheapest)",provider:"anthropic",input:1,output:5},{id:"claude-sonnet-4-6",label:"Claude Sonnet 4.6 (smarter)",provider:"anthropic",input:3,output:15},{id:"gpt-5-mini",label:"GPT-5 Mini (cheapest)",provider:"openai",input:.5,output:2},{id:"gpt-4o-mini",label:"GPT-4o Mini (very cheap)",provider:"openai",input:.15,output:.6},{id:"gpt-5",label:"GPT-5 (smarter)",provider:"openai",input:2.5,output:10}];function e(a){return d.find(b=>b.id===a)}function f(a){return"openai"===a?"gpt-5-mini":"claude-haiku-4-5"}function g(a,b,c){return(b*a.input+c*a.output)/1e6}},94450:(a,b,c)=>{c.d(b,{M:()=>i,Q:()=>h});var d=c(79742),e=c(63894),f=c(74498),g=c(88009);function h(){let a=(0,f.PL)("llm_provider")||"anthropic",b="openai"===a?"openai_api_key":"anthropic_api_key",c=(0,f.PL)(b)||process.env["openai"===a?"OPENAI_API_KEY":"ANTHROPIC_API_KEY"]||"";if(!c)return null;let d=(0,f.PL)("classifier_model")||(0,g.$I)(a),e=(0,f.PL)("summarizer_model")||(0,g.$I)(a);return{provider:a,apiKey:c,classifierModel:d,summarizerModel:e}}async function i(a){let b=h();if(!b)throw Error("No LLM provider configured");let c=(0,g.P6)(a.model)??(0,g.P6)(b.classifierModel);if(!c)throw Error(`Unknown model: ${a.model}`);if("anthropic"===c.provider){let e=new d.Ay({apiKey:b.apiKey}),f=await e.messages.create({model:c.id,max_tokens:a.maxTokens??1024,system:a.systemPrompt,messages:[{role:"user",content:a.userPrompt}]});return{text:f.content.map(a=>"text"in a?a.text:"").join("").trim(),inputTokens:f.usage.input_tokens,outputTokens:f.usage.output_tokens}}{let d=new e.Ay({apiKey:b.apiKey}),f=/^gpt-5/i.test(c.id)||/^o\d/i.test(c.id),g=await d.chat.completions.create({model:c.id,messages:[...a.systemPrompt?[{role:"system",content:a.systemPrompt}]:[],{role:"user",content:a.userPrompt}],max_completion_tokens:a.maxTokens??1024,...f?{reasoning_effort:"minimal"}:{},..."json"===a.responseFormat?{response_format:{type:"json_object"}}:{}}),h=g.choices[0]?.message?.content?.trim()||"",i=g.usage?.completion_tokens_details?.reasoning_tokens??0,j=g.choices[0]?.finish_reason;if(!h)throw Error("length"===j&&i>0?`model used all ${i} output tokens on reasoning before producing any visible content; raise the token budget or use a non-reasoning model`:`model returned empty content (finish_reason=${j})`);return{text:h,inputTokens:g.usage?.prompt_tokens??0,outputTokens:g.usage?.completion_tokens??0}}}}};
|