ccblame 0.1.0 → 0.1.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.
Files changed (2) hide show
  1. package/dist/cli.mjs +1 -1
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -32,4 +32,4 @@ Options
32
32
  -h, --help this help
33
33
  -v, --version print version
34
34
 
35
- Reads ~/.claude (or $CLAUDE_CONFIG_DIR) locally. Never sends data anywhere.`);if(n.version)return void console.log(`0.1.0`);let i;try{i=ye()}catch(e){Q(e.message)}let a=yt(i.invocations,n),o=a.filter(e=>e.kind===`subagent`).sort((e,t)=>t.cost-e.cost),s=a.reduce((e,t)=>t.kind===`main`?e+t.cost:e,0),c=o.reduce((e,t)=>e+t.cost,0),l=s+c,u=process.stdout;if(a.length===0){if(n.json)return void u.write(`${JSON.stringify(ot([],0,0),null,2)}\n`);let e=i.configDirs.length?i.configDirs:le();u.write(`${C.default.yellow(`No Claude Code usage found.`)}\nLooked in: ${e.map(e=>`${e}/projects`).join(`, `)}\n`),$(i,u);return}if(r===`browse`&&_t(o))return;let d=n.by;if(d){let e={type:{group:()=>Ee(a),col:`AGENT TYPE`,split:!1},workflow:{group:()=>Ae(a),col:`WORKFLOW`,split:!1},project:{group:()=>Oe(a),col:`PROJECT`,split:!0},model:{group:()=>ke(a),col:`MODEL`,split:!0},day:{group:()=>De(a).sort((e,t)=>e.key.localeCompare(t.key)),col:`DAY`,split:!0}}[d];if(!e)return void Q(`unknown --by dimension: ${d} (use type | workflow | project | model | day)`);let t=e.group(),r=t.reduce((e,t)=>e+t.cost,0),o=bt(t,n.top);if(n.json){u.write(`${JSON.stringify(at(d,r,t),null,2)}\n`);return}if(o.length===0){u.write(`${C.default.dim(`no ${d} data found in range.`)}\n`),$(i,u);return}u.write(`${rt(o,r,e.col,e.split)}\n${J(`TOTAL`,r)}\n`),$(i,u);return}if(n.json){u.write(`${JSON.stringify(ot(o,s,c),null,2)}\n`);return}let f=o.reduce((e,t)=>e+Y(t),0),p=nt(l,s,c,o.length,f);if(n.tree){u.write(`${p}\n\n${it(je(o),l)}\n`),$(i,u);return}let m=n.top?bt(o,n.top):o.slice(0,St(o.length)),h=o.length-m.length;u.write(`${p}\n\n${tt(m,c)}\n${J(`subagents subtotal`,c)}\n`),h>0&&u.write(C.default.dim(`showing top ${m.length} of ${o.length} subagents — --top N · --by day · browse\n`)),$(i,u)}function St(e){return process.stdout.isTTY?Math.max((process.stdout.rows??40)-12,10):e}xt();export{};
35
+ Reads ~/.claude (or $CLAUDE_CONFIG_DIR) locally. Never sends data anywhere.`);if(n.version)return void console.log(`0.1.1`);let i;try{i=ye()}catch(e){Q(e.message)}let a=yt(i.invocations,n),o=a.filter(e=>e.kind===`subagent`).sort((e,t)=>t.cost-e.cost),s=a.reduce((e,t)=>t.kind===`main`?e+t.cost:e,0),c=o.reduce((e,t)=>e+t.cost,0),l=s+c,u=process.stdout;if(a.length===0){if(n.json)return void u.write(`${JSON.stringify(ot([],0,0),null,2)}\n`);let e=i.configDirs.length?i.configDirs:le();u.write(`${C.default.yellow(`No Claude Code usage found.`)}\nLooked in: ${e.map(e=>`${e}/projects`).join(`, `)}\n`),$(i,u);return}if(r===`browse`&&_t(o))return;let d=n.by;if(d){let e={type:{group:()=>Ee(a),col:`AGENT TYPE`,split:!1},workflow:{group:()=>Ae(a),col:`WORKFLOW`,split:!1},project:{group:()=>Oe(a),col:`PROJECT`,split:!0},model:{group:()=>ke(a),col:`MODEL`,split:!0},day:{group:()=>De(a).sort((e,t)=>e.key.localeCompare(t.key)),col:`DAY`,split:!0}}[d];if(!e)return void Q(`unknown --by dimension: ${d} (use type | workflow | project | model | day)`);let t=e.group(),r=t.reduce((e,t)=>e+t.cost,0),o=bt(t,n.top);if(n.json){u.write(`${JSON.stringify(at(d,r,t),null,2)}\n`);return}if(o.length===0){u.write(`${C.default.dim(`no ${d} data found in range.`)}\n`),$(i,u);return}u.write(`${rt(o,r,e.col,e.split)}\n${J(`TOTAL`,r)}\n`),$(i,u);return}if(n.json){u.write(`${JSON.stringify(ot(o,s,c),null,2)}\n`);return}let f=o.reduce((e,t)=>e+Y(t),0),p=nt(l,s,c,o.length,f);if(n.tree){u.write(`${p}\n\n${it(je(o),l)}\n`),$(i,u);return}let m=n.top?bt(o,n.top):o.slice(0,St(o.length)),h=o.length-m.length;u.write(`${p}\n\n${tt(m,c)}\n${J(`subagents subtotal`,c)}\n`),h>0&&u.write(C.default.dim(`showing top ${m.length} of ${o.length} subagents — --top N · --by day · browse\n`)),$(i,u)}function St(e){return process.stdout.isTTY?Math.max((process.stdout.rows??40)-12,10):e}xt();export{};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccblame",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "git blame for your Claude Code spend — which subagent burned the budget?",
5
5
  "type": "module",
6
6
  "bin": {