ccusage 19.0.3 → 20.0.1
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/README.md +81 -14
- package/config-schema.json +7485 -1797
- package/dist/cli.js +1 -1
- package/package.json +15 -16
- package/dist/data-loader-LJFbLyZj.js +0 -13
- package/dist/data-loader.js +0 -1
- package/dist/index.js +0 -3
- package/dist/main-CxjI02GS.js +0 -16
- package/dist/main.bun.js +0 -3
- package/dist/main.node.js +0 -3
package/dist/cli.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{
|
|
2
|
+
import{createRequire as e}from"node:module";import{spawn as t}from"node:child_process";import{chmodSync as n,statSync as r}from"node:fs";import i from"node:process";const a=e(import.meta.url);function o(e=i.platform,t=i.arch){if(e===`darwin`)return t===`arm64`?`@ccusage/ccusage-darwin-arm64`:t===`x64`?`@ccusage/ccusage-darwin-x64`:void 0;if(e===`linux`)return t===`arm64`?`@ccusage/ccusage-linux-arm64`:t===`x64`?`@ccusage/ccusage-linux-x64`:void 0;if(e===`win32`){if(t===`arm64`)return`@ccusage/ccusage-win32-arm64`;if(t===`x64`)return`@ccusage/ccusage-win32-x64`}}function s(e=i.platform){return e===`win32`?`bin/ccusage.exe`:`bin/ccusage`}function c({arch:e=i.arch,platform:t=i.platform,resolvePath:n=e=>a.resolve(e)}={}){let r=o(t,e);if(r!=null)try{return n(`${r}/${s(t)}`)}catch{return}}function l({argv:e,arch:t=i.arch,nativeBinaryPath:n=c(),platform:r=i.platform}){return n==null?{errorMessage:`ccusage native binary is not available for ${r}-${t}. Reinstall ccusage so optional native dependencies are installed.\n`}:{args:e,command:n}}function u(e){return e instanceof Error?e.message:String(e)}function d({binaryPath:e,chmodPath:t=n,platform:a=i.platform,statPath:o=r}){if(a!==`win32`)try{if(o(e).mode&73)return;t(e,493);return}catch(e){return`ccusage native binary is not executable: ${u(e)}\n`}}function f(){return async(e,n)=>new Promise(r=>{let i=t(e,n,{stdio:`inherit`});i.on(`error`,e=>{r({error:e,signal:null,status:null})}),i.on(`exit`,(e,t)=>{r({signal:t,status:e})})})}async function p(e,t=f()){let n=l({argv:e});if(`errorMessage`in n)return i.stderr.write(n.errorMessage),1;let r=d({binaryPath:n.command});if(r!=null)return i.stderr.write(r),1;let a=await t(n.command,n.args);return a.error==null?a.signal==null?a.status??1:(i.kill(i.pid,a.signal),1):(i.stderr.write(`${a.error.message}\n`),1)}i.exitCode=await p(i.argv.slice(2));export{};
|
|
3
3
|
//# sourceMappingURL=cli.js.map
|
package/package.json
CHANGED
|
@@ -1,26 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ccusage",
|
|
3
|
-
"
|
|
4
|
-
"version": "19.0.3",
|
|
3
|
+
"version": "20.0.1",
|
|
5
4
|
"description": "Analyze coding (agent) CLI token usage and costs from local data",
|
|
6
|
-
"author": "ryoppippi",
|
|
7
|
-
"license": "MIT",
|
|
8
|
-
"funding": "https://github.com/ryoppippi/ccusage?sponsor=1",
|
|
9
5
|
"homepage": "https://github.com/ryoppippi/ccusage#readme",
|
|
6
|
+
"bugs": {
|
|
7
|
+
"url": "https://github.com/ryoppippi/ccusage/issues"
|
|
8
|
+
},
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"author": "ryoppippi",
|
|
10
11
|
"repository": {
|
|
11
12
|
"type": "git",
|
|
12
13
|
"url": "git+https://github.com/ryoppippi/ccusage.git",
|
|
13
14
|
"directory": "apps/ccusage"
|
|
14
15
|
},
|
|
15
|
-
"
|
|
16
|
-
"url": "https://github.com/ryoppippi/ccusage/issues"
|
|
17
|
-
},
|
|
18
|
-
"exports": {
|
|
19
|
-
".": "./dist/index.js",
|
|
20
|
-
"./package.json": "./package.json"
|
|
21
|
-
},
|
|
22
|
-
"main": "./dist/index.js",
|
|
23
|
-
"module": "./dist/index.js",
|
|
16
|
+
"funding": "https://github.com/ryoppippi/ccusage?sponsor=1",
|
|
24
17
|
"bin": {
|
|
25
18
|
"ccusage": "./dist/cli.js"
|
|
26
19
|
},
|
|
@@ -28,7 +21,13 @@
|
|
|
28
21
|
"config-schema.json",
|
|
29
22
|
"dist/**/*.js"
|
|
30
23
|
],
|
|
31
|
-
"
|
|
32
|
-
|
|
24
|
+
"type": "module",
|
|
25
|
+
"optionalDependencies": {
|
|
26
|
+
"@ccusage/ccusage-darwin-arm64": "20.0.1",
|
|
27
|
+
"@ccusage/ccusage-darwin-x64": "20.0.1",
|
|
28
|
+
"@ccusage/ccusage-linux-x64": "20.0.1",
|
|
29
|
+
"@ccusage/ccusage-win32-x64": "20.0.1",
|
|
30
|
+
"@ccusage/ccusage-linux-arm64": "20.0.1",
|
|
31
|
+
"@ccusage/ccusage-win32-arm64": "20.0.1"
|
|
33
32
|
}
|
|
34
33
|
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import{createReadStream as e,statSync as t}from"node:fs";import n from"node:path";import r from"node:process";import{readFile as i,readdir as a,stat as o}from"node:fs/promises";import s,{homedir as c}from"node:os";import{Buffer as l}from"node:buffer";import{Worker as u,isMainThread as d,parentPort as f,workerData as p}from"node:worker_threads";import{createInterface as m}from"node:readline";import{inspect as h,styleText as g}from"node:util";var _=`ccusage`,ee=`19.0.3`,te=`Analyze coding (agent) CLI token usage and costs from local data`;function ne(e){return e??=[],Array.isArray(e)?e:[e]}const v=e=>e.type===`Failure`,y=e=>typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`&&`catch`in e&&typeof e.catch==`function`,re=e=>t=>{let n=t=>v(t)?t:e(t.value);return y(t)?t.then(n):n(t)},ie=e=>t=>{let n=t=>{if(v(t))return t;let n=e(t.value);return y(n)?n.then(e=>v(e)?e:t):v(n)?n:t};return y(t)?t.then(n):n(t)},ae=e=>e.type===`Success`,b=(...e)=>{if(e.length<=0)return{type:`Success`};let t=e[0];return y(t)?t.then(e=>({type:`Success`,value:e})):{type:`Success`,value:t}},x=(...e)=>{if(e.length<=0)return{type:`Failure`};let t=e[0];return y(t)?t.then(e=>({type:`Failure`,error:e})):{type:`Failure`,error:t}},oe=e=>t=>{let n=t=>(ae(t)&&e(t.value),t);return y(t)?t.then(n):n(t)},se=e=>t=>{let n=t=>(v(t)&&e(t.error),t);return y(t)?t.then(n):n(t)},ce=e=>typeof e==`object`&&!!e&&`type`in e&&(e.type===`Success`&&`value`in e||e.type===`Failure`&&`error`in e),S=e=>t=>{let n=t=>v(t)?t:b(e(t.value));return y(t)?t.then(n):n(t)},le=e=>t=>{let n=t=>ae(t)?t:e(t.error);return y(t)?t.then(n):n(t)},C=(e,...t)=>{let n=e;for(let e of t)n=e(n);return n},w=e=>y(e.try)?`safe`in e&&e.safe?b(e.try):e.try.then(e=>b(e),t=>x(e.catch(t))):(...t)=>{try{let n=e.try(...t);if(y(n)){let t=b(n);return`safe`in e&&e.safe?t:t.catch(t=>x(e.catch(t)))}return b(n)}catch(t){if(`safe`in e&&e.safe)throw t;return x(e.catch(t))}},ue=(...e)=>{let t=e[0];if(ce(t)||y(t)){let n=t,r=e.length===2,i=r?e[1]:void 0,a=e=>{if(v(e)){if(r)return i;throw e.error}return e.value};return y(n)?n.then(a):a(n)}let n=e.length===1,r=n?e[0]:void 0;return e=>{let t=e=>{if(v(e)){if(n)return r;throw e.error}return e.value};return y(e)?e.then(t):t(e)}};function de(e){let t=[];return t.length=e,t}function fe(e,t){return e<t?-1:+(e>t)}function pe(e,t,n=`desc`){let r=e.map((e,n)=>{let r=t(e);return{index:n,item:e,time:typeof r==`string`?Date.parse(r):r.getTime()}}),i=n===`asc`?1:-1;return r.sort((e,t)=>(e.time-t.time)*i||e.index-t.index).map(({item:e})=>e)}function T(){var e=typeof SuppressedError==`function`?SuppressedError:function(e,t){var n=Error();return n.name=`SuppressedError`,n.error=e,n.suppressed=t,n},t={},n=[];function r(e,t){if(t!=null){if(Object(t)!==t)throw TypeError(`using declarations can only be used with objects, functions, null, or undefined.`);if(e)var r=t[Symbol.asyncDispose||Symbol.for(`Symbol.asyncDispose`)];if(r===void 0&&(r=t[Symbol.dispose||Symbol.for(`Symbol.dispose`)],e))var i=r;if(typeof r!=`function`)throw TypeError(`Object is not disposable.`);i&&(r=function(){try{i.call(t)}catch(e){return Promise.reject(e)}}),n.push({v:t,d:r,a:e})}else e&&n.push({d:t,a:e});return t}return{e:t,u:r.bind(null,!1),a:r.bind(null,!0),d:function(){var r,i=this.e,a=0;function o(){for(;r=n.pop();)try{if(!r.a&&a===1)return a=0,n.push(r),Promise.resolve().then(o);if(r.d){var e=r.d.call(r.v);if(r.a)return a|=2,Promise.resolve(e).then(o,s)}else a|=1}catch(e){return s(e)}if(a===1)return i===t?Promise.resolve():Promise.reject(i);if(i!==t)throw i}function s(n){return i=i===t?n:new e(n,i),o()}return o()}}}function me(){let e=globalThis.Bun;return typeof e?.file==`function`?e:null}async function he(e){let t=me();return t==null?i(e,`utf8`):t.file(e).text()}async function ge(e,t){let n=me();if(n!=null){let r=n.file(e);return r.size<=t.maxBufferedBytes?r.text():null}return(await o(e)).size<=t.maxBufferedBytes?i(e,`utf8`):null}async function _e(e,t){let n=me();if(n!=null){let r=n.file(e);if(typeof r.bytes==`function`)return r.size<=t.maxBufferedBytes?r.bytes():null}return(await o(e)).size<=t.maxBufferedBytes?i(e):null}async function ve(e,t={}){let r=[],i=async e=>{let o;try{o=await a(e,{withFileTypes:!0})}catch(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;if(t===`ENOENT`||t===`ENOTDIR`||t===`EACCES`||t===`EPERM`)return;throw e}let s=[];for(let a of o){let o=n.join(e,a.name);if(a.isDirectory()){s.push(i(o));continue}a.isFile()&&(t.extension!=null&&!a.name.endsWith(t.extension)||r.push(o))}await Promise.all(s)};return await i(e),r.sort(fe)}async function ye(e,t={}){let r=async e=>{let i;try{i=await a(e,{withFileTypes:!0})}catch(e){let t=typeof e==`object`&&e&&`code`in e?e.code:void 0;if(t===`ENOENT`||t===`ENOTDIR`||t===`EACCES`||t===`EPERM`)return!1;throw e}for(let a of i){let i=n.join(e,a.name);if(a.isDirectory()&&await r(i)||a.isFile()&&(t.extension==null||a.name.endsWith(t.extension)))return!0}return!1};return r(e)}function be(e){try{return t(e).isDirectory()}catch{return!1}}const xe=128*1024*1024;function Se(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n!==32&&n!==9&&n!==10&&n!==13)return!0}return!1}async function Ce(e,t){let n=0,r=0;for(;n<e.length;){let i=e.indexOf(`
|
|
2
|
-
`,n);i===-1&&(i=e.length),r++;let a=e.slice(n,i);if(a.endsWith(`\r`)&&(a=a.slice(0,-1)),Se(a)){let e=t(a,r);e!=null&&await e}n=i+1}}function we(e){return Se(e)?e:null}function Te(e,t,n){return n.markerIndex===`byte`?l.byteLength(e.slice(0,t),n.bufferedEncoding??`utf8`):t}async function Ee(e,t,n,r={}){let i=l.isBuffer(e)?e:l.from(e.buffer,e.byteOffset,e.byteLength);if(r.scanMode===`line`){await Oe(i.toString(r.bufferedEncoding??`utf8`),t,n,r);return}let a=t.map(e=>l.from(e));if(a.length===1){await De(i,a[0],t[0],n,r);return}let o=new Map;for(let e=0;e<a.length;e++){let n=a[e],r=t[e],s=i.indexOf(n,0);for(;s!==-1;){let e=(s===0?-1:i.lastIndexOf(10,s-1))+1,t=i.indexOf(10,s);t===-1&&(t=i.length);let a=s-e,c=o.get(e);(c==null||a<c.markerIndex)&&o.set(e,{lineEnd:t,markerIndex:a,marker:r}),s=i.indexOf(n,s+n.length)}}let s=Array.from(o.keys()).sort((e,t)=>e-t);if(r.callbackMode===`sync`){for(let e of s){let t=o.get(e),a=t.lineEnd,s=a>e&&i[a-1]===13?a-1:a,c=i.toString(r.bufferedEncoding??`utf8`,e,s);n(c,r.markerIndex===`byte`?t.markerIndex:c.indexOf(t.marker),t.marker)}return}for(let e of s){let t=o.get(e),a=t.lineEnd,s=a>e&&i[a-1]===13?a-1:a,c=i.toString(r.bufferedEncoding??`utf8`,e,s),l=n(c,r.markerIndex===`byte`?t.markerIndex:c.indexOf(t.marker),t.marker);l!=null&&await l}}async function De(e,t,n,r,i){let a=0,o=e.indexOf(t,a);if(i.callbackMode===`sync`){for(;o!==-1;){for(;;){let t=e.indexOf(10,a);if(t===-1||t>=o)break;a=t+1}let s=e.indexOf(10,o);s===-1&&(s=e.length);let c=s>a&&e[s-1]===13?s-1:s,l=e.toString(i.bufferedEncoding??`utf8`,a,c),u=o-a;r(l,i.markerIndex===`byte`?u:l.indexOf(n),n),a=s+1,o=e.indexOf(t,a)}return}for(;o!==-1;){for(;;){let t=e.indexOf(10,a);if(t===-1||t>=o)break;a=t+1}let s=e.indexOf(10,o);s===-1&&(s=e.length);let c=s>a&&e[s-1]===13?s-1:s,l=e.toString(i.bufferedEncoding??`utf8`,a,c),u=o-a,d=r(l,i.markerIndex===`byte`?u:l.indexOf(n),n);d!=null&&await d,a=s+1,o=e.indexOf(t,a)}}async function Oe(e,t,n,r={}){let i=0;for(;i<e.length;){let a=e.indexOf(`
|
|
3
|
-
`,i);a===-1&&(a=e.length);let o=e.slice(i,a);if(o.endsWith(`\r`)&&(o=o.slice(0,-1)),Se(o)){let e=-1,s;for(let n of t){let t=o.indexOf(n);t!==-1&&(e===-1||t<e)&&(e=t,s=n)}if(s!=null){let t=Te(o,e,r);if(r.callbackMode===`sync`){n(o,t,s),i=a+1;continue}let c=n(o,t,s);c!=null&&await c}}i=a+1}}async function ke(e){return ge(e,{maxBufferedBytes:xe})}async function Ae(e){return _e(e,{maxBufferedBytes:xe})}async function je(t,n){let r=await ke(t);if(r!=null){await Ce(r,n);return}let i=m({input:e(t,{encoding:`utf-8`}),crlfDelay:1/0}),a=0;for await(let e of i){if(a++,!Se(e))continue;let t=n(e,a);t!=null&&await t}}async function Me(t,n,r,i={}){let a=n.map(we).filter(e=>e!=null);if(a.length===0)return;let o=await Ae(t);if(o!=null){await Ee(o,a,r,i);return}let s=await ke(t);if(s!=null){await Oe(s,a,r,i);return}let c=m({input:e(t,{encoding:`utf-8`}),crlfDelay:1/0});for await(let e of c){let t=-1,n;for(let r of a){let i=e.indexOf(r);i!==-1&&(t===-1||i<t)&&(t=i,n=r)}if(n==null)continue;let o=Te(e,t,i);if(i.callbackMode===`sync`){r(e,o,n);continue}let s=r(e,o,n);s!=null&&await s}}function Ne(e,t={}){let n=Math.max(1,s.availableParallelism()-(t.reserveParallelism??1)),r=Math.min(t.preferMoreWorkers===!0?Math.ceil(n*.75):Math.ceil(n/2),t.maxWorkers??12);return Math.min(e,Math.max(1,r))}function Pe(e){if(e.itemCount<(e.minItems??64)||!e.isMainThread||e.isTest===!0||!e.moduleUrl.includes(`/dist/`))return 0;let t=Number.parseInt(e.envValue??``,10);return Number.isFinite(t)?t<=0?0:Math.min(e.itemCount,t):Ne(e.itemCount,{maxWorkers:e.maxWorkers,preferMoreWorkers:e.preferMoreWorkers,reserveParallelism:e.reserveParallelism})}async function Fe(e,t,n){if(!Number.isInteger(t)||t<=0||e.length===0)return[];let r=await Promise.all(e.map(async e=>{try{return{item:e,weight:(await o(n(e.item))).size}}catch{return{item:e,weight:0}}}));r.sort((e,t)=>t.weight-e.weight||e.item.index-t.item.index);let i=Array.from({length:t},()=>[]),a=Array.from({length:t}).fill(0);for(let{item:e,weight:t}of r){let n=0;for(let e=1;e<a.length;e++)a[e]<a[n]&&(n=e);i[n].push(e),a[n]+=t}return i.filter(e=>e.length>0)}async function Ie(e,t,n){if(e.length===0)return[];let r=Math.floor(t),i=Number.isFinite(r)?Math.max(1,Math.min(e.length,r)):1,a=e.map((e,t)=>({item:e,index:t})),o=de(e.length),s=0;return await Promise.all(Array.from({length:i},async()=>{for(;;){let e=a[s++];if(e==null)return;o[e.index]=await n(e.item,e.index)}})),o}async function Le(e){if(e.workerCount===0)return null;let t=await Fe(e.items.map((e,t)=>({index:t,item:e})),e.workerCount,e.getFilePath??String),n=e.createWorker??((e,t)=>new u(e,{workerData:t})),r=await Promise.all(t.map(async t=>new Promise((r,i)=>{let a=n(new URL(e.moduleUrl),e.createWorkerData(t)),o=!1;a.once(`message`,e=>{o=!0,r(e.results)}),a.once(`error`,i),a.once(`exit`,t=>{t===0?o||i(Error(`Worker exited before sending results`)):i(Error(e.errorMessage.replace(`{code}`,String(t))))})}))),i=de(e.items.length);for(let e of r)for(let{index:t,result:n}of e)i[t]=n;return i}var Re;function ze(e){return{lang:e?.lang??Re?.lang,message:e?.message,abortEarly:e?.abortEarly??Re?.abortEarly,abortPipeEarly:e?.abortPipeEarly??Re?.abortPipeEarly}}var Be;function Ve(e){return Be?.get(e)}var He;function Ue(e){return He?.get(e)}var We;function Ge(e,t){return We?.get(e)?.get(t)}function E(e){let t=typeof e;return t===`string`?`"${e}"`:t===`number`||t===`bigint`||t===`boolean`?`${e}`:t===`object`||t===`function`?(e&&Object.getPrototypeOf(e)?.constructor?.name)??`null`:t}function D(e,t,n,r,i){let a=i&&`input`in i?i.input:n.value,o=i?.expected??e.expects??null,s=i?.received??E(a),c={kind:e.kind,type:e.type,input:a,expected:o,received:s,message:`Invalid ${t}: ${o?`Expected ${o} but r`:`R`}eceived ${s}`,requirement:e.requirement,path:i?.path,issues:i?.issues,lang:r.lang,abortEarly:r.abortEarly,abortPipeEarly:r.abortPipeEarly},l=e.kind===`schema`,u=i?.message??e.message??Ge(e.reference,c.lang)??(l?Ue(c.lang):null)??r.message??Ve(c.lang);u!==void 0&&(c.message=typeof u==`function`?u(c):u),l&&(n.typed=!1),n.issues?n.issues.push(c):n.issues=[c]}function O(e){return{version:1,vendor:`valibot`,validate(t){return e[`~run`]({value:t},ze())}}}function Ke(e,t){let n=[...new Set(e)];return n.length>1?`(${n.join(` ${t} `)})`:n[0]??`never`}function qe(e){if(e.path){let t=``;for(let n of e.path)if(typeof n.key==`string`||typeof n.key==`number`)t?t+=`.${n.key}`:t+=n.key;else return null;return t}return null}var Je=class extends Error{constructor(e){super(e[0].message),this.name=`ValiError`,this.issues=e}};function k(e){return{kind:`transformation`,type:`brand`,reference:k,async:!1,name:e,"~run"(e){return e}}}function Ye(e,t){return{kind:`validation`,type:`check`,reference:Ye,async:!1,expects:null,requirement:e,message:t,"~run"(e,t){return e.typed&&!this.requirement(e.value)&&D(this,`input`,e,t),e}}}function Xe(e){return{kind:`validation`,type:`integer`,reference:Xe,async:!1,expects:null,requirement:Number.isInteger,message:e,"~run"(e,t){return e.typed&&!this.requirement(e.value)&&D(this,`integer`,e,t),e}}}function Ze(e,t){return{kind:`validation`,type:`max_value`,reference:Ze,async:!1,expects:`<=${e instanceof Date?e.toJSON():E(e)}`,requirement:e,message:t,"~run"(e,t){return e.typed&&!(e.value<=this.requirement)&&D(this,`value`,e,t,{received:e.value instanceof Date?e.value.toJSON():E(e.value)}),e}}}function A(e,t){return{kind:`validation`,type:`min_length`,reference:A,async:!1,expects:`>=${e}`,requirement:e,message:t,"~run"(e,t){return e.typed&&e.value.length<this.requirement&&D(this,`length`,e,t,{received:`${e.value.length}`}),e}}}function Qe(e,t){return{kind:`validation`,type:`min_value`,reference:Qe,async:!1,expects:`>=${e instanceof Date?e.toJSON():E(e)}`,requirement:e,message:t,"~run"(e,t){return e.typed&&!(e.value>=this.requirement)&&D(this,`value`,e,t,{received:e.value instanceof Date?e.value.toJSON():E(e.value)}),e}}}function j(e,t){return{kind:`validation`,type:`regex`,reference:j,async:!1,expects:`${e}`,requirement:e,message:t,"~run"(e,t){return e.typed&&!this.requirement.test(e.value)&&D(this,`format`,e,t),e}}}function $e(e){return{kind:`transformation`,type:`transform`,reference:$e,async:!1,operation:e,"~run"(e){return e.value=this.operation(e.value),e}}}function et(){return{kind:`transformation`,type:`trim`,reference:et,async:!1,"~run"(e){return e.value=e.value.trim(),e}}}function tt(e,t,n){return typeof e.fallback==`function`?e.fallback(t,n):e.fallback}function nt(e){let t={};for(let n of e)if(n.path){let e=qe(n);e?(t.nested||={},t.nested[e]?t.nested[e].push(n.message):t.nested[e]=[n.message]):t.other?t.other.push(n.message):t.other=[n.message]}else t.root?t.root.push(n.message):t.root=[n.message];return t}function rt(e,t,n){return typeof e.default==`function`?e.default(t,n):e.default}function it(e,t){return{kind:`schema`,type:`array`,reference:it,expects:`Array`,async:!1,item:e,message:t,get"~standard"(){return O(this)},"~run"(e,t){let n=e.value;if(Array.isArray(n)){e.typed=!0,e.value=[];for(let r=0;r<n.length;r++){let i=n[r],a=this.item[`~run`]({value:i},t);if(a.issues){let o={type:`array`,origin:`value`,input:n,key:r,value:i};for(let t of a.issues)t.path?t.path.unshift(o):t.path=[o],e.issues?.push(t);if(e.issues||=a.issues,t.abortEarly){e.typed=!1;break}}a.typed||(e.typed=!1),e.value.push(a.value)}}else D(this,`type`,e,t);return e}}}function at(e){return{kind:`schema`,type:`boolean`,reference:at,expects:`boolean`,async:!1,message:e,get"~standard"(){return O(this)},"~run"(e,t){return typeof e.value==`boolean`?e.typed=!0:D(this,`type`,e,t),e}}}function M(e){return{kind:`schema`,type:`number`,reference:M,expects:`number`,async:!1,message:e,get"~standard"(){return O(this)},"~run"(e,t){return typeof e.value==`number`&&!isNaN(e.value)?e.typed=!0:D(this,`type`,e,t),e}}}function N(e,t){return{kind:`schema`,type:`object`,reference:N,expects:`Object`,async:!1,entries:e,message:t,get"~standard"(){return O(this)},"~run"(e,t){let n=e.value;if(n&&typeof n==`object`){e.typed=!0,e.value={};for(let r in this.entries){let i=this.entries[r];if(r in n||(i.type===`exact_optional`||i.type===`optional`||i.type===`nullish`)&&i.default!==void 0){let a=r in n?n[r]:rt(i),o=i[`~run`]({value:a},t);if(o.issues){let i={type:`object`,origin:`value`,input:n,key:r,value:a};for(let t of o.issues)t.path?t.path.unshift(i):t.path=[i],e.issues?.push(t);if(e.issues||=o.issues,t.abortEarly){e.typed=!1;break}}o.typed||(e.typed=!1),e.value[r]=o.value}else if(i.fallback!==void 0)e.value[r]=tt(i);else if(i.type!==`exact_optional`&&i.type!==`optional`&&i.type!==`nullish`&&(D(this,`key`,e,t,{input:void 0,expected:`"${r}"`,path:[{type:`object`,origin:`key`,input:n,key:r,value:n[r]}]}),t.abortEarly))break}}else D(this,`type`,e,t);return e}}}function P(e,t){return{kind:`schema`,type:`optional`,reference:P,expects:`(${e.expects} | undefined)`,async:!1,wrapped:e,default:t,get"~standard"(){return O(this)},"~run"(e,t){return e.value===void 0&&(this.default!==void 0&&(e.value=rt(this,e,t)),e.value===void 0)?(e.typed=!0,e):this.wrapped[`~run`](e,t)}}}function ot(e,t){return{kind:`schema`,type:`picklist`,reference:ot,expects:Ke(e.map(E),`|`),async:!1,options:e,message:t,get"~standard"(){return O(this)},"~run"(e,t){return this.options.includes(e.value)?e.typed=!0:D(this,`type`,e,t),e}}}function F(e){return{kind:`schema`,type:`string`,reference:F,expects:`string`,async:!1,message:e,get"~standard"(){return O(this)},"~run"(e,t){return typeof e.value==`string`?e.typed=!0:D(this,`type`,e,t),e}}}function st(e){let t;if(e)for(let n of e)t?t.push(...n.issues):t=n.issues;return t}function ct(e,t){return{kind:`schema`,type:`union`,reference:ct,expects:Ke(e.map(e=>e.expects),`|`),async:!1,options:e,message:t,get"~standard"(){return O(this)},"~run"(e,t){let n,r,i;for(let a of this.options){let o=a[`~run`]({value:e.value},t);if(o.typed)if(o.issues)r?r.push(o):r=[o];else{n=o;break}else i?i.push(o):i=[o]}if(n)return n;if(r){if(r.length===1)return r[0];D(this,`type`,e,t,{issues:st(r)}),e.typed=!0}else if(i?.length===1)return i[0];else D(this,`type`,e,t,{issues:st(i)});return e}}}function lt(e,t,n){let r=e[`~run`]({value:t},ze(n));if(r.issues)throw new Je(r.issues);return r.value}function I(...e){return{...e[0],pipe:e,get"~standard"(){return O(this)},"~run"(t,n){for(let r of e)if(r.kind!==`metadata`){if(t.issues&&(r.kind===`schema`||r.kind===`transformation`)){t.typed=!1;break}(!t.issues||!n.abortEarly&&!n.abortPipeEarly)&&(t=r[`~run`](t,n))}return t}}}function ut(e,t,n){let r=e[`~run`]({value:t},ze(n));return{typed:r.typed,success:!r.issues,output:r.value,issues:r.issues}}const L=s.homedir(),{env:R}=process,dt=R.XDG_DATA_HOME||(L?n.join(L,`.local`,`share`):void 0),ft=R.XDG_CONFIG_HOME||(L?n.join(L,`.config`):void 0);R.XDG_STATE_HOME||L&&n.join(L,`.local`,`state`),R.XDG_CACHE_HOME||L&&n.join(L,`.cache`),R.XDG_RUNTIME_DIR;const pt=(R.XDG_DATA_DIRS||`/usr/local/share/:/usr/share/`).split(`:`);dt&&pt.unshift(dt);const mt=(R.XDG_CONFIG_DIRS||`/etc/xdg`).split(`:`);ft&&mt.unshift(ft);const ht=c(),gt=ft??n.join(ht,`.config`),_t={LOW:50,MEDIUM:80},vt=[`sunday`,`monday`,`tuesday`,`wednesday`,`thursday`,`friday`,`saturday`],yt=I(F(),A(1,`Model name cannot be empty`),k(`ModelName`)),bt=I(F(),A(1,`Session ID cannot be empty`),k(`SessionId`)),xt=I(F(),A(1,`Request ID cannot be empty`),k(`RequestId`)),St=I(F(),A(1,`Message ID cannot be empty`),k(`MessageId`)),Ct=I(F(),j(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3})?Z$/,`Invalid ISO timestamp`),k(`ISOTimestamp`)),wt=/^\d{4}-\d{2}-\d{2}$/,Tt=I(F(),j(/^\d{4}-\d{2}$/,`Date must be in YYYY-MM format`),k(`MonthlyDate`)),Et=I(F(),j(wt,`Date must be in YYYY-MM-DD format`),k(`WeeklyDate`)),Dt=I(F(),j(/^\d{8}$/,`Date must be in YYYYMMDD format`),k(`FilterDate`)),Ot=I(F(),j(/^\d+\.\d+\.\d+/,`Invalid version format`),k(`Version`)),kt=e=>lt(bt,e),At=e=>lt(Tt,e),jt=e=>lt(Et,e);function Mt(e){let t=ut(Et,e);return t.success?t.output:At(e)}const Nt=[`auto`,`calculate`,`display`],Pt=[`desc`,`asc`],Ft=N({session_id:F(),transcript_path:F(),cwd:F(),model:N({id:F(),display_name:F()}),workspace:N({current_dir:F(),project_dir:F()}),version:P(F()),cost:P(N({total_cost_usd:M(),total_duration_ms:P(M()),total_api_duration_ms:P(M()),total_lines_added:P(M()),total_lines_removed:P(M())})),context_window:P(N({total_input_tokens:M(),total_output_tokens:P(M()),context_window_size:M()}))});function It(e){return r.env.FORCE_COLOR==null?r.env.NO_COLOR!=null&&r.env.NO_COLOR!==``?!1:e.isTTY===!0:r.env.FORCE_COLOR!==`0`}function z(e,t,n=r.stdout){return It(n)?g(e,t,{validateStream:!1}):t}function Lt(e,t){return z(`blue`,e,t)}function Rt(e,t){return z(`bold`,e,t)}function zt(e,t){return z(`cyan`,e,t)}function B(e,t){return z(`gray`,e,t)}function Bt(e,t){return z(`green`,e,t)}function Vt(e,t){return z(`red`,e,t)}function V(e,t){return z(`yellow`,e,t)}let Ht;function Ut(){return globalThis.Bun}function Wt(e){return e.includes(`\x1B7`)||e.includes(`\x1B8`)}function Gt(e){let t=``;for(let n=0;n<e.length;n++){if(e.charCodeAt(n)!==27){t+=e[n];continue}let r=e.charCodeAt(n+1);if(r===55||r===56){n++;continue}if(r===91)for(n+=2;n<e.length;){let t=e.charCodeAt(n);if(t>=64&&t<=126)break;n++}}return t}function Kt(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(r===27){if(e.charCodeAt(n+1)!==91)return;for(n+=2;n<e.length;){let t=e.charCodeAt(n);if(t>=64&&t<=126)break;n++}if(n>=e.length)return;continue}if(r>126)return;r>=32&&t++}return t}function qt(e){return e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65024&&e<=65039||e===8205}function Jt(e){return e===9001||e===9002||e===12288||e>=4352&&e<=4447||e>=8986&&e<=8987||e>=9193&&e<=9196||e>=9725&&e<=9726||e===9889||e===9989||e===10060||e>=10067&&e<=10069||e>=10133&&e<=10135||e===10160||e===10175||e>=11904&&e<=42191||e===11088||e===11093||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=127744&&e<=129791||e>=131072&&e<=262141}function Yt(e){let t=Gt(e);Ht??=new Intl.Segmenter(void 0,{granularity:`grapheme`});let n=0;for(let{segment:e}of Ht.segment(t)){let t=0,r=!1;for(let n of e){let e=n.codePointAt(0);e===65039&&(r=!0),!(e<32||qt(e))&&(t=Math.max(t,Jt(e)?2:1))}r&&(t=Math.max(t,2)),n+=t}return n}function H(e){let t=Kt(e);if(t!=null)return t;let n=Ut()?.stringWidth;return n==null?Yt(e):n(Wt(e)?Gt(e):e,{ambiguousIsNarrow:!1,countAnsiEscapeCodes:!1})}let Xt;const Zt=new Map,U=new Map;function Qt(){return Xt??=new Intl.NumberFormat(`en-US`),Xt}function $t(e,t){if(e.charCodeAt(t)!==27||e.charCodeAt(t+1)!==91)return null;let n=t+2;for(;n<e.length;){let r=e.charCodeAt(n);if(r>=64&&r<=126)return e.slice(t,n+1);n++}return null}function en(e,t){return tn(e,t).text}function tn(e,t){let n=H(e);if(n<=t)return{text:e,width:n};if(t<=1)return{text:`…`,width:1};let r=t-1,i=0,a=``,o=!1;for(let t=0;t<e.length;){let n=$t(e,t);if(n!=null){a+=n,t+=n.length,o=!0;continue}let s=e.codePointAt(t);if(s==null)break;let c=String.fromCodePoint(s),l=s<128?1:H(c);if(i+l>r)break;a+=c,i+=l,t+=c.length}return{text:`${a}…${o?`\x1B[39m`:``}`,width:t}}function nn(e,t,n){let r=tn(e,t),i=Math.max(0,t-r.width);switch(n){case`right`:return`${` `.repeat(i)}${r.text}`;case`center`:{let e=Math.floor(i/2);return`${` `.repeat(e)}${r.text}${` `.repeat(i-e)}`}case`left`:return`${r.text}${` `.repeat(i)}`}}function rn(e,t){if(H(e)<=t)return[e];let n=e.split(` `);if(n.length<=1)return[en(e,t)];let r=[],i=``;for(let e of n){let n=i===``?e:`${i} ${e}`;H(n)<=t?i=n:(i!==``&&r.push(i),i=H(e)<=t?e:en(e,t))}return i!==``&&r.push(i),r}function an(e,t){if(H(e)<=t)return[e];let n=e.split(` `);if(n.length<=1)return[en(e,t)];let r=[],i=``;for(let e of n){let n=i===``?e:`${i} ${e}`;if(H(n)<=t){i=n;continue}i!==``&&r.push(i),i=e===``?``:H(e)<=t?e:en(e,t)}return i!==``&&r.push(i),r.length===0?[``]:r}function on(e){return e.split(`
|
|
4
|
-
`)}function sn(e){return typeof e==`object`&&e&&`content`in e?String(e.content):String(e??``)}function cn(e,t,n){return`${e.toString().padStart(4,`0`)}\n${t.toString().padStart(2,`0`)}-${n.toString().padStart(2,`0`)}`}function ln(e){return new Intl.DateTimeFormat(`en-CA`,{year:`numeric`,month:`2-digit`,day:`2-digit`,timeZone:e})}function un(e,t){let n=/^\d{4}-\d{2}-\d{2}$/.test(e);if(n&&(t==null||t===`UTC`))return`${e.slice(0,4)}\n${e.slice(5)}`;let r=n?t==null?new Date(`${e}T00:00:00`):new Date(`${e}T00:00:00Z`):new Date(e);if(t==null)return cn(r.getFullYear(),r.getMonth()+1,r.getDate());if(t===`UTC`)return cn(r.getUTCFullYear(),r.getUTCMonth()+1,r.getUTCDate());let i=ln(t).formatToParts(r);return`${i.find(e=>e.type===`year`)?.value??``}\n${i.find(e=>e.type===`month`)?.value??``}-${i.find(e=>e.type===`day`)?.value??``}`}var dn=class{head;rows=[];colAligns;dateFormatter;compactHead;compactColAligns;minColumnWidths;compactMinColumnWidths;flexibleColumnIndex;compactFlexibleColumnIndex;compactThreshold;compactMode=!1;forceCompact;logger;constructor(e){this.head=e.head,this.colAligns=e.colAligns??Array.from({length:this.head.length},()=>`left`),this.dateFormatter=e.dateFormatter,this.compactHead=e.compactHead,this.compactColAligns=e.compactColAligns,this.minColumnWidths=e.minColumnWidths,this.compactMinColumnWidths=e.compactMinColumnWidths,this.flexibleColumnIndex=e.flexibleColumnIndex,this.compactFlexibleColumnIndex=e.compactFlexibleColumnIndex,this.compactThreshold=e.compactThreshold??100,this.forceCompact=e.forceCompact??!1,this.logger=e.logger??console.warn}push(e){this.rows.push(e)}filterRowToCompact(e,t){return t.map(t=>e[t]??``)}getCurrentTableConfig(){return this.compactMode&&this.compactHead!=null?{head:this.compactHead,colAligns:this.compactColAligns??Array.from({length:this.compactHead.length},()=>`left`),minColumnWidths:this.compactMinColumnWidths,flexibleColumnIndex:this.compactFlexibleColumnIndex}:{head:this.head,colAligns:this.colAligns,minColumnWidths:this.minColumnWidths,flexibleColumnIndex:this.flexibleColumnIndex}}getCompactIndices(){return this.compactHead==null||!this.compactMode?Array.from({length:this.head.length},(e,t)=>t):this.compactHead.map(e=>{let t=this.head.indexOf(e);return t<0?(this.logger(`Warning: Compact header "${e}" not found in table headers [${this.head.join(`, `)}]. Using first column as fallback.`),0):t})}isCompactMode(){return this.compactMode}toString(){let e=r.stdout.columns||Number.parseInt(r.env.COLUMNS??``,10)||120;for(this.compactMode=this.forceCompact||e<this.compactThreshold&&this.compactHead!=null;;){let{head:t,colAligns:n,minColumnWidths:r,flexibleColumnIndex:i}=this.getCurrentTableConfig(),a=this.getCompactIndices(),o=this.rows.filter(e=>!this.isSeparatorRow(e)),s=this.compactMode?o.map(e=>this.filterRowToCompact(e,a)):o,c=t.map(e=>H(e));for(let e of s)for(let n=0;n<t.length;n++){let t=Math.max(...on(sn(e[n])).map(e=>H(e)));t>c[n]&&(c[n]=t)}let l=t.length+1,u=e-l,d=c.map((e,t)=>{let a=n[t],o=r?.[t];return a===`right`?Math.max(e+2,o??11):t===i?Math.max(e+2,o??15):Math.max(e+2,o??10)}),f=d.reduce((e,t)=>e+t,0)+l;if(i!=null&&f>e&&d[i]!=null){let e=d.reduce((e,t,n)=>e+(n===i?0:t),0),t=r?.[i]??12,n=Math.max(t,u-e);d[i]=Math.min(d[i],n),f=d.reduce((e,t)=>e+t,0)+l}if(!this.compactMode&&this.compactHead!=null&&f>e){this.compactMode=!0;continue}if(f<=e)return this.renderFastTable(t,n,d,this.getRenderableRows(o,a,!1));let p=d.reduce((e,t,n)=>n===i?e:e+Math.min(t,r?.[n]??t),0),m=i==null?void 0:Math.max(r?.[i]??12,u-p),h=u/d.reduce((e,t)=>e+t,0),g=d.map((e,t)=>{let a=n[t],o=Math.floor(e*h),s=r?.[t];return t===i&&m!=null?Math.min(e,m):(o=a===`right`?Math.max(o,s??10):t===0?Math.max(o,s??12):Math.max(o,s??8),o)});return this.renderFastTable(t,n,g,this.getRenderableRows(o,a,!0))}}getRenderableRows(e,t,n){return!this.compactMode&&!n?e:e.map(e=>{let r=n?e.map((e,t)=>t===0&&this.dateFormatter!=null&&typeof e==`string`&&this.isDateString(e)?this.dateFormatter(e):e):e;return this.compactMode?this.filterRowToCompact(r,t):r})}isSeparatorRow(e){return e.every(e=>typeof e==`object`&&e&&`content`in e?e.content===``||/^─+$/.test(e.content):typeof e==`string`&&(e===``||/^─+$/.test(e)))}isDateString(e){return/^\d{4}-\d{2}-\d{2}$/.test(e)}renderFastTable(e,t,n,r=this.rows.filter(e=>!this.isSeparatorRow(e))){let i=n.map(e=>Math.max(1,e-2)),a={top:this.renderBorder(`┌`,`┬`,`┐`,i),mid:this.renderBorder(`├`,`┼`,`┤`,i),bottom:this.renderBorder(`└`,`┴`,`┘`,i)},o=[a.top];o.push(...this.renderFastRow(e,i,t,!0,!1)),o.push(a.mid);for(let e=0;e<r.length;e++)o.push(...this.renderFastRow(r[e],i,t,!1,this.compactMode)),o.push(e===r.length-1?a.bottom:a.mid);return o.join(`
|
|
5
|
-
`)}renderBorder(e,t,n,r){return B(`${e}${r.map(e=>`─`.repeat(e+2)).join(t)}${n}`)}renderFastRow(e,t,n,r,i){let a=t.map((t,n)=>{let a=sn(e[n]??``),o=r?on(a).flatMap(e=>rn(e,t)):on(a).flatMap(e=>i?an(e,t):[e]);return o.length===0?[``]:o}),o=Math.max(...a.map(e=>e.length)),s=[];for(let i=0;i<o;i++){let o=B(`│`);for(let s=0;s<t.length;s++){let c=e[s]??``,l=typeof c==`object`&&c&&`content`in c&&c.hAlign!=null?c.hAlign:n[s]??`left`,u=nn(a[s]?.[i]??``,t[s],l);o+=r?zt(` ${u} `):` ${u} `,o+=B(`│`)}s.push(o)}return s}};function W(e){let t=Zt.get(e);if(t!=null)return t;let n=Qt().format(e);return Zt.set(e,n),n}function fn(e){return`$${e.toFixed(2)}`}function pn(e){let t=U.get(e);if(t!=null)return t;let n=e,r=e.match(/^\[pi\] (.+)$/);if(r?.[1]!=null)return n=`[pi] ${pn(r[1])}`,U.set(e,n),n;let i=e.match(/^(?:anthropic\/|anthropic\.)(claude-.+)$/);if(i?.[1]!=null)return n=pn(i[1]),U.set(e,n),n;let a=e.match(/^claude-(\d+)-(\d+)-(\w+)-(\d{8})$/);if(a!=null)return n=`${a[3]}-${a[1]}-${a[2]}`,U.set(e,n),n;let o=e.match(/^claude-(\w+)-([\d-]+)-(\d{8})-fast$/);if(o!=null)return n=`${o[1]}-${o[2]}-fast`,U.set(e,n),n;let s=e.match(/^claude-(\w+)-([\d-]+)-(\d{8})$/);if(s!=null)return n=`${s[1]}-${s[2]}`,U.set(e,n),n;let c=e.match(/^claude-(\w+)-([\d.-]+)-fast$/);if(c!=null)return n=`${c[1]}-${c[2]}-fast`,U.set(e,n),n;let l=e.match(/^claude-(\w+)-([\d.-]+)$/);return l!=null&&(n=`${l[1]}-${l[2]}`),U.set(e,n),n}function mn(e){return Array.from(new Set(e.map(pn))).sort().map(e=>`- ${e}`).join(`
|
|
6
|
-
`)}function hn(e,t,n=1,r=0){for(let i of t){let t=[` └─ ${pn(i.modelName)}`];for(let e=0;e<n;e++)t.push(``);let a=i.inputTokens+i.outputTokens+i.cacheCreationTokens+i.cacheReadTokens;t.push(B(W(i.inputTokens)),B(W(i.outputTokens)),B(W(i.cacheCreationTokens)),B(W(i.cacheReadTokens)),B(W(a)),B(fn(i.cost)));for(let e=0;e<r;e++)t.push(``);e.push(t)}}function gn(e){let t=[e.firstColumnName,`Models`,`Input`,`Output`,`Cache Create`,`Cache Read`,`Total Tokens`,`Cost (USD)`],n=[`left`,`left`,`right`,`right`,`right`,`right`,`right`,`right`],r=[12,18,11,11,11,11,11,14],i=e.includeAgent===!0?[e.firstColumnName,`Agent`,`Total Tokens`,`Cost (USD)`]:[e.firstColumnName,`Models`,`Input`,`Output`,`Cost (USD)`],a=e.includeAgent===!0?[`left`,`left`,`right`,`right`]:[`left`,`left`,`right`,`right`,`right`],o=e.includeAgent===!0?[12,10,14,14]:[12,18,11,11,14];(e.includeAgent??!1)&&(t.splice(1,0,`Agent`),n.splice(1,0,`left`),r.splice(1,0,10)),(e.includeLastActivity??!1)&&(t.push(`Last Activity`),n.push(`left`),i.push(`Last Activity`),a.push(`left`));let s=t.indexOf(`Models`),c=i.indexOf(`Models`);return new dn({head:t,style:{head:[`cyan`]},colAligns:n,dateFormatter:e.dateFormatter,compactHead:i,compactColAligns:a,minColumnWidths:r,compactMinColumnWidths:o,flexibleColumnIndex:s===-1?void 0:s,compactFlexibleColumnIndex:c===-1?void 0:c,compactThreshold:100,forceCompact:e.forceCompact})}function _n(e,t,n){let r=t.inputTokens+t.outputTokens+t.cacheCreationTokens+t.cacheReadTokens,i=[e,t.modelsUsed==null?``:mn(t.modelsUsed),W(t.inputTokens),W(t.outputTokens),W(t.cacheCreationTokens),W(t.cacheReadTokens),W(r),fn(t.totalCost)];return t.agent!=null&&i.splice(1,0,t.agent),n!==void 0&&i.push(n),i}function vn(e,t=!1,n=!1){let r=e.inputTokens+e.outputTokens+e.cacheCreationTokens+e.cacheReadTokens,i=[V(`Total`),``,V(W(e.inputTokens)),V(W(e.outputTokens)),V(W(e.cacheCreationTokens)),V(W(e.cacheReadTokens)),V(W(r)),V(fn(e.totalCost))];return n&&i.splice(1,0,``),t&&i.push(``),i}function yn(e,t){let n=Array.from({length:t},()=>``);e.push(n)}const bn=new Map;function xn(e,t,n){return`${e.toString().padStart(4,`0`)}-${t.toString().padStart(2,`0`)}-${n.toString().padStart(2,`0`)}`}function Sn(e){return xn(e.getFullYear(),e.getMonth()+1,e.getDate())}function Cn(e){return xn(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate())}function wn(e){let t=e??``,n=bn.get(t);if(n!=null)return n;let r=new Intl.DateTimeFormat(`en-CA`,{year:`numeric`,month:`2-digit`,day:`2-digit`,timeZone:e});return bn.set(t,r),r}function Tn(e){if(e==null){let e=new Map;return t=>{let n=t.slice(0,13),r=e.get(n);if(r!=null)return r;let i=Sn(new Date(t));return e.set(n,i),i}}if(e===`UTC`){let e=new Map;return t=>{let n=t.slice(0,13),r=e.get(n);if(r!=null)return r;let i=Cn(new Date(t));return e.set(n,i),i}}let t=wn(e),n=new Map;return e=>{let r=e.slice(0,13),i=n.get(r);if(i!=null)return i;let a=t.format(new Date(e));return n.set(r,a),a}}function En(e,t,n,r){return n==null&&r==null?e:e.filter(e=>{let i=t(e).substring(0,10).replace(/-/g,``);return!(n!=null&&i<n||r!=null&&i>r)})}function Dn(e,t){let n=new Date(e),r=(n.getDay()-t+7)%7;return n.setDate(n.getDate()-r),jt(n.toISOString().substring(0,10))}function On(e){return{sunday:0,monday:1,tuesday:2,wednesday:3,thursday:4,friday:5,saturday:6}[e]}function kn(){if(r.env.LOG_LEVEL!=null){let e=Number.parseInt(r.env.LOG_LEVEL,10);if(!Number.isNaN(e))return e}return 3}function An(e){return typeof e==`string`?e:e instanceof Error?e.stack??e.message:h(e,{colors:!1,depth:4})}function jn(e){return e.map(An).join(` `)}function G(e,t=``){e.write(`${t}\n`)}async function Mn(e,t=``){await new Promise(n=>{e.write(`${t}\n`,()=>{n()})})}async function Nn(e=``){await Mn(r.stdout,e)}function K(e,t,n,r,i){G(e,`${B(`[${t}]`,e)} ${i==null?n:i(n,e)} ${jn(r)}`)}function Pn(e,t){let n=t.split(`
|
|
7
|
-
`),r=Math.max(...n.map(e=>e.length)),i=r+4,a=`─`.repeat(i),o=` `.repeat(i);G(e),G(e,` ╭${a}╮`),G(e,` │${o}│`);for(let t of n)G(e,` │ ${t.padEnd(r)} │`);G(e,` │${o}│`),G(e,` ╰${a}╯`),G(e)}function Fn(e){let t={level:kn(),warn:(...n)=>{t.level>=1&&K(r.stderr,e,` WARN `,n,V)},info:(...n)=>{t.level>=3&&K(r.stdout,e,`ℹ`,n,zt)},error:(...n)=>{t.level>=1&&K(r.stderr,e,` ERROR `,n,Vt)},debug:(...n)=>{t.level>=4&&K(r.stderr,e,`⚙`,n,B)},trace:(...n)=>{t.level>=5&&K(r.stderr,e,`→`,n,B)},log:(...n)=>{t.level>=2&&K(r.stdout,e,``,n)},box:e=>{t.level>=3&&Pn(r.stdout,e)}};return t}const In=console.log,q=Fn(_),Ln=In,Rn=Nn,zn=2e5;function Bn(e,t,n){if(e==null||e<=0)return 0;if(e>zn&&n!=null){let r=(e-zn)*n;return t!=null&&(r+=zn*t),r}return t==null?0:e*t}const Vn=N({input_cost_per_token:P(M()),output_cost_per_token:P(M()),cache_creation_input_token_cost:P(M()),cache_read_input_token_cost:P(M()),max_tokens:P(M()),max_input_tokens:P(M()),max_output_tokens:P(M()),input_cost_per_token_above_200k_tokens:P(M()),output_cost_per_token_above_200k_tokens:P(M()),cache_creation_input_token_cost_above_200k_tokens:P(M()),cache_read_input_token_cost_above_200k_tokens:P(M()),input_cost_per_token_above_128k_tokens:P(M()),output_cost_per_token_above_128k_tokens:P(M()),provider_specific_entry:P(N({fast:P(M())}))}),Hn=[`anthropic/`,`claude-3-5-`,`claude-3-`,`claude-`,`openai/`,`azure/`,`openrouter/openai/`];function Un(e){return e??{debug:()=>{},error:()=>{},info:()=>{},warn:()=>{}}}var Wn=class{cachedPricing=null;pricingLoadPromise=null;modelPricingCache=new Map;logger;offline;offlineLoader;url;providerPrefixes;constructor(e={}){this.logger=Un(e.logger),this.offline=!!e.offline,this.offlineLoader=e.offlineLoader,this.url=e.url??`https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json`,this.providerPrefixes=e.providerPrefixes??Hn}[Symbol.dispose](){this.clearCache()}clearCache(){this.cachedPricing=null,this.pricingLoadPromise=null,this.modelPricingCache.clear()}loadOfflinePricing=w({try:async()=>{if(this.offlineLoader==null)throw Error(`Offline loader was not provided`);let e=new Map(Object.entries(await this.offlineLoader()));return this.cachedPricing=e,e},catch:e=>Error(`Failed to load offline pricing data`,{cause:e})});async handleFallbackToCachedPricing(e){return this.logger.warn(`Failed to fetch model pricing from LiteLLM, falling back to cached pricing data`),this.logger.debug(`Fetch error details:`,e),C(this.loadOfflinePricing(),oe(e=>{this.logger.info(`Using cached pricing data for ${e.size} models`)}),se(t=>{this.logger.error(`Failed to load cached pricing data as fallback:`,t),this.logger.error(`Original fetch error:`,e)}))}async loadPricing(){return this.offline?this.loadOfflinePricing():(this.logger.warn(`Fetching latest model pricing from LiteLLM...`),C(w({try:fetch(this.url),catch:e=>Error(`Failed to fetch model pricing from LiteLLM`,{cause:e})}),ie(e=>e.ok?b():x(Error(`Failed to fetch pricing data: ${e.statusText}`))),re(async e=>w({try:e.json(),catch:e=>Error(`Failed to parse pricing data`,{cause:e})})),S(e=>{let t=new Map;for(let[n,r]of Object.entries(e)){if(typeof r!=`object`||!r)continue;let e=ut(Vn,r);e.success&&t.set(n,e.output)}return t}),oe(e=>{this.cachedPricing=e,this.logger.info(`Loaded pricing for ${e.size} models`)}),le(async e=>this.handleFallbackToCachedPricing(e))))}async ensurePricingLoaded(){return this.cachedPricing==null?(this.pricingLoadPromise??=C(this.loadPricing(),se(()=>{this.pricingLoadPromise=null})),this.pricingLoadPromise):b(this.cachedPricing)}async fetchModelPricing(){return this.ensurePricingLoaded()}createMatchingCandidates(e){let t=new Set;t.add(e);for(let n of this.providerPrefixes)t.add(`${n}${e}`);return Array.from(t)}async getModelPricing(e){return this.modelPricingCache.has(e)?b(this.modelPricingCache.get(e)??null):C(this.ensurePricingLoaded(),S(t=>{for(let n of this.createMatchingCandidates(e)){let r=t.get(n);if(r!=null)return this.modelPricingCache.set(e,r),r}let n=e.toLowerCase(),r=null;for(let[e,i]of t){let t=e.toLowerCase();if(!t.includes(n)&&!n.includes(t))continue;let a=Math.abs(t.length-n.length);(r==null||a<r.lengthDiff)&&(r={value:i,lengthDiff:a})}return r==null?(this.modelPricingCache.set(e,null),null):(this.modelPricingCache.set(e,r.value),r.value)}))}async getModelContextLimit(e){return C(this.getModelPricing(e),S(e=>e?.max_input_tokens??null))}calculateCostFromPricing(e,t){let n=Bn(e.input_tokens,t.input_cost_per_token,t.input_cost_per_token_above_200k_tokens),r=Bn(e.output_tokens,t.output_cost_per_token,t.output_cost_per_token_above_200k_tokens),i=Bn(e.cache_creation_input_tokens,t.cache_creation_input_token_cost,t.cache_creation_input_token_cost_above_200k_tokens),a=Bn(e.cache_read_input_tokens,t.cache_read_input_token_cost,t.cache_read_input_token_cost_above_200k_tokens);return n+r+i+a}async calculateCostFromTokens(e,t,n){return t==null||t===``?b(0):C(this.getModelPricing(t),re(r=>r==null?x(Error(`Model pricing not found for ${t}`)):b(this.calculateCostFromPricing(e,r)*(n?.speed===`fast`?r.provider_specific_entry?.fast??1:1))))}};const Gn=[`anthropic/`,`claude-3-5-`,`claude-3-`,`claude-`,`openrouter/openai/`],Kn={"anthropic.claude-3-5-haiku-20241022-v1:0":{input_cost_per_token:8e-7,output_cost_per_token:4e-6,cache_creation_input_token_cost:1e-6,cache_read_input_token_cost:8e-8,max_tokens:8192,max_input_tokens:2e5,max_output_tokens:8192},"anthropic.claude-haiku-4-5-20251001-v1:0":{input_cost_per_token:1e-6,output_cost_per_token:5e-6,cache_creation_input_token_cost:125e-8,cache_read_input_token_cost:1e-7,max_tokens:64e3,max_input_tokens:2e5,max_output_tokens:64e3},"anthropic.claude-haiku-4-5@20251001":{input_cost_per_token:1e-6,output_cost_per_token:5e-6,cache_creation_input_token_cost:125e-8,cache_read_input_token_cost:1e-7,max_tokens:64e3,max_input_tokens:2e5,max_output_tokens:64e3},"anthropic.claude-3-5-sonnet-20240620-v1:0":{input_cost_per_token:3e-6,output_cost_per_token:15e-6,cache_creation_input_token_cost:375e-8,cache_read_input_token_cost:3e-7,max_tokens:4096,max_input_tokens:1e6,max_output_tokens:4096,input_cost_per_token_above_200k_tokens:6e-6,output_cost_per_token_above_200k_tokens:3e-5,cache_creation_input_token_cost_above_200k_tokens:75e-7,cache_read_input_token_cost_above_200k_tokens:6e-7},"anthropic.claude-3-5-sonnet-20241022-v2:0":{input_cost_per_token:3e-6,output_cost_per_token:15e-6,cache_creation_input_token_cost:375e-8,cache_read_input_token_cost:3e-7,max_tokens:8192,max_input_tokens:1e6,max_output_tokens:8192,input_cost_per_token_above_200k_tokens:6e-6,output_cost_per_token_above_200k_tokens:3e-5,cache_creation_input_token_cost_above_200k_tokens:75e-7,cache_read_input_token_cost_above_200k_tokens:6e-7},"anthropic.claude-3-7-sonnet-20240620-v1:0":{input_cost_per_token:36e-7,output_cost_per_token:18e-6,cache_creation_input_token_cost:45e-7,cache_read_input_token_cost:36e-8,max_tokens:8192,max_input_tokens:2e5,max_output_tokens:8192},"anthropic.claude-3-7-sonnet-20250219-v1:0":{input_cost_per_token:3e-6,output_cost_per_token:15e-6,cache_creation_input_token_cost:375e-8,cache_read_input_token_cost:3e-7,max_tokens:8192,max_input_tokens:2e5,max_output_tokens:8192},"anthropic.claude-3-haiku-20240307-v1:0":{input_cost_per_token:25e-8,output_cost_per_token:125e-8,cache_creation_input_token_cost:3.125e-7,cache_read_input_token_cost:25e-9,max_tokens:4096,max_input_tokens:2e5,max_output_tokens:4096},"anthropic.claude-3-opus-20240229-v1:0":{input_cost_per_token:15e-6,output_cost_per_token:75e-6,cache_creation_input_token_cost:1875e-8,cache_read_input_token_cost:15e-7,max_tokens:4096,max_input_tokens:2e5,max_output_tokens:4096},"anthropic.claude-3-sonnet-20240229-v1:0":{input_cost_per_token:3e-6,output_cost_per_token:15e-6,cache_creation_input_token_cost:375e-8,cache_read_input_token_cost:3e-7,max_tokens:4096,max_input_tokens:2e5,max_output_tokens:4096},"anthropic.claude-instant-v1":{input_cost_per_token:8e-7,output_cost_per_token:24e-7,max_tokens:8191,max_input_tokens:1e5,max_output_tokens:8191},"anthropic.claude-opus-4-1-20250805-v1:0":{input_cost_per_token:15e-6,output_cost_per_token:75e-6,cache_creation_input_token_cost:1875e-8,cache_read_input_token_cost:15e-7,max_tokens:32e3,max_input_tokens:2e5,max_output_tokens:32e3},"anthropic.claude-opus-4-20250514-v1:0":{input_cost_per_token:15e-6,output_cost_per_token:75e-6,cache_creation_input_token_cost:1875e-8,cache_read_input_token_cost:15e-7,max_tokens:32e3,max_input_tokens:2e5,max_output_tokens:32e3},"anthropic.claude-opus-4-5-20251101-v1:0":{input_cost_per_token:5e-6,output_cost_per_token:25e-6,cache_creation_input_token_cost:625e-8,cache_read_input_token_cost:5e-7,max_tokens:64e3,max_input_tokens:2e5,max_output_tokens:64e3},"anthropic.claude-opus-4-6-v1":{input_cost_per_token:5e-6,output_cost_per_token:25e-6,cache_creation_input_token_cost:625e-8,cache_read_input_token_cost:5e-7,max_tokens:128e3,max_input_tokens:1e6,max_output_tokens:128e3},"anthropic.claude-opus-4-7":{input_cost_per_token:5e-6,output_cost_per_token:25e-6,cache_creation_input_token_cost:625e-8,cache_read_input_token_cost:5e-7,max_tokens:128e3,max_input_tokens:1e6,max_output_tokens:128e3},"anthropic.claude-mythos-preview":{input_cost_per_token:0,output_cost_per_token:0,max_tokens:128e3,max_input_tokens:1e6,max_output_tokens:128e3},"anthropic.claude-sonnet-4-6":{input_cost_per_token:3e-6,output_cost_per_token:15e-6,cache_creation_input_token_cost:375e-8,cache_read_input_token_cost:3e-7,max_tokens:64e3,max_input_tokens:1e6,max_output_tokens:64e3},"anthropic.claude-sonnet-4-20250514-v1:0":{input_cost_per_token:3e-6,output_cost_per_token:15e-6,cache_creation_input_token_cost:375e-8,cache_read_input_token_cost:3e-7,max_tokens:64e3,max_input_tokens:1e6,max_output_tokens:64e3,input_cost_per_token_above_200k_tokens:6e-6,output_cost_per_token_above_200k_tokens:225e-7,cache_creation_input_token_cost_above_200k_tokens:75e-7,cache_read_input_token_cost_above_200k_tokens:6e-7},"anthropic.claude-sonnet-4-5-20250929-v1:0":{input_cost_per_token:3e-6,output_cost_per_token:15e-6,cache_creation_input_token_cost:375e-8,cache_read_input_token_cost:3e-7,max_tokens:64e3,max_input_tokens:2e5,max_output_tokens:64e3,input_cost_per_token_above_200k_tokens:6e-6,output_cost_per_token_above_200k_tokens:225e-7,cache_creation_input_token_cost_above_200k_tokens:75e-7,cache_read_input_token_cost_above_200k_tokens:6e-7},"anthropic.claude-v1":{input_cost_per_token:8e-6,output_cost_per_token:24e-6,max_tokens:8191,max_input_tokens:1e5,max_output_tokens:8191},"anthropic.claude-v2:1":{input_cost_per_token:8e-6,output_cost_per_token:24e-6,max_tokens:8191,max_input_tokens:1e5,max_output_tokens:8191},"claude-haiku-4-5-20251001":{input_cost_per_token:1e-6,output_cost_per_token:5e-6,cache_creation_input_token_cost:125e-8,cache_read_input_token_cost:1e-7,max_tokens:64e3,max_input_tokens:2e5,max_output_tokens:64e3},"claude-haiku-4-5":{input_cost_per_token:1e-6,output_cost_per_token:5e-6,cache_creation_input_token_cost:125e-8,cache_read_input_token_cost:1e-7,max_tokens:64e3,max_input_tokens:2e5,max_output_tokens:64e3},"claude-3-7-sonnet-20250219":{input_cost_per_token:3e-6,output_cost_per_token:15e-6,cache_creation_input_token_cost:375e-8,cache_read_input_token_cost:3e-7,max_tokens:64e3,max_input_tokens:2e5,max_output_tokens:64e3},"claude-3-haiku-20240307":{input_cost_per_token:25e-8,output_cost_per_token:125e-8,cache_creation_input_token_cost:3e-7,cache_read_input_token_cost:3e-8,max_tokens:4096,max_input_tokens:2e5,max_output_tokens:4096},"claude-3-opus-20240229":{input_cost_per_token:15e-6,output_cost_per_token:75e-6,cache_creation_input_token_cost:1875e-8,cache_read_input_token_cost:15e-7,max_tokens:4096,max_input_tokens:2e5,max_output_tokens:4096},"claude-4-opus-20250514":{input_cost_per_token:15e-6,output_cost_per_token:75e-6,cache_creation_input_token_cost:1875e-8,cache_read_input_token_cost:15e-7,max_tokens:32e3,max_input_tokens:2e5,max_output_tokens:32e3},"claude-4-sonnet-20250514":{input_cost_per_token:3e-6,output_cost_per_token:15e-6,cache_creation_input_token_cost:375e-8,cache_read_input_token_cost:3e-7,max_tokens:64e3,max_input_tokens:1e6,max_output_tokens:64e3,input_cost_per_token_above_200k_tokens:6e-6,output_cost_per_token_above_200k_tokens:225e-7,cache_creation_input_token_cost_above_200k_tokens:75e-7,cache_read_input_token_cost_above_200k_tokens:6e-7},"claude-sonnet-4-5":{input_cost_per_token:3e-6,output_cost_per_token:15e-6,cache_creation_input_token_cost:375e-8,cache_read_input_token_cost:3e-7,max_tokens:64e3,max_input_tokens:2e5,max_output_tokens:64e3,input_cost_per_token_above_200k_tokens:6e-6,output_cost_per_token_above_200k_tokens:225e-7,cache_creation_input_token_cost_above_200k_tokens:75e-7,cache_read_input_token_cost_above_200k_tokens:6e-7},"claude-sonnet-4-5-20250929":{input_cost_per_token:3e-6,output_cost_per_token:15e-6,cache_creation_input_token_cost:375e-8,cache_read_input_token_cost:3e-7,max_tokens:64e3,max_input_tokens:2e5,max_output_tokens:64e3,input_cost_per_token_above_200k_tokens:6e-6,output_cost_per_token_above_200k_tokens:225e-7,cache_creation_input_token_cost_above_200k_tokens:75e-7,cache_read_input_token_cost_above_200k_tokens:6e-7},"claude-sonnet-4-6":{input_cost_per_token:3e-6,output_cost_per_token:15e-6,cache_creation_input_token_cost:375e-8,cache_read_input_token_cost:3e-7,max_tokens:64e3,max_input_tokens:1e6,max_output_tokens:64e3},"claude-sonnet-4-5-20250929-v1:0":{input_cost_per_token:3e-6,output_cost_per_token:15e-6,cache_creation_input_token_cost:375e-8,cache_read_input_token_cost:3e-7,max_tokens:64e3,max_input_tokens:2e5,max_output_tokens:64e3,input_cost_per_token_above_200k_tokens:6e-6,output_cost_per_token_above_200k_tokens:225e-7,cache_creation_input_token_cost_above_200k_tokens:75e-7,cache_read_input_token_cost_above_200k_tokens:6e-7},"claude-opus-4-1":{input_cost_per_token:15e-6,output_cost_per_token:75e-6,cache_creation_input_token_cost:1875e-8,cache_read_input_token_cost:15e-7,max_tokens:32e3,max_input_tokens:2e5,max_output_tokens:32e3},"claude-opus-4-1-20250805":{input_cost_per_token:15e-6,output_cost_per_token:75e-6,cache_creation_input_token_cost:1875e-8,cache_read_input_token_cost:15e-7,max_tokens:32e3,max_input_tokens:2e5,max_output_tokens:32e3},"claude-opus-4-20250514":{input_cost_per_token:15e-6,output_cost_per_token:75e-6,cache_creation_input_token_cost:1875e-8,cache_read_input_token_cost:15e-7,max_tokens:32e3,max_input_tokens:2e5,max_output_tokens:32e3},"claude-opus-4-5-20251101":{input_cost_per_token:5e-6,output_cost_per_token:25e-6,cache_creation_input_token_cost:625e-8,cache_read_input_token_cost:5e-7,max_tokens:64e3,max_input_tokens:2e5,max_output_tokens:64e3},"claude-opus-4-5":{input_cost_per_token:5e-6,output_cost_per_token:25e-6,cache_creation_input_token_cost:625e-8,cache_read_input_token_cost:5e-7,max_tokens:64e3,max_input_tokens:2e5,max_output_tokens:64e3},"claude-opus-4-6":{input_cost_per_token:5e-6,output_cost_per_token:25e-6,cache_creation_input_token_cost:625e-8,cache_read_input_token_cost:5e-7,max_tokens:128e3,max_input_tokens:1e6,max_output_tokens:128e3,provider_specific_entry:{fast:6}},"claude-opus-4-6-20260205":{input_cost_per_token:5e-6,output_cost_per_token:25e-6,cache_creation_input_token_cost:625e-8,cache_read_input_token_cost:5e-7,max_tokens:128e3,max_input_tokens:1e6,max_output_tokens:128e3,provider_specific_entry:{fast:6}},"claude-opus-4-7":{input_cost_per_token:5e-6,output_cost_per_token:25e-6,cache_creation_input_token_cost:625e-8,cache_read_input_token_cost:5e-7,max_tokens:128e3,max_input_tokens:1e6,max_output_tokens:128e3,provider_specific_entry:{fast:6}},"claude-opus-4-7-20260416":{input_cost_per_token:5e-6,output_cost_per_token:25e-6,cache_creation_input_token_cost:625e-8,cache_read_input_token_cost:5e-7,max_tokens:128e3,max_input_tokens:1e6,max_output_tokens:128e3,provider_specific_entry:{fast:6}},"claude-sonnet-4-20250514":{input_cost_per_token:3e-6,output_cost_per_token:15e-6,cache_creation_input_token_cost:375e-8,cache_read_input_token_cost:3e-7,max_tokens:64e3,max_input_tokens:1e6,max_output_tokens:64e3,input_cost_per_token_above_200k_tokens:6e-6,output_cost_per_token_above_200k_tokens:225e-7,cache_creation_input_token_cost_above_200k_tokens:75e-7,cache_read_input_token_cost_above_200k_tokens:6e-7}};var J=class extends Wn{constructor(e=!1){super({offline:e,offlineLoader:async()=>Kn,logger:q,providerPrefixes:Gn})}};function qn(e){let t=`cacheCreationInputTokens`in e?e.cacheCreationInputTokens:e.cacheCreationTokens,n=`cacheReadInputTokens`in e?e.cacheReadInputTokens:e.cacheReadTokens;return e.inputTokens+e.outputTokens+t+n}function Y(e){return e.timestampMs??e.timestamp.getTime()}function Jn(e){return Math.floor(e/(3600*1e3))*60*60*1e3}function Yn(e){let t=Y(e[0]);for(let n=1;n<e.length;n++){let r=Y(e[n]);if(t>r)return[...e].sort((e,t)=>Y(e)-Y(t));t=r}return e}function Xn(e,t=5){if(e.length===0)return[];let n=t*60*60*1e3,r=[],i=Yn(e),a=null,o=[],s=new Date().getTime();for(let e of i){let t=Y(e);if(a==null)a=Jn(t),o=[e];else{let i=t-a,c=o.at(-1);if(c==null)continue;let l=Y(c),u=t-l;if(i>n||u>n){let i=Zn(a,o,s,n);if(r.push(i),u>n){let e=Qn(l,t,n);e!=null&&r.push(e)}a=Jn(t),o=[e]}else o.push(e)}}if(a!=null&&o.length>0){let e=Zn(a,o,s,n);r.push(e)}return r}function Zn(e,t,n,r){let i=new Date(e),a=new Date(e+r),o=t[t.length-1],s=o==null?i:o.timestamp,c=n-(o==null?e:Y(o))<r&&n<a.getTime(),l={inputTokens:0,outputTokens:0,cacheCreationInputTokens:0,cacheReadInputTokens:0},u=0,d=new Set,f;for(let e of t)l.inputTokens+=e.usage.inputTokens,l.outputTokens+=e.usage.outputTokens,l.cacheCreationInputTokens+=e.usage.cacheCreationInputTokens,l.cacheReadInputTokens+=e.usage.cacheReadInputTokens,u+=e.costUSD??0,f=e.usageLimitResetTime??f,d.add(e.model);return{id:i.toISOString(),startTime:i,endTime:a,actualEndTime:s,isActive:c,entries:t,tokenCounts:l,costUSD:u,models:Array.from(d),usageLimitResetTime:f}}function Qn(e,t,n){if(t-e<=n)return null;let r=new Date(e+n),i=new Date(t);return{id:`gap-${r.toISOString()}`,startTime:r,endTime:i,isActive:!1,isGap:!0,entries:[],tokenCounts:{inputTokens:0,outputTokens:0,cacheCreationInputTokens:0,cacheReadInputTokens:0},costUSD:0,models:[]}}function $n(e){if(e.entries.length===0||(e.isGap??!1))return null;let t=e.entries[0],n=e.entries[e.entries.length-1];if(t==null||n==null)return null;let r=(Y(n)-Y(t))/(1e3*60);return r<=0?null:{tokensPerMinute:qn(e.tokenCounts)/r,tokensPerMinuteForIndicator:((e.tokenCounts.inputTokens??0)+(e.tokenCounts.outputTokens??0))/r,costPerHour:e.costUSD/r*60}}function er(e){if(!e.isActive||(e.isGap??!1))return null;let t=$n(e);if(t==null)return null;let n=new Date,r=e.endTime.getTime()-n.getTime(),i=Math.max(0,r/(1e3*60)),a=qn(e.tokenCounts)+t.tokensPerMinute*i,o=t.costPerHour/60*i,s=e.costUSD+o;return{totalTokens:Math.round(a),totalCost:Math.round(s*100)/100,remainingMinutes:Math.round(i)}}function tr(e,t=3){let n=new Date(new Date().getTime()-t*24*60*60*1e3);return e.filter(e=>e.startTime>=n||e.isActive)}function nr(e){throw Error(`Unreachable code reached with value: ${e}`)}async function rr(e){return C(w({try:o(e),catch:e=>e}),S(e=>e.mtime.getTime()),ue(0))}const ir=n.join(gt,`claude`),ar=`"usage":{`,or=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3})?Z$/,sr=/^\d+\.\d+\.\d+/;function cr(e,t){return(e.charCodeAt(t)-48)*10+e.charCodeAt(t+1)-48}function lr(e,t){return(e.charCodeAt(t)-48)*1e3+(e.charCodeAt(t+1)-48)*100+(e.charCodeAt(t+2)-48)*10+(e.charCodeAt(t+3)-48)}function X(e,t,n){for(let r=t;r<n;r++){let t=e.charCodeAt(r);if(t<48||t>57)return!1}return!0}function ur(e,t){switch(t){case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;case 4:case 6:case 9:case 11:return 30;case 2:return e%4==0&&(e%100!=0||e%400==0)?29:28;default:return 0}}function dr(e){let t=e.length;if(t!==20&&t!==24||e.charCodeAt(t-1)!==90||e.charCodeAt(4)!==45||e.charCodeAt(7)!==45||e.charCodeAt(10)!==84||e.charCodeAt(13)!==58||e.charCodeAt(16)!==58||t===24&&e.charCodeAt(19)!==46||!X(e,0,4)||!X(e,5,7)||!X(e,8,10)||!X(e,11,13)||!X(e,14,16)||!X(e,17,19)||t===24&&!X(e,20,23))return NaN;let n=lr(e,0),r=cr(e,5),i=cr(e,8),a=cr(e,11),o=cr(e,14),s=cr(e,17),c=t===24?(e.charCodeAt(20)-48)*100+(e.charCodeAt(21)-48)*10+(e.charCodeAt(22)-48):0;return r<1||r>12||i<1||i>ur(n,r)||a>23||o>59||s>59||c>999?NaN:Date.UTC(n,r-1,i,a,o,s,c)}function fr(e,t=!1){if(t)return 1;let n=Number.parseInt(r.env.CCUSAGE_JSONL_READ_CONCURRENCY??``,10);return Number.isFinite(n)&&n>0?Math.max(1,Math.min(e,n)):Math.max(1,Math.min(e,s.availableParallelism()))}function pr(){let e=[],t=new Set,i=(r.env.CLAUDE_CONFIG_DIR??``).trim();if(i!==``){let r=i.split(`,`).map(e=>e.trim()).filter(e=>e!==``);for(let i of r){let r=n.resolve(i);be(r)&&be(n.join(r,`projects`))&&(t.has(r)||(t.add(r),e.push(r)))}return e}let a=[ir,n.join(ht,`.claude`)];for(let r of a){let i=n.resolve(r);be(i)&&be(n.join(i,`projects`))&&(t.has(i)||(t.add(i),e.push(i)))}return e}function mr(){let e=pr();if(e.length>0)return e;let t=(r.env.CLAUDE_CONFIG_DIR??``).trim();throw Error(t===``?`No valid Claude data directories found. Please ensure at least one of the following exists:
|
|
8
|
-
- ${n.join(ir,`projects`)}
|
|
9
|
-
- ${n.join(ht,`.claude`,`projects`)}
|
|
10
|
-
- Or set CLAUDE_CONFIG_DIR environment variable to valid directory path(s) containing a 'projects' subdirectory`.trim():`No valid Claude data directories found in CLAUDE_CONFIG_DIR. Please ensure the following exists:
|
|
11
|
-
- ${t}/projects`.trim())}function hr(e){let t=e.replace(/[/\\]/g,n.sep).split(n.sep),r=t.findIndex(e=>e===`projects`);if(r===-1||r+1>=t.length)return`unknown`;let i=t[r+1];return i!=null&&i.trim()!==``?i:`unknown`}const gr=N({cwd:P(F()),sessionId:P(bt),timestamp:Ct,version:P(Ot),message:N({usage:N({input_tokens:M(),output_tokens:M(),cache_creation_input_tokens:P(M()),cache_read_input_tokens:P(M()),speed:P(ot([`standard`,`fast`]))}),model:P(yt),id:P(St),content:P(it(N({text:P(F())})))}),costUSD:P(M()),requestId:P(xt),isApiErrorMessage:P(at())});function _r(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function vr(e){return e===void 0||typeof e==`string`}function yr(e){return e===void 0||typeof e==`string`&&e.length>0}function br(e){return e===void 0||typeof e==`number`}function xr(e){return e===void 0||typeof e==`boolean`}function Sr(e){return e.input_tokens+e.output_tokens+(e.cache_creation_input_tokens??0)+(e.cache_read_input_tokens??0)}function Cr(e,t){return e==null?void 0:t===`fast`?`${e}-fast`:e}function wr(e,t){return Cr(e,t)??`unknown`}function Tr(e){if(!_r(e)||!vr(e.cwd)||!yr(e.sessionId)||!yr(e.requestId)||!br(e.costUSD)||!xr(e.isApiErrorMessage)||e.version!==void 0&&(typeof e.version!=`string`||!sr.test(e.version))||typeof e.timestamp!=`string`||!or.test(e.timestamp)||!_r(e.message)||!yr(e.message.model)||!yr(e.message.id))return null;if(e.message.content!==void 0){if(!Array.isArray(e.message.content))return null;for(let t of e.message.content)if(!_r(t)||!vr(t.text))return null}if(!_r(e.message.usage))return null;let{usage:t}=e.message;return typeof t.input_tokens!=`number`||typeof t.output_tokens!=`number`||!br(t.cache_creation_input_tokens)||!br(t.cache_read_input_tokens)||t.speed!==void 0&&t.speed!==`standard`&&t.speed!==`fast`?null:e}function Z(e,t,n=0){let r=e.indexOf(t,n);if(r===-1)return;let i=r+t.length,a=e.indexOf(`"`,i);return a===-1?void 0:e.slice(i,a)}function Er(e,t,n=0){let r=e.indexOf(t,n);if(r===-1)return;let i=r+t.length,a=1,o=e.charCodeAt(i);o===45?(a=-1,i++):o===43&&i++;let s=0,c=0;for(;i<e.length;){let t=e.charCodeAt(i)-48;if(t<0||t>9)break;s=s*10+t,i++,c++}if(e.charCodeAt(i)===46){i++;let t=.1;for(;i<e.length;){let n=e.charCodeAt(i)-48;if(n<0||n>9)break;s+=n*t,t*=.1,i++,c++}}if(c===0)return;let l=e.charCodeAt(i);if(l===69||l===101){i++;let t=1,n=e.charCodeAt(i);n===45?(t=-1,i++):n===43&&i++;let r=0,a=0;for(;i<e.length;){let t=e.charCodeAt(i)-48;if(t<0||t>9)break;r=r*10+t,i++,a++}if(a===0)return;s*=10**(t*r)}return s*=a,Number.isFinite(s)?s:void 0}function Dr(e,t,n=0){let r=e.indexOf(t,n);if(r===-1)return;let i=r+t.length,a=0,o=!1;for(;i<e.length;){let t=e.charCodeAt(i)-48;if(t<0||t>9)break;a=a*10+t,i++,o=!0}return o?a:void 0}function Or(e,t=!1,n){let r=e.indexOf(`"message":{`),i=n!=null&&n>=r?n:e.indexOf(ar,r);if(r===-1||i===-1)return null;let a=e.indexOf(`"content":`,r);if(a!==-1&&(!t||e.charCodeAt(a+10)!==91)||e.includes(`"isApiErrorMessage":true`)||kr(e))return null;let o=Z(e,`"timestamp":"`);if(o==null||!or.test(o))return null;let s=e.indexOf(`"role":"assistant"`,r);if(s===-1||s>i)return null;let c=Dr(e,`"input_tokens":`,i),l=Dr(e,`"output_tokens":`,i);if(c==null||l==null)return null;let u=Z(e,`"speed":"`,i);if(u!=null&&u!==`standard`&&u!==`fast`)return null;let d=Z(e,`"version":"`,i);if(d!=null&&!sr.test(d))return null;let f=Z(e,`"model":"`,r),p=Z(e,`"id":"`,r),m=Z(e,`"requestId":"`,i);return f===``||p===``||m===``?null:{timestamp:o,message:{usage:{input_tokens:c,output_tokens:l,cache_creation_input_tokens:Dr(e,`"cache_creation_input_tokens":`,i),cache_read_input_tokens:Dr(e,`"cache_read_input_tokens":`,i),speed:u},model:f,id:p},costUSD:Er(e,`"costUSD":`,i),requestId:m,version:d}}function kr(e){let t=e.indexOf(`:null`);for(;t!==-1;){let n=t-1;if(e.charCodeAt(n)!==34)for(;n>=0&&e.charCodeAt(n)!==34;)n--;if(n!==-1){let t=n-1;for(;t>=0&&e.charCodeAt(t)!==34;)t--;if(t!==-1&&Ar(e,t+1,n))return!0}t=e.indexOf(`:null`,t+5)}return!1}function Q(e,t,n,r){return n-t===r.length&&e.startsWith(r,t)}function Ar(e,t,n){switch(n-t){case 2:return Q(e,t,n,`id`);case 3:return Q(e,t,n,`cwd`);case 5:return Q(e,t,n,`model`)||Q(e,t,n,`speed`);case 7:return Q(e,t,n,`costUSD`)||Q(e,t,n,`version`);case 9:return Q(e,t,n,`sessionId`)||Q(e,t,n,`requestId`);case 17:return Q(e,t,n,`isApiErrorMessage`);case 23:return Q(e,t,n,`cache_read_input_tokens`);case 27:return Q(e,t,n,`cache_creation_input_tokens`);default:return!1}}function jr(e,t){return Or(e,t?.allowContentFast!==!1,t?.usageMarkerIndex)??Tr(JSON.parse(e))}const Mr=N({input_tokens:P(M()),cache_creation_input_tokens:P(M()),cache_read_input_tokens:P(M()),output_tokens:P(M())}),Nr=N({type:P(F()),message:P(N({usage:P(Mr)}))});function Pr(){return{inputTokens:0,outputTokens:0,cacheCreationTokens:0,cacheReadTokens:0,cost:0}}function Fr(){return Object.create(null)}function Ir(e,t){e.modelSeen[t]??(e.modelSeen[t]=!0,e.modelsUsed.push(t))}function Lr(){return{totals:{...Pr(),totalCost:0},modelAggregates:Fr(),modelSeen:Object.create(null),modelsUsed:[]}}function Rr(e,t,n,r){let i=t??`unknown`;if(e.totals.inputTokens+=n.inputTokens,e.totals.outputTokens+=n.outputTokens,e.totals.cacheCreationTokens+=n.cacheCreationTokens,e.totals.cacheReadTokens+=n.cacheReadTokens,e.totals.cost+=r,e.totals.totalCost+=r,i===`<synthetic>`)return;t!=null&&Ir(e,i);let a=e.modelAggregates[i];a??(a=Pr(),e.modelAggregates[i]=a),a.inputTokens+=n.inputTokens,a.outputTokens+=n.outputTokens,a.cacheCreationTokens+=n.cacheCreationTokens,a.cacheReadTokens+=n.cacheReadTokens,a.cost+=r}function zr(e){return{...e.totals,modelsUsed:e.modelsUsed,modelBreakdowns:Br(e.modelAggregates)}}function Br(e){let t=Object.keys(e),n=[];for(let r=0;r<t.length;r++){let i=t[r];n.push({modelName:i,...e[i]})}return n.sort((e,t)=>t.cost-e.cost)}function Vr(e,t,n){return n==null?e:e.filter(e=>t(e)===n)}function Hr(e){if(e==null||!/^\d{8}$/.test(e))return null;let t=Number.parseInt(e.slice(0,4),10),n=Number.parseInt(e.slice(4,6),10),r=Number.parseInt(e.slice(6,8),10),i=new Date(Date.UTC(t,n-1,r));return i.getUTCFullYear()!==t||i.getUTCMonth()!==n-1||i.getUTCDate()!==r?null:i}async function Ur(e,t,n,r){let i=Hr(n),a=[];if(i!=null&&(i.setUTCDate(i.getUTCDate()-1),a.push(i.getTime())),r!=null&&!Number.isNaN(r.getTime())&&a.push(r.getTime()),a.length===0)return e;let s=Math.max(...a),c=await Promise.all(e.map(async e=>{try{return(await o(t(e))).mtimeMs>=s}catch{return!0}}));return e.filter((e,t)=>c[t]===!0)}function Wr(e){let t=e.message.id;if(t==null)return null;let n=e.requestId;return n==null?t:`${t}:${n}`}async function Gr(e,t){await Me(e,[ar],(e,n)=>{t(e,n)},{bufferedEncoding:`latin1`,callbackMode:`sync`,markerIndex:`byte`})}function Kr(e,t){if(t===`display`)return e.costUSD??0;if(t===`auto`&&e.costUSD!=null)return e.costUSD}async function qr(e,t,n){if(e===`display`)return e=>e.costUSD??0;if(t==null&&n==null)return()=>0;let r=n??ue(await t.fetchModelPricing(),new Map),i=t??new J(!0),a=new Map,o=e=>{if(a.has(e))return a.get(e)??null;let t=r.get(e);if(t!=null)return a.set(e,t),t;for(let t of Gn){let n=r.get(`${t}${e}`);if(n!=null)return a.set(e,n),n}let n=e.toLowerCase();for(let[t,i]of r){let r=t.toLowerCase();if(r.includes(n)||n.includes(r))return a.set(e,i),i}return a.set(e,null),null};return t=>{if(e===`auto`&&t.costUSD!=null)return t.costUSD;let n=t.message.model;if(n==null||n===``)return 0;let r=o(n);return r==null?0:i.calculateCostFromPricing(t.message.usage,r)*(t.message.usage.speed===`fast`?r.provider_specific_entry?.fast??1:1)}}function Jr(e){let t=null;if(e.isApiErrorMessage===!0){let n=e.message?.content?.find(e=>e.text!=null&&e.text.includes(`Claude AI usage limit reached`))?.text?.match(/\|(\d+)/)??null;if(n?.[1]!=null){let e=Number.parseInt(n[1]);t=e>0?new Date(e*1e3):null}}return t}async function Yr(e){let t=[],r=async e=>{let i;try{i=await a(e,{withFileTypes:!0})}catch{return}let o;for(let a of i){let i=n.join(e,a.name);a.isDirectory()?(o??=[],o.push(r(i))):a.isFile()&&a.name.endsWith(`.jsonl`)&&t.push(i)}o!=null&&await Promise.all(o)};return await r(e),t.sort(fe)}async function Xr(e){let t=e.map(async e=>{let t=n.join(e,`projects`);return(await Yr(t)).map(e=>({file:e,baseDir:t}))});return(await Promise.all(t)).flat()}function Zr(){return Object.create(null)}function Qr(){return Object.create(null)}function $(e,t){return e.tokenTotal===t.tokenTotal?e.hasSpeed&&!t.hasSpeed:e.tokenTotal>t.tokenTotal}function $r(e,t,n){t.uniqueHash!=null&&(e[t.uniqueHash]=n)}function ei(e){let t=e.length,n=new Float64Array(t*6),r=new Uint8Array(t),i=[];i.length=t*3;let a=e[0];for(let a=0;a<t;a++){let t=e[a],o=a*6;n[o]=t.cost,n[o+1]=t.inputTokens,n[o+2]=t.outputTokens,n[o+3]=t.cacheCreationTokens,n[o+4]=t.cacheReadTokens,n[o+5]=t.tokenTotal,r[a]=+!!t.hasSpeed;let s=a*3;i[s]=t.date,i[s+1]=t.model??null,i[s+2]=t.uniqueHash}return{kind:`daily-columns`,count:t,numbers:n,flags:r,project:a?.project??``,strings:i}}function ti(e,t){let r=e.split(n.sep).filter(e=>e!==``),i=r.at(-1)??``,a=i.endsWith(`.jsonl`)?n.basename(i,`.jsonl`):``;if(t!=null&&t.trim()!==``){let e=r.findIndex(e=>e===t);if(e>0){let i=r.slice(0,e).join(n.sep);return{sessionId:t,projectPath:i===``?`Unknown Project`:i}}if(a===t){let e=r.slice(0,-1).join(n.sep);return{sessionId:t,projectPath:e===``?`Unknown Project`:e}}}if(r.length===2&&a!==``)return{sessionId:a,projectPath:r[0]??`Unknown Project`};if(r.at(-2)===`subagents`&&r.length>=4){let e=r.slice(0,-3).join(n.sep);return{sessionId:r.at(-3)??`unknown`,projectPath:e===``?`Unknown Project`:e}}let o=r.at(-2)??`unknown`,s=r.slice(0,-2).join(n.sep);return{sessionId:o,projectPath:s===``?`Unknown Project`:s}}function ni(e,t){for(let n=0;n<e.count;n++){let r=n*6,i=n*3;t({date:e.strings[i],cost:e.numbers[r],inputTokens:e.numbers[r+1],outputTokens:e.numbers[r+2],cacheCreationTokens:e.numbers[r+3],cacheReadTokens:e.numbers[r+4],model:e.strings[i+1]??void 0,project:e.project,uniqueHash:e.strings[i+2]??null,tokenTotal:e.numbers[r+5],hasSpeed:e.flags[n]===1})}}function ri(e){let t=e.length,n=new Float64Array(t*6),r=new Uint8Array(t),i=[];i.length=t*4;let a=e[0];for(let a=0;a<t;a++){let t=e[a],o=a*6;n[o]=t.cost,n[o+1]=t.inputTokens,n[o+2]=t.outputTokens,n[o+3]=t.cacheCreationTokens,n[o+4]=t.cacheReadTokens,n[o+5]=t.tokenTotal,r[a]=+!!t.hasSpeed;let s=a*4;i[s]=t.timestamp,i[s+1]=t.model??null,i[s+2]=t.uniqueHash,i[s+3]=t.version??null}return{kind:`session-columns`,count:t,numbers:n,flags:r,sessionKey:a?.sessionKey??``,sessionId:a?.sessionId??``,projectPath:a?.projectPath??``,strings:i}}function ii(e,t){for(let n=0;n<e.count;n++){let r=n*6,i=n*4;t({sessionKey:e.sessionKey,sessionId:e.sessionId,projectPath:e.projectPath,cost:e.numbers[r],timestamp:e.strings[i],model:e.strings[i+1]??void 0,inputTokens:e.numbers[r+1],outputTokens:e.numbers[r+2],cacheCreationTokens:e.numbers[r+3],cacheReadTokens:e.numbers[r+4],uniqueHash:e.strings[i+2]??null,tokenTotal:e.numbers[r+5],hasSpeed:e.flags[n]===1,version:e.strings[i+3]??void 0})}}function ai(e){let t=e.entries.length,n=new Float64Array(t*8),r=new Uint8Array(t),i=[];i.length=t*3;for(let a=0;a<t;a++){let t=e.entries[a],o=a*8;n[o]=t.entry.timestampMs??t.entry.timestamp.getTime(),n[o+1]=t.entry.costUSD??0,n[o+2]=t.entry.usage.inputTokens,n[o+3]=t.entry.usage.outputTokens,n[o+4]=t.entry.usage.cacheCreationInputTokens,n[o+5]=t.entry.usage.cacheReadInputTokens,n[o+6]=t.tokenTotal,n[o+7]=t.entry.usageLimitResetTime?.getTime()??NaN,r[a]=+!!t.hasSpeed;let s=a*3;i[s]=t.entry.model,i[s+1]=t.uniqueHash,i[s+2]=t.entry.version??null}return{kind:`block-columns`,file:e.file,timestampMs:e.timestampMs,count:t,numbers:n,flags:r,strings:i}}function oi(e,t){for(let n=0;n<e.count;n++){let r=n*8,i=n*3,a=e.numbers[r],o=e.numbers[r+7];t({entry:{timestamp:new Date(a),timestampMs:a,usage:{inputTokens:e.numbers[r+2],outputTokens:e.numbers[r+3],cacheCreationInputTokens:e.numbers[r+4],cacheReadInputTokens:e.numbers[r+5]},costUSD:e.numbers[r+1],model:e.strings[i]??`unknown`,version:e.strings[i+2]??void 0,usageLimitResetTime:Number.isNaN(o)?void 0:new Date(o)},uniqueHash:e.strings[i+1]??null,tokenTotal:e.numbers[r+6],hasSpeed:e.flags[n]===1})}}function si(e,t=!1,n=!1){return t?0:Pe({itemCount:e,isMainThread:d,moduleUrl:import.meta.url,envValue:r.env.CCUSAGE_JSONL_WORKER_THREADS,isTest:!1,maxWorkers:9,preferMoreWorkers:n,reserveParallelism:0})}function ci(e,t){let n=Array.from({length:t},()=>[]);for(let r=0;r<e.length;r++)n[r%t].push(e[r]);return n.filter(e=>e.length>0)}async function li(e,t,n){let r=si(t.length,n.singleThread,e===`daily`||e===`session`);if(r===0)return null;let i=t.map((e,t)=>({index:t,item:e})),a=n.getFilePath==null?ci(i,r):await Fe(i,r,n.getFilePath),o;if(n.mode!==`display`&&n.offline!==!0)try{var s=T();o=ue(await s.u(new J(n.offline)).fetchModelPricing(),new Map)}catch(e){s.e=e}finally{s.d()}let c=[];for(let t of a)c.push(new Promise((r,i)=>{let a=new u(new URL(import.meta.url),{workerData:{kind:`ccusage:usage-worker`,task:e,items:t,mode:n.mode,offline:n.offline,timezone:n.timezone,pricing:o}});a.once(`message`,e=>{r(e.results)}),a.once(`error`,i),a.once(`exit`,e=>{e!==0&&i(Error(`ccusage worker exited with code ${e}`))})}));let l=await Promise.all(c),d=de(t.length);for(let e of l)for(let{index:t,result:n}of e)d[t]=n;return d}async function ui(e,t,n){let r=hr(e),i=[],a=Zr();return await Gr(e,(e,o)=>{try{let s=jr(e,{usageMarkerIndex:o});if(s==null)return;let c=n(s.timestamp),l=Wr(s),u=s.message.usage,d=Sr(u),f=u.speed!=null,p;if(l!=null&&(p=a[l],p!=null&&!$({tokenTotal:d,hasSpeed:f},i[p])))return;let m=s.message.model,h={date:c,cost:t(s),inputTokens:u.input_tokens,outputTokens:u.output_tokens,cacheCreationTokens:u.cache_creation_input_tokens??0,cacheReadTokens:u.cache_read_input_tokens??0,model:Cr(m,u.speed),project:r,uniqueHash:l,tokenTotal:d,hasSpeed:f};p==null?(i.push(h),$r(a,h,i.length-1)):i[p]=h}catch{}}),i}async function di(e,t,r){let{file:i,baseDir:a}=e,o=n.relative(a,i),s=[],c=Zr();return await Gr(i,(e,n)=>{try{let i=jr(e,{usageMarkerIndex:n});if(i==null)return;let a=Kr(i,t),l=Wr(i),u=i.message.usage,d=Sr(u),f=u.speed!=null,p;if(l!=null&&(p=c[l],p!=null&&!$({tokenTotal:d,hasSpeed:f},s[p])))return;let m=i.message.model,{projectPath:h,sessionId:g}=ti(o,i.sessionId),_={sessionKey:`${h}/${g}`,sessionId:g,projectPath:h,cost:a??r(i),timestamp:i.timestamp,model:Cr(m,u.speed),inputTokens:u.input_tokens,outputTokens:u.output_tokens,cacheCreationTokens:u.cache_creation_input_tokens??0,cacheReadTokens:u.cache_read_input_tokens??0,version:i.version,uniqueHash:l,tokenTotal:d,hasSpeed:f};p==null?(s.push(_),$r(c,_,s.length-1)):s[p]=_}catch{}}),s}async function fi(e,t){let n=null,r=[],i=Zr(),a=(e,t)=>{!Number.isNaN(t)&&(n==null||t<n)&&(n=t)};return await Gr(e,(e,n)=>{try{let o=jr(e,{usageMarkerIndex:n});if(o==null)return;let s=dr(o.timestamp),c=Number.isNaN(s)?new Date(o.timestamp):new Date(s);a(c,Number.isNaN(s)?c.getTime():s);let l=Wr(o),u=o.message.usage,d=Sr(u),f=u.speed!=null,p;if(l!=null&&(p=i[l],p!=null&&!$({tokenTotal:d,hasSpeed:f},r[p])))return;let m=Jr(o),h=o.message.model,g={entry:{timestamp:c,timestampMs:Number.isNaN(s)?c.getTime():s,usage:{inputTokens:u.input_tokens,outputTokens:u.output_tokens,cacheCreationInputTokens:u.cache_creation_input_tokens??0,cacheReadInputTokens:u.cache_read_input_tokens??0},costUSD:t(o),model:wr(h,u.speed),version:o.version,usageLimitResetTime:m??void 0},uniqueHash:l,tokenTotal:d,hasSpeed:f};p==null?(r.push(g),$r(i,g,r.length-1)):r[p]=g}catch(e){q.debug(`Skipping invalid JSON line in 5-hour blocks: ${e instanceof Error?e.message:String(e)}`)}}),{file:e,timestampMs:n,entries:r}}async function pi(e){let t=(await Xr(ne(e?.claudePath??mr()))).map(e=>e.file);if(t.length===0)return[];let n=await Ur(Vr(t,e=>hr(e),e?.project),e=>e,e?.since,e?.minUpdateTime),r=e?.mode??`auto`,i=Tn(e?.timezone),a=[],o=0,s=Zr(),c=e=>{if(e.uniqueHash!=null){let t=s[e.uniqueHash];if(t!=null){if(!$(e,a[t]))return;a[t]=e;return}s[e.uniqueHash]=o}a[o++]=e},l=await li(`daily`,n,{mode:r,offline:e?.offline,timezone:e?.timezone,singleThread:e?.singleThread,getFilePath:e=>e});if(l==null)try{var u=T();let t=await qr(r,u.u(r===`display`?null:new J(e?.offline))),a=await Ie(n,fr(n.length,e?.singleThread),async e=>ui(e,t,i));for(let e of a)for(let t of e)c(t)}catch(e){u.e=e}finally{u.d()}else for(let e of l)ni(e,c);let d=e?.groupByProject===!0||e?.project!=null,f=new Map;for(let e of a){let t=d?`${e.date}\x00${e.project}`:e.date,n=f.get(t);n??(n={date:e.date,project:d?e.project:void 0,summary:Lr()},f.set(t,n)),Rr(n.summary,e.model,e,e.cost)}return pe(Vr(En(Array.from(f.values(),e=>({date:e.date,...zr(e.summary),...e.project!=null&&{project:e.project}})),e=>e.date,e?.since,e?.until),e=>e.project,e?.project),e=>e.date,e?.order)}async function mi(e){let t=await Xr(ne(e?.claudePath??mr()));if(t.length===0)return[];let n=await Ur(Vr(t,e=>hr(e.file),e?.project),e=>e.file,e?.since,e?.minUpdateTime),r=e?.mode??`auto`,i=Tn(e?.timezone),a=[],o=0,s=Zr(),c=e=>{if(e.uniqueHash!=null){let t=s[e.uniqueHash];if(t!=null){if(!$(e,a[t]))return;a[t]=e;return}s[e.uniqueHash]=o}a[o++]=e},l=await li(`session`,n,{mode:r,offline:e?.offline,timezone:e?.timezone,singleThread:e?.singleThread,getFilePath:e=>e.file});if(l==null)try{var u=T();let t=await qr(r,u.u(r===`display`?null:new J(e?.offline))),i=await Ie(n,fr(n.length,e?.singleThread),async e=>di(e,r,t));for(let e of i)for(let t of e)c(t)}catch(e){u.e=e}finally{u.d()}else for(let e of l)ii(e,c);let d=new Map;for(let e of a){let t=d.get(e.sessionKey);t==null?(t={latestEntry:e,summary:Lr(),versions:new Set},d.set(e.sessionKey,t)):e.timestamp>t.latestEntry.timestamp&&(t.latestEntry=e),e.version!=null&&t.versions.add(e.version),Rr(t.summary,e.model,e,e.cost)}let f=Vr(En(Array.from(d.values(),e=>({sessionId:kt(e.latestEntry.sessionId),projectPath:e.latestEntry.projectPath,...zr(e.summary),lastActivity:i(e.latestEntry.timestamp),versions:Array.from(e.versions).sort()})),e=>e.lastActivity,e?.since,e?.until),e=>e.projectPath,e?.project),p=e?.order??`desc`;switch(p){case`asc`:return f.toSorted((e,t)=>e.totalCost-t.totalCost);case`desc`:return f.toSorted((e,t)=>t.totalCost-e.totalCost);default:nr(p)}}async function hi(e){return vi(e=>e.date.slice(0,7),e).then(e=>e.map(({bucket:e,...t})=>({month:e,...t})))}async function gi(e){let t=e?.startOfWeek==null?On(`sunday`):On(e.startOfWeek);return vi(e=>Dn(e.date,t),e).then(e=>e.map(({bucket:e,...t})=>({week:e,...t})))}async function _i(e,t){try{var r=T();let i=mr(),a=`${e}.jsonl`,o;for(let e of i)if(o=(await Yr(n.join(e,`projects`))).find(e=>n.basename(e)===a),o!=null)break;if(o==null)return null;let s=t?.mode??`auto`,c=await qr(s,r.u(s===`display`?null:new J(t?.offline))),l=[],u=0;return await je(o,e=>{try{if(!e.includes(ar))return;let t=jr(e);if(t==null)return;let n=Kr(t,s);u+=n??c(t),l.push(t)}catch{}}),{totalCost:u,entries:l.filter(e=>e!=null)}}catch(e){r.e=e}finally{r.d()}}async function vi(e,t){let n=await pi(t),r=t?.groupByProject===!0||t?.project!=null,i=new Map;for(let t of n){let n=e(t),a=r?t.project??`unknown`:void 0,o=a==null?n:`${n}\x00${a}`,s=i.get(o);s??(s={bucket:n,project:a,summary:Lr()},i.set(o,s)),s.summary.totals.inputTokens+=t.inputTokens,s.summary.totals.outputTokens+=t.outputTokens,s.summary.totals.cacheCreationTokens+=t.cacheCreationTokens,s.summary.totals.cacheReadTokens+=t.cacheReadTokens,s.summary.totals.cost+=t.totalCost,s.summary.totals.totalCost+=t.totalCost;for(let e of t.modelsUsed)e!==`<synthetic>`&&Ir(s.summary,e);for(let e of t.modelBreakdowns){if(e.modelName===`<synthetic>`)continue;let t=s.summary.modelAggregates[e.modelName];t??(t=Pr(),s.summary.modelAggregates[e.modelName]=t),t.inputTokens+=e.inputTokens,t.outputTokens+=e.outputTokens,t.cacheCreationTokens+=e.cacheCreationTokens,t.cacheReadTokens+=e.cacheReadTokens,t.cost+=e.cost}}return pe(Array.from(i.values(),e=>{let t=zr(e.summary);return{bucket:Mt(e.bucket),inputTokens:t.inputTokens,outputTokens:t.outputTokens,cacheCreationTokens:t.cacheCreationTokens,cacheReadTokens:t.cacheReadTokens,totalCost:t.totalCost,modelsUsed:t.modelsUsed,modelBreakdowns:t.modelBreakdowns,...e.project!=null&&{project:e.project}}}),e=>e.bucket,t?.order)}async function yi(e,t,n=!1){let r;try{r=await he(e)}catch(e){return q.debug(`Failed to read transcript file: ${String(e)}`),null}let i=r.split(`
|
|
12
|
-
`).reverse();for(let e of i){let r=e.trim();if(r!==``)try{let e=ut(Nr,JSON.parse(r));if(!e.success)continue;let i=e.output;if(i.type===`assistant`&&i.message!=null&&i.message.usage!=null&&i.message.usage.input_tokens!=null){let e=i.message.usage,r=e.input_tokens+(e.cache_creation_input_tokens??0)+(e.cache_read_input_tokens??0),o=2e5;if(t!=null&&t!==``)try{var a=T();let e=await a.u(new J(n)).getModelContextLimit(t);ae(e)&&e.value!=null?o=e.value:ae(e)?q.debug(`No context limit data available for model ${t} in LiteLLM`):q.debug(`Failed to get context limit for model ${t}: ${e.error.message}`)}catch(e){a.e=e}finally{a.d()}return{inputTokens:r,percentage:Math.min(100,Math.max(0,Math.round(r/o*100))),contextLimit:o}}}catch{continue}}return q.debug(`No usage information found in transcript`),null}function bi(e,t){if(e.timestampMs==null&&t.timestampMs==null)return fe(e.file,t.file);if(e.timestampMs==null)return 1;if(t.timestampMs==null)return-1;let n=e.timestampMs-t.timestampMs;return n===0?fe(e.file,t.file):n}async function xi(e){let t=(await Xr(ne(e?.claudePath??mr()))).map(e=>e.file);if(t.length===0)return[];let n=await Ur(Vr(t,e=>hr(e),e?.project),e=>e,e?.since,e?.minUpdateTime),r=e?.mode??`auto`,i=Tn(e?.timezone),a=[],o=0,s=Qr(),c=({entry:e,uniqueHash:t,tokenTotal:n,hasSpeed:r})=>{if(t==null){a[o++]=e;return}let i=s[t];if(i==null){let i=o++;a[i]=e,s[t]={tokenTotal:n,hasSpeed:r,index:i};return}$({tokenTotal:n,hasSpeed:r},i)&&(a[i.index]=e,s[t]={tokenTotal:n,hasSpeed:r,index:i.index})},l=await li(`blocks`,n,{mode:r,offline:e?.offline,timezone:e?.timezone,singleThread:e?.singleThread});if(l==null)try{var u=T();let t=await qr(r,u.u(r===`display`?null:new J(e?.offline))),i=await Ie(n,fr(n.length,e?.singleThread),async e=>fi(e,t));i.sort(bi);for(let{entries:e}of i)for(let t of e)c(t)}catch(e){u.e=e}finally{u.d()}else{l.sort(bi);for(let e of l)oi(e,c)}let d=Xn(a,e?.sessionDurationHours);return pe(e?.since!=null&&e.since!==``||e?.until!=null&&e.until!==``?d.filter(t=>{let n=i(t.startTime.toISOString()).replace(/-/g,``);return!(e.since!=null&&e.since!==``&&n<e.since||e.until!=null&&e.until!==``&&n>e.until)}):d,e=>e.startTime,e?.order)}async function Si(e){try{var t=T();let n=t.u(e.mode===`display`?null:new J(e.offline)),r=await qr(e.mode,n,e.pricing),i=Tn(e.timezone);switch(e.task){case`daily`:{let t=[],n=[];for(let{index:a,item:o}of e.items){let e=ei(await ui(o,r,i));n.push(e.numbers.buffer,e.flags.buffer),t.push({index:a,result:e})}f.postMessage({results:t},n);return}case`session`:{let t=[],n=[];for(let{index:i,item:a}of e.items){let o=ri(await di(a,e.mode,r));n.push(o.numbers.buffer,o.flags.buffer),t.push({index:i,result:o})}f.postMessage({results:t},n);return}case`blocks`:{let t=[],n=[];for(let{index:i,item:a}of e.items){let e=ai(await fi(a,r));n.push(e.numbers.buffer,e.flags.buffer),t.push({index:i,result:e})}f.postMessage({results:t},n);return}default:nr(e.task)}}catch(e){t.e=e}finally{t.d()}}!d&&_r(p)&&p.kind===`ccusage:usage-worker`&&Si(p).catch(()=>{r.exit(1)});export{Ft as $,Rn as A,T as At,_n as B,v as Bt,tr as C,Pe as Ct,Wn as D,ye as Dt,J as E,ve as Et,fn as F,S as Ft,B as G,Lt as H,te as Ht,un as I,se as It,V as J,Bt as K,mn as L,oe as Lt,dn as M,ue as Mt,yn as N,w as Nt,Ln as O,be as Ot,gn as P,C as Pt,Ct as Q,W as R,b as Rt,$n as S,Ne as St,qn as T,Me as Tt,Rt as U,_ as Ut,hn as V,ne as Vt,zt as W,ee as Wt,Pt as X,Nt as Y,Dt as Z,Mr as _,F as _t,pr as a,Ye as at,rr as b,ct as bt,vi as c,Ze as ct,xi as d,M as dt,_t as et,mi as f,N as ft,Nr as g,ut as gt,mr as h,I as ht,hr as i,k as it,Dn as j,fe as jt,q as k,he as kt,pi as l,A as lt,gi as m,lt as mt,Yr as n,vt as nt,Jr as o,nt as ot,_i as p,P as pt,Vt as q,Wr as r,it as rt,Xr as s,Xe as st,yi as t,ht as tt,hi as u,Qe as ut,gr as v,$e as vt,er as w,Ie as wt,nr as x,Le as xt,ir as y,et as yt,vn as z,ae as zt};
|
|
13
|
-
//# sourceMappingURL=data-loader-LJFbLyZj.js.map
|
package/dist/data-loader.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./data-loader-LJFbLyZj.js";export{};
|
package/dist/index.js
DELETED