fleetlens 0.7.1 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/apps/web/.next/BUILD_ID +1 -1
- package/app/apps/web/.next/build-manifest.json +3 -3
- package/app/apps/web/.next/prerender-manifest.json +3 -3
- package/app/apps/web/.next/server/app/_global-error.html +1 -1
- package/app/apps/web/.next/server/app/_global-error.rsc +1 -1
- package/app/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/app/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/changelog/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/day/[date]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/day/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/digest/[date]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/digest/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/insights/[key]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/insights/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/parallelism/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/runs/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/app/usage/page_client-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/chunks/[root-of-the-server]__0.z48ue._.js +1 -1
- package/app/apps/web/.next/server/chunks/[root-of-the-server]__0dctov1._.js +2 -2
- package/app/apps/web/.next/server/chunks/packages_09hmrqx._.js +1 -1
- package/app/apps/web/.next/server/chunks/packages_118y1lp._.js +1 -1
- package/app/apps/web/.next/server/chunks/packages_parser_dist_fs_122oe0-.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__0ytdqxt._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/_0xu2pvc._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/apps_web_lib_0m67-xi._.js +1 -1
- package/app/apps/web/.next/server/chunks/ssr/packages_parser_dist_10_oegc._.js +1 -1
- package/app/apps/web/.next/server/middleware-build-manifest.js +3 -3
- package/app/apps/web/.next/server/pages/500.html +1 -1
- package/app/apps/web/.next/server/server-reference-manifest.js +1 -1
- package/app/apps/web/.next/server/server-reference-manifest.json +1 -1
- package/app/apps/web/.next/static/chunks/0cxyt4-24..b7.js +14 -0
- package/app/apps/web/lib/changelog-data.generated.ts +1 -1
- package/app/apps/web/package.json +1 -1
- package/app/apps/web/tsconfig.tsbuildinfo +1 -1
- package/dist/daemon-worker.js +562 -37
- package/dist/index.js +589 -64
- package/package.json +1 -1
- package/app/apps/web/.next/static/chunks/179_t_igg8ghh.js +0 -14
- /package/app/apps/web/.next/static/{tiK9aMHXkgnKLNmxj9J1P → u6-8f8u1tspYCacGAz53R}/_buildManifest.js +0 -0
- /package/app/apps/web/.next/static/{tiK9aMHXkgnKLNmxj9J1P → u6-8f8u1tspYCacGAz53R}/_clientMiddlewareManifest.js +0 -0
- /package/app/apps/web/.next/static/{tiK9aMHXkgnKLNmxj9J1P → u6-8f8u1tspYCacGAz53R}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[39587,79357,e=>{"use strict";let t={kind:"claude-code",displayName:"Claude Code",shortLabel:"Claude",accentColor:"var(--af-accent)",iconChar:"✦"},n={kind:"codex",displayName:"Codex (OpenAI)",shortLabel:"Codex",accentColor:"rgb(16, 163, 127)",iconChar:"◆"},r=[t,n];
|
|
1
|
+
module.exports=[39587,79357,e=>{"use strict";let t={kind:"claude-code",displayName:"Claude Code",shortLabel:"Claude",accentColor:"var(--af-accent)",iconChar:"✦"},n={kind:"codex",displayName:"Codex (OpenAI)",shortLabel:"Codex",accentColor:"rgb(16, 163, 127)",iconChar:"◆"},r={kind:"gemini",displayName:"Gemini CLI",shortLabel:"Gemini",accentColor:"rgb(124, 92, 246)",iconChar:"✺"},s=[t,n,r];s.map(e=>e.kind),e.s(["CLAUDE_CODE_METADATA",0,t,"CODEX_METADATA",0,n,"GEMINI_METADATA",0,r,"agentMetadata",0,s],39587);let a=["/.claude/worktrees/","/.worktrees/","/claude/worktrees/"];e.s(["canonicalProjectName",0,function(e){let t=e.replace(/\/{2,}/g,"/"),n=function(e){for(let t of a){let n=e.lastIndexOf(t);if(n>=0)return{idx:n,marker:t}}return null}(t);return n?t.slice(0,n.idx):t},"computeBurstsFromSessions",0,function(e,t={}){let n=[];for(let t of e)t.activeSegments&&0!==t.activeSegments.length&&n.push({id:t.id,projectDir:t.projectDir,segments:t.activeSegments});return function(e,t){let n=t.minDurationMs??6e4,r=t.mergeGapMs??6e5,s=t.minActive??2,a=[];for(let t of e)for(let e of t.segments)e.endMs<=e.startMs||(a.push({ms:e.startMs,delta:1,sessionId:t.id}),a.push({ms:e.endMs,delta:-1,sessionId:t.id}));a.sort((e,t)=>e.ms-t.ms||t.delta-e.delta);let i=new Map,o=[],l=null;for(let e of a){if(1===e.delta)i.set(e.sessionId,(i.get(e.sessionId)??0)+1);else{let t=(i.get(e.sessionId)??0)-1;t<=0?i.delete(e.sessionId):i.set(e.sessionId,t)}let t=i.size;if(t>=s)if(l)for(let n of(l.endMs=e.ms,t>l.peak&&(l.peak=t),i.keys()))l.sessionIds.add(n);else l={startMs:e.ms,endMs:e.ms,peak:t,sessionIds:new Set(i.keys())};else l&&(l.endMs=e.ms,o.push(l),l=null)}l&&o.push(l);let c=o.filter(e=>e.endMs-e.startMs>=n),u=[];for(let e of c){let t=u[u.length-1];if(t&&e.startMs-t.endMs<=r)for(let n of(t.endMs=e.endMs,e.peak>t.peak&&(t.peak=e.peak),e.sessionIds))t.sessionIds.add(n);else u.push({startMs:e.startMs,endMs:e.endMs,peak:e.peak,sessionIds:new Set(e.sessionIds)})}let d=new Map;for(let t of e)d.set(t.id,t.projectDir);return u.map(e=>{let t=Array.from(new Set(Array.from(e.sessionIds).map(e=>d.get(e)).filter(e=>!!e)));return{startMs:e.startMs,endMs:e.endMs,peak:e.peak,sessionIds:Array.from(e.sessionIds),projectDirs:t,crossProject:t.length>1}})}(n,t)},"toLocalDay",0,function(e){let t=new Date(e),n=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0");return`${n}-${r}-${s}`}],79357)},27174,e=>{"use strict";e.i(39587),e.s([])},5737,54853,76956,e=>{"use strict";var t=e.i(2157),n=e.i(66680),r=e.i(50227),s=e.i(60526);function a(e,t){return`${e}__${t}`}function i(e){let t=/^([^_]+(?:_[^_]+)*)__(\d{4}-\d{2}-\d{2})$/.exec(e);return t?{session_id:t[1],local_day:t[2]}:null}e.s(["CURRENT_DAY_DIGEST_SCHEMA_VERSION",0,2,"CURRENT_MONTH_DIGEST_SCHEMA_VERSION",0,2,"CURRENT_WEEK_DIGEST_SCHEMA_VERSION",0,2,"GOAL_CATEGORIES",0,["build","plan","debug","review","steer","meta","research","refactor","test","release","warmup_minimal"],"PROMPT_FRAME_ORIGIN",0,{teammate:"claude-feature","task-notification":"claude-feature","local-command-caveat":"claude-feature","image-attached":"claude-feature","slash-command":"claude-feature","handoff-prose":"personal-habit"},"entryKey",0,a,"parseEntryKey",0,i],54853);let o=null;function l(){return o||(o=process.env.CCLENS_DIGESTS_DIR??(0,r.join)((0,s.homedir)(),".cclens","digests"))}function c(e){return(0,r.join)(l(),"day",`${e}.json`)}function u(e){return(0,r.join)(l(),"week",`${e}.json`)}function d(e){return(0,r.join)(l(),"month",`${e}.json`)}let f=null,g=null,m=null;e.s(["getCurrentMonthDigestFromCache",0,function(e,t){return!m||m.yearMonth!==e||t-m.writtenAtMs>6e5?null:m.digest},"getCurrentWeekDigestFromCache",0,function(e,t){return!g||g.monday!==e||t-g.writtenAtMs>6e5?null:g.digest},"getTodayDigestFromCache",0,function(e,t){return!f||f.date!==e||t-f.writtenAtMs>6e5?null:f.digest},"listMonthDigestKeys",0,function(){let e=(0,r.join)(l(),"month");return(0,t.existsSync)(e)?(0,t.readdirSync)(e).filter(e=>e.endsWith(".json")).map(e=>e.slice(0,-5)).filter(e=>/^\d{4}-\d{2}$/.test(e)):[]},"listWeekDigestKeys",0,function(){let e=(0,r.join)(l(),"week");return(0,t.existsSync)(e)?(0,t.readdirSync)(e).filter(e=>e.endsWith(".json")).map(e=>e.slice(0,-5)).filter(e=>/^\d{4}-\d{2}-\d{2}$/.test(e)):[]},"readDayDigest",0,function(e){let n=c(e);if(!(0,t.existsSync)(n))return null;try{return JSON.parse((0,t.readFileSync)(n,"utf8"))}catch{return null}},"readMonthDigest",0,function(e){let n=d(e);if(!(0,t.existsSync)(n))return null;try{return JSON.parse((0,t.readFileSync)(n,"utf8"))}catch{return null}},"readWeekDigest",0,function(e){let n=u(e);if(!(0,t.existsSync)(n))return null;try{return JSON.parse((0,t.readFileSync)(n,"utf8"))}catch{return null}},"setCurrentMonthDigestInCache",0,function(e,t,n){m={yearMonth:e,digest:t,writtenAtMs:n}},"setCurrentWeekDigestInCache",0,function(e,t,n){g={monday:e,digest:t,writtenAtMs:n}},"setTodayDigestInCache",0,function(e,t,n){f={date:e,digest:t,writtenAtMs:n}},"writeDayDigest",0,function(e){let n=c(e.key);(0,t.mkdirSync)((0,r.dirname)(n),{recursive:!0});let s=`${n}.tmp`;(0,t.writeFileSync)(s,JSON.stringify(e,null,2),"utf8");try{(0,t.chmodSync)(s,384)}catch{}(0,t.renameSync)(s,n)},"writeMonthDigest",0,function(e){let n=d(e.key);(0,t.mkdirSync)((0,r.dirname)(n),{recursive:!0});let s=`${n}.tmp`;(0,t.writeFileSync)(s,JSON.stringify(e,null,2),"utf8");try{(0,t.chmodSync)(s,384)}catch{}(0,t.renameSync)(s,n)},"writeWeekDigest",0,function(e){let n=u(e.key);(0,t.mkdirSync)((0,r.dirname)(n),{recursive:!0});let s=`${n}.tmp`;(0,t.writeFileSync)(s,JSON.stringify(e,null,2),"utf8");try{(0,t.chmodSync)(s,384)}catch{}(0,t.renameSync)(s,n)}],76956);let p=null;function y(){return p||(p=process.env.CCLENS_ENTRIES_DIR??(0,r.join)((0,s.homedir)(),".cclens","entries"))}function D(e,t){return(0,r.join)(y(),`${a(e,t)}.json`)}function h(){let e=y();return(0,t.existsSync)(e)?(0,t.readdirSync)(e).filter(e=>e.endsWith(".json")).map(e=>e.slice(0,-5)):[]}e.s(["listEntriesForDay",0,function(e){let n=[];for(let r of h()){let s=i(r);if(!s||s.local_day!==e)continue;let a=function(e,n){let r=D(e,n);return(0,t.existsSync)(r)?JSON.parse((0,t.readFileSync)(r,"utf8")):null}(s.session_id,s.local_day);a&&n.push(a)}return n},"listEntryKeys",0,h,"writeEntry",0,function(e){let r=y();(0,t.mkdirSync)(r,{recursive:!0});let s=D(e.session_id,e.local_day),a=`${s}.tmp.${process.pid}.${(0,n.randomBytes)(4).toString("hex")}`,i=JSON.stringify(e,null,2);(0,t.writeFileSync)(a,i,{encoding:"utf8"}),(0,t.renameSync)(a,s)}],5737)},30212,e=>{"use strict";var t=e.i(79357);function n(e){return(0,t.toLocalDay)(e.getTime())}function r(e=new Date){let t=new Date(e.getFullYear(),e.getMonth(),e.getDate()),n=t.getDay(),s=new Date(t);s.setDate(t.getDate()-(n+6)%7);let a=new Date(s);return a.setDate(s.getDate()+6),{start:s,end:a}}e.s(["aggregateConcurrency",0,function(e,t){let r,s=function(e,t){let n=[],r=new Date(e.getFullYear(),e.getMonth(),e.getDate()),s=new Date(t.getFullYear(),t.getMonth(),t.getDate());for(;r.getTime()<=s.getTime();)n.push(new Date(r)),r.setDate(r.getDate()+1);return n}(t.start,t.end),a=new Map;for(let e of s)a.set(n(e),{peak:0,has_cross_project:!1});for(let t of e){let e=n(new Date(t.startMs)),r=a.get(e);r&&(t.peak>r.peak&&(r.peak=t.peak),t.crossProject&&(r.has_cross_project=!0))}let i=s.map(e=>{let t=n(e),r=a.get(t);return{date:t,peak:r.peak,has_cross_project:r.has_cross_project}}),o=0,l=0,c=0;for(let e of i)e.peak>o&&(o=e.peak,r=e.date),e.peak>=3&&l++,e.has_cross_project&&c++;return{by_day:i,peak:o,peak_day:r,multi_agent_days:l,cross_project_days:c}},"calendarMonth",0,function(e=new Date){return{start:new Date(e.getFullYear(),e.getMonth(),1),end:new Date(e.getFullYear(),e.getMonth()+1,0)}},"calendarWeek",0,r,"priorCalendarMonth",0,function(e=new Date){return{start:new Date(e.getFullYear(),e.getMonth()-1,1),end:new Date(e.getFullYear(),e.getMonth(),0)}},"priorCalendarWeek",0,function(e=new Date){let t=r(e),n=new Date(t.start);n.setDate(t.start.getDate()-1);let s=new Date(n);return s.setDate(n.getDate()-6),{start:s,end:n}}])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=packages_118y1lp._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[43427,20629,e=>{"use strict";var t=e.i(2157),i=e.i(60526),s=e.i(50227),n=e.i(39587);let a={input:0,output:0,cacheRead:0,cacheWrite:0};function o(e,t=200){let i=e.replace(/<[^>]+>/g,"").replace(/\s+/g," ").trim();return i.length>t?i.slice(0,t-1)+"…":i}let r=/^\s*<teammate-message\s+teammate_id="([^"]+)"[^>]*>([\s\S]*?)<\/teammate-message>/;function l(e){let t=e.match(r);if(!t)return;let i=t[1],s=t[2].trim(),n="message";if(s.startsWith("{"))try{let e=JSON.parse(s);"idle_notification"===e.type?n="idle-notification":"shutdown_request"===e.type?n="shutdown-request":"shutdown_approved"===e.type?n="shutdown-approved":"task_assignment"===e.type?n="task-assignment":"teammate_terminated"===e.type&&(n="teammate-terminated")}catch{}return{teammateId:i,body:s,kind:n}}function u(e){if(!e||"object"!=typeof e)return;let t=e=>"number"==typeof e?e:0;return{input:t(e.input_tokens),output:t(e.output_tokens),cacheRead:t(e.cache_read_input_tokens),cacheWrite:t(e.cache_creation_input_tokens)}}function p(e){let t,i,s,n,r,p,c,m,f=[];for(let t=0;t<e.length;t++){let i=function(e,t){if(!e||"object"!=typeof e)return null;let i=String(e.type??""),s=e.uuid,n=e.parentUuid??null,a=e.timestamp;if("assistant"===i){let r,l,p,c=e.message??{},m=c.content??[],f=u(c.usage),d=c.model,g=e.requestId,y=c.id,h=c.stop_reason,w=m[0],_="agent";return w?.type==="thinking"?(_="agent-thinking",r="[thinking] "+o(w.thinking,140)):w?.type==="tool_use"?(_="tool-call",l=w.name,p=w.id,r=`${w.name} `+o(JSON.stringify(w.input??{}),100)):r=w?.type==="text"?o(w.text,200):`<assistant:${w?.type??"empty"}>`,{index:t,uuid:s,parentUuid:n,timestamp:a,role:_,rawType:i,preview:r,blocks:m,usage:f,model:d,requestId:g,messageId:y,stopReason:h,toolName:l,toolUseId:p,raw:e}}if("user"===i){let r=(e.message??{}).content;if("string"==typeof r){let u=l(r);return{index:t,uuid:s,parentUuid:n,timestamp:a,role:"user",rawType:i,preview:o(r,200),blocks:[{type:"text",text:r}],raw:e,teammateMessage:u}}if(Array.isArray(r)){let u=r[0];if(u?.type==="tool_result")return{index:t,uuid:s,parentUuid:n,timestamp:a,role:"tool-result",rawType:i,preview:o("string"==typeof u.content?u.content:JSON.stringify(u.content),200),blocks:r,toolUseId:u.tool_use_id,toolResult:e.toolUseResult,raw:e};let p=r.find(e=>e?.type==="text"),c=p?l(p.text):void 0;return{index:t,uuid:s,parentUuid:n,timestamp:a,role:"user",rawType:i,preview:p?o(p.text,200):o(JSON.stringify(r),200),blocks:r,raw:e,teammateMessage:c}}}if("attachment"===i){let r=e.attachment??{},l=String(r.type??"attachment"),u=`<attachment: ${l}>`;return"string"==typeof r.content&&r.content.length>0?u=`[${l}] `+o(r.content,140):Array.isArray(r.addedNames)&&(u=`[${l}] +${r.addedNames.length} names`),{index:t,uuid:s,parentUuid:n,timestamp:a,role:"system",rawType:i,preview:u,blocks:[{type:"text",text:JSON.stringify(r,null,2)}],attachmentType:l,raw:e}}return{index:t,uuid:s,parentUuid:n,timestamp:a,role:"meta",rawType:i||"unknown",preview:`${i}: ${o(JSON.stringify(e),140)}`,blocks:[{type:"text",text:JSON.stringify(e,null,2)}],raw:e}}(e[t],t);i&&f.push(i)}let d=f.map(e=>e.timestamp?Date.parse(e.timestamp):void 0).filter(e=>"number"==typeof e&&!Number.isNaN(e)),g=d.length?Math.min(...d):void 0,y=d.length?Math.max(...d):void 0,h=void 0!==g?new Date(g).toISOString():void 0,w=void 0!==y?new Date(y).toISOString():void 0;for(let e of f){if(!e.timestamp)continue;let t=Date.parse(e.timestamp);Number.isNaN(t)||void 0!==g&&(e.tOffsetMs=Math.max(0,t-g))}let _=f.filter(e=>{let t;return e.timestamp&&("user"===(t=e.role)||"agent"===t||"agent-thinking"===t||"tool-call"===t||"tool-result"===t)}).map(e=>({e,ms:Date.parse(e.timestamp)})).filter(e=>!Number.isNaN(e.ms)).sort((e,t)=>e.ms-t.ms);for(let e=1;e<_.length;e++)_[e].e.gapMs=Math.max(0,_[e].ms-_[e-1].ms);let v=f.filter(e=>e.timestamp).map(e=>Date.parse(e.timestamp)).filter(e=>!Number.isNaN(e)).sort((e,t)=>e-t),M=[],k=0;if(v.length>0){let e=v[0],t=v[0];for(let i=1;i<v.length;i++){let s=v[i],n=s-t;n>18e4?(M.push({startMs:e,endMs:t}),e=s):n>0&&(k+=n),t=s}M.push({startMs:e,endMs:t})}let b=new Map,N=[];for(let e of f){if(!e.timestamp)continue;let t=Date.parse(e.timestamp);if(!Number.isNaN(t)){if("assistant"===e.rawType&&e.usage&&e.messageId){let i=b.get(e.messageId);i?(i.siblings.push(e),t<i.ms&&(i.rep=e,i.ms=t)):b.set(e.messageId,{rep:e,ms:t,siblings:[e]})}else if("system"===e.rawType){let i=e.raw;if(i?.subtype!=="compact_boundary")continue;let s=i.compactMetadata??{};N.push({ms:t,trigger:"manual"===s.trigger?"manual":"auto",preTokens:"number"==typeof s.preTokens?s.preTokens:0})}}}let x=[...b.values()].sort((e,t)=>e.ms-t.ms);N.sort((e,t)=>e.ms-t.ms);let j=0,T=0,S=(e,t)=>{for(let i of e.siblings)i.coldResume=t;j++,T+=t.writeTokens},P=new Set;for(let e of N){let t,i=x.find(t=>t.ms>e.ms&&(t.rep.usage?.cacheWrite??0)>=1e3);if(!i)continue;for(let i=x.length-1;i>=0;i--)if(x[i].ms<=e.ms){t=x[i].ms;break}let s=i.rep.usage,n=s.cacheWrite+s.cacheRead;S(i,{trigger:"compact",gapMs:void 0!==t?i.ms-t:0,writeTokens:s.cacheWrite,writeRatio:n>0?s.cacheWrite/n:0,compact:{trigger:e.trigger,preTokens:e.preTokens}}),P.add(i.rep.messageId)}for(let e=1;e<x.length;e++){let t=x[e-1],i=x[e];if(P.has(i.rep.messageId))continue;let s=i.rep.usage,n=s.cacheWrite+s.cacheRead,a=n>0?s.cacheWrite/n:0,o=i.ms-t.ms;o>3e5&&s.cacheWrite>=1e3&&a>=.3&&S(i,{trigger:"idle",gapMs:o,writeTokens:s.cacheWrite,writeRatio:a})}let I={...a},D=new Set,W="",$=!1,B=!1,z=0,A=0,O=0,R=0,C=new Set;for(let e of f){if("tool-call"===e.role){z++;let t=e.blocks.find(e=>e&&"tool_use"===e.type);if(t){let e=t.input??{};if("TeamCreate"===t.name&&($=!0),"SendMessage"===t.name){let t="string"==typeof e.to?e.to:"";t&&"team-lead"!==t&&(B=!0)}let i="string"==typeof e.file_path?e.file_path:void 0;if("Edit"===t.name&&i){C.add(i);let t="string"==typeof e.old_string?e.old_string:"",s="string"==typeof e.new_string?e.new_string:"",n=t?t.split("\n").length:0,a=s?s.split("\n").length:0;O+=Math.max(0,a-n),R+=Math.max(0,n-a)}else if("Write"===t.name&&i){C.add(i);let t="string"==typeof e.content?e.content:"";O+=t?t.split("\n").length:0}}}if("user"===e.role){let t=e.raw?.message,i="string"==typeof t?.content?t.content:"",s=i.startsWith("<command-name>")||i.startsWith("<local-command-caveat>")||i.startsWith("Base directory for this skill:")||i.startsWith("<task-notification>"),n=void 0!==e.teammateMessage&&!r;s||n||(p||(p=e.teammateMessage?e.teammateMessage.body:e.preview),A++,m=e.preview)}"agent"===e.role&&(c=e.preview)}for(let a of e)if(a&&"object"==typeof a&&("string"!=typeof a.sessionId||W||(W=a.sessionId),"string"!=typeof a.cwd||i||(i=a.cwd),"string"!=typeof a.gitBranch||s||(s=a.gitBranch),"string"!=typeof a.teamName||n||(n=a.teamName),"string"!=typeof a.agentName||r||(r=a.agentName),"assistant"===a.type)){let e=a.message;if(e){"string"!=typeof e.model||t||(t=e.model);let i="string"==typeof e.id?e.id:void 0,s="string"==typeof a.requestId?a.requestId:void 0,n=null!=i?`${i}:${s??""}`:void 0;if(n&&D.has(n))continue;n&&D.add(n);let o=u(e.usage);o&&(I.input+=o.input,I.output+=o.output,I.cacheRead+=o.cacheRead,I.cacheWrite+=o.cacheWrite)}}return{events:f,meta:{sessionId:W,firstTimestamp:h,lastTimestamp:w,durationMs:void 0!==g&&void 0!==y?y-g:void 0,eventCount:f.length,model:t,cwd:i,gitBranch:s,totalUsage:I,status:"idle",firstUserPreview:p,lastUserPreview:m,lastAgentPreview:c,toolCallCount:z,turnCount:A,airTimeMs:k,activeSegments:M,linesAdded:O,linesRemoved:R,filesEdited:C.size,coldResumeCount:j,cacheRebuildTokens:T,teamName:n,agentName:r,isTeamLead:void 0!==n&&void 0===r&&($||B)}}}let c=s.default.join(i.default.homedir(),".claude","projects");function m(e){return e.startsWith("-")?"/"+e.slice(1).replace(/-/g,"/"):e}async function f(e){let i=await t.promises.readFile(e,"utf8"),s=[];for(let e of i.split("\n")){let t=e.trim();if(t)try{s.push(JSON.parse(t))}catch{}}return s}function d(e){return e.replace(/\.jsonl$/i,"")}let g=new Map,y=new Map,h=new Map,w=null;function _(e){g.delete(e),y.delete(e),h.delete(e),w=null}async function v(e=c){let i;if(w&&w.root===e&&Date.now()-w.capturedAtMs<1e3)return w.files;try{i=await t.promises.readdir(e,{withFileTypes:!0})}catch{return[]}let n=i.filter(e=>e.isDirectory()).map(e=>e.name),a=(await Promise.all(n.map(async i=>{let n,a=s.default.join(e,i);try{n=await t.promises.readdir(a)}catch{return[]}let o=n.filter(e=>e.endsWith(".jsonl"));return(await Promise.all(o.map(async e=>{let n=s.default.join(a,e);try{let s=await t.promises.stat(n);return{projectDir:i,fileName:e,fullPath:n,mtimeMs:s.mtimeMs,sizeBytes:s.size}}catch{return null}}))).filter(e=>null!==e)}))).flat();return w={files:a,capturedAtMs:Date.now(),root:e},a}let M={input:0,output:0,cacheRead:0,cacheWrite:0};function k(e,t,i){for(let s of e){if(!s||"object"!=typeof s||"assistant"!==s.type)continue;let e=s.message;if(!e)continue;let n="string"==typeof e.id?e.id:void 0,a="string"==typeof s.requestId?s.requestId:void 0,o=null!=n&&null!=a?`${n}:${a}`:void 0;if(o&&t.has(o))continue;o&&t.add(o);let r=e.usage;if(r){let e=e=>"number"==typeof e?e:0;i.input+=e(r.input_tokens),i.output+=e(r.output_tokens),i.cacheRead+=e(r.cache_read_input_tokens),i.cacheWrite+=e(r.cache_creation_input_tokens)}}}async function b(e,i,n){let a,o={...M},r=new Set;k(e,r,o);let l=s.default.join(i,n,"subagents");try{a=await t.promises.readdir(l)}catch{return o}let u=a.filter(e=>e.endsWith(".jsonl"));return 0===u.length||await Promise.all(u.map(async e=>{try{let t=await f(s.default.join(l,e));k(t,r,o)}catch{}})),o}async function N(e){let t=g.get(e.fullPath);if(t&&t.mtimeMs===e.mtimeMs&&t.sizeBytes===e.sizeBytes)return t.meta;try{let t=await f(e.fullPath),{meta:i}=p(t),n=d(e.fileName),a=s.default.dirname(e.fullPath);i.totalUsage=await b(t,a,n);let o={...i,id:n,filePath:e.fullPath,projectDir:e.projectDir,projectName:i.cwd??m(e.projectDir)};return g.set(e.fullPath,{meta:o,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes}),o}catch{return null}}async function x(e){let t=y.get(e.fullPath);if(t&&t.mtimeMs===e.mtimeMs&&t.sizeBytes===e.sizeBytes)return t.detail;try{let t=await f(e.fullPath),{meta:i,events:s}=p(t),n={...i,id:d(e.fileName),filePath:e.fullPath,projectDir:e.projectDir,projectName:i.cwd??m(e.projectDir),events:s};y.set(e.fullPath,{detail:n,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes});let a={...n};return delete a.events,g.set(e.fullPath,{meta:a,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes}),n}catch{return null}}async function j(e={}){let{root:t=c,limit:i=500,projectDir:s}=e,n=await v(t);s&&(n=n.filter(e=>e.projectDir===s)),n.sort((e,t)=>t.mtimeMs-e.mtimeMs);let a=n.slice(0,i);return(await Promise.all(a.map(e=>N(e)))).filter(e=>null!==e)}async function T(e,t={}){let{root:i=c}=t,n=(await v(i)).find(t=>d(t.fileName)===e);if(!n)return null;let a=await x(n);if(!a)return a;let o=a.firstTimestamp?Date.parse(a.firstTimestamp):void 0,r=s.default.join(s.default.dirname(n.fullPath),d(n.fileName),"subagents"),l=await S(r,o,a.events);return{...a,subagents:l}}async function S(e,i,n){let a;try{a=await t.promises.readdir(e)}catch{return[]}let o=new Map,r=[];for(let e of n)if("tool-call"===e.role&&"Agent"===e.toolName)for(let t of e.blocks){if(t?.type!=="tool_use"||"Agent"!==t.name)continue;let i=t.input??{},s="string"==typeof i.description?i.description:void 0,n=e.timestamp?Date.parse(e.timestamp):void 0,a={toolUseId:t.id,parentUuid:e.uuid??"",runInBackground:!0===i.run_in_background,prompt:"string"==typeof i.prompt?i.prompt:void 0,tsMs:n};s&&o.set(s,a),void 0!==n&&r.push(a)}r.sort((e,t)=>(e.tsMs??0)-(t.tsMs??0));let l=a.filter(e=>e.startsWith("agent-")&&e.endsWith(".jsonl"));return(await Promise.all(l.map(async n=>{let a,l=n.replace(/^agent-/,"").replace(/\.jsonl$/,""),u=s.default.join(e,n),p=s.default.join(e,`agent-${l}.meta.json`),c={};try{let e=await t.promises.readFile(p,"utf8");c=JSON.parse(e)}catch{}try{a=await f(u)}catch{return null}let m=function(e){let t,i,s,n,a,o={...M},r=new Set,l=0,u=0,p=0,c=new Map;for(let m of e){if(!m||"object"!=typeof m)continue;l++;let e="string"==typeof m.timestamp?Date.parse(m.timestamp):NaN;if(!Number.isNaN(e)&&((void 0===t||e<t)&&(t=e),(void 0===i||e>i)&&(i=e)),void 0===a&&"user"===m.type&&(null===m.parentUuid||void 0===m.parentUuid)){let e=m.message,t=e?.content;if("string"==typeof t)a=t;else if(Array.isArray(t)){let e=t.find(e=>e&&"object"==typeof e&&"text"===e.type);e?.text&&(a=e.text)}}if("assistant"===m.type){let e=m.message;if(!e)continue;n||"string"!=typeof e.model||(n=e.model);let t="string"==typeof e.id?e.id:void 0,i="string"==typeof m.requestId?m.requestId:void 0,a=null!=t&&null!=i?`${t}:${i}`:void 0,l=!a||!r.has(a);if(a&&l&&r.add(a),l){u++;let t=e.usage;if(t){let e=e=>"number"==typeof e?e:0;o.input+=e(t.input_tokens),o.output+=e(t.output_tokens),o.cacheRead+=e(t.cache_read_input_tokens),o.cacheWrite+=e(t.cache_creation_input_tokens)}}let f=e.content;if(Array.isArray(f))for(let e of f)e&&"object"==typeof e&&("text"===e.type&&"string"==typeof e.text?s=e.text:"tool_use"===e.type&&"string"==typeof e.name&&(p++,c.set(e.name,(c.get(e.name)??0)+1)))}}let m=Array.from(c.entries()).map(([e,t])=>({name:e,count:t})).sort((e,t)=>t.count-e.count);return{startMs:t,endMs:i,totalUsage:o,eventCount:l,finalPreview:void 0!==s?s.replace(/\s+/g," ").trim().slice(0,240):void 0,finalText:s,model:n,toolCalls:m,toolCallCount:p,assistantMessageCount:u,initialPrompt:a}}(a),d=c.description&&c.description.trim().length>0?c.description:void 0,g=d?o.get(d):function(e){let t;if(void 0===e)return;let i=1/0;for(let s of r){if(void 0===s.tsMs)continue;let n=Math.abs(e-s.tsMs);n<i&&n<=2e3&&(t=s,i=n)}return t}(m.startMs),y=d??(m.initialPrompt?m.initialPrompt.replace(/\s+/g," ").trim().slice(0,80):"(no description)"),h=g?.prompt??m.initialPrompt,w=void 0!==i&&void 0!==m.startMs?Math.max(0,m.startMs-i):void 0,_=void 0!==i&&void 0!==m.endMs?Math.max(0,m.endMs-i):void 0,v=void 0!==m.startMs&&void 0!==m.endMs?m.endMs-m.startMs:void 0;return{agentId:l,agentType:c.agentType??"unknown",description:y,startMs:m.startMs,endMs:m.endMs,durationMs:v,startTOffsetMs:w,endTOffsetMs:_,eventCount:m.eventCount,totalUsage:m.totalUsage,parentUuid:g?.parentUuid,parentToolUseId:g?.toolUseId,runInBackground:g?.runInBackground,prompt:h,finalPreview:m.finalPreview,finalText:m.finalText,model:m.model,toolCalls:m.toolCalls,toolCallCount:m.toolCallCount,assistantMessageCount:m.assistantMessageCount}}))).filter(e=>null!==e).sort((e,t)=>(e.startMs??0)-(t.startMs??0))}let P={...n.CLAUDE_CODE_METADATA,defaultRoot:c,async listSessions(e){let t=await j(e);for(let e of t)e.agent||(e.agent="claude-code");return t},async getSession(e,t){let i=await T(e,t);return i&&!i.agent&&(i.agent="claude-code"),i}};e.s(["DEFAULT_ROOT",0,c,"claudeCodeSource",0,P,"getSession",0,T,"invalidateClaudeCodeFile",0,_,"listSessions",0,j],20629);var I=e.i(79357);let D=s.default.join(i.default.homedir(),".codex","sessions"),W=/^rollout-(\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2})-([0-9a-f-]+)\.jsonl$/;async function $(e){return t.promises.readdir(e).catch(()=>[])}async function B(e){let i=[];for(let n of(await $(e))){if(!/^\d{4}$/.test(n))continue;let a=s.default.join(e,n);for(let e of(await $(a))){if(!/^\d{2}$/.test(e))continue;let n=s.default.join(a,e);for(let e of(await $(n))){if(!/^\d{2}$/.test(e))continue;let a=s.default.join(n,e);for(let e of(await $(a))){let n=W.exec(e);if(!n)continue;let o=s.default.join(a,e),r=await t.promises.stat(o).catch(()=>null);r&&i.push({filePath:o,sessionId:n[2],mtimeMs:r.mtimeMs,sizeBytes:r.size})}}}}return i}async function z(e){let i=await t.promises.readFile(e,"utf8"),s=[];for(let e of i.split("\n")){let t=e.trim();if(t)try{s.push(JSON.parse(t))}catch{}}return s}function A(e){return e.replace(/\s+/g," ").trim().slice(0,200)}function O(e,t){let i,s,n,a,o,r,l,u=[],p={input:0,output:0,cacheRead:0,cacheWrite:0},c=0,m=0,f=[],d=0;for(let e of t){if("object"!=typeof e||null===e)continue;let t="string"==typeof e.timestamp?e.timestamp:void 0;if(t){i||(i=t),s=t;let e=Date.parse(t);Number.isFinite(e)&&f.push(e)}let y="string"==typeof e.type?e.type:"",h=e.payload??{},w="string"==typeof h.type?h.type:"";if("session_meta"===y){"string"==typeof h.cwd&&(n=h.cwd);continue}if("turn_context"===y){"string"==typeof h.cwd&&(n=h.cwd),"string"==typeof h.model&&(a=h.model);continue}if("event_msg"===y&&"token_count"===w){let e=h.info??null,t=e?.total_token_usage??null;t&&(p.input=R(t.input_tokens)??p.input,p.output=R(t.output_tokens)??p.output,p.cacheRead=R(t.cached_input_tokens)??p.cacheRead);continue}if("event_msg"===y&&"user_message"===w){let i="string"==typeof h.message?h.message:"",s=A(i);i&&(o||(o=s),r=s,m+=1),u.push({index:d++,timestamp:t,role:"user",rawType:"event_msg/user_message",preview:s,blocks:i?[{type:"text",text:i}]:[],raw:e});continue}if("event_msg"===y&&"agent_message"===w){let i="string"==typeof h.message?h.message:"",s=A(i);i&&(l=s),u.push({index:d++,timestamp:t,role:"agent",rawType:"event_msg/agent_message",preview:s,blocks:i?[{type:"text",text:i}]:[],model:a,raw:e});continue}if("response_item"===y&&"reasoning"===w){let i=(h.summary??[]).map(e=>"string"==typeof e.text?e.text:"").join("\n").trim();u.push({index:d++,timestamp:t,role:"agent-thinking",rawType:"response_item/reasoning",preview:A(i),blocks:i?[{type:"thinking",thinking:i}]:[],model:a,raw:e});continue}if("response_item"===y&&"message"===w&&"assistant"===h.role){let i=(h.content??[]).map(e=>"string"==typeof e.text?e.text:"").join("\n").trim(),s=A(i);i&&(l=s),u.push({index:d++,timestamp:t,role:"agent",rawType:"response_item/message",preview:s,blocks:i?[{type:"text",text:i}]:[],model:a,raw:e});continue}if("response_item"===y&&"function_call"===w){var g;let i="string"==typeof h.name?h.name:"(unknown)",s="string"==typeof h.call_id?h.call_id:void 0,n="string"==typeof h.arguments?h.arguments:"",o=function(e){if(!e)return null;try{return JSON.parse(e)}catch{return e}}(n);c+=1,u.push({index:d++,timestamp:t,role:"tool-call",rawType:"response_item/function_call",preview:`${i}(${(g=n).length<=80?g:g.slice(0,79)+"…"})`,blocks:[{type:"tool_use",id:s??`codex-${d}`,name:i,input:o}],toolName:i,toolUseId:s,model:a,raw:e});continue}if("response_item"===y&&"function_call_output"===w){let i="string"==typeof h.call_id?h.call_id:void 0,s="string"==typeof h.output?h.output:"",n=/process exited with code [1-9]/i.test(s);u.push({index:d++,timestamp:t,role:"tool-result",rawType:"response_item/function_call_output",preview:A(s),blocks:[{type:"tool_result",tool_use_id:i??"",content:s,is_error:n}],toolUseId:i,toolResult:s,raw:e});continue}u.push({index:d++,timestamp:t,role:"meta",rawType:w?`${y}/${w}`:y,preview:"",blocks:[],raw:e})}if(p.input>0||p.output>0){let t=-1;for(let e=u.length-1;e>=0;e--){let i=u[e].role;if("agent"===i||"agent-thinking"===i||"tool-call"===i){t=e;break}}if(t>=0){let i=u[t];i.messageId=`codex-${e.sessionId}-total`,i.usage={input:p.input,output:p.output,cacheRead:p.cacheRead,cacheWrite:0}}}let y=i?Date.parse(i):void 0;if(void 0!==y&&Number.isFinite(y)){let e;for(let t of u){if(!t.timestamp)continue;let i=Date.parse(t.timestamp);Number.isFinite(i)&&(t.tOffsetMs=Math.max(0,i-y),void 0!==e&&(t.gapMs=Math.max(0,i-e)),e=i)}}let h=function(e){if(0===e.length)return[];let t=[...e].sort((e,t)=>e-t),i=[],s=t[0],n=t[0];for(let e=1;e<t.length;e++)t[e]-n>18e4&&(i.push({startMs:s,endMs:n}),s=t[e]),n=t[e];return i.push({startMs:s,endMs:n}),i}(f),w=h.reduce((e,t)=>e+(t.endMs-t.startMs),0),_=i&&s?Date.parse(s)-Date.parse(i):void 0,v=n?(0,I.canonicalProjectName)(n):"(unknown)",M=n?n.replace(/^\//,"-").replace(/\//g,"-"):"(unknown)";return{meta:{agent:"codex",id:e.sessionId,filePath:e.filePath,projectName:v,projectDir:M,sessionId:e.sessionId,firstTimestamp:i,lastTimestamp:s,durationMs:_&&Number.isFinite(_)?_:void 0,eventCount:u.length,model:a,cwd:n,totalUsage:p,status:"idle",firstUserPreview:o,lastUserPreview:r,lastAgentPreview:l,toolCallCount:c,turnCount:m,airTimeMs:w,activeSegments:h},events:u}}function R(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}let C=new Map,U=new Map;async function F(e={}){let t=e.root??D,i=await B(t),s=[];for(let e of i){let t=C.get(e.filePath);if(t&&t.mtimeMs===e.mtimeMs&&t.sizeBytes===e.sizeBytes){s.push(t.meta);continue}try{let t=await z(e.filePath),{meta:i}=O(e,t);C.set(e.filePath,{meta:i,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes}),s.push(i)}catch{}}return(s.sort((e,t)=>(t.firstTimestamp??"").localeCompare(e.firstTimestamp??"")),void 0!==e.limit)?s.slice(0,e.limit):s}async function J(e,t={}){let i=t.root??D,s=(await B(i)).find(t=>t.sessionId===e);if(!s)return null;let n=U.get(s.filePath);if(n&&n.mtimeMs===s.mtimeMs&&n.sizeBytes===s.sizeBytes)return n.detail;let a=await z(s.filePath),{meta:o,events:r}=O(s,a),l={...o,events:r};return U.set(s.filePath,{detail:l,mtimeMs:s.mtimeMs,sizeBytes:s.sizeBytes}),l}async function q(e={}){let t=e.root??D,i=await B(t);if(0===i.length)return null;for(let e of(i.sort((e,t)=>t.mtimeMs-e.mtimeMs),i)){let t=await z(e.filePath);for(let i=t.length-1;i>=0;i--){let s=t[i];if("object"!=typeof s||null===s||"event_msg"!==s.type)continue;let n=s.payload??{};if("token_count"!==n.type)continue;let a=n.rate_limits??null;if(!a)continue;let o=a.primary??null,r=a.secondary??null,l=R(o?.used_percent),u=R(r?.used_percent),p=R(o?.resets_at),c=R(r?.resets_at),m="string"==typeof a.plan_type?a.plan_type:null;return{five_hour:{utilization:l??null,resets_at:void 0!==p?new Date(1e3*p).toISOString():null},seven_day:{utilization:u??null,resets_at:void 0!==c?new Date(1e3*c).toISOString():null},plan_type:m,source_path:e.filePath}}}return null}let E=[P,{...n.CODEX_METADATA,defaultRoot:D,listSessions:async e=>F(e),getSession:async e=>J(e),async usagePoller(){let e=await q();return e?{captured_at:new Date().toISOString(),agent:"codex",five_hour:e.five_hour,seven_day:e.seven_day}:null}}];async function L(e){for(let t of E){let i=await t.getSession(e);if(i)return i}return null}s.default.join(i.default.homedir(),".cclens","usage.jsonl"),e.s(["getAnySession",0,L,"invalidateFile",0,function(e){_(e)}],43427)}];
|
|
1
|
+
module.exports=[43427,20629,e=>{"use strict";var t=e.i(2157),i=e.i(60526),s=e.i(50227),n=e.i(39587);let a={input:0,output:0,cacheRead:0,cacheWrite:0};function o(e,t=200){let i=e.replace(/<[^>]+>/g,"").replace(/\s+/g," ").trim();return i.length>t?i.slice(0,t-1)+"…":i}let r=/^\s*<teammate-message\s+teammate_id="([^"]+)"[^>]*>([\s\S]*?)<\/teammate-message>/;function l(e){let t=e.match(r);if(!t)return;let i=t[1],s=t[2].trim(),n="message";if(s.startsWith("{"))try{let e=JSON.parse(s);"idle_notification"===e.type?n="idle-notification":"shutdown_request"===e.type?n="shutdown-request":"shutdown_approved"===e.type?n="shutdown-approved":"task_assignment"===e.type?n="task-assignment":"teammate_terminated"===e.type&&(n="teammate-terminated")}catch{}return{teammateId:i,body:s,kind:n}}function u(e){if(!e||"object"!=typeof e)return;let t=e=>"number"==typeof e?e:0;return{input:t(e.input_tokens),output:t(e.output_tokens),cacheRead:t(e.cache_read_input_tokens),cacheWrite:t(e.cache_creation_input_tokens)}}function p(e){let t,i,s,n,r,p,m,c,f=[];for(let t=0;t<e.length;t++){let i=function(e,t){if(!e||"object"!=typeof e)return null;let i=String(e.type??""),s=e.uuid,n=e.parentUuid??null,a=e.timestamp;if("assistant"===i){let r,l,p,m=e.message??{},c=m.content??[],f=u(m.usage),d=m.model,g=e.requestId,y=m.id,h=m.stop_reason,w=c[0],M="agent";return w?.type==="thinking"?(M="agent-thinking",r="[thinking] "+o(w.thinking,140)):w?.type==="tool_use"?(M="tool-call",l=w.name,p=w.id,r=`${w.name} `+o(JSON.stringify(w.input??{}),100)):r=w?.type==="text"?o(w.text,200):`<assistant:${w?.type??"empty"}>`,{index:t,uuid:s,parentUuid:n,timestamp:a,role:M,rawType:i,preview:r,blocks:c,usage:f,model:d,requestId:g,messageId:y,stopReason:h,toolName:l,toolUseId:p,raw:e}}if("user"===i){let r=(e.message??{}).content;if("string"==typeof r){let u=l(r);return{index:t,uuid:s,parentUuid:n,timestamp:a,role:"user",rawType:i,preview:o(r,200),blocks:[{type:"text",text:r}],raw:e,teammateMessage:u}}if(Array.isArray(r)){let u=r[0];if(u?.type==="tool_result")return{index:t,uuid:s,parentUuid:n,timestamp:a,role:"tool-result",rawType:i,preview:o("string"==typeof u.content?u.content:JSON.stringify(u.content),200),blocks:r,toolUseId:u.tool_use_id,toolResult:e.toolUseResult,raw:e};let p=r.find(e=>e?.type==="text"),m=p?l(p.text):void 0;return{index:t,uuid:s,parentUuid:n,timestamp:a,role:"user",rawType:i,preview:p?o(p.text,200):o(JSON.stringify(r),200),blocks:r,raw:e,teammateMessage:m}}}if("attachment"===i){let r=e.attachment??{},l=String(r.type??"attachment"),u=`<attachment: ${l}>`;return"string"==typeof r.content&&r.content.length>0?u=`[${l}] `+o(r.content,140):Array.isArray(r.addedNames)&&(u=`[${l}] +${r.addedNames.length} names`),{index:t,uuid:s,parentUuid:n,timestamp:a,role:"system",rawType:i,preview:u,blocks:[{type:"text",text:JSON.stringify(r,null,2)}],attachmentType:l,raw:e}}return{index:t,uuid:s,parentUuid:n,timestamp:a,role:"meta",rawType:i||"unknown",preview:`${i}: ${o(JSON.stringify(e),140)}`,blocks:[{type:"text",text:JSON.stringify(e,null,2)}],raw:e}}(e[t],t);i&&f.push(i)}let d=f.map(e=>e.timestamp?Date.parse(e.timestamp):void 0).filter(e=>"number"==typeof e&&!Number.isNaN(e)),g=d.length?Math.min(...d):void 0,y=d.length?Math.max(...d):void 0,h=void 0!==g?new Date(g).toISOString():void 0,w=void 0!==y?new Date(y).toISOString():void 0;for(let e of f){if(!e.timestamp)continue;let t=Date.parse(e.timestamp);Number.isNaN(t)||void 0!==g&&(e.tOffsetMs=Math.max(0,t-g))}let M=f.filter(e=>{let t;return e.timestamp&&("user"===(t=e.role)||"agent"===t||"agent-thinking"===t||"tool-call"===t||"tool-result"===t)}).map(e=>({e,ms:Date.parse(e.timestamp)})).filter(e=>!Number.isNaN(e.ms)).sort((e,t)=>e.ms-t.ms);for(let e=1;e<M.length;e++)M[e].e.gapMs=Math.max(0,M[e].ms-M[e-1].ms);let v=f.filter(e=>e.timestamp).map(e=>Date.parse(e.timestamp)).filter(e=>!Number.isNaN(e)).sort((e,t)=>e-t),_=[],k=0;if(v.length>0){let e=v[0],t=v[0];for(let i=1;i<v.length;i++){let s=v[i],n=s-t;n>18e4?(_.push({startMs:e,endMs:t}),e=s):n>0&&(k+=n),t=s}_.push({startMs:e,endMs:t})}let j=new Map,b=[];for(let e of f){if(!e.timestamp)continue;let t=Date.parse(e.timestamp);if(!Number.isNaN(t)){if("assistant"===e.rawType&&e.usage&&e.messageId){let i=j.get(e.messageId);i?(i.siblings.push(e),t<i.ms&&(i.rep=e,i.ms=t)):j.set(e.messageId,{rep:e,ms:t,siblings:[e]})}else if("system"===e.rawType){let i=e.raw;if(i?.subtype!=="compact_boundary")continue;let s=i.compactMetadata??{};b.push({ms:t,trigger:"manual"===s.trigger?"manual":"auto",preTokens:"number"==typeof s.preTokens?s.preTokens:0})}}}let x=[...j.values()].sort((e,t)=>e.ms-t.ms);b.sort((e,t)=>e.ms-t.ms);let N=0,T=0,I=(e,t)=>{for(let i of e.siblings)i.coldResume=t;N++,T+=t.writeTokens},P=new Set;for(let e of b){let t,i=x.find(t=>t.ms>e.ms&&(t.rep.usage?.cacheWrite??0)>=1e3);if(!i)continue;for(let i=x.length-1;i>=0;i--)if(x[i].ms<=e.ms){t=x[i].ms;break}let s=i.rep.usage,n=s.cacheWrite+s.cacheRead;I(i,{trigger:"compact",gapMs:void 0!==t?i.ms-t:0,writeTokens:s.cacheWrite,writeRatio:n>0?s.cacheWrite/n:0,compact:{trigger:e.trigger,preTokens:e.preTokens}}),P.add(i.rep.messageId)}for(let e=1;e<x.length;e++){let t=x[e-1],i=x[e];if(P.has(i.rep.messageId))continue;let s=i.rep.usage,n=s.cacheWrite+s.cacheRead,a=n>0?s.cacheWrite/n:0,o=i.ms-t.ms;o>3e5&&s.cacheWrite>=1e3&&a>=.3&&I(i,{trigger:"idle",gapMs:o,writeTokens:s.cacheWrite,writeRatio:a})}let S={...a},D=new Set,$="",B=!1,z=!1,W=0,O=0,A=0,R=0,C=new Set;for(let e of f){if("tool-call"===e.role){W++;let t=e.blocks.find(e=>e&&"tool_use"===e.type);if(t){let e=t.input??{};if("TeamCreate"===t.name&&(B=!0),"SendMessage"===t.name){let t="string"==typeof e.to?e.to:"";t&&"team-lead"!==t&&(z=!0)}let i="string"==typeof e.file_path?e.file_path:void 0;if("Edit"===t.name&&i){C.add(i);let t="string"==typeof e.old_string?e.old_string:"",s="string"==typeof e.new_string?e.new_string:"",n=t?t.split("\n").length:0,a=s?s.split("\n").length:0;A+=Math.max(0,a-n),R+=Math.max(0,n-a)}else if("Write"===t.name&&i){C.add(i);let t="string"==typeof e.content?e.content:"";A+=t?t.split("\n").length:0}}}if("user"===e.role){let t=e.raw?.message,i="string"==typeof t?.content?t.content:"",s=i.startsWith("<command-name>")||i.startsWith("<local-command-caveat>")||i.startsWith("Base directory for this skill:")||i.startsWith("<task-notification>"),n=void 0!==e.teammateMessage&&!r;s||n||(p||(p=e.teammateMessage?e.teammateMessage.body:e.preview),O++,c=e.preview)}"agent"===e.role&&(m=e.preview)}for(let a of e)if(a&&"object"==typeof a&&("string"!=typeof a.sessionId||$||($=a.sessionId),"string"!=typeof a.cwd||i||(i=a.cwd),"string"!=typeof a.gitBranch||s||(s=a.gitBranch),"string"!=typeof a.teamName||n||(n=a.teamName),"string"!=typeof a.agentName||r||(r=a.agentName),"assistant"===a.type)){let e=a.message;if(e){"string"!=typeof e.model||t||(t=e.model);let i="string"==typeof e.id?e.id:void 0,s="string"==typeof a.requestId?a.requestId:void 0,n=null!=i?`${i}:${s??""}`:void 0;if(n&&D.has(n))continue;n&&D.add(n);let o=u(e.usage);o&&(S.input+=o.input,S.output+=o.output,S.cacheRead+=o.cacheRead,S.cacheWrite+=o.cacheWrite)}}return{events:f,meta:{sessionId:$,firstTimestamp:h,lastTimestamp:w,durationMs:void 0!==g&&void 0!==y?y-g:void 0,eventCount:f.length,model:t,cwd:i,gitBranch:s,totalUsage:S,status:"idle",firstUserPreview:p,lastUserPreview:c,lastAgentPreview:m,toolCallCount:W,turnCount:O,airTimeMs:k,activeSegments:_,linesAdded:A,linesRemoved:R,filesEdited:C.size,coldResumeCount:N,cacheRebuildTokens:T,teamName:n,agentName:r,isTeamLead:void 0!==n&&void 0===r&&(B||z)}}}let m=s.default.join(i.default.homedir(),".claude","projects");function c(e){return e.startsWith("-")?"/"+e.slice(1).replace(/-/g,"/"):e}async function f(e){let i=await t.promises.readFile(e,"utf8"),s=[];for(let e of i.split("\n")){let t=e.trim();if(t)try{s.push(JSON.parse(t))}catch{}}return s}function d(e){return e.replace(/\.jsonl$/i,"")}let g=new Map,y=new Map,h=new Map,w=null;function M(e){g.delete(e),y.delete(e),h.delete(e),w=null}async function v(e=m){let i;if(w&&w.root===e&&Date.now()-w.capturedAtMs<1e3)return w.files;try{i=await t.promises.readdir(e,{withFileTypes:!0})}catch{return[]}let n=i.filter(e=>e.isDirectory()).map(e=>e.name),a=(await Promise.all(n.map(async i=>{let n,a=s.default.join(e,i);try{n=await t.promises.readdir(a)}catch{return[]}let o=n.filter(e=>e.endsWith(".jsonl"));return(await Promise.all(o.map(async e=>{let n=s.default.join(a,e);try{let s=await t.promises.stat(n);return{projectDir:i,fileName:e,fullPath:n,mtimeMs:s.mtimeMs,sizeBytes:s.size}}catch{return null}}))).filter(e=>null!==e)}))).flat();return w={files:a,capturedAtMs:Date.now(),root:e},a}let _={input:0,output:0,cacheRead:0,cacheWrite:0};function k(e,t,i){for(let s of e){if(!s||"object"!=typeof s||"assistant"!==s.type)continue;let e=s.message;if(!e)continue;let n="string"==typeof e.id?e.id:void 0,a="string"==typeof s.requestId?s.requestId:void 0,o=null!=n&&null!=a?`${n}:${a}`:void 0;if(o&&t.has(o))continue;o&&t.add(o);let r=e.usage;if(r){let e=e=>"number"==typeof e?e:0;i.input+=e(r.input_tokens),i.output+=e(r.output_tokens),i.cacheRead+=e(r.cache_read_input_tokens),i.cacheWrite+=e(r.cache_creation_input_tokens)}}}async function j(e,i,n){let a,o={..._},r=new Set;k(e,r,o);let l=s.default.join(i,n,"subagents");try{a=await t.promises.readdir(l)}catch{return o}let u=a.filter(e=>e.endsWith(".jsonl"));return 0===u.length||await Promise.all(u.map(async e=>{try{let t=await f(s.default.join(l,e));k(t,r,o)}catch{}})),o}async function b(e){let t=g.get(e.fullPath);if(t&&t.mtimeMs===e.mtimeMs&&t.sizeBytes===e.sizeBytes)return t.meta;try{let t=await f(e.fullPath),{meta:i}=p(t),n=d(e.fileName),a=s.default.dirname(e.fullPath);i.totalUsage=await j(t,a,n);let o={...i,id:n,filePath:e.fullPath,projectDir:e.projectDir,projectName:i.cwd??c(e.projectDir)};return g.set(e.fullPath,{meta:o,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes}),o}catch{return null}}async function x(e){let t=y.get(e.fullPath);if(t&&t.mtimeMs===e.mtimeMs&&t.sizeBytes===e.sizeBytes)return t.detail;try{let t=await f(e.fullPath),{meta:i,events:s}=p(t),n={...i,id:d(e.fileName),filePath:e.fullPath,projectDir:e.projectDir,projectName:i.cwd??c(e.projectDir),events:s};y.set(e.fullPath,{detail:n,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes});let a={...n};return delete a.events,g.set(e.fullPath,{meta:a,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes}),n}catch{return null}}async function N(e={}){let{root:t=m,limit:i=500,projectDir:s}=e,n=await v(t);s&&(n=n.filter(e=>e.projectDir===s)),n.sort((e,t)=>t.mtimeMs-e.mtimeMs);let a=n.slice(0,i);return(await Promise.all(a.map(e=>b(e)))).filter(e=>null!==e)}async function T(e,t={}){let{root:i=m}=t,n=(await v(i)).find(t=>d(t.fileName)===e);if(!n)return null;let a=await x(n);if(!a)return a;let o=a.firstTimestamp?Date.parse(a.firstTimestamp):void 0,r=s.default.join(s.default.dirname(n.fullPath),d(n.fileName),"subagents"),l=await I(r,o,a.events);return{...a,subagents:l}}async function I(e,i,n){let a;try{a=await t.promises.readdir(e)}catch{return[]}let o=new Map,r=[];for(let e of n)if("tool-call"===e.role&&"Agent"===e.toolName)for(let t of e.blocks){if(t?.type!=="tool_use"||"Agent"!==t.name)continue;let i=t.input??{},s="string"==typeof i.description?i.description:void 0,n=e.timestamp?Date.parse(e.timestamp):void 0,a={toolUseId:t.id,parentUuid:e.uuid??"",runInBackground:!0===i.run_in_background,prompt:"string"==typeof i.prompt?i.prompt:void 0,tsMs:n};s&&o.set(s,a),void 0!==n&&r.push(a)}r.sort((e,t)=>(e.tsMs??0)-(t.tsMs??0));let l=a.filter(e=>e.startsWith("agent-")&&e.endsWith(".jsonl"));return(await Promise.all(l.map(async n=>{let a,l=n.replace(/^agent-/,"").replace(/\.jsonl$/,""),u=s.default.join(e,n),p=s.default.join(e,`agent-${l}.meta.json`),m={};try{let e=await t.promises.readFile(p,"utf8");m=JSON.parse(e)}catch{}try{a=await f(u)}catch{return null}let c=function(e){let t,i,s,n,a,o={..._},r=new Set,l=0,u=0,p=0,m=new Map;for(let c of e){if(!c||"object"!=typeof c)continue;l++;let e="string"==typeof c.timestamp?Date.parse(c.timestamp):NaN;if(!Number.isNaN(e)&&((void 0===t||e<t)&&(t=e),(void 0===i||e>i)&&(i=e)),void 0===a&&"user"===c.type&&(null===c.parentUuid||void 0===c.parentUuid)){let e=c.message,t=e?.content;if("string"==typeof t)a=t;else if(Array.isArray(t)){let e=t.find(e=>e&&"object"==typeof e&&"text"===e.type);e?.text&&(a=e.text)}}if("assistant"===c.type){let e=c.message;if(!e)continue;n||"string"!=typeof e.model||(n=e.model);let t="string"==typeof e.id?e.id:void 0,i="string"==typeof c.requestId?c.requestId:void 0,a=null!=t&&null!=i?`${t}:${i}`:void 0,l=!a||!r.has(a);if(a&&l&&r.add(a),l){u++;let t=e.usage;if(t){let e=e=>"number"==typeof e?e:0;o.input+=e(t.input_tokens),o.output+=e(t.output_tokens),o.cacheRead+=e(t.cache_read_input_tokens),o.cacheWrite+=e(t.cache_creation_input_tokens)}}let f=e.content;if(Array.isArray(f))for(let e of f)e&&"object"==typeof e&&("text"===e.type&&"string"==typeof e.text?s=e.text:"tool_use"===e.type&&"string"==typeof e.name&&(p++,m.set(e.name,(m.get(e.name)??0)+1)))}}let c=Array.from(m.entries()).map(([e,t])=>({name:e,count:t})).sort((e,t)=>t.count-e.count);return{startMs:t,endMs:i,totalUsage:o,eventCount:l,finalPreview:void 0!==s?s.replace(/\s+/g," ").trim().slice(0,240):void 0,finalText:s,model:n,toolCalls:c,toolCallCount:p,assistantMessageCount:u,initialPrompt:a}}(a),d=m.description&&m.description.trim().length>0?m.description:void 0,g=d?o.get(d):function(e){let t;if(void 0===e)return;let i=1/0;for(let s of r){if(void 0===s.tsMs)continue;let n=Math.abs(e-s.tsMs);n<i&&n<=2e3&&(t=s,i=n)}return t}(c.startMs),y=d??(c.initialPrompt?c.initialPrompt.replace(/\s+/g," ").trim().slice(0,80):"(no description)"),h=g?.prompt??c.initialPrompt,w=void 0!==i&&void 0!==c.startMs?Math.max(0,c.startMs-i):void 0,M=void 0!==i&&void 0!==c.endMs?Math.max(0,c.endMs-i):void 0,v=void 0!==c.startMs&&void 0!==c.endMs?c.endMs-c.startMs:void 0;return{agentId:l,agentType:m.agentType??"unknown",description:y,startMs:c.startMs,endMs:c.endMs,durationMs:v,startTOffsetMs:w,endTOffsetMs:M,eventCount:c.eventCount,totalUsage:c.totalUsage,parentUuid:g?.parentUuid,parentToolUseId:g?.toolUseId,runInBackground:g?.runInBackground,prompt:h,finalPreview:c.finalPreview,finalText:c.finalText,model:c.model,toolCalls:c.toolCalls,toolCallCount:c.toolCallCount,assistantMessageCount:c.assistantMessageCount}}))).filter(e=>null!==e).sort((e,t)=>(e.startMs??0)-(t.startMs??0))}let P={...n.CLAUDE_CODE_METADATA,defaultRoot:m,async listSessions(e){let t=await N(e);for(let e of t)e.agent||(e.agent="claude-code");return t},async getSession(e,t){let i=await T(e,t);return i&&!i.agent&&(i.agent="claude-code"),i}};e.s(["DEFAULT_ROOT",0,m,"claudeCodeSource",0,P,"getSession",0,T,"invalidateClaudeCodeFile",0,M,"listSessions",0,N],20629);var S=e.i(79357);let D=s.default.join(i.default.homedir(),".codex","sessions"),$=/^rollout-(\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2})-([0-9a-f-]+)\.jsonl$/;async function B(e){return t.promises.readdir(e).catch(()=>[])}async function z(e){let i=[];for(let n of(await B(e))){if(!/^\d{4}$/.test(n))continue;let a=s.default.join(e,n);for(let e of(await B(a))){if(!/^\d{2}$/.test(e))continue;let n=s.default.join(a,e);for(let e of(await B(n))){if(!/^\d{2}$/.test(e))continue;let a=s.default.join(n,e);for(let e of(await B(a))){let n=$.exec(e);if(!n)continue;let o=s.default.join(a,e),r=await t.promises.stat(o).catch(()=>null);r&&i.push({filePath:o,sessionId:n[2],mtimeMs:r.mtimeMs,sizeBytes:r.size})}}}}return i}async function W(e){let i=await t.promises.readFile(e,"utf8"),s=[];for(let e of i.split("\n")){let t=e.trim();if(t)try{s.push(JSON.parse(t))}catch{}}return s}function O(e){return e.replace(/\s+/g," ").trim().slice(0,200)}function A(e,t){let i,s,n,a,o,r,l,u=[],p={input:0,output:0,cacheRead:0,cacheWrite:0},m=0,c=0,f=[],d=0;for(let e of t){if("object"!=typeof e||null===e)continue;let t="string"==typeof e.timestamp?e.timestamp:void 0;if(t){i||(i=t),s=t;let e=Date.parse(t);Number.isFinite(e)&&f.push(e)}let y="string"==typeof e.type?e.type:"",h=e.payload??{},w="string"==typeof h.type?h.type:"";if("session_meta"===y){"string"==typeof h.cwd&&(n=h.cwd);continue}if("turn_context"===y){"string"==typeof h.cwd&&(n=h.cwd),"string"==typeof h.model&&(a=h.model);continue}if("event_msg"===y&&"token_count"===w){let e=h.info??null,t=e?.total_token_usage??null;t&&(p.input=R(t.input_tokens)??p.input,p.output=R(t.output_tokens)??p.output,p.cacheRead=R(t.cached_input_tokens)??p.cacheRead);continue}if("event_msg"===y&&"user_message"===w){let i="string"==typeof h.message?h.message:"",s=O(i);i&&(o||(o=s),r=s,c+=1),u.push({index:d++,timestamp:t,role:"user",rawType:"event_msg/user_message",preview:s,blocks:i?[{type:"text",text:i}]:[],raw:e});continue}if("event_msg"===y&&"agent_message"===w){let i="string"==typeof h.message?h.message:"",s=O(i);i&&(l=s),u.push({index:d++,timestamp:t,role:"agent",rawType:"event_msg/agent_message",preview:s,blocks:i?[{type:"text",text:i}]:[],model:a,raw:e});continue}if("response_item"===y&&"reasoning"===w){let i=(h.summary??[]).map(e=>"string"==typeof e.text?e.text:"").join("\n").trim();u.push({index:d++,timestamp:t,role:"agent-thinking",rawType:"response_item/reasoning",preview:O(i),blocks:i?[{type:"thinking",thinking:i}]:[],model:a,raw:e});continue}if("response_item"===y&&"message"===w&&"assistant"===h.role){let i=(h.content??[]).map(e=>"string"==typeof e.text?e.text:"").join("\n").trim(),s=O(i);i&&(l=s),u.push({index:d++,timestamp:t,role:"agent",rawType:"response_item/message",preview:s,blocks:i?[{type:"text",text:i}]:[],model:a,raw:e});continue}if("response_item"===y&&"function_call"===w){var g;let i="string"==typeof h.name?h.name:"(unknown)",s="string"==typeof h.call_id?h.call_id:void 0,n="string"==typeof h.arguments?h.arguments:"",o=function(e){if(!e)return null;try{return JSON.parse(e)}catch{return e}}(n);m+=1,u.push({index:d++,timestamp:t,role:"tool-call",rawType:"response_item/function_call",preview:`${i}(${(g=n).length<=80?g:g.slice(0,79)+"…"})`,blocks:[{type:"tool_use",id:s??`codex-${d}`,name:i,input:o}],toolName:i,toolUseId:s,model:a,raw:e});continue}if("response_item"===y&&"function_call_output"===w){let i="string"==typeof h.call_id?h.call_id:void 0,s="string"==typeof h.output?h.output:"",n=/process exited with code [1-9]/i.test(s);u.push({index:d++,timestamp:t,role:"tool-result",rawType:"response_item/function_call_output",preview:O(s),blocks:[{type:"tool_result",tool_use_id:i??"",content:s,is_error:n}],toolUseId:i,toolResult:s,raw:e});continue}u.push({index:d++,timestamp:t,role:"meta",rawType:w?`${y}/${w}`:y,preview:"",blocks:[],raw:e})}if(p.input>0||p.output>0){let t=-1;for(let e=u.length-1;e>=0;e--){let i=u[e].role;if("agent"===i||"agent-thinking"===i||"tool-call"===i){t=e;break}}if(t>=0){let i=u[t];i.messageId=`codex-${e.sessionId}-total`,i.usage={input:p.input,output:p.output,cacheRead:p.cacheRead,cacheWrite:0}}}let y=i?Date.parse(i):void 0;if(void 0!==y&&Number.isFinite(y)){let e;for(let t of u){if(!t.timestamp)continue;let i=Date.parse(t.timestamp);Number.isFinite(i)&&(t.tOffsetMs=Math.max(0,i-y),void 0!==e&&(t.gapMs=Math.max(0,i-e)),e=i)}}let h=function(e){if(0===e.length)return[];let t=[...e].sort((e,t)=>e-t),i=[],s=t[0],n=t[0];for(let e=1;e<t.length;e++)t[e]-n>18e4&&(i.push({startMs:s,endMs:n}),s=t[e]),n=t[e];return i.push({startMs:s,endMs:n}),i}(f),w=h.reduce((e,t)=>e+(t.endMs-t.startMs),0),M=i&&s?Date.parse(s)-Date.parse(i):void 0,v=n?(0,S.canonicalProjectName)(n):"(unknown)",_=n?n.replace(/^\//,"-").replace(/\//g,"-"):"(unknown)";return{meta:{agent:"codex",id:e.sessionId,filePath:e.filePath,projectName:v,projectDir:_,sessionId:e.sessionId,firstTimestamp:i,lastTimestamp:s,durationMs:M&&Number.isFinite(M)?M:void 0,eventCount:u.length,model:a,cwd:n,totalUsage:p,status:"idle",firstUserPreview:o,lastUserPreview:r,lastAgentPreview:l,toolCallCount:m,turnCount:c,airTimeMs:w,activeSegments:h},events:u}}function R(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}let C=new Map,U=new Map;async function F(e={}){let t=e.root??D,i=await z(t),s=[];for(let e of i){let t=C.get(e.filePath);if(t&&t.mtimeMs===e.mtimeMs&&t.sizeBytes===e.sizeBytes){s.push(t.meta);continue}try{let t=await W(e.filePath),{meta:i}=A(e,t);C.set(e.filePath,{meta:i,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes}),s.push(i)}catch{}}return(s.sort((e,t)=>(t.firstTimestamp??"").localeCompare(e.firstTimestamp??"")),void 0!==e.limit)?s.slice(0,e.limit):s}async function J(e,t={}){let i=t.root??D,s=(await z(i)).find(t=>t.sessionId===e);if(!s)return null;let n=U.get(s.filePath);if(n&&n.mtimeMs===s.mtimeMs&&n.sizeBytes===s.sizeBytes)return n.detail;let a=await W(s.filePath),{meta:o,events:r}=A(s,a),l={...o,events:r};return U.set(s.filePath,{detail:l,mtimeMs:s.mtimeMs,sizeBytes:s.sizeBytes}),l}async function E(e={}){let t=e.root??D,i=await z(t);if(0===i.length)return null;for(let e of(i.sort((e,t)=>t.mtimeMs-e.mtimeMs),i)){let t=await W(e.filePath);for(let i=t.length-1;i>=0;i--){let s=t[i];if("object"!=typeof s||null===s||"event_msg"!==s.type)continue;let n=s.payload??{};if("token_count"!==n.type)continue;let a=n.rate_limits??null;if(!a)continue;let o=a.primary??null,r=a.secondary??null,l=R(o?.used_percent),u=R(r?.used_percent),p=R(o?.resets_at),m=R(r?.resets_at),c="string"==typeof a.plan_type?a.plan_type:null;return{five_hour:{utilization:l??null,resets_at:void 0!==p?new Date(1e3*p).toISOString():null},seven_day:{utilization:u??null,resets_at:void 0!==m?new Date(1e3*m).toISOString():null},plan_type:c,source_path:e.filePath}}}return null}let q=s.default.join(i.default.homedir(),".gemini","tmp"),H=s.default.join(i.default.homedir(),".gemini","projects.json"),L=/^session-.+\.(jsonl|json)$/;async function G(e){return t.promises.readdir(e).catch(()=>[])}async function X(e){let i=[];for(let n of(await G(e))){let a=s.default.join(e,n,"chats");for(let e of(await G(a))){if(!L.test(e))continue;let o=s.default.join(a,e),r=await t.promises.stat(o).catch(()=>null);if(!r||!r.isFile())continue;let l=e.replace(/\.(jsonl|json)$/,"").split("-").pop()??e;i.push({filePath:o,slug:n,filenameId:l,format:e.endsWith(".jsonl")?"jsonl":"legacy-json",mtimeMs:r.mtimeMs,sizeBytes:r.size})}}return i}let K=null;async function Q(){let e,i=await t.promises.stat(H).catch(()=>null);if(!i)return new Map;if(K&&K.mtimeMs===i.mtimeMs)return K.slugToCwd;let s=await t.promises.readFile(H,"utf8").catch(()=>"");try{e=JSON.parse(s)}catch{e={}}let n=new Map;for(let[t,i]of Object.entries(e.projects??{}))"string"==typeof i&&n.set(i,t);return K={mtimeMs:i.mtimeMs,slugToCwd:n},n}function V(e){return!!e&&"object"==typeof e&&"string"==typeof e.id&&"string"==typeof e.type}async function Y(e){let i=await t.promises.readFile(e.filePath,"utf8");if("legacy-json"===e.format){let e;try{e=JSON.parse(i)}catch{return{meta:{},messages:[]}}return{meta:{sessionId:"string"==typeof e.sessionId?e.sessionId:void 0,projectHash:"string"==typeof e.projectHash?e.projectHash:void 0,startTime:"string"==typeof e.startTime?e.startTime:void 0,lastUpdated:"string"==typeof e.lastUpdated?e.lastUpdated:void 0,summary:"string"==typeof e.summary?e.summary:void 0},messages:(Array.isArray(e.messages)?e.messages:[]).filter(V)}}let s={},n=new Map,a=[];for(let e of i.split("\n")){let t,i=e.trim();if(i){var o,r;try{t=JSON.parse(i)}catch{continue}if((o=t)&&"object"==typeof o&&"$rewindTo"in o){let e=t.$rewindTo,i=a.indexOf(e);if(i>=0){for(let e of a.slice(i))n.delete(e);a.length=i}continue}if((r=t)&&"object"==typeof r&&"$set"in r){Object.assign(s,t.$set);continue}if(V(t)){n.has(t.id)||a.push(t.id),n.set(t.id,t);continue}if("object"==typeof t&&null!==t){let e=t;"string"!=typeof e.sessionId||s.sessionId||(s.sessionId=e.sessionId,"string"==typeof e.projectHash&&(s.projectHash=e.projectHash),"string"==typeof e.startTime&&(s.startTime=e.startTime),"string"==typeof e.lastUpdated&&(s.lastUpdated=e.lastUpdated),"string"==typeof e.summary&&(s.summary=e.summary))}}}let l=[];for(let e of a){let t=n.get(e);t&&l.push(t)}return{meta:s,messages:l}}function Z(e){return e.replace(/\s+/g," ").trim().slice(0,200)}function ee(e){if(!e)return"";if("string"==typeof e)return e;let t=Array.isArray(e)?e:[e],i=[];for(let e of t){if(!e||"object"!=typeof e)continue;if("string"==typeof e.text){i.push(e.text);continue}let t=e.functionResponse;if(t){let e=t.response;"string"==typeof e?i.push(e):e&&"object"==typeof e&&("string"==typeof e.output?i.push(e.output):"string"==typeof e.error?i.push(`error: ${e.error}`):i.push(JSON.stringify(e)))}}return i.join("\n")}async function et(e){let t,i,s,n,a,o,{meta:r,messages:l}=await Y(e),u=(await Q()).get(e.slug),p=[],m={input:0,output:0,cacheRead:0,cacheWrite:0},c=0,f=0,d=[],g=0;function y(e){if(p.push(e),e.timestamp&&"meta"!==e.role){t||(t=e.timestamp),i=e.timestamp;let s=Date.parse(e.timestamp);Number.isFinite(s)&&d.push(s)}}for(let e of l){let t=e.timestamp;if("user"===e.type){let i=ee(e.displayContent??e.content),s=Z(i);i&&(n||(n=s),a=s,f+=1),y({index:g++,timestamp:t,role:"user",rawType:"gemini/user",preview:s,blocks:i?[{type:"text",text:i}]:[],messageId:e.id,raw:e});continue}if("gemini"===e.type){let i;"string"==typeof e.model&&(s=e.model);let n=ee(e.content),a=Z(n);if(n&&(o=a),e.tokens){let t=e.tokens,s={input:t.input??0,output:t.output??0,cacheRead:t.cached??0,cacheWrite:0};i=s,m.input+=s.input,m.output+=s.output,m.cacheRead+=s.cacheRead}for(let i of e.thoughts??[]){let e=[i.subject,i.description].filter(Boolean).join(": ");e&&y({index:g++,timestamp:i.timestamp??t,role:"agent-thinking",rawType:"gemini/thought",preview:Z(e),blocks:[{type:"thinking",thinking:e}],model:s,raw:i})}for(let o of(n?y({index:g++,timestamp:t,role:"agent",rawType:"gemini/agent",preview:a,blocks:[{type:"text",text:n}],messageId:e.id,model:s,usage:i,raw:e}):i&&y({index:g++,timestamp:t,role:"agent",rawType:"gemini/agent",preview:"",blocks:[],messageId:e.id,model:s,usage:i,raw:e}),e.toolCalls??[])){c+=1;let e=o.args?JSON.stringify(o.args):"";y({index:g++,timestamp:o.timestamp??t,role:"tool-call",rawType:"gemini/tool_call",preview:`${o.name}(${e.length<=80?e:e.slice(0,79)+"…"})`,blocks:[{type:"tool_use",id:o.id,name:o.name,input:o.args??{}}],toolName:o.name,toolUseId:o.id,model:s,raw:o});let i=(o.status??"").toLowerCase();if("success"===i||"error"===i||"cancelled"===i){let e=ee(o.result);y({index:g++,timestamp:o.timestamp??t,role:"tool-result",rawType:"gemini/tool_result",preview:Z(e),blocks:[{type:"tool_result",tool_use_id:o.id,content:e,is_error:"error"===i||"cancelled"===i}],toolUseId:o.id,toolResult:e,raw:o})}}continue}if("info"===e.type||"warning"===e.type||"error"===e.type){let i=ee(e.content);y({index:g++,timestamp:t,role:"meta",rawType:`gemini/${e.type}`,preview:Z(i),blocks:i?[{type:"text",text:i}]:[],raw:e});continue}}let h=t?Date.parse(t):void 0;if(void 0!==h&&Number.isFinite(h)){let e;for(let t of p){if(!t.timestamp)continue;let i=Date.parse(t.timestamp);Number.isFinite(i)&&(t.tOffsetMs=Math.max(0,i-h),void 0!==e&&(t.gapMs=Math.max(0,i-e)),e=i)}}let w=function(e){if(0===e.length)return[];let t=[...e].sort((e,t)=>e-t),i=[],s=t[0],n=t[0];for(let e=1;e<t.length;e++)t[e]-n>18e4&&(i.push({startMs:s,endMs:n}),s=t[e]),n=t[e];return i.push({startMs:s,endMs:n}),i}(d),M=w.reduce((e,t)=>e+(t.endMs-t.startMs),0),v=t&&i?Date.parse(i)-Date.parse(t):void 0,_=r.sessionId??e.filenameId,k=u?(0,S.canonicalProjectName)(u):e.slug,j=u?u.replace(/^\//,"-").replace(/\//g,"-"):e.slug;return{meta:{agent:"gemini",id:_,filePath:e.filePath,projectName:k,projectDir:j,sessionId:_,firstTimestamp:t,lastTimestamp:i,durationMs:v&&Number.isFinite(v)?v:void 0,eventCount:p.length,model:s,cwd:u,totalUsage:m,status:"idle",firstUserPreview:n,lastUserPreview:a,lastAgentPreview:o,toolCallCount:c,turnCount:f,airTimeMs:M,activeSegments:w},events:p}}let ei=new Map,es=new Map;async function en(e={}){let t=e.root??q,i=await X(t),s=[];for(let e of i){let t=ei.get(e.filePath);if(t&&t.mtimeMs===e.mtimeMs&&t.sizeBytes===e.sizeBytes){s.push(t.meta);continue}try{let{meta:t}=await et(e);ei.set(e.filePath,{meta:t,mtimeMs:e.mtimeMs,sizeBytes:e.sizeBytes}),s.push(t)}catch{}}return(s.sort((e,t)=>(t.firstTimestamp??"").localeCompare(e.firstTimestamp??"")),void 0!==e.limit)?s.slice(0,e.limit):s}async function ea(e,t={}){let i,s=t.root??q,n=await X(s);for(let t of n)if(t.filenameId===e||e.startsWith(t.filenameId)){i=t;break}if(!i)for(let t of n){let{meta:s}=await et(t).catch(()=>({meta:{id:""}}));if(s.id===e){i=t;break}}if(!i)return null;let a=es.get(i.filePath);if(a&&a.mtimeMs===i.mtimeMs&&a.sizeBytes===i.sizeBytes)return a.detail;let{meta:o,events:r}=await et(i),l={...o,events:r};return es.set(i.filePath,{detail:l,mtimeMs:i.mtimeMs,sizeBytes:i.sizeBytes}),l}let eo=[P,{...n.CODEX_METADATA,defaultRoot:D,listSessions:async e=>F(e),getSession:async e=>J(e),async usagePoller(){let e=await E();return e?{captured_at:new Date().toISOString(),agent:"codex",five_hour:e.five_hour,seven_day:e.seven_day}:null}},{...n.GEMINI_METADATA,defaultRoot:q,listSessions:async e=>en(e),getSession:async e=>ea(e)}];async function er(e){for(let t of eo){let i=await t.getSession(e);if(i)return i}return null}s.default.join(i.default.homedir(),".cclens","usage.jsonl"),e.s(["getAnySession",0,er,"invalidateFile",0,function(e){M(e)}],43427)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=packages_parser_dist_fs_122oe0-.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},42602,(a,b,c)=>{"use strict";b.exports=a.r(18622)},72131,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].React},87924,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactJsxRuntime},9270,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.AppRouterContext},38783,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactServerDOMTurbopackClient},36313,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.HooksClientContext},18341,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.ServerInsertedHtml},2591,a=>{"use strict";var b=a.i(72131);a.s(["usePersistentBoolean",0,function(a,c){let[d,e]=(0,b.useState)(c),[f,g]=(0,b.useState)(!1);return(0,b.useEffect)(()=>{try{let b=window.localStorage.getItem(a);"1"===b?e(!0):"0"===b&&e(!1)}catch{}g(!0)},[a]),(0,b.useEffect)(()=>{let b=b=>{let c=b.detail;c?.key===a&&"boolean"==typeof c.value&&e(c.value)},c=b=>{b.key===a&&("1"===b.newValue?e(!0):"0"===b.newValue&&e(!1))};return window.addEventListener("cclens:persistent-boolean",b),window.addEventListener("storage",c),()=>{window.removeEventListener("cclens:persistent-boolean",b),window.removeEventListener("storage",c)}},[a]),[d,(0,b.useCallback)(b=>{e(b);try{window.localStorage.setItem(a,b?"1":"0")}catch{}window.dispatchEvent(new CustomEvent("cclens:persistent-boolean",{detail:{key:a,value:b}}))},[a]),f]}])},99309,a=>{"use strict";var b=a.i(87924);a.i(99417);var c=a.i(69176);a.s(["AgentBadge",0,function({agent:a}){if(!a||"claude-code"===a)return null;let d=(0,c.getAgentMetadata)(a);return d?(0,b.jsx)("span",{style:{display:"inline-flex",alignItems:"center",borderRadius:4,padding:"2px 6px",fontSize:10,letterSpacing:"0.04em",textTransform:"uppercase",whiteSpace:"nowrap",fontWeight:600,color:d.accentColor,background:`color-mix(in srgb, ${d.accentColor} 12%, transparent)`,border:`1px solid color-mix(in srgb, ${d.accentColor} 30%, transparent)`},title:`Source: ${d.displayName}`,children:d.shortLabel}):null}])},33441,a=>{"use strict";let b=(0,a.i(70106).default)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);a.s(["Check",0,b],33441)},87532,a=>{"use strict";let b=(0,a.i(70106).default)("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);a.s(["Search",0,b],87532)},76285,a=>{"use strict";var b=a.i(87924),c=a.i(38246);let d={display:"inline-flex",alignItems:"center",borderRadius:4,padding:"2px 6px",fontSize:10,letterSpacing:"0.04em",textTransform:"uppercase",whiteSpace:"nowrap"};a.s(["TeamBadge",0,function({session:a,linkable:e=!0}){if(!a.teamName)return null;let f=!0===a.isTeamLead,g=void 0!==a.agentName;return f||g?f&&e?(0,b.jsx)(c.default,{href:`/sessions/${a.id}`,style:{...d,fontWeight:600,background:"var(--af-warning-subtle)",color:"var(--af-warning)",border:"1px solid var(--af-warning-subtle)",textDecoration:"none"},title:`Team lead — ${a.teamName}`,children:"Team Lead"}):f?(0,b.jsx)("span",{style:{...d,fontWeight:600,background:"var(--af-warning-subtle)",color:"var(--af-warning)",border:"1px solid var(--af-warning-subtle)"},title:`Team lead — ${a.teamName}`,children:"Team Lead"}):(0,b.jsx)("span",{style:{...d,fontWeight:500,background:"var(--af-surface-hover)",color:"var(--af-text-tertiary)",border:"1px solid var(--af-border-subtle)"},title:`Team member — ${a.teamName} \xb7 ${a.agentName}`,children:"Team Member"}):null}])},2913,a=>{"use strict";let b=/^##\s+\[([^\]]+)\](?:\s+[—\-–]\s+(\S+))?\s*$/,c=/^###\s+(.+?)\s*$/,d=/^[-*]\s+(.+?)\s*$/,e=function(a){let e=a.split(/\r?\n/),f=[],g=null,h=null,i=[];function j(){h&&i.length>0&&(h.bullets.push(i.join(" ").trim()),i=[])}for(let a of e){let e=b.exec(a);if(e){j(),h=null,g={version:e[1].trim(),date:e[2]?.trim()??null,sections:[]},f.push(g);continue}if(!g)continue;let k=c.exec(a);if(k){j(),h={kind:k[1].trim(),bullets:[]},g.sections.push(h);continue}let l=d.exec(a);if(l){j(),i=[l[1]];continue}i.length>0&&a.trim().length>0&&i.push(a.trim())}return j(),f}("# Changelog\n\nAll notable user-facing changes to the Fleetlens CLI (`fleetlens` on npm) are\nrecorded here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).\nThe team-server has its own log at `packages/team-server/CHANGELOG.md`.\n\n## [0.7.1] — 2026-05-07\n\n### Fixed\n- Cycle-peaks trend no longer renders two bars labeled the same day. When Anthropic's rolling 7-day window slid its anchor between consecutive polls, the daemon's bucketer (hour-rounded) recorded both reset boundaries as distinct cycles. They're now merged within a 12 h tolerance — same fix in `apps/web/lib/cycle-peaks.ts` (used by `/usage`) and in `packages/cli/src/team/sync.ts` (the daemon's team-server push), so both the personal `/usage` chart and the team-server's plan-utilization view stay consistent. 5-hour cycles keep no merge tolerance (their anchor is stable; merging would collapse legitimate distinct cycles).\n\n## [0.6.4] — 2026-05-04\n\n### Fixed\n- Cached calibration events per-file so `/usage` warm renders complete in well under a second on large session histories.\n\n## [0.6.3] — 2026-05-04\n\n### Fixed\n- Dropped poisoned auto-week locks left behind by interrupted runs; backfill now gates on the live pipeline lock instead.\n\n## [0.6.2] — 2026-05-04\n\n### Added\n- Last week's digest auto-generates on launch when AI features are on. Disable in Settings → AI features.\n\n## [0.6.1] — 2026-05-04\n\n### Changed\n- Smaller install size — published bundle no longer drags in unused workspace metadata.\n\n## [0.6.0] — 2026-04-30\n\n### Added\n- V2 perception layer. Daily, weekly, and monthly digests synthesized from per-session entries via a strict hierarchical pipeline (entry → day → week → month). Past-period digests are immutable on disk; current-period digests use a 10-min in-memory TTL.\n- `/insights` route with on-demand week and month digest generation, picker history, and force-regen.\n- `fleetlens digest day | week | month [--json]` — CLI surface that reproduces the same digests served at `/insights`.\n- `fleetlens entries [--day | --session | --all] [--json]` — inspect the per-session entry primitive.\n\n### Changed\n- Renamed \"active time\" to \"agent time\" across the dashboard and CLI for clarity.\n\n## [0.4.1] — 2026-04-23\n\n### Added\n- Concurrency view on `/parallelism` page. Bursts colored teal for same-project and purple for cross-project (the genuinely interesting fleet-work signal).\n- Plan utilization sparkline on the sidebar, fed by the usage daemon's 5-min snapshots.\n\n### Fixed\n- Auto-update no longer leaves a zombie web server on the old binary; both server and daemon are torn down before re-exec.\n\n## [0.4.0] — 2026-04-18\n\n### Added\n- Usage daemon (`fleetlens daemon …`) polls `/api/oauth/usage` every 5 min and appends snapshots to `~/.cclens/usage.jsonl`. `fleetlens start` and `fleetlens stop` manage server + daemon together.\n- `fleetlens usage --history` for inspecting past plan utilization.\n\n## [0.3.0] — 2026-04-10\n\n### Added\n- Project rollups with worktree aggregation. Sessions inside `<project>/.worktrees/<name>` roll up under their parent canonical project with a `+N wt` badge.\n- Pinned projects in the sidebar (per-browser via localStorage).\n\n## [0.2.0] — 2026-04-01\n\n### Changed\n- Active-segment computation now uses all timestamped events (system + summary + sidechain + conversational) instead of conversational-only. Earlier filter undercounted by up to 100x on tool-heavy sessions.\n\n## [0.1.0] — 2026-03-15\n\n### Added\n- Initial release. Local-only dashboard for Claude Code sessions: timeline, projects, daily activity bucketing, parallelism detection, per-model cost estimation. Reads JSONL transcripts from `~/.claude/projects/`.\n");e[0]?.version,a.s(["STORAGE_KEY",0,"cclens:changelog-last-seen"],2913)},99417,69176,a=>{"use strict";let b=[{kind:"claude-code",displayName:"Claude Code",shortLabel:"Claude",accentColor:"var(--af-accent)",iconChar:"✦"},{kind:"codex",displayName:"Codex (OpenAI)",shortLabel:"Codex",accentColor:"rgb(16, 163, 127)",iconChar:"◆"}],c=new Set(b.map(a=>a.kind));a.s(["getAgentMetadata",0,function(a){return b.find(b=>b.kind===a)},"isAgentKind",0,function(a){return"string"==typeof a&&c.has(a)}],69176),a.s([],99417)},44220,2405,a=>{"use strict";var b=a.i(87924),c=a.i(38246);a.i(99417);var d=a.i(69176);function e({agent:a,size:c=11,title:f}){if(!a)return null;let g=(0,d.getAgentMetadata)(a);return g?(0,b.jsx)("span",{"aria-hidden":!0,title:f??g.displayName,style:{display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,width:c+2,height:c+2,fontSize:c,lineHeight:1,color:g.accentColor},children:g.iconChar}):null}a.s(["AgentIcon",0,e],2405);let f={shipped:{bg:"rgba(72, 187, 120, 0.12)",fg:"#48bb78",label:"Shipped",icon:"🚀"},partial:{bg:"rgba(66, 153, 225, 0.12)",fg:"#4299e1",label:"Partial",icon:"🔨"},blocked:{bg:"rgba(245, 101, 101, 0.12)",fg:"#f56565",label:"Blocked",icon:"🚧"},exploratory:{bg:"rgba(160, 174, 192, 0.12)",fg:"#a0aec0",label:"Exploratory",icon:"🧭"},trivial:{bg:"rgba(203, 213, 224, 0.12)",fg:"#a0aec0",label:"Warmup",icon:"💤"},idle:{bg:"rgba(203, 213, 224, 0.12)",fg:"#a0aec0",label:"Idle",icon:"—"}},g={sm:{fontSize:9,padding:"1px 6px",iconGap:3,borderRadius:99},md:{fontSize:10,padding:"2px 8px",iconGap:4,borderRadius:99},lg:{fontSize:11,padding:"3px 10px",iconGap:5,borderRadius:99}},h={shipped:6,partial:5,blocked:4,exploratory:3,trivial:2,idle:1};a.s(["OUTCOME_STYLES",0,f,"OutcomePill",0,function(a){let d=g[a.size??"md"],h=d.fontSize+1;if("pending"in a&&a.pending){let f={display:"inline-flex",alignItems:"center",gap:d.iconGap,padding:d.padding,borderRadius:d.borderRadius,fontSize:d.fontSize,fontWeight:600,background:"rgba(160, 174, 192, 0.08)",color:"var(--af-text-tertiary)",border:"1px dashed var(--af-border-subtle)",textDecoration:"none",whiteSpace:"nowrap"};return(0,b.jsxs)(c.default,{href:`/digest/${a.localDay}`,style:f,title:`Generate ${a.localDay} digest →`,children:[a.agent&&(0,b.jsx)(e,{agent:a.agent,size:h}),(0,b.jsx)("span",{"aria-hidden":!0,style:{lineHeight:1},children:"⋯"}),(0,b.jsx)("span",{children:"pending"})]})}let i=f[a.outcome],j=a.label??"both",k={display:"inline-flex",alignItems:"center",gap:d.iconGap,padding:d.padding,borderRadius:d.borderRadius,fontSize:d.fontSize,fontWeight:600,background:i.bg,color:i.fg,whiteSpace:"nowrap"};return(0,b.jsxs)("span",{style:k,title:i.label,children:[a.agent&&(0,b.jsx)(e,{agent:a.agent,size:h}),("icon"===j||"both"===j)&&(0,b.jsx)("span",{"aria-hidden":!0,style:{lineHeight:1},children:i.icon}),("text"===j||"both"===j)&&(0,b.jsx)("span",{children:i.label})]})},"outcomePriority",0,function(a){return a?h[a]:0}],44220)},3444,a=>{"use strict";let b={input:1,output:5,cacheRead:.1,cacheWrite:1.25},c={input:3,output:15,cacheRead:.3,cacheWrite:3.75},d={input:5,output:25,cacheRead:.5,cacheWrite:6.25};a.s(["estimateCost",0,function(a,e){let f=function(a){if(!a)return d;let e=a.toLowerCase();return e.includes("haiku")?b:e.includes("sonnet")?c:d}(e);return a.input/1e6*f.input+a.output/1e6*f.output+a.cacheRead/1e6*f.cacheRead+a.cacheWrite/1e6*f.cacheWrite},"formatCost",0,function(a){return a<.01?"<$0.01":a<1||a<100?`$${a.toFixed(2)}`:a<1e3?`$${a.toFixed(1)}`:`$${a.toLocaleString(void 0,{maximumFractionDigits:0})}`},"formatDuration",0,function(a){if(void 0===a)return"—";if(a<1e3)return`${a}ms`;let b=Math.round(a/1e3);if(b<60)return`${b}s`;let c=Math.floor(b/60),d=b%60;if(c<60)return d?`${c}m ${d}s`:`${c}m`;let e=Math.floor(c/60),f=c%60;return f?`${e}h ${f}m`:`${e}h`},"formatGap",0,function(a){if(a<1e3)return`${a}ms`;let b=a/1e3;if(b<60)return`${b.toFixed(1)}s`;let c=Math.floor(b/60);if(c<60){let a=Math.round(b%60);return`${c}m ${a}s`}let d=Math.floor(c/60),e=c%60;if(d<24)return e?`${d}h ${e}m`:`${d}h`;let f=Math.floor(d/24),g=d%24;return g?`${f}d ${g}h`:`${f}d`},"formatOffset",0,function(a){if(void 0===a||a<0)return"—";let b=Math.floor(a/1e3),c=Math.floor(b/3600),d=String(Math.floor(b%3600/60)).padStart(2,"0"),e=String(b%60).padStart(2,"0");return`${c}:${d}:${e}`},"formatRelative",0,function(a){let b=Date.parse(a);if(Number.isNaN(b))return a;let c=Math.round((Date.now()-b)/1e3);if(c<60)return`${c}s ago`;let d=Math.round(c/60);if(d<60)return`${d}m ago`;let e=Math.round(d/60);if(e<24)return`${e}h ago`;let f=Math.round(e/24);return`${f}d ago`},"formatTokens",0,function(a){return a<1e3?String(a):a<1e4?(a/1e3).toFixed(1)+"k":a<1e6?Math.round(a/1e3)+"k":a<1e7?(a/1e6).toFixed(2)+"M":(a/1e6).toFixed(1)+"M"},"prettyProjectName",0,function(a,b=35){let c=a.split("/").filter(Boolean),d=c.lastIndexOf(".worktrees");if(d>0&&d<c.length-1){let a=c[d-1],e=c[d+1],f=`${a}/${e}`;return f.length<=b?f:"…"+f.slice(f.length-b+1)}let e=c.length>=2?`${c[c.length-2]}/${c[c.length-1]}`:c[c.length-1]??a;return e.length<=b?e:"…"+e.slice(e.length-b+1)},"shortId",0,function(a){return a.length<=10?a:a.slice(0,6)+"…"+a.slice(-4)}])},41710,a=>{"use strict";let b=(0,a.i(70106).default)("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);a.s(["Clock",0,b],41710)},69439,71727,a=>{"use strict";var b=a.i(70106);let c=(0,b.default)("Lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);a.s(["Lightbulb",0,c],69439);let d=(0,b.default)("Radio",[["path",{d:"M4.9 19.1C1 15.2 1 8.8 4.9 4.9",key:"1vaf9d"}],["path",{d:"M7.8 16.2c-2.3-2.3-2.3-6.1 0-8.5",key:"u1ii0m"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"M16.2 7.8c2.3 2.3 2.3 6.1 0 8.5",key:"1j5fej"}],["path",{d:"M19.1 4.9C23 8.8 23 15.1 19.1 19",key:"10b0cb"}]]);a.s(["Radio",0,d],71727)},96221,a=>{"use strict";let b=(0,a.i(70106).default)("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["Loader2",0,b],96221)}];
|
|
1
|
+
module.exports=[18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},42602,(a,b,c)=>{"use strict";b.exports=a.r(18622)},72131,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].React},87924,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactJsxRuntime},9270,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.AppRouterContext},38783,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored["react-ssr"].ReactServerDOMTurbopackClient},36313,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.HooksClientContext},18341,(a,b,c)=>{"use strict";b.exports=a.r(42602).vendored.contexts.ServerInsertedHtml},2591,a=>{"use strict";var b=a.i(72131);a.s(["usePersistentBoolean",0,function(a,c){let[d,e]=(0,b.useState)(c),[f,g]=(0,b.useState)(!1);return(0,b.useEffect)(()=>{try{let b=window.localStorage.getItem(a);"1"===b?e(!0):"0"===b&&e(!1)}catch{}g(!0)},[a]),(0,b.useEffect)(()=>{let b=b=>{let c=b.detail;c?.key===a&&"boolean"==typeof c.value&&e(c.value)},c=b=>{b.key===a&&("1"===b.newValue?e(!0):"0"===b.newValue&&e(!1))};return window.addEventListener("cclens:persistent-boolean",b),window.addEventListener("storage",c),()=>{window.removeEventListener("cclens:persistent-boolean",b),window.removeEventListener("storage",c)}},[a]),[d,(0,b.useCallback)(b=>{e(b);try{window.localStorage.setItem(a,b?"1":"0")}catch{}window.dispatchEvent(new CustomEvent("cclens:persistent-boolean",{detail:{key:a,value:b}}))},[a]),f]}])},99309,a=>{"use strict";var b=a.i(87924);a.i(99417);var c=a.i(69176);a.s(["AgentBadge",0,function({agent:a}){if(!a||"claude-code"===a)return null;let d=(0,c.getAgentMetadata)(a);return d?(0,b.jsx)("span",{style:{display:"inline-flex",alignItems:"center",borderRadius:4,padding:"2px 6px",fontSize:10,letterSpacing:"0.04em",textTransform:"uppercase",whiteSpace:"nowrap",fontWeight:600,color:d.accentColor,background:`color-mix(in srgb, ${d.accentColor} 12%, transparent)`,border:`1px solid color-mix(in srgb, ${d.accentColor} 30%, transparent)`},title:`Source: ${d.displayName}`,children:d.shortLabel}):null}])},33441,a=>{"use strict";let b=(0,a.i(70106).default)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);a.s(["Check",0,b],33441)},87532,a=>{"use strict";let b=(0,a.i(70106).default)("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);a.s(["Search",0,b],87532)},76285,a=>{"use strict";var b=a.i(87924),c=a.i(38246);let d={display:"inline-flex",alignItems:"center",borderRadius:4,padding:"2px 6px",fontSize:10,letterSpacing:"0.04em",textTransform:"uppercase",whiteSpace:"nowrap"};a.s(["TeamBadge",0,function({session:a,linkable:e=!0}){if(!a.teamName)return null;let f=!0===a.isTeamLead,g=void 0!==a.agentName;return f||g?f&&e?(0,b.jsx)(c.default,{href:`/sessions/${a.id}`,style:{...d,fontWeight:600,background:"var(--af-warning-subtle)",color:"var(--af-warning)",border:"1px solid var(--af-warning-subtle)",textDecoration:"none"},title:`Team lead — ${a.teamName}`,children:"Team Lead"}):f?(0,b.jsx)("span",{style:{...d,fontWeight:600,background:"var(--af-warning-subtle)",color:"var(--af-warning)",border:"1px solid var(--af-warning-subtle)"},title:`Team lead — ${a.teamName}`,children:"Team Lead"}):(0,b.jsx)("span",{style:{...d,fontWeight:500,background:"var(--af-surface-hover)",color:"var(--af-text-tertiary)",border:"1px solid var(--af-border-subtle)"},title:`Team member — ${a.teamName} \xb7 ${a.agentName}`,children:"Team Member"}):null}])},2913,a=>{"use strict";let b=/^##\s+\[([^\]]+)\](?:\s+[—\-–]\s+(\S+))?\s*$/,c=/^###\s+(.+?)\s*$/,d=/^[-*]\s+(.+?)\s*$/,e=function(a){let e=a.split(/\r?\n/),f=[],g=null,h=null,i=[];function j(){h&&i.length>0&&(h.bullets.push(i.join(" ").trim()),i=[])}for(let a of e){let e=b.exec(a);if(e){j(),h=null,g={version:e[1].trim(),date:e[2]?.trim()??null,sections:[]},f.push(g);continue}if(!g)continue;let k=c.exec(a);if(k){j(),h={kind:k[1].trim(),bullets:[]},g.sections.push(h);continue}let l=d.exec(a);if(l){j(),i=[l[1]];continue}i.length>0&&a.trim().length>0&&i.push(a.trim())}return j(),f}("# Changelog\n\nAll notable user-facing changes to the Fleetlens CLI (`fleetlens` on npm) are\nrecorded here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).\nThe team-server has its own log at `packages/team-server/CHANGELOG.md`.\n\n## [0.9.0] — 2026-05-07\n\n### Added\n- **Gemini CLI** as the third agent source. Sessions written to `~/.gemini/tmp/<slug>/chats/session-*.jsonl` are now read, parsed, and rendered alongside Claude Code and Codex. Tool calls (`read_file`, `list_directory`, `glob`, `run_shell_command`, `update_topic`, …) and their results show in the session timeline; thinking blocks, multi-write status replay, `$set` / `$rewindTo` semantics, and the legacy single-JSON file shape all handled. Slug → cwd inversion via `~/.gemini/projects.json`. `✺` glyph + purple accent in the UI.\n\n### Changed\n- Session detail timeline drops in-turn idle hatching. Within a turn, every wait — model loading, tool execution, network — is the agent's active time. Only between-turn idle (user reading + composing the next message) renders as hatched.\n- Gemini parser anchors `firstTimestamp`, `lastTimestamp`, and `activeSegments` on conversational events only. Login/OAuth `info` records and `metadata.startTime` (file-creation moment) no longer stretch the session bar back to before the first user message.\n\n## [0.7.1] — 2026-05-07\n\n### Fixed\n- Cycle-peaks trend no longer renders two bars labeled the same day. When Anthropic's rolling 7-day window slid its anchor between consecutive polls, the daemon's bucketer (hour-rounded) recorded both reset boundaries as distinct cycles. They're now merged within a 12 h tolerance — same fix in `apps/web/lib/cycle-peaks.ts` (used by `/usage`) and in `packages/cli/src/team/sync.ts` (the daemon's team-server push), so both the personal `/usage` chart and the team-server's plan-utilization view stay consistent. 5-hour cycles keep no merge tolerance (their anchor is stable; merging would collapse legitimate distinct cycles).\n\n## [0.6.4] — 2026-05-04\n\n### Fixed\n- Cached calibration events per-file so `/usage` warm renders complete in well under a second on large session histories.\n\n## [0.6.3] — 2026-05-04\n\n### Fixed\n- Dropped poisoned auto-week locks left behind by interrupted runs; backfill now gates on the live pipeline lock instead.\n\n## [0.6.2] — 2026-05-04\n\n### Added\n- Last week's digest auto-generates on launch when AI features are on. Disable in Settings → AI features.\n\n## [0.6.1] — 2026-05-04\n\n### Changed\n- Smaller install size — published bundle no longer drags in unused workspace metadata.\n\n## [0.6.0] — 2026-04-30\n\n### Added\n- V2 perception layer. Daily, weekly, and monthly digests synthesized from per-session entries via a strict hierarchical pipeline (entry → day → week → month). Past-period digests are immutable on disk; current-period digests use a 10-min in-memory TTL.\n- `/insights` route with on-demand week and month digest generation, picker history, and force-regen.\n- `fleetlens digest day | week | month [--json]` — CLI surface that reproduces the same digests served at `/insights`.\n- `fleetlens entries [--day | --session | --all] [--json]` — inspect the per-session entry primitive.\n\n### Changed\n- Renamed \"active time\" to \"agent time\" across the dashboard and CLI for clarity.\n\n## [0.4.1] — 2026-04-23\n\n### Added\n- Concurrency view on `/parallelism` page. Bursts colored teal for same-project and purple for cross-project (the genuinely interesting fleet-work signal).\n- Plan utilization sparkline on the sidebar, fed by the usage daemon's 5-min snapshots.\n\n### Fixed\n- Auto-update no longer leaves a zombie web server on the old binary; both server and daemon are torn down before re-exec.\n\n## [0.4.0] — 2026-04-18\n\n### Added\n- Usage daemon (`fleetlens daemon …`) polls `/api/oauth/usage` every 5 min and appends snapshots to `~/.cclens/usage.jsonl`. `fleetlens start` and `fleetlens stop` manage server + daemon together.\n- `fleetlens usage --history` for inspecting past plan utilization.\n\n## [0.3.0] — 2026-04-10\n\n### Added\n- Project rollups with worktree aggregation. Sessions inside `<project>/.worktrees/<name>` roll up under their parent canonical project with a `+N wt` badge.\n- Pinned projects in the sidebar (per-browser via localStorage).\n\n## [0.2.0] — 2026-04-01\n\n### Changed\n- Active-segment computation now uses all timestamped events (system + summary + sidechain + conversational) instead of conversational-only. Earlier filter undercounted by up to 100x on tool-heavy sessions.\n\n## [0.1.0] — 2026-03-15\n\n### Added\n- Initial release. Local-only dashboard for Claude Code sessions: timeline, projects, daily activity bucketing, parallelism detection, per-model cost estimation. Reads JSONL transcripts from `~/.claude/projects/`.\n");e[0]?.version,a.s(["STORAGE_KEY",0,"cclens:changelog-last-seen"],2913)},99417,69176,a=>{"use strict";let b=[{kind:"claude-code",displayName:"Claude Code",shortLabel:"Claude",accentColor:"var(--af-accent)",iconChar:"✦"},{kind:"codex",displayName:"Codex (OpenAI)",shortLabel:"Codex",accentColor:"rgb(16, 163, 127)",iconChar:"◆"},{kind:"gemini",displayName:"Gemini CLI",shortLabel:"Gemini",accentColor:"rgb(124, 92, 246)",iconChar:"✺"}],c=new Set(b.map(a=>a.kind));a.s(["getAgentMetadata",0,function(a){return b.find(b=>b.kind===a)},"isAgentKind",0,function(a){return"string"==typeof a&&c.has(a)}],69176),a.s([],99417)},44220,2405,a=>{"use strict";var b=a.i(87924),c=a.i(38246);a.i(99417);var d=a.i(69176);function e({agent:a,size:c=11,title:f}){if(!a)return null;let g=(0,d.getAgentMetadata)(a);return g?(0,b.jsx)("span",{"aria-hidden":!0,title:f??g.displayName,style:{display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,width:c+2,height:c+2,fontSize:c,lineHeight:1,color:g.accentColor},children:g.iconChar}):null}a.s(["AgentIcon",0,e],2405);let f={shipped:{bg:"rgba(72, 187, 120, 0.12)",fg:"#48bb78",label:"Shipped",icon:"🚀"},partial:{bg:"rgba(66, 153, 225, 0.12)",fg:"#4299e1",label:"Partial",icon:"🔨"},blocked:{bg:"rgba(245, 101, 101, 0.12)",fg:"#f56565",label:"Blocked",icon:"🚧"},exploratory:{bg:"rgba(160, 174, 192, 0.12)",fg:"#a0aec0",label:"Exploratory",icon:"🧭"},trivial:{bg:"rgba(203, 213, 224, 0.12)",fg:"#a0aec0",label:"Warmup",icon:"💤"},idle:{bg:"rgba(203, 213, 224, 0.12)",fg:"#a0aec0",label:"Idle",icon:"—"}},g={sm:{fontSize:9,padding:"1px 6px",iconGap:3,borderRadius:99},md:{fontSize:10,padding:"2px 8px",iconGap:4,borderRadius:99},lg:{fontSize:11,padding:"3px 10px",iconGap:5,borderRadius:99}},h={shipped:6,partial:5,blocked:4,exploratory:3,trivial:2,idle:1};a.s(["OUTCOME_STYLES",0,f,"OutcomePill",0,function(a){let d=g[a.size??"md"],h=d.fontSize+1;if("pending"in a&&a.pending){let f={display:"inline-flex",alignItems:"center",gap:d.iconGap,padding:d.padding,borderRadius:d.borderRadius,fontSize:d.fontSize,fontWeight:600,background:"rgba(160, 174, 192, 0.08)",color:"var(--af-text-tertiary)",border:"1px dashed var(--af-border-subtle)",textDecoration:"none",whiteSpace:"nowrap"};return(0,b.jsxs)(c.default,{href:`/digest/${a.localDay}`,style:f,title:`Generate ${a.localDay} digest →`,children:[a.agent&&(0,b.jsx)(e,{agent:a.agent,size:h}),(0,b.jsx)("span",{"aria-hidden":!0,style:{lineHeight:1},children:"⋯"}),(0,b.jsx)("span",{children:"pending"})]})}let i=f[a.outcome],j=a.label??"both",k={display:"inline-flex",alignItems:"center",gap:d.iconGap,padding:d.padding,borderRadius:d.borderRadius,fontSize:d.fontSize,fontWeight:600,background:i.bg,color:i.fg,whiteSpace:"nowrap"};return(0,b.jsxs)("span",{style:k,title:i.label,children:[a.agent&&(0,b.jsx)(e,{agent:a.agent,size:h}),("icon"===j||"both"===j)&&(0,b.jsx)("span",{"aria-hidden":!0,style:{lineHeight:1},children:i.icon}),("text"===j||"both"===j)&&(0,b.jsx)("span",{children:i.label})]})},"outcomePriority",0,function(a){return a?h[a]:0}],44220)},3444,a=>{"use strict";let b={input:1,output:5,cacheRead:.1,cacheWrite:1.25},c={input:3,output:15,cacheRead:.3,cacheWrite:3.75},d={input:5,output:25,cacheRead:.5,cacheWrite:6.25};a.s(["estimateCost",0,function(a,e){let f=function(a){if(!a)return d;let e=a.toLowerCase();return e.includes("haiku")?b:e.includes("sonnet")?c:d}(e);return a.input/1e6*f.input+a.output/1e6*f.output+a.cacheRead/1e6*f.cacheRead+a.cacheWrite/1e6*f.cacheWrite},"formatCost",0,function(a){return a<.01?"<$0.01":a<1||a<100?`$${a.toFixed(2)}`:a<1e3?`$${a.toFixed(1)}`:`$${a.toLocaleString(void 0,{maximumFractionDigits:0})}`},"formatDuration",0,function(a){if(void 0===a)return"—";if(a<1e3)return`${a}ms`;let b=Math.round(a/1e3);if(b<60)return`${b}s`;let c=Math.floor(b/60),d=b%60;if(c<60)return d?`${c}m ${d}s`:`${c}m`;let e=Math.floor(c/60),f=c%60;return f?`${e}h ${f}m`:`${e}h`},"formatGap",0,function(a){if(a<1e3)return`${a}ms`;let b=a/1e3;if(b<60)return`${b.toFixed(1)}s`;let c=Math.floor(b/60);if(c<60){let a=Math.round(b%60);return`${c}m ${a}s`}let d=Math.floor(c/60),e=c%60;if(d<24)return e?`${d}h ${e}m`:`${d}h`;let f=Math.floor(d/24),g=d%24;return g?`${f}d ${g}h`:`${f}d`},"formatOffset",0,function(a){if(void 0===a||a<0)return"—";let b=Math.floor(a/1e3),c=Math.floor(b/3600),d=String(Math.floor(b%3600/60)).padStart(2,"0"),e=String(b%60).padStart(2,"0");return`${c}:${d}:${e}`},"formatRelative",0,function(a){let b=Date.parse(a);if(Number.isNaN(b))return a;let c=Math.round((Date.now()-b)/1e3);if(c<60)return`${c}s ago`;let d=Math.round(c/60);if(d<60)return`${d}m ago`;let e=Math.round(d/60);if(e<24)return`${e}h ago`;let f=Math.round(e/24);return`${f}d ago`},"formatTokens",0,function(a){return a<1e3?String(a):a<1e4?(a/1e3).toFixed(1)+"k":a<1e6?Math.round(a/1e3)+"k":a<1e7?(a/1e6).toFixed(2)+"M":(a/1e6).toFixed(1)+"M"},"prettyProjectName",0,function(a,b=35){let c=a.split("/").filter(Boolean),d=c.lastIndexOf(".worktrees");if(d>0&&d<c.length-1){let a=c[d-1],e=c[d+1],f=`${a}/${e}`;return f.length<=b?f:"…"+f.slice(f.length-b+1)}let e=c.length>=2?`${c[c.length-2]}/${c[c.length-1]}`:c[c.length-1]??a;return e.length<=b?e:"…"+e.slice(e.length-b+1)},"shortId",0,function(a){return a.length<=10?a:a.slice(0,6)+"…"+a.slice(-4)}])},41710,a=>{"use strict";let b=(0,a.i(70106).default)("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);a.s(["Clock",0,b],41710)},69439,71727,a=>{"use strict";var b=a.i(70106);let c=(0,b.default)("Lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]);a.s(["Lightbulb",0,c],69439);let d=(0,b.default)("Radio",[["path",{d:"M4.9 19.1C1 15.2 1 8.8 4.9 4.9",key:"1vaf9d"}],["path",{d:"M7.8 16.2c-2.3-2.3-2.3-6.1 0-8.5",key:"u1ii0m"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"M16.2 7.8c2.3 2.3 2.3 6.1 0 8.5",key:"1j5fej"}],["path",{d:"M19.1 4.9C23 8.8 23 15.1 19.1 19",key:"10b0cb"}]]);a.s(["Radio",0,d],71727)},96221,a=>{"use strict";let b=(0,a.i(70106).default)("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);a.s(["Loader2",0,b],96221)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__0ytdqxt._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[63681,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={RequestCookies:function(){return f.RequestCookies},ResponseCookies:function(){return f.ResponseCookies},stringifyCookie:function(){return f.stringifyCookie}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(36226)},51409,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ReflectAdapter",{enumerable:!0,get:function(){return d}});class d{static get(a,b,c){let d=Reflect.get(a,b,c);return"function"==typeof d?d.bind(a):d}static set(a,b,c,d){return Reflect.set(a,b,c,d)}static has(a,b){return Reflect.has(a,b)}static deleteProperty(a,b){return Reflect.deleteProperty(a,b)}}},4712,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={ActionDidNotRevalidate:function(){return f},ActionDidRevalidateDynamicOnly:function(){return h},ActionDidRevalidateStaticAndDynamic:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=0,g=1,h=2},14896,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={MutableRequestCookiesAdapter:function(){return o},ReadonlyRequestCookiesError:function(){return j},RequestCookiesAdapter:function(){return k},appendMutableCookies:function(){return n},areCookiesMutableInCurrentPhase:function(){return q},createCookiesWithMutableAccessCheck:function(){return p},getModifiedCookieValues:function(){return m},responseCookiesToRequestCookies:function(){return s}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(63681),g=a.r(51409),h=a.r(56704),i=a.r(4712);class j extends Error{constructor(){super("Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#options")}static callable(){throw new j}}class k{static seal(a){return new Proxy(a,{get(a,b,c){switch(b){case"clear":case"delete":case"set":return j.callable;default:return g.ReflectAdapter.get(a,b,c)}}})}}let l=Symbol.for("next.mutated.cookies");function m(a){let b=a[l];return b&&Array.isArray(b)&&0!==b.length?b:[]}function n(a,b){let c=m(b);if(0===c.length)return!1;let d=new f.ResponseCookies(a),e=d.getAll();for(let a of c)d.set(a);for(let a of e)d.set(a);return!0}class o{static wrap(a,b){let c=new f.ResponseCookies(new Headers);for(let b of a.getAll())c.set(b);let d=[],e=new Set,j=()=>{let a=h.workAsyncStorage.getStore();if(a&&(a.pathWasRevalidated=i.ActionDidRevalidateStaticAndDynamic),d=c.getAll().filter(a=>e.has(a.name)),b){let a=[];for(let b of d){let c=new f.ResponseCookies(new Headers);c.set(b),a.push(c.toString())}b(a)}},k=new Proxy(c,{get(a,b,c){switch(b){case l:return d;case"delete":return function(...b){e.add("string"==typeof b[0]?b[0]:b[0].name);try{return a.delete(...b),k}finally{j()}};case"set":return function(...b){e.add("string"==typeof b[0]?b[0]:b[0].name);try{return a.set(...b),k}finally{j()}};default:return g.ReflectAdapter.get(a,b,c)}}});return k}}function p(a){let b=new Proxy(a.mutableCookies,{get(c,d,e){switch(d){case"delete":return function(...d){return r(a,"cookies().delete"),c.delete(...d),b};case"set":return function(...d){return r(a,"cookies().set"),c.set(...d),b};default:return g.ReflectAdapter.get(c,d,e)}}});return b}function q(a){return"action"===a.phase}function r(a,b){if(!q(a))throw new j}function s(a){let b=new f.RequestCookies(new Headers);for(let c of a.getAll())b.set(c);return b}},8018,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"createDedupedByCallsiteServerErrorLoggerDev",{enumerable:!0,get:function(){return i}});let d=function(a){if(a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var b=e(void 0);if(b&&b.has(a))return b.get(a);var c={__proto__:null},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in a)if("default"!==f&&Object.prototype.hasOwnProperty.call(a,f)){var g=d?Object.getOwnPropertyDescriptor(a,f):null;g&&(g.get||g.set)?Object.defineProperty(c,f,g):c[f]=a[f]}return c.default=a,b&&b.set(a,c),c}(a.r(717));function e(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(e=function(a){return a?c:b})(a)}let f={current:null},g="function"==typeof d.cache?d.cache:a=>a,h=console.warn;function i(a){return function(...b){h(a(...b))}}g(a=>{try{h(f.current)}finally{f.current=null}})},86309,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={isRequestAPICallableInsideAfter:function(){return j},throwForSearchParamsAccessInUseCache:function(){return i},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(60312),g=a.r(24725);function h(a,b){throw Object.defineProperty(new f.StaticGenBailoutError(`Route ${a} with \`dynamic = "error"\` couldn't be rendered statically because it used ${b}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function i(a,b){let c=Object.defineProperty(Error(`Route ${a.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(c,b),a.invalidDynamicUsageError??=c,c}function j(){let a=g.afterTaskAsyncStorage.getStore();return(null==a?void 0:a.rootTaskSpawnPhase)==="action"}},81740,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"cookies",{enumerable:!0,get:function(){return n}});let d=a.r(14896),e=a.r(63681),f=a.r(56704),g=a.r(32319),h=a.r(60384),i=a.r(60312),j=a.r(13091),k=a.r(8018),l=a.r(86309),m=a.r(50640);function n(){let a="cookies",b=f.workAsyncStorage.getStore(),c=g.workUnitAsyncStorage.getStore();if(b){if(c&&"after"===c.phase&&!(0,l.isRequestAPICallableInsideAfter)())throw Object.defineProperty(Error(`Route ${b.route} used \`cookies()\` inside \`after()\`. This is not supported. If you need this data inside an \`after()\` callback, use \`cookies()\` outside of the callback. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`),"__NEXT_ERROR_CODE",{value:"E843",enumerable:!1,configurable:!0});if(b.forceStatic)return p(d.RequestCookiesAdapter.seal(new e.RequestCookies(new Headers({}))));if(b.dynamicShouldError)throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${b.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`cookies()\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E849",enumerable:!1,configurable:!0});if(c)switch(c.type){case"cache":let f=Object.defineProperty(Error(`Route ${b.route} used \`cookies()\` inside "use cache". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`cookies()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E831",enumerable:!1,configurable:!0});throw Error.captureStackTrace(f,n),b.invalidDynamicUsageError??=f,f;case"unstable-cache":throw Object.defineProperty(Error(`Route ${b.route} used \`cookies()\` inside a function cached with \`unstable_cache()\`. Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`cookies()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`),"__NEXT_ERROR_CODE",{value:"E846",enumerable:!1,configurable:!0});case"generate-static-params":throw Object.defineProperty(Error(`Route ${b.route} used \`cookies()\` inside \`generateStaticParams\`. This is not supported because \`generateStaticParams\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`),"__NEXT_ERROR_CODE",{value:"E1123",enumerable:!1,configurable:!0});case"prerender":var k=b,q=c;let r=o.get(q);if(r)return r;let s=(0,j.makeHangingPromise)(q.renderSignal,k.route,"`cookies()`");return o.set(q,s),s;case"prerender-client":case"validation-client":let t="`cookies`";throw Object.defineProperty(new m.InvariantError(`${t} must not be used within a Client Component. Next.js should be preventing ${t} from being included in Client Components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1037",enumerable:!1,configurable:!0});case"prerender-ppr":return(0,h.postponeWithTracking)(b.route,a,c.dynamicTracking);case"prerender-legacy":return(0,h.throwToInterruptStaticGeneration)(a,b,c);case"prerender-runtime":return(0,j.delayUntilRuntimeStage)(c,p(c.cookies));case"private-cache":return p(c.cookies);case"request":let u;if((0,h.trackDynamicDataInDynamicRender)(c),u=(0,d.areCookiesMutableInCurrentPhase)(c)?c.userspaceMutableCookies:c.cookies,!c.asyncApiPromises)return p(u);{let a=(0,g.isInEarlyRenderStage)(c);if(u===c.mutableCookies)return a?c.asyncApiPromises.earlyMutableCookies:c.asyncApiPromises.mutableCookies;return a?c.asyncApiPromises.earlyCookies:c.asyncApiPromises.cookies}}}(0,g.throwForMissingRequestStore)(a)}a.r(31382);let o=new WeakMap;function p(a){let b=o.get(a);if(b)return b;let c=Promise.resolve(a);return o.set(a,c),c}(0,k.createDedupedByCallsiteServerErrorLoggerDev)(function(a,b){let c=a?`Route "${a}" `:"This route ";return Object.defineProperty(Error(`${c}used ${b}. \`cookies()\` returns a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`),"__NEXT_ERROR_CODE",{value:"E830",enumerable:!1,configurable:!0})})},29927,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={HeadersAdapter:function(){return h},ReadonlyHeadersError:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(51409);class g extends Error{constructor(){super("Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers")}static callable(){throw new g}}class h extends Headers{constructor(a){super(),this.headers=new Proxy(a,{get(b,c,d){if("symbol"==typeof c)return f.ReflectAdapter.get(b,c,d);let e=c.toLowerCase(),g=Object.keys(a).find(a=>a.toLowerCase()===e);if(void 0!==g)return f.ReflectAdapter.get(b,g,d)},set(b,c,d,e){if("symbol"==typeof c)return f.ReflectAdapter.set(b,c,d,e);let g=c.toLowerCase(),h=Object.keys(a).find(a=>a.toLowerCase()===g);return f.ReflectAdapter.set(b,h??c,d,e)},has(b,c){if("symbol"==typeof c)return f.ReflectAdapter.has(b,c);let d=c.toLowerCase(),e=Object.keys(a).find(a=>a.toLowerCase()===d);return void 0!==e&&f.ReflectAdapter.has(b,e)},deleteProperty(b,c){if("symbol"==typeof c)return f.ReflectAdapter.deleteProperty(b,c);let d=c.toLowerCase(),e=Object.keys(a).find(a=>a.toLowerCase()===d);return void 0===e||f.ReflectAdapter.deleteProperty(b,e)}})}static seal(a){return new Proxy(a,{get(a,b,c){switch(b){case"append":case"delete":case"set":return g.callable;default:return f.ReflectAdapter.get(a,b,c)}}})}merge(a){return Array.isArray(a)?a.join(", "):a}static from(a){return a instanceof Headers?a:new h(a)}append(a,b){let c=this.headers[a];"string"==typeof c?this.headers[a]=[c,b]:Array.isArray(c)?c.push(b):this.headers[a]=b}delete(a){delete this.headers[a]}get(a){let b=this.headers[a];return void 0!==b?this.merge(b):null}has(a){return void 0!==this.headers[a]}set(a,b){this.headers[a]=b}forEach(a,b){for(let[c,d]of this.entries())a.call(b,d,c,this)}*entries(){for(let a of Object.keys(this.headers)){let b=a.toLowerCase(),c=this.get(b);yield[b,c]}}*keys(){for(let a of Object.keys(this.headers)){let b=a.toLowerCase();yield b}}*values(){for(let a of Object.keys(this.headers)){let b=this.get(a);yield b}}[Symbol.iterator](){return this.entries()}}},35754,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"headers",{enumerable:!0,get:function(){return m}});let d=a.r(29927),e=a.r(56704),f=a.r(32319),g=a.r(60384),h=a.r(60312),i=a.r(13091),j=a.r(8018),k=a.r(86309),l=a.r(50640);function m(){let a="headers",b=e.workAsyncStorage.getStore(),c=f.workUnitAsyncStorage.getStore();if(b){if(c&&"after"===c.phase&&!(0,k.isRequestAPICallableInsideAfter)())throw Object.defineProperty(Error(`Route ${b.route} used \`headers()\` inside \`after()\`. This is not supported. If you need this data inside an \`after()\` callback, use \`headers()\` outside of the callback. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`),"__NEXT_ERROR_CODE",{value:"E839",enumerable:!1,configurable:!0});if(b.forceStatic)return o(d.HeadersAdapter.seal(new Headers({})));if(c)switch(c.type){case"cache":{let a=Object.defineProperty(Error(`Route ${b.route} used \`headers()\` inside "use cache". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`headers()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E833",enumerable:!1,configurable:!0});throw Error.captureStackTrace(a,m),b.invalidDynamicUsageError??=a,a}case"unstable-cache":throw Object.defineProperty(Error(`Route ${b.route} used \`headers()\` inside a function cached with \`unstable_cache()\`. Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`headers()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`),"__NEXT_ERROR_CODE",{value:"E838",enumerable:!1,configurable:!0});case"generate-static-params":throw Object.defineProperty(Error(`Route ${b.route} used \`headers()\` inside \`generateStaticParams\`. This is not supported because \`generateStaticParams\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`),"__NEXT_ERROR_CODE",{value:"E1134",enumerable:!1,configurable:!0})}if(b.dynamicShouldError)throw Object.defineProperty(new h.StaticGenBailoutError(`Route ${b.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`headers()\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E828",enumerable:!1,configurable:!0});if(c)switch(c.type){case"prerender":var j=b,p=c;let e=n.get(p);if(e)return e;let q=(0,i.makeHangingPromise)(p.renderSignal,j.route,"`headers()`");return n.set(p,q),q;case"prerender-client":case"validation-client":let r="`headers`";throw Object.defineProperty(new l.InvariantError(`${r} must not be used within a client component. Next.js should be preventing ${r} from being included in client components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1017",enumerable:!1,configurable:!0});case"prerender-ppr":return(0,g.postponeWithTracking)(b.route,a,c.dynamicTracking);case"prerender-legacy":return(0,g.throwToInterruptStaticGeneration)(a,b,c);case"prerender-runtime":return(0,i.delayUntilRuntimeStage)(c,o(c.headers));case"private-cache":return o(c.headers);case"request":if((0,g.trackDynamicDataInDynamicRender)(c),c.asyncApiPromises)return(0,f.isInEarlyRenderStage)(c)?c.asyncApiPromises.earlyHeaders:c.asyncApiPromises.headers;return o(c.headers)}}(0,f.throwForMissingRequestStore)(a)}a.r(31382);let n=new WeakMap;function o(a){let b=n.get(a);if(b)return b;let c=Promise.resolve(a);return n.set(a,c),c}(0,j.createDedupedByCallsiteServerErrorLoggerDev)(function(a,b){let c=a?`Route "${a}" `:"This route ";return Object.defineProperty(Error(`${c}used ${b}. \`headers()\` returns a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`),"__NEXT_ERROR_CODE",{value:"E836",enumerable:!1,configurable:!0})})},51125,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"draftMode",{enumerable:!0,get:function(){return l}});let d=a.r(32319),e=a.r(56704),f=a.r(60384),g=a.r(8018),h=a.r(60312),i=a.r(96556),j=a.r(50640),k=a.r(13091);function l(){let a="draftMode",b=e.workAsyncStorage.getStore(),c=d.workUnitAsyncStorage.getStore();switch((!b||!c)&&(0,d.throwForMissingRequestStore)(a),c.type){case"prerender-runtime":return(0,k.delayUntilRuntimeStage)(c,m(c.draftMode,b));case"request":return m(c.draftMode,b);case"cache":case"private-cache":case"unstable-cache":let f=(0,d.getDraftModeProviderForCacheScope)(b,c);if(f)return m(f,b);case"prerender":case"prerender-ppr":case"prerender-legacy":return m(null,b);case"prerender-client":case"validation-client":{let a="`draftMode`";throw Object.defineProperty(new j.InvariantError(`${a} must not be used within a Client Component. Next.js should be preventing ${a} from being included in Client Components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1046",enumerable:!1,configurable:!0})}case"generate-static-params":throw Object.defineProperty(Error(`Route ${b.route} used \`${a}()\` inside \`generateStaticParams\`. This is not supported because \`generateStaticParams\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`),"__NEXT_ERROR_CODE",{value:"E1132",enumerable:!1,configurable:!0});default:return c}}function m(a,b){let c=o.get(a??n);return c||Promise.resolve(new p(a))}a.r(51409);let n={},o=new WeakMap;class p{constructor(a){this._provider=a}get isEnabled(){return null!==this._provider&&this._provider.isEnabled}enable(){q("draftMode().enable()",this.enable),null!==this._provider&&this._provider.enable()}disable(){q("draftMode().disable()",this.disable),null!==this._provider&&this._provider.disable()}}function q(a,b){let c=e.workAsyncStorage.getStore(),g=d.workUnitAsyncStorage.getStore();if(c){if((null==g?void 0:g.phase)==="after")throw Object.defineProperty(Error(`Route ${c.route} used "${a}" inside \`after()\`. The enabled status of \`draftMode()\` can be read inside \`after()\` but you cannot enable or disable \`draftMode()\`. See more info here: https://nextjs.org/docs/app/api-reference/functions/after`),"__NEXT_ERROR_CODE",{value:"E845",enumerable:!1,configurable:!0});if(c.dynamicShouldError)throw Object.defineProperty(new h.StaticGenBailoutError(`Route ${c.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${a}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E553",enumerable:!1,configurable:!0});if(g)switch(g.type){case"cache":case"private-cache":{let d=Object.defineProperty(Error(`Route ${c.route} used "${a}" inside "use cache". The enabled status of \`draftMode()\` can be read in caches but you must not enable or disable \`draftMode()\` inside a cache. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E829",enumerable:!1,configurable:!0});throw Error.captureStackTrace(d,b),c.invalidDynamicUsageError??=d,d}case"unstable-cache":throw Object.defineProperty(Error(`Route ${c.route} used "${a}" inside a function cached with \`unstable_cache()\`. The enabled status of \`draftMode()\` can be read in caches but you must not enable or disable \`draftMode()\` inside a cache. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`),"__NEXT_ERROR_CODE",{value:"E844",enumerable:!1,configurable:!0});case"prerender":case"prerender-runtime":{let b=Object.defineProperty(Error(`Route ${c.route} used ${a} without first calling \`await connection()\`. See more info here: https://nextjs.org/docs/messages/next-prerender-sync-headers`),"__NEXT_ERROR_CODE",{value:"E126",enumerable:!1,configurable:!0});return(0,f.abortAndThrowOnSynchronousRequestDataAccess)(c.route,a,b,g)}case"prerender-client":case"validation-client":let d="`draftMode`";throw Object.defineProperty(new j.InvariantError(`${d} must not be used within a Client Component. Next.js should be preventing ${d} from being included in Client Components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1046",enumerable:!1,configurable:!0});case"prerender-ppr":return(0,f.postponeWithTracking)(c.route,a,g.dynamicTracking);case"prerender-legacy":g.revalidate=0;let e=Object.defineProperty(new i.DynamicServerError(`Route ${c.route} couldn't be rendered statically because it used \`${a}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`),"__NEXT_ERROR_CODE",{value:"E558",enumerable:!1,configurable:!0});throw c.dynamicUsageDescription=a,c.dynamicUsageStack=e.stack,e;case"request":(0,f.trackDynamicDataInDynamicRender)(g);break;case"generate-static-params":throw Object.defineProperty(Error(`Route ${c.route} used \`${a}\` inside \`generateStaticParams\`. This is not supported because \`generateStaticParams\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`),"__NEXT_ERROR_CODE",{value:"E1121",enumerable:!1,configurable:!0})}}}(0,g.createDedupedByCallsiteServerErrorLoggerDev)(function(a,b){let c=a?`Route "${a}" `:"This route ";return Object.defineProperty(Error(`${c}used ${b}. \`draftMode()\` returns a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`),"__NEXT_ERROR_CODE",{value:"E835",enumerable:!1,configurable:!0})})},5246,(a,b,c)=>{b.exports.cookies=a.r(81740).cookies,b.exports.headers=a.r(35754).headers,b.exports.draftMode=a.r(51125).draftMode},45017,a=>{"use strict";a.s(["Sidebar",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call Sidebar() from the server but Sidebar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/sidebar.tsx <module evaluation>","Sidebar")},10398,a=>{"use strict";a.s(["Sidebar",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call Sidebar() from the server but Sidebar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/sidebar.tsx","Sidebar")},23604,a=>{"use strict";a.i(45017);var b=a.i(10398);a.n(b)},59969,a=>{"use strict";a.s(["LiveRefresher",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call LiveRefresher() from the server but LiveRefresher is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/live-refresher.tsx <module evaluation>","LiveRefresher")},11272,a=>{"use strict";a.s(["LiveRefresher",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call LiveRefresher() from the server but LiveRefresher is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/live-refresher.tsx","LiveRefresher")},30642,a=>{"use strict";a.i(59969);var b=a.i(11272);a.n(b)},99153,a=>{"use strict";a.s(["LiveSessionsWidget",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call LiveSessionsWidget() from the server but LiveSessionsWidget is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/live-sessions-widget.tsx <module evaluation>","LiveSessionsWidget")},62615,a=>{"use strict";a.s(["LiveSessionsWidget",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call LiveSessionsWidget() from the server but LiveSessionsWidget is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/live-sessions-widget.tsx","LiveSessionsWidget")},9647,a=>{"use strict";a.i(99153);var b=a.i(62615);a.n(b)},14022,a=>{"use strict";a.s(["JobQueueWidget",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call JobQueueWidget() from the server but JobQueueWidget is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/job-queue-widget.tsx <module evaluation>","JobQueueWidget")},5900,a=>{"use strict";a.s(["JobQueueWidget",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call JobQueueWidget() from the server but JobQueueWidget is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/job-queue-widget.tsx","JobQueueWidget")},84829,a=>{"use strict";a.i(14022);var b=a.i(5900);a.n(b)},28992,a=>{"use strict";var b=a.i(7997),c=a.i(5246),d=a.i(23604),e=a.i(30642),f=a.i(9647),g=a.i(84829);a.i(23895);var h=a.i(88522),i=a.i(67116),j=a.i(70709),k=a.i(76597),l=a.i(40095);async function m({children:a}){let[n,o,p,q]=await Promise.all([(0,h.listProjects)(),(0,h.walkJsonlFiles)(),(0,i.listSessions)(),(0,k.buildEntriesIndex)()]),r=p.slice(0,20),s=p.length,t=(0,j.latestUsageSnapshot)(),u=r.map(a=>({id:a.id,projectName:a.projectName,firstUserPreview:a.firstUserPreview,lastUserPreview:a.lastUserPreview,lastAgentPreview:a.lastAgentPreview,firstTimestamp:a.firstTimestamp,lastTimestamp:a.lastTimestamp,teamName:a.teamName,agentName:a.agentName,agent:a.agent})),v={};for(let a of r){let b=q.bySession.get(a.id)??[];if(0===b.length)continue;let c=b[b.length-1];v[a.id]={outcome:c.enrichment.outcome??null,enrichmentStatus:c.enrichment.status,localDay:c.local_day}}let w=await (0,c.cookies)(),x=w.get("claude-lens-theme")?.value;return(0,b.jsx)("html",{lang:"en","data-theme":"light"===x||"dark"===x?x:"dark",suppressHydrationWarning:!0,children:(0,b.jsxs)("body",{children:[(0,b.jsx)(e.LiveRefresher,{}),(0,b.jsxs)("div",{style:{display:"flex",height:"100vh"},children:[(0,b.jsx)(d.Sidebar,{projects:n,totalSessions:s,currentUsage:t,version:"0.7.1",latestChangelogVersion:l.LATEST_VERSION}),(0,b.jsx)("main",{style:{flex:1,minWidth:0,minHeight:0,padding:0,overflow:"auto"},children:a})]}),(0,b.jsx)(f.LiveSessionsWidget,{sessions:u,entrySummaries:v}),(0,b.jsx)(g.JobQueueWidget,{})]})})}a.s(["default",0,m,"dynamic",0,"force-dynamic","metadata",0,{title:"Fleetlens",description:"Multi-agent fleet analytics — local-only dashboard for Claude Code, Codex, and other coding-agent sessions."}],28992)},44665,a=>{a.n(a.i(28992))}];
|
|
1
|
+
module.exports=[63681,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={RequestCookies:function(){return f.RequestCookies},ResponseCookies:function(){return f.ResponseCookies},stringifyCookie:function(){return f.stringifyCookie}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(36226)},51409,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ReflectAdapter",{enumerable:!0,get:function(){return d}});class d{static get(a,b,c){let d=Reflect.get(a,b,c);return"function"==typeof d?d.bind(a):d}static set(a,b,c,d){return Reflect.set(a,b,c,d)}static has(a,b){return Reflect.has(a,b)}static deleteProperty(a,b){return Reflect.deleteProperty(a,b)}}},4712,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={ActionDidNotRevalidate:function(){return f},ActionDidRevalidateDynamicOnly:function(){return h},ActionDidRevalidateStaticAndDynamic:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=0,g=1,h=2},14896,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={MutableRequestCookiesAdapter:function(){return o},ReadonlyRequestCookiesError:function(){return j},RequestCookiesAdapter:function(){return k},appendMutableCookies:function(){return n},areCookiesMutableInCurrentPhase:function(){return q},createCookiesWithMutableAccessCheck:function(){return p},getModifiedCookieValues:function(){return m},responseCookiesToRequestCookies:function(){return s}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(63681),g=a.r(51409),h=a.r(56704),i=a.r(4712);class j extends Error{constructor(){super("Cookies can only be modified in a Server Action or Route Handler. Read more: https://nextjs.org/docs/app/api-reference/functions/cookies#options")}static callable(){throw new j}}class k{static seal(a){return new Proxy(a,{get(a,b,c){switch(b){case"clear":case"delete":case"set":return j.callable;default:return g.ReflectAdapter.get(a,b,c)}}})}}let l=Symbol.for("next.mutated.cookies");function m(a){let b=a[l];return b&&Array.isArray(b)&&0!==b.length?b:[]}function n(a,b){let c=m(b);if(0===c.length)return!1;let d=new f.ResponseCookies(a),e=d.getAll();for(let a of c)d.set(a);for(let a of e)d.set(a);return!0}class o{static wrap(a,b){let c=new f.ResponseCookies(new Headers);for(let b of a.getAll())c.set(b);let d=[],e=new Set,j=()=>{let a=h.workAsyncStorage.getStore();if(a&&(a.pathWasRevalidated=i.ActionDidRevalidateStaticAndDynamic),d=c.getAll().filter(a=>e.has(a.name)),b){let a=[];for(let b of d){let c=new f.ResponseCookies(new Headers);c.set(b),a.push(c.toString())}b(a)}},k=new Proxy(c,{get(a,b,c){switch(b){case l:return d;case"delete":return function(...b){e.add("string"==typeof b[0]?b[0]:b[0].name);try{return a.delete(...b),k}finally{j()}};case"set":return function(...b){e.add("string"==typeof b[0]?b[0]:b[0].name);try{return a.set(...b),k}finally{j()}};default:return g.ReflectAdapter.get(a,b,c)}}});return k}}function p(a){let b=new Proxy(a.mutableCookies,{get(c,d,e){switch(d){case"delete":return function(...d){return r(a,"cookies().delete"),c.delete(...d),b};case"set":return function(...d){return r(a,"cookies().set"),c.set(...d),b};default:return g.ReflectAdapter.get(c,d,e)}}});return b}function q(a){return"action"===a.phase}function r(a,b){if(!q(a))throw new j}function s(a){let b=new f.RequestCookies(new Headers);for(let c of a.getAll())b.set(c);return b}},8018,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"createDedupedByCallsiteServerErrorLoggerDev",{enumerable:!0,get:function(){return i}});let d=function(a){if(a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var b=e(void 0);if(b&&b.has(a))return b.get(a);var c={__proto__:null},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in a)if("default"!==f&&Object.prototype.hasOwnProperty.call(a,f)){var g=d?Object.getOwnPropertyDescriptor(a,f):null;g&&(g.get||g.set)?Object.defineProperty(c,f,g):c[f]=a[f]}return c.default=a,b&&b.set(a,c),c}(a.r(717));function e(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(e=function(a){return a?c:b})(a)}let f={current:null},g="function"==typeof d.cache?d.cache:a=>a,h=console.warn;function i(a){return function(...b){h(a(...b))}}g(a=>{try{h(f.current)}finally{f.current=null}})},86309,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={isRequestAPICallableInsideAfter:function(){return j},throwForSearchParamsAccessInUseCache:function(){return i},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(60312),g=a.r(24725);function h(a,b){throw Object.defineProperty(new f.StaticGenBailoutError(`Route ${a} with \`dynamic = "error"\` couldn't be rendered statically because it used ${b}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function i(a,b){let c=Object.defineProperty(Error(`Route ${a.route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E842",enumerable:!1,configurable:!0});throw Error.captureStackTrace(c,b),a.invalidDynamicUsageError??=c,c}function j(){let a=g.afterTaskAsyncStorage.getStore();return(null==a?void 0:a.rootTaskSpawnPhase)==="action"}},81740,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"cookies",{enumerable:!0,get:function(){return n}});let d=a.r(14896),e=a.r(63681),f=a.r(56704),g=a.r(32319),h=a.r(60384),i=a.r(60312),j=a.r(13091),k=a.r(8018),l=a.r(86309),m=a.r(50640);function n(){let a="cookies",b=f.workAsyncStorage.getStore(),c=g.workUnitAsyncStorage.getStore();if(b){if(c&&"after"===c.phase&&!(0,l.isRequestAPICallableInsideAfter)())throw Object.defineProperty(Error(`Route ${b.route} used \`cookies()\` inside \`after()\`. This is not supported. If you need this data inside an \`after()\` callback, use \`cookies()\` outside of the callback. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`),"__NEXT_ERROR_CODE",{value:"E843",enumerable:!1,configurable:!0});if(b.forceStatic)return p(d.RequestCookiesAdapter.seal(new e.RequestCookies(new Headers({}))));if(b.dynamicShouldError)throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${b.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`cookies()\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E849",enumerable:!1,configurable:!0});if(c)switch(c.type){case"cache":let f=Object.defineProperty(Error(`Route ${b.route} used \`cookies()\` inside "use cache". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`cookies()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E831",enumerable:!1,configurable:!0});throw Error.captureStackTrace(f,n),b.invalidDynamicUsageError??=f,f;case"unstable-cache":throw Object.defineProperty(Error(`Route ${b.route} used \`cookies()\` inside a function cached with \`unstable_cache()\`. Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`cookies()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`),"__NEXT_ERROR_CODE",{value:"E846",enumerable:!1,configurable:!0});case"generate-static-params":throw Object.defineProperty(Error(`Route ${b.route} used \`cookies()\` inside \`generateStaticParams\`. This is not supported because \`generateStaticParams\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`),"__NEXT_ERROR_CODE",{value:"E1123",enumerable:!1,configurable:!0});case"prerender":var k=b,q=c;let r=o.get(q);if(r)return r;let s=(0,j.makeHangingPromise)(q.renderSignal,k.route,"`cookies()`");return o.set(q,s),s;case"prerender-client":case"validation-client":let t="`cookies`";throw Object.defineProperty(new m.InvariantError(`${t} must not be used within a Client Component. Next.js should be preventing ${t} from being included in Client Components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1037",enumerable:!1,configurable:!0});case"prerender-ppr":return(0,h.postponeWithTracking)(b.route,a,c.dynamicTracking);case"prerender-legacy":return(0,h.throwToInterruptStaticGeneration)(a,b,c);case"prerender-runtime":return(0,j.delayUntilRuntimeStage)(c,p(c.cookies));case"private-cache":return p(c.cookies);case"request":let u;if((0,h.trackDynamicDataInDynamicRender)(c),u=(0,d.areCookiesMutableInCurrentPhase)(c)?c.userspaceMutableCookies:c.cookies,!c.asyncApiPromises)return p(u);{let a=(0,g.isInEarlyRenderStage)(c);if(u===c.mutableCookies)return a?c.asyncApiPromises.earlyMutableCookies:c.asyncApiPromises.mutableCookies;return a?c.asyncApiPromises.earlyCookies:c.asyncApiPromises.cookies}}}(0,g.throwForMissingRequestStore)(a)}a.r(31382);let o=new WeakMap;function p(a){let b=o.get(a);if(b)return b;let c=Promise.resolve(a);return o.set(a,c),c}(0,k.createDedupedByCallsiteServerErrorLoggerDev)(function(a,b){let c=a?`Route "${a}" `:"This route ";return Object.defineProperty(Error(`${c}used ${b}. \`cookies()\` returns a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`),"__NEXT_ERROR_CODE",{value:"E830",enumerable:!1,configurable:!0})})},29927,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={HeadersAdapter:function(){return h},ReadonlyHeadersError:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(51409);class g extends Error{constructor(){super("Headers cannot be modified. Read more: https://nextjs.org/docs/app/api-reference/functions/headers")}static callable(){throw new g}}class h extends Headers{constructor(a){super(),this.headers=new Proxy(a,{get(b,c,d){if("symbol"==typeof c)return f.ReflectAdapter.get(b,c,d);let e=c.toLowerCase(),g=Object.keys(a).find(a=>a.toLowerCase()===e);if(void 0!==g)return f.ReflectAdapter.get(b,g,d)},set(b,c,d,e){if("symbol"==typeof c)return f.ReflectAdapter.set(b,c,d,e);let g=c.toLowerCase(),h=Object.keys(a).find(a=>a.toLowerCase()===g);return f.ReflectAdapter.set(b,h??c,d,e)},has(b,c){if("symbol"==typeof c)return f.ReflectAdapter.has(b,c);let d=c.toLowerCase(),e=Object.keys(a).find(a=>a.toLowerCase()===d);return void 0!==e&&f.ReflectAdapter.has(b,e)},deleteProperty(b,c){if("symbol"==typeof c)return f.ReflectAdapter.deleteProperty(b,c);let d=c.toLowerCase(),e=Object.keys(a).find(a=>a.toLowerCase()===d);return void 0===e||f.ReflectAdapter.deleteProperty(b,e)}})}static seal(a){return new Proxy(a,{get(a,b,c){switch(b){case"append":case"delete":case"set":return g.callable;default:return f.ReflectAdapter.get(a,b,c)}}})}merge(a){return Array.isArray(a)?a.join(", "):a}static from(a){return a instanceof Headers?a:new h(a)}append(a,b){let c=this.headers[a];"string"==typeof c?this.headers[a]=[c,b]:Array.isArray(c)?c.push(b):this.headers[a]=b}delete(a){delete this.headers[a]}get(a){let b=this.headers[a];return void 0!==b?this.merge(b):null}has(a){return void 0!==this.headers[a]}set(a,b){this.headers[a]=b}forEach(a,b){for(let[c,d]of this.entries())a.call(b,d,c,this)}*entries(){for(let a of Object.keys(this.headers)){let b=a.toLowerCase(),c=this.get(b);yield[b,c]}}*keys(){for(let a of Object.keys(this.headers)){let b=a.toLowerCase();yield b}}*values(){for(let a of Object.keys(this.headers)){let b=this.get(a);yield b}}[Symbol.iterator](){return this.entries()}}},35754,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"headers",{enumerable:!0,get:function(){return m}});let d=a.r(29927),e=a.r(56704),f=a.r(32319),g=a.r(60384),h=a.r(60312),i=a.r(13091),j=a.r(8018),k=a.r(86309),l=a.r(50640);function m(){let a="headers",b=e.workAsyncStorage.getStore(),c=f.workUnitAsyncStorage.getStore();if(b){if(c&&"after"===c.phase&&!(0,k.isRequestAPICallableInsideAfter)())throw Object.defineProperty(Error(`Route ${b.route} used \`headers()\` inside \`after()\`. This is not supported. If you need this data inside an \`after()\` callback, use \`headers()\` outside of the callback. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`),"__NEXT_ERROR_CODE",{value:"E839",enumerable:!1,configurable:!0});if(b.forceStatic)return o(d.HeadersAdapter.seal(new Headers({})));if(c)switch(c.type){case"cache":{let a=Object.defineProperty(Error(`Route ${b.route} used \`headers()\` inside "use cache". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`headers()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E833",enumerable:!1,configurable:!0});throw Error.captureStackTrace(a,m),b.invalidDynamicUsageError??=a,a}case"unstable-cache":throw Object.defineProperty(Error(`Route ${b.route} used \`headers()\` inside a function cached with \`unstable_cache()\`. Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`headers()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`),"__NEXT_ERROR_CODE",{value:"E838",enumerable:!1,configurable:!0});case"generate-static-params":throw Object.defineProperty(Error(`Route ${b.route} used \`headers()\` inside \`generateStaticParams\`. This is not supported because \`generateStaticParams\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`),"__NEXT_ERROR_CODE",{value:"E1134",enumerable:!1,configurable:!0})}if(b.dynamicShouldError)throw Object.defineProperty(new h.StaticGenBailoutError(`Route ${b.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`headers()\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E828",enumerable:!1,configurable:!0});if(c)switch(c.type){case"prerender":var j=b,p=c;let e=n.get(p);if(e)return e;let q=(0,i.makeHangingPromise)(p.renderSignal,j.route,"`headers()`");return n.set(p,q),q;case"prerender-client":case"validation-client":let r="`headers`";throw Object.defineProperty(new l.InvariantError(`${r} must not be used within a client component. Next.js should be preventing ${r} from being included in client components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1017",enumerable:!1,configurable:!0});case"prerender-ppr":return(0,g.postponeWithTracking)(b.route,a,c.dynamicTracking);case"prerender-legacy":return(0,g.throwToInterruptStaticGeneration)(a,b,c);case"prerender-runtime":return(0,i.delayUntilRuntimeStage)(c,o(c.headers));case"private-cache":return o(c.headers);case"request":if((0,g.trackDynamicDataInDynamicRender)(c),c.asyncApiPromises)return(0,f.isInEarlyRenderStage)(c)?c.asyncApiPromises.earlyHeaders:c.asyncApiPromises.headers;return o(c.headers)}}(0,f.throwForMissingRequestStore)(a)}a.r(31382);let n=new WeakMap;function o(a){let b=n.get(a);if(b)return b;let c=Promise.resolve(a);return n.set(a,c),c}(0,j.createDedupedByCallsiteServerErrorLoggerDev)(function(a,b){let c=a?`Route "${a}" `:"This route ";return Object.defineProperty(Error(`${c}used ${b}. \`headers()\` returns a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`),"__NEXT_ERROR_CODE",{value:"E836",enumerable:!1,configurable:!0})})},51125,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"draftMode",{enumerable:!0,get:function(){return l}});let d=a.r(32319),e=a.r(56704),f=a.r(60384),g=a.r(8018),h=a.r(60312),i=a.r(96556),j=a.r(50640),k=a.r(13091);function l(){let a="draftMode",b=e.workAsyncStorage.getStore(),c=d.workUnitAsyncStorage.getStore();switch((!b||!c)&&(0,d.throwForMissingRequestStore)(a),c.type){case"prerender-runtime":return(0,k.delayUntilRuntimeStage)(c,m(c.draftMode,b));case"request":return m(c.draftMode,b);case"cache":case"private-cache":case"unstable-cache":let f=(0,d.getDraftModeProviderForCacheScope)(b,c);if(f)return m(f,b);case"prerender":case"prerender-ppr":case"prerender-legacy":return m(null,b);case"prerender-client":case"validation-client":{let a="`draftMode`";throw Object.defineProperty(new j.InvariantError(`${a} must not be used within a Client Component. Next.js should be preventing ${a} from being included in Client Components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1046",enumerable:!1,configurable:!0})}case"generate-static-params":throw Object.defineProperty(Error(`Route ${b.route} used \`${a}()\` inside \`generateStaticParams\`. This is not supported because \`generateStaticParams\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`),"__NEXT_ERROR_CODE",{value:"E1132",enumerable:!1,configurable:!0});default:return c}}function m(a,b){let c=o.get(a??n);return c||Promise.resolve(new p(a))}a.r(51409);let n={},o=new WeakMap;class p{constructor(a){this._provider=a}get isEnabled(){return null!==this._provider&&this._provider.isEnabled}enable(){q("draftMode().enable()",this.enable),null!==this._provider&&this._provider.enable()}disable(){q("draftMode().disable()",this.disable),null!==this._provider&&this._provider.disable()}}function q(a,b){let c=e.workAsyncStorage.getStore(),g=d.workUnitAsyncStorage.getStore();if(c){if((null==g?void 0:g.phase)==="after")throw Object.defineProperty(Error(`Route ${c.route} used "${a}" inside \`after()\`. The enabled status of \`draftMode()\` can be read inside \`after()\` but you cannot enable or disable \`draftMode()\`. See more info here: https://nextjs.org/docs/app/api-reference/functions/after`),"__NEXT_ERROR_CODE",{value:"E845",enumerable:!1,configurable:!0});if(c.dynamicShouldError)throw Object.defineProperty(new h.StaticGenBailoutError(`Route ${c.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${a}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E553",enumerable:!1,configurable:!0});if(g)switch(g.type){case"cache":case"private-cache":{let d=Object.defineProperty(Error(`Route ${c.route} used "${a}" inside "use cache". The enabled status of \`draftMode()\` can be read in caches but you must not enable or disable \`draftMode()\` inside a cache. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E829",enumerable:!1,configurable:!0});throw Error.captureStackTrace(d,b),c.invalidDynamicUsageError??=d,d}case"unstable-cache":throw Object.defineProperty(Error(`Route ${c.route} used "${a}" inside a function cached with \`unstable_cache()\`. The enabled status of \`draftMode()\` can be read in caches but you must not enable or disable \`draftMode()\` inside a cache. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`),"__NEXT_ERROR_CODE",{value:"E844",enumerable:!1,configurable:!0});case"prerender":case"prerender-runtime":{let b=Object.defineProperty(Error(`Route ${c.route} used ${a} without first calling \`await connection()\`. See more info here: https://nextjs.org/docs/messages/next-prerender-sync-headers`),"__NEXT_ERROR_CODE",{value:"E126",enumerable:!1,configurable:!0});return(0,f.abortAndThrowOnSynchronousRequestDataAccess)(c.route,a,b,g)}case"prerender-client":case"validation-client":let d="`draftMode`";throw Object.defineProperty(new j.InvariantError(`${d} must not be used within a Client Component. Next.js should be preventing ${d} from being included in Client Components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1046",enumerable:!1,configurable:!0});case"prerender-ppr":return(0,f.postponeWithTracking)(c.route,a,g.dynamicTracking);case"prerender-legacy":g.revalidate=0;let e=Object.defineProperty(new i.DynamicServerError(`Route ${c.route} couldn't be rendered statically because it used \`${a}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`),"__NEXT_ERROR_CODE",{value:"E558",enumerable:!1,configurable:!0});throw c.dynamicUsageDescription=a,c.dynamicUsageStack=e.stack,e;case"request":(0,f.trackDynamicDataInDynamicRender)(g);break;case"generate-static-params":throw Object.defineProperty(Error(`Route ${c.route} used \`${a}\` inside \`generateStaticParams\`. This is not supported because \`generateStaticParams\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`),"__NEXT_ERROR_CODE",{value:"E1121",enumerable:!1,configurable:!0})}}}(0,g.createDedupedByCallsiteServerErrorLoggerDev)(function(a,b){let c=a?`Route "${a}" `:"This route ";return Object.defineProperty(Error(`${c}used ${b}. \`draftMode()\` returns a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`),"__NEXT_ERROR_CODE",{value:"E835",enumerable:!1,configurable:!0})})},5246,(a,b,c)=>{b.exports.cookies=a.r(81740).cookies,b.exports.headers=a.r(35754).headers,b.exports.draftMode=a.r(51125).draftMode},45017,a=>{"use strict";a.s(["Sidebar",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call Sidebar() from the server but Sidebar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/sidebar.tsx <module evaluation>","Sidebar")},10398,a=>{"use strict";a.s(["Sidebar",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call Sidebar() from the server but Sidebar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/sidebar.tsx","Sidebar")},23604,a=>{"use strict";a.i(45017);var b=a.i(10398);a.n(b)},59969,a=>{"use strict";a.s(["LiveRefresher",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call LiveRefresher() from the server but LiveRefresher is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/live-refresher.tsx <module evaluation>","LiveRefresher")},11272,a=>{"use strict";a.s(["LiveRefresher",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call LiveRefresher() from the server but LiveRefresher is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/live-refresher.tsx","LiveRefresher")},30642,a=>{"use strict";a.i(59969);var b=a.i(11272);a.n(b)},99153,a=>{"use strict";a.s(["LiveSessionsWidget",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call LiveSessionsWidget() from the server but LiveSessionsWidget is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/live-sessions-widget.tsx <module evaluation>","LiveSessionsWidget")},62615,a=>{"use strict";a.s(["LiveSessionsWidget",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call LiveSessionsWidget() from the server but LiveSessionsWidget is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/live-sessions-widget.tsx","LiveSessionsWidget")},9647,a=>{"use strict";a.i(99153);var b=a.i(62615);a.n(b)},14022,a=>{"use strict";a.s(["JobQueueWidget",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call JobQueueWidget() from the server but JobQueueWidget is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/job-queue-widget.tsx <module evaluation>","JobQueueWidget")},5900,a=>{"use strict";a.s(["JobQueueWidget",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call JobQueueWidget() from the server but JobQueueWidget is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/web/components/job-queue-widget.tsx","JobQueueWidget")},84829,a=>{"use strict";a.i(14022);var b=a.i(5900);a.n(b)},28992,a=>{"use strict";var b=a.i(7997),c=a.i(5246),d=a.i(23604),e=a.i(30642),f=a.i(9647),g=a.i(84829);a.i(23895);var h=a.i(88522),i=a.i(67116),j=a.i(70709),k=a.i(76597),l=a.i(40095);async function m({children:a}){let[n,o,p,q]=await Promise.all([(0,h.listProjects)(),(0,h.walkJsonlFiles)(),(0,i.listSessions)(),(0,k.buildEntriesIndex)()]),r=p.slice(0,20),s=p.length,t=(0,j.latestUsageSnapshot)(),u=r.map(a=>({id:a.id,projectName:a.projectName,firstUserPreview:a.firstUserPreview,lastUserPreview:a.lastUserPreview,lastAgentPreview:a.lastAgentPreview,firstTimestamp:a.firstTimestamp,lastTimestamp:a.lastTimestamp,teamName:a.teamName,agentName:a.agentName,agent:a.agent})),v={};for(let a of r){let b=q.bySession.get(a.id)??[];if(0===b.length)continue;let c=b[b.length-1];v[a.id]={outcome:c.enrichment.outcome??null,enrichmentStatus:c.enrichment.status,localDay:c.local_day}}let w=await (0,c.cookies)(),x=w.get("claude-lens-theme")?.value;return(0,b.jsx)("html",{lang:"en","data-theme":"light"===x||"dark"===x?x:"dark",suppressHydrationWarning:!0,children:(0,b.jsxs)("body",{children:[(0,b.jsx)(e.LiveRefresher,{}),(0,b.jsxs)("div",{style:{display:"flex",height:"100vh"},children:[(0,b.jsx)(d.Sidebar,{projects:n,totalSessions:s,currentUsage:t,version:"0.9.0",latestChangelogVersion:l.LATEST_VERSION}),(0,b.jsx)("main",{style:{flex:1,minWidth:0,minHeight:0,padding:0,overflow:"auto"},children:a})]}),(0,b.jsx)(f.LiveSessionsWidget,{sessions:u,entrySummaries:v}),(0,b.jsx)(g.JobQueueWidget,{})]})})}a.s(["default",0,m,"dynamic",0,"force-dynamic","metadata",0,{title:"Fleetlens",description:"Multi-agent fleet analytics — local-only dashboard for Claude Code, Codex, and other coding-agent sessions."}],28992)},44665,a=>{a.n(a.i(28992))}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_0xu2pvc._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[70709,a=>{"use strict";var b=a.i(717),c=a.i(2157),d=a.i(50227),e=a.i(60526);let f=(0,b.cache)(()=>{let a=process.env.CCLENS_USAGE_LOG||(0,d.join)((0,e.homedir)(),".cclens","usage.jsonl");if(!(0,c.existsSync)(a))return[];let b=(0,c.readFileSync)(a,"utf8"),f=[];for(let a of b.split("\n"))if(a.trim())try{f.push(JSON.parse(a))}catch{}return f}),g=(0,b.cache)(()=>{let a=f().filter(a=>(a.agent??"claude-code")==="claude-code");return a.length>0?a[a.length-1]:null}),h=(0,b.cache)(a=>{let b=f().filter(b=>(b.agent??"claude-code")===a);return b.length>0?b[b.length-1]:null}),i=(0,b.cache)(a=>f().filter(b=>(b.agent??"claude-code")===a)),j=(0,b.cache)(()=>{let a=process.env.CCLENS_PROFILE_CACHE||(0,d.join)((0,e.homedir)(),".cclens","profile.json");if(!(0,c.existsSync)(a))return null;try{let b=JSON.parse((0,c.readFileSync)(a,"utf8"));if(!b.profile?.planTier)return null;return{planTier:b.profile.planTier,rateLimitTier:b.profile.rateLimitTier??null,organizationType:b.profile.organizationType??null,fetchedAtMs:"number"==typeof b.fetchedAtMs?b.fetchedAtMs:0}}catch{return null}});a.s(["PLAN_TIER_LABELS",0,{pro:{label:"Claude Pro",monthlyPriceUsd:20},"pro-max":{label:"Claude Pro Max",monthlyPriceUsd:100},"pro-max-20x":{label:"Claude Pro Max 20x",monthlyPriceUsd:200},custom:{label:"Custom plan",monthlyPriceUsd:0}},"latestUsageSnapshot",0,g,"latestUsageSnapshotByAgent",0,h,"readCachedPlanTier",0,j,"readUsageSnapshots",0,f,"readUsageSnapshotsByAgent",0,i])},40095,a=>{"use strict";let b=/^##\s+\[([^\]]+)\](?:\s+[—\-–]\s+(\S+))?\s*$/,c=/^###\s+(.+?)\s*$/,d=/^[-*]\s+(.+?)\s*$/,e=function(a){let e=a.split(/\r?\n/),f=[],g=null,h=null,i=[];function j(){h&&i.length>0&&(h.bullets.push(i.join(" ").trim()),i=[])}for(let a of e){let e=b.exec(a);if(e){j(),h=null,g={version:e[1].trim(),date:e[2]?.trim()??null,sections:[]},f.push(g);continue}if(!g)continue;let k=c.exec(a);if(k){j(),h={kind:k[1].trim(),bullets:[]},g.sections.push(h);continue}let l=d.exec(a);if(l){j(),i=[l[1]];continue}i.length>0&&a.trim().length>0&&i.push(a.trim())}return j(),f}("# Changelog\n\nAll notable user-facing changes to the Fleetlens CLI (`fleetlens` on npm) are\nrecorded here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).\nThe team-server has its own log at `packages/team-server/CHANGELOG.md`.\n\n## [0.7.1] — 2026-05-07\n\n### Fixed\n- Cycle-peaks trend no longer renders two bars labeled the same day. When Anthropic's rolling 7-day window slid its anchor between consecutive polls, the daemon's bucketer (hour-rounded) recorded both reset boundaries as distinct cycles. They're now merged within a 12 h tolerance — same fix in `apps/web/lib/cycle-peaks.ts` (used by `/usage`) and in `packages/cli/src/team/sync.ts` (the daemon's team-server push), so both the personal `/usage` chart and the team-server's plan-utilization view stay consistent. 5-hour cycles keep no merge tolerance (their anchor is stable; merging would collapse legitimate distinct cycles).\n\n## [0.6.4] — 2026-05-04\n\n### Fixed\n- Cached calibration events per-file so `/usage` warm renders complete in well under a second on large session histories.\n\n## [0.6.3] — 2026-05-04\n\n### Fixed\n- Dropped poisoned auto-week locks left behind by interrupted runs; backfill now gates on the live pipeline lock instead.\n\n## [0.6.2] — 2026-05-04\n\n### Added\n- Last week's digest auto-generates on launch when AI features are on. Disable in Settings → AI features.\n\n## [0.6.1] — 2026-05-04\n\n### Changed\n- Smaller install size — published bundle no longer drags in unused workspace metadata.\n\n## [0.6.0] — 2026-04-30\n\n### Added\n- V2 perception layer. Daily, weekly, and monthly digests synthesized from per-session entries via a strict hierarchical pipeline (entry → day → week → month). Past-period digests are immutable on disk; current-period digests use a 10-min in-memory TTL.\n- `/insights` route with on-demand week and month digest generation, picker history, and force-regen.\n- `fleetlens digest day | week | month [--json]` — CLI surface that reproduces the same digests served at `/insights`.\n- `fleetlens entries [--day | --session | --all] [--json]` — inspect the per-session entry primitive.\n\n### Changed\n- Renamed \"active time\" to \"agent time\" across the dashboard and CLI for clarity.\n\n## [0.4.1] — 2026-04-23\n\n### Added\n- Concurrency view on `/parallelism` page. Bursts colored teal for same-project and purple for cross-project (the genuinely interesting fleet-work signal).\n- Plan utilization sparkline on the sidebar, fed by the usage daemon's 5-min snapshots.\n\n### Fixed\n- Auto-update no longer leaves a zombie web server on the old binary; both server and daemon are torn down before re-exec.\n\n## [0.4.0] — 2026-04-18\n\n### Added\n- Usage daemon (`fleetlens daemon …`) polls `/api/oauth/usage` every 5 min and appends snapshots to `~/.cclens/usage.jsonl`. `fleetlens start` and `fleetlens stop` manage server + daemon together.\n- `fleetlens usage --history` for inspecting past plan utilization.\n\n## [0.3.0] — 2026-04-10\n\n### Added\n- Project rollups with worktree aggregation. Sessions inside `<project>/.worktrees/<name>` roll up under their parent canonical project with a `+N wt` badge.\n- Pinned projects in the sidebar (per-browser via localStorage).\n\n## [0.2.0] — 2026-04-01\n\n### Changed\n- Active-segment computation now uses all timestamped events (system + summary + sidechain + conversational) instead of conversational-only. Earlier filter undercounted by up to 100x on tool-heavy sessions.\n\n## [0.1.0] — 2026-03-15\n\n### Added\n- Initial release. Local-only dashboard for Claude Code sessions: timeline, projects, daily activity bucketing, parallelism detection, per-model cost estimation. Reads JSONL transcripts from `~/.claude/projects/`.\n"),f=e[0]?.version??null;a.s(["ENTRIES",0,e,"LATEST_VERSION",0,f],40095)}];
|
|
1
|
+
module.exports=[70709,a=>{"use strict";var b=a.i(717),c=a.i(2157),d=a.i(50227),e=a.i(60526);let f=(0,b.cache)(()=>{let a=process.env.CCLENS_USAGE_LOG||(0,d.join)((0,e.homedir)(),".cclens","usage.jsonl");if(!(0,c.existsSync)(a))return[];let b=(0,c.readFileSync)(a,"utf8"),f=[];for(let a of b.split("\n"))if(a.trim())try{f.push(JSON.parse(a))}catch{}return f}),g=(0,b.cache)(()=>{let a=f().filter(a=>(a.agent??"claude-code")==="claude-code");return a.length>0?a[a.length-1]:null}),h=(0,b.cache)(a=>{let b=f().filter(b=>(b.agent??"claude-code")===a);return b.length>0?b[b.length-1]:null}),i=(0,b.cache)(a=>f().filter(b=>(b.agent??"claude-code")===a)),j=(0,b.cache)(()=>{let a=process.env.CCLENS_PROFILE_CACHE||(0,d.join)((0,e.homedir)(),".cclens","profile.json");if(!(0,c.existsSync)(a))return null;try{let b=JSON.parse((0,c.readFileSync)(a,"utf8"));if(!b.profile?.planTier)return null;return{planTier:b.profile.planTier,rateLimitTier:b.profile.rateLimitTier??null,organizationType:b.profile.organizationType??null,fetchedAtMs:"number"==typeof b.fetchedAtMs?b.fetchedAtMs:0}}catch{return null}});a.s(["PLAN_TIER_LABELS",0,{pro:{label:"Claude Pro",monthlyPriceUsd:20},"pro-max":{label:"Claude Pro Max",monthlyPriceUsd:100},"pro-max-20x":{label:"Claude Pro Max 20x",monthlyPriceUsd:200},custom:{label:"Custom plan",monthlyPriceUsd:0}},"latestUsageSnapshot",0,g,"latestUsageSnapshotByAgent",0,h,"readCachedPlanTier",0,j,"readUsageSnapshots",0,f,"readUsageSnapshotsByAgent",0,i])},40095,a=>{"use strict";let b=/^##\s+\[([^\]]+)\](?:\s+[—\-–]\s+(\S+))?\s*$/,c=/^###\s+(.+?)\s*$/,d=/^[-*]\s+(.+?)\s*$/,e=function(a){let e=a.split(/\r?\n/),f=[],g=null,h=null,i=[];function j(){h&&i.length>0&&(h.bullets.push(i.join(" ").trim()),i=[])}for(let a of e){let e=b.exec(a);if(e){j(),h=null,g={version:e[1].trim(),date:e[2]?.trim()??null,sections:[]},f.push(g);continue}if(!g)continue;let k=c.exec(a);if(k){j(),h={kind:k[1].trim(),bullets:[]},g.sections.push(h);continue}let l=d.exec(a);if(l){j(),i=[l[1]];continue}i.length>0&&a.trim().length>0&&i.push(a.trim())}return j(),f}("# Changelog\n\nAll notable user-facing changes to the Fleetlens CLI (`fleetlens` on npm) are\nrecorded here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).\nThe team-server has its own log at `packages/team-server/CHANGELOG.md`.\n\n## [0.9.0] — 2026-05-07\n\n### Added\n- **Gemini CLI** as the third agent source. Sessions written to `~/.gemini/tmp/<slug>/chats/session-*.jsonl` are now read, parsed, and rendered alongside Claude Code and Codex. Tool calls (`read_file`, `list_directory`, `glob`, `run_shell_command`, `update_topic`, …) and their results show in the session timeline; thinking blocks, multi-write status replay, `$set` / `$rewindTo` semantics, and the legacy single-JSON file shape all handled. Slug → cwd inversion via `~/.gemini/projects.json`. `✺` glyph + purple accent in the UI.\n\n### Changed\n- Session detail timeline drops in-turn idle hatching. Within a turn, every wait — model loading, tool execution, network — is the agent's active time. Only between-turn idle (user reading + composing the next message) renders as hatched.\n- Gemini parser anchors `firstTimestamp`, `lastTimestamp`, and `activeSegments` on conversational events only. Login/OAuth `info` records and `metadata.startTime` (file-creation moment) no longer stretch the session bar back to before the first user message.\n\n## [0.7.1] — 2026-05-07\n\n### Fixed\n- Cycle-peaks trend no longer renders two bars labeled the same day. When Anthropic's rolling 7-day window slid its anchor between consecutive polls, the daemon's bucketer (hour-rounded) recorded both reset boundaries as distinct cycles. They're now merged within a 12 h tolerance — same fix in `apps/web/lib/cycle-peaks.ts` (used by `/usage`) and in `packages/cli/src/team/sync.ts` (the daemon's team-server push), so both the personal `/usage` chart and the team-server's plan-utilization view stay consistent. 5-hour cycles keep no merge tolerance (their anchor is stable; merging would collapse legitimate distinct cycles).\n\n## [0.6.4] — 2026-05-04\n\n### Fixed\n- Cached calibration events per-file so `/usage` warm renders complete in well under a second on large session histories.\n\n## [0.6.3] — 2026-05-04\n\n### Fixed\n- Dropped poisoned auto-week locks left behind by interrupted runs; backfill now gates on the live pipeline lock instead.\n\n## [0.6.2] — 2026-05-04\n\n### Added\n- Last week's digest auto-generates on launch when AI features are on. Disable in Settings → AI features.\n\n## [0.6.1] — 2026-05-04\n\n### Changed\n- Smaller install size — published bundle no longer drags in unused workspace metadata.\n\n## [0.6.0] — 2026-04-30\n\n### Added\n- V2 perception layer. Daily, weekly, and monthly digests synthesized from per-session entries via a strict hierarchical pipeline (entry → day → week → month). Past-period digests are immutable on disk; current-period digests use a 10-min in-memory TTL.\n- `/insights` route with on-demand week and month digest generation, picker history, and force-regen.\n- `fleetlens digest day | week | month [--json]` — CLI surface that reproduces the same digests served at `/insights`.\n- `fleetlens entries [--day | --session | --all] [--json]` — inspect the per-session entry primitive.\n\n### Changed\n- Renamed \"active time\" to \"agent time\" across the dashboard and CLI for clarity.\n\n## [0.4.1] — 2026-04-23\n\n### Added\n- Concurrency view on `/parallelism` page. Bursts colored teal for same-project and purple for cross-project (the genuinely interesting fleet-work signal).\n- Plan utilization sparkline on the sidebar, fed by the usage daemon's 5-min snapshots.\n\n### Fixed\n- Auto-update no longer leaves a zombie web server on the old binary; both server and daemon are torn down before re-exec.\n\n## [0.4.0] — 2026-04-18\n\n### Added\n- Usage daemon (`fleetlens daemon …`) polls `/api/oauth/usage` every 5 min and appends snapshots to `~/.cclens/usage.jsonl`. `fleetlens start` and `fleetlens stop` manage server + daemon together.\n- `fleetlens usage --history` for inspecting past plan utilization.\n\n## [0.3.0] — 2026-04-10\n\n### Added\n- Project rollups with worktree aggregation. Sessions inside `<project>/.worktrees/<name>` roll up under their parent canonical project with a `+N wt` badge.\n- Pinned projects in the sidebar (per-browser via localStorage).\n\n## [0.2.0] — 2026-04-01\n\n### Changed\n- Active-segment computation now uses all timestamped events (system + summary + sidechain + conversational) instead of conversational-only. Earlier filter undercounted by up to 100x on tool-heavy sessions.\n\n## [0.1.0] — 2026-03-15\n\n### Added\n- Initial release. Local-only dashboard for Claude Code sessions: timeline, projects, daily activity bucketing, parallelism detection, per-model cost estimation. Reads JSONL transcripts from `~/.claude/projects/`.\n"),f=e[0]?.version??null;a.s(["ENTRIES",0,e,"LATEST_VERSION",0,f],40095)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=apps_web_lib_0m67-xi._.js.map
|