[object Object]

← back to Whatsmystyle

avatar-build: hook Gemini call into cost-tracker

92b9319eac741c90e8ae478b4268a1acaa0a8032 · 2026-05-13 08:28:24 -0700 · Steve

Same pattern as tryon-worker — every Gemini 2.5 Flash Image avatar-build call logs
to ~/.claude/cost-ledger.jsonl with app='whatsmystyle' / note='avatar-build'.

Files touched

Diff

commit 92b9319eac741c90e8ae478b4268a1acaa0a8032
Author: Steve <steve@designerwallcoverings.com>
Date:   Wed May 13 08:28:24 2026 -0700

    avatar-build: hook Gemini call into cost-tracker
    
    Same pattern as tryon-worker — every Gemini 2.5 Flash Image avatar-build call logs
    to ~/.claude/cost-ledger.jsonl with app='whatsmystyle' / note='avatar-build'.
---
 scripts/avatar-build.js | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/scripts/avatar-build.js b/scripts/avatar-build.js
index 33bc59e..aa95ba1 100644
--- a/scripts/avatar-build.js
+++ b/scripts/avatar-build.js
@@ -75,6 +75,10 @@ async function buildViaGemini(photoPaths, outPath) {
   });
   if (!r.ok) throw new Error(`Gemini ${r.status}: ${await r.text()}`);
   const j = await r.json();
+  try {
+    const { logGemini } = require(require('os').homedir() + '/.claude/skills/cost-tracker/scripts/log-gemini.js');
+    logGemini(j, { app: 'whatsmystyle', note: 'avatar-build', model: 'gemini-2.5-flash-image' });
+  } catch {}
   const part = j.candidates?.[0]?.content?.parts?.find(p => p.inline_data || p.inlineData);
   const data = part?.inline_data?.data || part?.inlineData?.data;
   if (!data) throw new Error('Gemini returned no image');

← 63fc189 tryon-worker: hook Gemini call into cost-tracker (logGemini)  ·  back to Whatsmystyle  ·  snapshot: 4 file(s) changed, +2 new, ~2 modified 2a822dd →