opencode-usage 0.2.4 → 0.2.5
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 +5 -0
- package/dist/index.js +12 -7
- package/dist/index.js.map +4 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,6 +7,7 @@ CLI tool for tracking [OpenCode](https://github.com/sst/opencode) AI coding assi
|
|
|
7
7
|
- Daily or monthly usage breakdown with token counts and estimated costs
|
|
8
8
|
- Provider breakdown (Anthropic, OpenAI, Google, etc.)
|
|
9
9
|
- Filter by provider, date range, or relative time
|
|
10
|
+
- Watch mode for live monitoring
|
|
10
11
|
- JSON output for scripting and automation
|
|
11
12
|
- Model pricing for accurate cost estimation
|
|
12
13
|
- Terminal table output
|
|
@@ -54,6 +55,10 @@ opencode-usage -m --since 2025-01-01
|
|
|
54
55
|
opencode-usage --json
|
|
55
56
|
opencode-usage --monthly --json > usage.json
|
|
56
57
|
|
|
58
|
+
# Watch mode (live refresh every 5s)
|
|
59
|
+
opencode-usage --watch
|
|
60
|
+
opencode-usage -w -d 1
|
|
61
|
+
|
|
57
62
|
# Combine filters
|
|
58
63
|
opencode-usage --provider anthropic --since 7d --json
|
|
59
64
|
```
|
package/dist/index.js
CHANGED
|
@@ -86,7 +86,7 @@ Options:
|
|
|
86
86
|
-u, --until <date> End date (YYYYMMDD, YYYY-MM-DD, or 7d/1w/1m)
|
|
87
87
|
-j, --json Output as JSON
|
|
88
88
|
-m, --monthly Aggregate by month instead of day
|
|
89
|
-
-w, --watch Watch mode - refresh every 5
|
|
89
|
+
-w, --watch Watch mode - refresh every 5 minutes
|
|
90
90
|
-h, --help Show this help message
|
|
91
91
|
|
|
92
92
|
Examples:
|
|
@@ -615,9 +615,12 @@ No usage data found.
|
|
|
615
615
|
}
|
|
616
616
|
|
|
617
617
|
// src/index.ts
|
|
618
|
-
var WATCH_INTERVAL_MS =
|
|
619
|
-
function
|
|
620
|
-
process.stdout.write("\x1B[
|
|
618
|
+
var WATCH_INTERVAL_MS = 5 * 60 * 1000;
|
|
619
|
+
function moveCursorHome() {
|
|
620
|
+
process.stdout.write("\x1B[H");
|
|
621
|
+
}
|
|
622
|
+
function clearToEnd() {
|
|
623
|
+
process.stdout.write("\x1B[J");
|
|
621
624
|
}
|
|
622
625
|
async function renderUsage(options) {
|
|
623
626
|
const { storagePath, provider, days, since, until, json, monthly, watch } = options;
|
|
@@ -659,7 +662,8 @@ Loading OpenCode usage data from: ${storagePath}`);
|
|
|
659
662
|
} else {
|
|
660
663
|
renderTable(stats);
|
|
661
664
|
if (watch) {
|
|
662
|
-
|
|
665
|
+
const now = new Date().toLocaleTimeString();
|
|
666
|
+
console.log(`[Watch mode] Last update: ${now} | Refreshing every ${WATCH_INTERVAL_MS / 60000}min | Ctrl+C to exit`);
|
|
663
667
|
}
|
|
664
668
|
}
|
|
665
669
|
}
|
|
@@ -678,8 +682,9 @@ async function main() {
|
|
|
678
682
|
};
|
|
679
683
|
if (watch) {
|
|
680
684
|
const runWatch = async () => {
|
|
681
|
-
|
|
685
|
+
moveCursorHome();
|
|
682
686
|
await renderUsage(options);
|
|
687
|
+
clearToEnd();
|
|
683
688
|
};
|
|
684
689
|
await runWatch();
|
|
685
690
|
setInterval(runWatch, WATCH_INTERVAL_MS);
|
|
@@ -689,5 +694,5 @@ async function main() {
|
|
|
689
694
|
}
|
|
690
695
|
main().catch(console.error);
|
|
691
696
|
|
|
692
|
-
//# debugId=
|
|
697
|
+
//# debugId=E6C5D55AAF94014B64756E2164756E21
|
|
693
698
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/cli.ts", "../src/loader.ts", "../src/pricing.ts", "../src/aggregator.ts", "../src/renderer.ts", "../src/index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"/**\n * CLI argument parser using Node.js parseArgs (works with both Bun and Node.js)\n */\n\nimport { parseArgs as nodeParseArgs } from \"node:util\";\n\nexport type CliArgs = {\n provider?: string;\n days?: number;\n since?: string;\n until?: string;\n json?: boolean;\n monthly?: boolean;\n watch?: boolean;\n};\n\n// Get CLI args - works with both Bun and Node.js\nfunction getArgs(): string[] {\n if (typeof globalThis.Bun !== \"undefined\") {\n return Bun.argv.slice(2);\n }\n return process.argv.slice(2);\n}\n\n/**\n * Parse date string in formats: YYYYMMDD, YYYY-MM-DD, or relative like \"7d\", \"1w\", \"1m\"\n */\nfunction parseDate(value: string): string | undefined {\n if (!value) return undefined;\n\n // Relative date: 7d, 1w, 1m\n const relativeMatch = value.match(/^(\\d+)([dwm])$/);\n if (relativeMatch) {\n const num = parseInt(relativeMatch[1], 10);\n const unit = relativeMatch[2];\n const date = new Date();\n if (unit === \"d\") date.setDate(date.getDate() - num);\n else if (unit === \"w\") date.setDate(date.getDate() - num * 7);\n else if (unit === \"m\") date.setMonth(date.getMonth() - num);\n return date.toISOString().split(\"T\")[0];\n }\n\n // YYYYMMDD format\n if (/^\\d{8}$/.test(value)) {\n return `${value.slice(0, 4)}-${value.slice(4, 6)}-${value.slice(6, 8)}`;\n }\n\n // YYYY-MM-DD format\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\n return value;\n }\n\n console.error(\n `Invalid date format: ${value}. Use YYYYMMDD, YYYY-MM-DD, or relative (7d, 1w, 1m)`\n );\n process.exit(1);\n}\n\nexport function parseArgs(): CliArgs {\n try {\n const { values } = nodeParseArgs({\n args: getArgs(),\n options: {\n provider: { type: \"string\", short: \"p\" },\n days: { type: \"string\", short: \"d\" },\n since: { type: \"string\", short: \"s\" },\n until: { type: \"string\", short: \"u\" },\n json: { type: \"boolean\", short: \"j\" },\n monthly: { type: \"boolean\", short: \"m\" },\n watch: { type: \"boolean\", short: \"w\" },\n help: { type: \"boolean\", short: \"h\" },\n },\n strict: true,\n });\n\n if (values.help) {\n printHelp();\n process.exit(0);\n }\n\n return {\n provider: values.provider?.toLowerCase(),\n days: values.days ? parseInt(values.days, 10) : undefined,\n since: parseDate(values.since ?? \"\"),\n until: parseDate(values.until ?? \"\"),\n json: values.json,\n monthly: values.monthly,\n watch: values.watch,\n };\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"Unknown option\")) {\n console.error(`Error: ${error.message}`);\n printHelp();\n process.exit(1);\n }\n throw error;\n }\n}\n\nfunction printHelp(): void {\n console.log(`\nopencode-usage - Track OpenCode AI coding assistant usage and costs\n\nUsage:\n bunx opencode-usage [options]\n\nOptions:\n -p, --provider <name> Filter by provider (anthropic, openai, google, opencode)\n -d, --days <n> Show only last N days\n -s, --since <date> Start date (YYYYMMDD, YYYY-MM-DD, or 7d/1w/1m)\n -u, --until <date> End date (YYYYMMDD, YYYY-MM-DD, or 7d/1w/1m)\n -j, --json Output as JSON\n -m, --monthly Aggregate by month instead of day\n -w, --watch Watch mode - refresh every 5
|
|
5
|
+
"/**\n * CLI argument parser using Node.js parseArgs (works with both Bun and Node.js)\n */\n\nimport { parseArgs as nodeParseArgs } from \"node:util\";\n\nexport type CliArgs = {\n provider?: string;\n days?: number;\n since?: string;\n until?: string;\n json?: boolean;\n monthly?: boolean;\n watch?: boolean;\n};\n\n// Get CLI args - works with both Bun and Node.js\nfunction getArgs(): string[] {\n if (typeof globalThis.Bun !== \"undefined\") {\n return Bun.argv.slice(2);\n }\n return process.argv.slice(2);\n}\n\n/**\n * Parse date string in formats: YYYYMMDD, YYYY-MM-DD, or relative like \"7d\", \"1w\", \"1m\"\n */\nfunction parseDate(value: string): string | undefined {\n if (!value) return undefined;\n\n // Relative date: 7d, 1w, 1m\n const relativeMatch = value.match(/^(\\d+)([dwm])$/);\n if (relativeMatch) {\n const num = parseInt(relativeMatch[1], 10);\n const unit = relativeMatch[2];\n const date = new Date();\n if (unit === \"d\") date.setDate(date.getDate() - num);\n else if (unit === \"w\") date.setDate(date.getDate() - num * 7);\n else if (unit === \"m\") date.setMonth(date.getMonth() - num);\n return date.toISOString().split(\"T\")[0];\n }\n\n // YYYYMMDD format\n if (/^\\d{8}$/.test(value)) {\n return `${value.slice(0, 4)}-${value.slice(4, 6)}-${value.slice(6, 8)}`;\n }\n\n // YYYY-MM-DD format\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\n return value;\n }\n\n console.error(\n `Invalid date format: ${value}. Use YYYYMMDD, YYYY-MM-DD, or relative (7d, 1w, 1m)`\n );\n process.exit(1);\n}\n\nexport function parseArgs(): CliArgs {\n try {\n const { values } = nodeParseArgs({\n args: getArgs(),\n options: {\n provider: { type: \"string\", short: \"p\" },\n days: { type: \"string\", short: \"d\" },\n since: { type: \"string\", short: \"s\" },\n until: { type: \"string\", short: \"u\" },\n json: { type: \"boolean\", short: \"j\" },\n monthly: { type: \"boolean\", short: \"m\" },\n watch: { type: \"boolean\", short: \"w\" },\n help: { type: \"boolean\", short: \"h\" },\n },\n strict: true,\n });\n\n if (values.help) {\n printHelp();\n process.exit(0);\n }\n\n return {\n provider: values.provider?.toLowerCase(),\n days: values.days ? parseInt(values.days, 10) : undefined,\n since: parseDate(values.since ?? \"\"),\n until: parseDate(values.until ?? \"\"),\n json: values.json,\n monthly: values.monthly,\n watch: values.watch,\n };\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"Unknown option\")) {\n console.error(`Error: ${error.message}`);\n printHelp();\n process.exit(1);\n }\n throw error;\n }\n}\n\nfunction printHelp(): void {\n console.log(`\nopencode-usage - Track OpenCode AI coding assistant usage and costs\n\nUsage:\n bunx opencode-usage [options]\n\nOptions:\n -p, --provider <name> Filter by provider (anthropic, openai, google, opencode)\n -d, --days <n> Show only last N days\n -s, --since <date> Start date (YYYYMMDD, YYYY-MM-DD, or 7d/1w/1m)\n -u, --until <date> End date (YYYYMMDD, YYYY-MM-DD, or 7d/1w/1m)\n -j, --json Output as JSON\n -m, --monthly Aggregate by month instead of day\n -w, --watch Watch mode - refresh every 5 minutes\n -h, --help Show this help message\n\nExamples:\n bunx opencode-usage\n bunx opencode-usage --provider anthropic\n bunx opencode-usage -p openai -d 30\n bunx opencode-usage --since 20251201 --until 20251231\n bunx opencode-usage --since 7d\n bunx opencode-usage --monthly --json\n bunx opencode-usage --watch\n bunx opencode-usage -w -d 1\n`);\n}\n",
|
|
6
6
|
"import { readdir, stat, readFile } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport type { MessageJson } from \"./types.js\";\n\nconst isBun = typeof globalThis.Bun !== \"undefined\";\nconst BATCH_SIZE = 10000;\n\nexport function getOpenCodeStoragePath(): string {\n const xdgDataHome =\n process.env.XDG_DATA_HOME ?? join(homedir(), \".local\", \"share\");\n return join(xdgDataHome, \"opencode\", \"storage\");\n}\n\nasync function readJsonFile(filePath: string): Promise<MessageJson> {\n const content = isBun\n ? await Bun.file(filePath).text()\n : await readFile(filePath, \"utf-8\");\n return JSON.parse(content) as MessageJson;\n}\n\nasync function collectFilePaths(messagesDir: string): Promise<string[]> {\n const sessionDirs = await readdir(messagesDir);\n\n const pathArrays = await Promise.all(\n sessionDirs.map(async (sessionDir) => {\n const sessionPath = join(messagesDir, sessionDir);\n const st = await stat(sessionPath);\n if (!st.isDirectory()) return [];\n\n const files = await readdir(sessionPath);\n return files\n .filter((f) => f.endsWith(\".json\"))\n .map((f) => join(sessionPath, f));\n })\n );\n\n return pathArrays.flat();\n}\n\nasync function processInBatches<T, R>(\n items: T[],\n fn: (item: T) => Promise<R>,\n batchSize: number\n): Promise<R[]> {\n const results: R[] = [];\n for (let i = 0; i < items.length; i += batchSize) {\n const batch = items.slice(i, i + batchSize);\n const batchResults = await Promise.all(batch.map(fn));\n results.push(...batchResults);\n }\n return results;\n}\n\nexport async function loadMessages(\n storagePath: string,\n providerFilter?: string\n): Promise<MessageJson[]> {\n const messagesDir = join(storagePath, \"message\");\n\n try {\n const filePaths = await collectFilePaths(messagesDir);\n\n const results = await processInBatches(\n filePaths,\n async (filePath) => {\n try {\n return await readJsonFile(filePath);\n } catch {\n return null;\n }\n },\n BATCH_SIZE\n );\n\n return results.filter((msg): msg is MessageJson => {\n if (!msg) return false;\n if (msg.role === \"user\") return false;\n if (!msg.tokens) return false;\n\n if (providerFilter) {\n const providerId = msg.model?.providerID ?? msg.providerID ?? \"unknown\";\n if (providerId.toLowerCase() !== providerFilter) return false;\n }\n\n return true;\n });\n } catch (err) {\n console.error(`Error reading messages directory: ${err}`);\n return [];\n }\n}\n",
|
|
7
7
|
"/**\n * Model pricing configuration (per million tokens)\n */\n\nimport type { ModelPricing, TokenUsage } from \"./types\";\n\nexport const MODEL_PRICING: Record<string, ModelPricing> = {\n // Anthropic - Current Models\n \"claude-opus-4-5\": {\n input: 5,\n output: 25,\n cacheWrite: 6.25,\n cacheRead: 0.5,\n },\n \"claude-sonnet-4-5\": {\n input: 3,\n output: 15,\n cacheWrite: 3.75,\n cacheRead: 0.3,\n },\n \"claude-haiku-4-5\": {\n input: 1,\n output: 5,\n cacheWrite: 1.25,\n cacheRead: 0.1,\n },\n \"claude-opus-4\": {\n input: 15,\n output: 75,\n cacheWrite: 18.75,\n cacheRead: 1.5,\n },\n \"claude-sonnet-4\": {\n input: 3,\n output: 15,\n cacheWrite: 3.75,\n cacheRead: 0.3,\n },\n \"claude-opus-4-1\": {\n input: 15,\n output: 75,\n cacheWrite: 18.75,\n cacheRead: 1.5,\n },\n \"claude-opus-3\": {\n input: 15,\n output: 75,\n cacheWrite: 18.75,\n cacheRead: 1.5,\n },\n \"claude-haiku-3\": {\n input: 0.25,\n output: 1.25,\n cacheWrite: 0.3,\n cacheRead: 0.03,\n },\n\n // OpenAI Models\n \"gpt-4o\": {\n input: 2.5,\n output: 10,\n cacheWrite: 0,\n cacheRead: 0,\n },\n \"gpt-4o-mini\": {\n input: 0.15,\n output: 0.6,\n cacheWrite: 0,\n cacheRead: 0,\n },\n \"gpt-4-turbo\": {\n input: 10,\n output: 30,\n cacheWrite: 0,\n cacheRead: 0,\n },\n \"gpt-5\": {\n input: 5,\n output: 15,\n cacheWrite: 0,\n cacheRead: 0,\n },\n \"gpt-5.2\": {\n input: 5,\n output: 15,\n cacheWrite: 0,\n cacheRead: 0,\n },\n o1: {\n input: 15,\n output: 60,\n cacheWrite: 0,\n cacheRead: 0,\n },\n \"o1-mini\": {\n input: 3,\n output: 12,\n cacheWrite: 0,\n cacheRead: 0,\n },\n \"o1-pro\": {\n input: 150,\n output: 600,\n cacheWrite: 0,\n cacheRead: 0,\n },\n o3: {\n input: 10,\n output: 40,\n cacheWrite: 0,\n cacheRead: 0,\n },\n \"o3-mini\": {\n input: 1.1,\n output: 4.4,\n cacheWrite: 0,\n cacheRead: 0,\n },\n\n // Google Models\n \"gemini-2.0-flash\": {\n input: 0.1,\n output: 0.4,\n cacheWrite: 0,\n cacheRead: 0,\n },\n \"gemini-2.5-pro\": {\n input: 1.25,\n output: 10,\n cacheWrite: 0,\n cacheRead: 0,\n },\n \"gemini-2.5-flash\": {\n input: 0.15,\n output: 0.6,\n cacheWrite: 0,\n cacheRead: 0,\n },\n \"gemini-3-flash-preview\": {\n input: 0.15,\n output: 0.6,\n cacheWrite: 0,\n cacheRead: 0,\n },\n\n // Free/OpenCode hosted models\n \"qwen3-coder\": {\n input: 0,\n output: 0,\n cacheWrite: 0,\n cacheRead: 0,\n },\n \"glm-4.7-free\": {\n input: 0,\n output: 0,\n cacheWrite: 0,\n cacheRead: 0,\n },\n \"minimax-m2.1-free\": {\n input: 0,\n output: 0,\n cacheWrite: 0,\n cacheRead: 0,\n },\n};\n\nconst DEFAULT_PRICING: ModelPricing = {\n input: 3,\n output: 15,\n cacheWrite: 3.75,\n cacheRead: 0.3,\n};\n\nexport function getModelPricing(modelId: string): ModelPricing {\n const normalized = modelId.toLowerCase().replace(/_/g, \"-\");\n\n if (MODEL_PRICING[normalized]) {\n return MODEL_PRICING[normalized];\n }\n\n for (const [key, pricing] of Object.entries(MODEL_PRICING)) {\n if (normalized.includes(key) || key.includes(normalized)) {\n return pricing;\n }\n }\n\n return DEFAULT_PRICING;\n}\n\nexport function calculateCost(tokens: TokenUsage, modelId: string): number {\n const pricing = getModelPricing(modelId);\n\n const inputCost = (tokens.input / 1_000_000) * pricing.input;\n const outputCost = (tokens.output / 1_000_000) * pricing.output;\n const cacheWriteCost = (tokens.cache.write / 1_000_000) * pricing.cacheWrite;\n const cacheReadCost = (tokens.cache.read / 1_000_000) * pricing.cacheRead;\n const reasoningCost = (tokens.reasoning / 1_000_000) * pricing.output;\n\n return (\n inputCost + outputCost + cacheWriteCost + cacheReadCost + reasoningCost\n );\n}\n",
|
|
8
8
|
"/**\n * Data aggregation functions\n */\n\nimport type { DailyStats, MessageJson } from \"./types.js\";\nimport { calculateCost } from \"./pricing\";\n\nfunction timestampToDate(timestamp: number): string {\n return new Date(timestamp).toISOString().split(\"T\")[0];\n}\n\nexport function aggregateByDate(\n messages: MessageJson[]\n): Map<string, DailyStats> {\n const dailyStats = new Map<string, DailyStats>();\n\n for (const msg of messages) {\n const timestamp = msg.time?.created ?? msg.time?.completed;\n if (!timestamp) continue;\n\n const date = timestampToDate(timestamp);\n const modelId = msg.model?.modelID ?? msg.modelID ?? \"unknown\";\n const providerId = msg.model?.providerID ?? msg.providerID ?? \"unknown\";\n const tokens = msg.tokens!;\n const msgCost = calculateCost(tokens, modelId);\n\n let stats = dailyStats.get(date);\n if (!stats) {\n stats = {\n date,\n models: new Set(),\n providers: new Set(),\n providerStats: new Map(),\n input: 0,\n output: 0,\n cacheWrite: 0,\n cacheRead: 0,\n reasoning: 0,\n cost: 0,\n };\n dailyStats.set(date, stats);\n }\n\n // Update daily totals\n stats.models.add(modelId);\n stats.providers.add(providerId);\n stats.input += tokens.input ?? 0;\n stats.output += tokens.output ?? 0;\n stats.cacheWrite += tokens.cache?.write ?? 0;\n stats.cacheRead += tokens.cache?.read ?? 0;\n stats.reasoning += tokens.reasoning ?? 0;\n stats.cost += msgCost;\n\n // Update provider-specific stats\n let providerStat = stats.providerStats.get(providerId);\n if (!providerStat) {\n providerStat = {\n input: 0,\n output: 0,\n cacheWrite: 0,\n cacheRead: 0,\n reasoning: 0,\n cost: 0,\n models: new Set(),\n };\n stats.providerStats.set(providerId, providerStat);\n }\n providerStat.models.add(modelId);\n providerStat.input += tokens.input ?? 0;\n providerStat.output += tokens.output ?? 0;\n providerStat.cacheWrite += tokens.cache?.write ?? 0;\n providerStat.cacheRead += tokens.cache?.read ?? 0;\n providerStat.reasoning += tokens.reasoning ?? 0;\n providerStat.cost += msgCost;\n }\n\n return dailyStats;\n}\n\nexport function filterByDays(\n dailyStats: Map<string, DailyStats>,\n days: number\n): Map<string, DailyStats> {\n const cutoffDate = new Date();\n cutoffDate.setDate(cutoffDate.getDate() - days);\n const cutoffStr = cutoffDate.toISOString().split(\"T\")[0];\n\n const filtered = new Map<string, DailyStats>();\n for (const [date, stats] of dailyStats) {\n if (date >= cutoffStr) {\n filtered.set(date, stats);\n }\n }\n return filtered;\n}\n\nexport function filterByDateRange(\n dailyStats: Map<string, DailyStats>,\n since?: string,\n until?: string\n): Map<string, DailyStats> {\n const filtered = new Map<string, DailyStats>();\n for (const [date, stats] of dailyStats) {\n if (since && date < since) continue;\n if (until && date > until) continue;\n filtered.set(date, stats);\n }\n return filtered;\n}\n\nfunction dateToMonth(date: string): string {\n return date.slice(0, 7); // YYYY-MM\n}\n\nexport function aggregateByMonth(\n dailyStats: Map<string, DailyStats>\n): Map<string, DailyStats> {\n const monthlyStats = new Map<string, DailyStats>();\n\n for (const [date, stats] of dailyStats) {\n const month = dateToMonth(date);\n\n let monthStats = monthlyStats.get(month);\n if (!monthStats) {\n monthStats = {\n date: month,\n models: new Set(),\n providers: new Set(),\n providerStats: new Map(),\n input: 0,\n output: 0,\n cacheWrite: 0,\n cacheRead: 0,\n reasoning: 0,\n cost: 0,\n };\n monthlyStats.set(month, monthStats);\n }\n\n // Merge models and providers\n for (const model of stats.models) monthStats.models.add(model);\n for (const provider of stats.providers) monthStats.providers.add(provider);\n\n // Sum totals\n monthStats.input += stats.input;\n monthStats.output += stats.output;\n monthStats.cacheWrite += stats.cacheWrite;\n monthStats.cacheRead += stats.cacheRead;\n monthStats.reasoning += stats.reasoning;\n monthStats.cost += stats.cost;\n\n // Merge provider stats\n for (const [providerId, providerStat] of stats.providerStats) {\n let monthProviderStat = monthStats.providerStats.get(providerId);\n if (!monthProviderStat) {\n monthProviderStat = {\n input: 0,\n output: 0,\n cacheWrite: 0,\n cacheRead: 0,\n reasoning: 0,\n cost: 0,\n models: new Set(),\n };\n monthStats.providerStats.set(providerId, monthProviderStat);\n }\n for (const model of providerStat.models)\n monthProviderStat.models.add(model);\n monthProviderStat.input += providerStat.input;\n monthProviderStat.output += providerStat.output;\n monthProviderStat.cacheWrite += providerStat.cacheWrite;\n monthProviderStat.cacheRead += providerStat.cacheRead;\n monthProviderStat.reasoning += providerStat.reasoning;\n monthProviderStat.cost += providerStat.cost;\n }\n }\n\n return monthlyStats;\n}\n",
|
|
9
9
|
"/**\n * Terminal table renderer\n */\n\nimport type { DailyStats } from \"./types\";\n\nfunction formatNumber(num: number): string {\n return num.toLocaleString(\"en-US\");\n}\n\nfunction formatCost(cost: number): string {\n return `$${cost.toFixed(2)}`;\n}\n\nfunction padRight(str: string, len: number): string {\n return str.padEnd(len);\n}\n\nfunction padLeft(str: string, len: number): string {\n return str.padStart(len);\n}\n\nexport type JsonOutput = {\n periods: Array<{\n date: string;\n models: string[];\n providers: Array<{\n id: string;\n models: string[];\n input: number;\n output: number;\n cacheRead: number;\n cacheWrite: number;\n reasoning: number;\n cost: number;\n }>;\n totals: {\n input: number;\n output: number;\n cacheRead: number;\n cacheWrite: number;\n reasoning: number;\n cost: number;\n };\n }>;\n totals: {\n input: number;\n output: number;\n cost: number;\n };\n};\n\nexport function renderJson(dailyStats: Map<string, DailyStats>): void {\n const sortedDates = Array.from(dailyStats.keys()).sort((a, b) =>\n a.localeCompare(b)\n );\n\n let totalInput = 0;\n let totalOutput = 0;\n let totalCost = 0;\n\n const periods = sortedDates.map((date) => {\n const stats = dailyStats.get(date)!;\n const combinedInput = stats.input + stats.cacheRead + stats.cacheWrite;\n\n totalInput += combinedInput;\n totalOutput += stats.output;\n totalCost += stats.cost;\n\n const providers = Array.from(stats.providerStats.entries())\n .sort((a, b) => b[1].cost - a[1].cost)\n .map(([id, ps]) => ({\n id,\n models: Array.from(ps.models).sort(),\n input: ps.input,\n output: ps.output,\n cacheRead: ps.cacheRead,\n cacheWrite: ps.cacheWrite,\n reasoning: ps.reasoning,\n cost: Math.round(ps.cost * 100) / 100,\n }));\n\n return {\n date,\n models: Array.from(stats.models).sort(),\n providers,\n totals: {\n input: stats.input,\n output: stats.output,\n cacheRead: stats.cacheRead,\n cacheWrite: stats.cacheWrite,\n reasoning: stats.reasoning,\n cost: Math.round(stats.cost * 100) / 100,\n },\n };\n });\n\n const output: JsonOutput = {\n periods,\n totals: {\n input: totalInput,\n output: totalOutput,\n cost: Math.round(totalCost * 100) / 100,\n },\n };\n\n console.log(JSON.stringify(output, null, 2));\n}\n\nexport function renderTable(dailyStats: Map<string, DailyStats>): void {\n const sortedDates = Array.from(dailyStats.keys()).sort((a, b) =>\n a.localeCompare(b)\n );\n\n if (sortedDates.length === 0) {\n console.log(\"\\nNo usage data found.\\n\");\n return;\n }\n\n // Column widths\n const colDate = 12;\n const colModels = 35;\n const colInput = 16;\n const colOutput = 14;\n const colTotal = 16;\n const colCost = 12;\n\n // Border characters\n const h = \"\\u2500\";\n const v = \"\\u2502\";\n const tl = \"\\u250C\";\n const tr = \"\\u2510\";\n const bl = \"\\u2514\";\n const br = \"\\u2518\";\n const ml = \"\\u251C\";\n const mr = \"\\u2524\";\n const mt = \"\\u252C\";\n const mb = \"\\u2534\";\n const mm = \"\\u253C\";\n\n const topLine =\n tl +\n h.repeat(colDate) +\n mt +\n h.repeat(colModels) +\n mt +\n h.repeat(colInput) +\n mt +\n h.repeat(colOutput) +\n mt +\n h.repeat(colTotal) +\n mt +\n h.repeat(colCost) +\n tr;\n\n const midLine =\n ml +\n h.repeat(colDate) +\n mm +\n h.repeat(colModels) +\n mm +\n h.repeat(colInput) +\n mm +\n h.repeat(colOutput) +\n mm +\n h.repeat(colTotal) +\n mm +\n h.repeat(colCost) +\n mr;\n\n const bottomLine =\n bl +\n h.repeat(colDate) +\n mb +\n h.repeat(colModels) +\n mb +\n h.repeat(colInput) +\n mb +\n h.repeat(colOutput) +\n mb +\n h.repeat(colTotal) +\n mb +\n h.repeat(colCost) +\n br;\n\n const header =\n v +\n padRight(\" Date\", colDate) +\n v +\n padRight(\" Models\", colModels) +\n v +\n padLeft(\"Input \", colInput) +\n v +\n padLeft(\"Output \", colOutput) +\n v +\n padLeft(\"Total Tokens \", colTotal) +\n v +\n padLeft(\"Cost \", colCost) +\n v;\n\n console.log(\"\\n\" + topLine);\n console.log(header);\n console.log(midLine);\n\n let totalInput = 0;\n let totalOutput = 0;\n let totalCost = 0;\n\n for (const date of sortedDates) {\n const stats = dailyStats.get(date)!;\n const models = Array.from(stats.models).sort();\n\n const combinedInput = stats.input + stats.cacheRead + stats.cacheWrite;\n const totalTokens = combinedInput + stats.output;\n\n totalInput += combinedInput;\n totalOutput += stats.output;\n totalCost += stats.cost;\n\n const firstModel = models[0] ? `- ${models[0]}` : \"\";\n console.log(\n v +\n padRight(` ${date}`, colDate) +\n v +\n padRight(` ${firstModel}`, colModels) +\n v +\n padLeft(`${formatNumber(combinedInput)} `, colInput) +\n v +\n padLeft(`${formatNumber(stats.output)} `, colOutput) +\n v +\n padLeft(`${formatNumber(totalTokens)} `, colTotal) +\n v +\n padLeft(`${formatCost(stats.cost)} `, colCost) +\n v\n );\n\n for (let i = 1; i < models.length; i++) {\n console.log(\n v +\n \" \".repeat(colDate) +\n v +\n padRight(` - ${models[i]}`, colModels) +\n v +\n \" \".repeat(colInput) +\n v +\n \" \".repeat(colOutput) +\n v +\n \" \".repeat(colTotal) +\n v +\n \" \".repeat(colCost) +\n v\n );\n }\n\n const providers = Array.from(stats.providerStats.entries()).sort(\n (a, b) => b[1].cost - a[1].cost\n );\n\n for (const [providerId, providerStat] of providers) {\n const providerInput =\n providerStat.input + providerStat.cacheRead + providerStat.cacheWrite;\n const providerTokens = providerInput + providerStat.output;\n console.log(\n v +\n \" \".repeat(colDate) +\n v +\n padRight(` [${providerId}]`, colModels) +\n v +\n padLeft(`${formatNumber(providerInput)} `, colInput) +\n v +\n padLeft(`${formatNumber(providerStat.output)} `, colOutput) +\n v +\n padLeft(`${formatNumber(providerTokens)} `, colTotal) +\n v +\n padLeft(`${formatCost(providerStat.cost)} `, colCost) +\n v\n );\n }\n\n console.log(midLine);\n }\n\n const grandTotal = totalInput + totalOutput;\n console.log(\n v +\n padRight(\" Total\", colDate) +\n v +\n \" \".repeat(colModels) +\n v +\n padLeft(`${formatNumber(totalInput)} `, colInput) +\n v +\n padLeft(`${formatNumber(totalOutput)} `, colOutput) +\n v +\n padLeft(`${formatNumber(grandTotal)} `, colTotal) +\n v +\n padLeft(`${formatCost(totalCost)} `, colCost) +\n v\n );\n console.log(bottomLine);\n console.log();\n}\n",
|
|
10
|
-
"#!/usr/bin/env node\n/**\n * OpenCode Usage - CLI tool for tracking OpenCode AI usage and costs\n *\n * Usage:\n * bunx opencode-usage\n * bunx opencode-usage --provider anthropic\n * bunx opencode-usage --days 30\n * bunx opencode-usage --since 20251201 --until 20251231\n * bunx opencode-usage --monthly --json\n * bunx opencode-usage --watch\n */\n\nimport { parseArgs } from \"./cli.js\";\nimport { getOpenCodeStoragePath, loadMessages } from \"./loader.js\";\nimport {\n aggregateByDate,\n aggregateByMonth,\n filterByDays,\n filterByDateRange,\n} from \"./aggregator.js\";\nimport { renderTable, renderJson } from \"./renderer.js\";\n\nconst WATCH_INTERVAL_MS =
|
|
10
|
+
"#!/usr/bin/env node\n/**\n * OpenCode Usage - CLI tool for tracking OpenCode AI usage and costs\n *\n * Usage:\n * bunx opencode-usage\n * bunx opencode-usage --provider anthropic\n * bunx opencode-usage --days 30\n * bunx opencode-usage --since 20251201 --until 20251231\n * bunx opencode-usage --monthly --json\n * bunx opencode-usage --watch\n */\n\nimport { parseArgs } from \"./cli.js\";\nimport { getOpenCodeStoragePath, loadMessages } from \"./loader.js\";\nimport {\n aggregateByDate,\n aggregateByMonth,\n filterByDays,\n filterByDateRange,\n} from \"./aggregator.js\";\nimport { renderTable, renderJson } from \"./renderer.js\";\n\nconst WATCH_INTERVAL_MS = 5 * 60 * 1000;\n\nfunction moveCursorHome(): void {\n process.stdout.write(\"\\x1b[H\");\n}\n\nfunction clearToEnd(): void {\n process.stdout.write(\"\\x1b[J\");\n}\n\nasync function renderUsage(options: {\n storagePath: string;\n provider?: string;\n days?: number;\n since?: string;\n until?: string;\n json?: boolean;\n monthly?: boolean;\n watch?: boolean;\n}): Promise<void> {\n const { storagePath, provider, days, since, until, json, monthly, watch } =\n options;\n\n if (!json) {\n console.log(`\\nLoading OpenCode usage data from: ${storagePath}`);\n if (provider) {\n console.log(`Filtering: ${provider} provider only`);\n }\n }\n\n const messages = await loadMessages(storagePath, provider);\n\n if (!json) {\n console.log(`Found ${messages.length} assistant messages with token data`);\n }\n\n let stats = aggregateByDate(messages);\n\n // Apply date filters\n if (days) {\n stats = filterByDays(stats, days);\n if (!json) console.log(`Showing last ${days} days`);\n }\n\n if (since || until) {\n stats = filterByDateRange(stats, since, until);\n if (!json) {\n if (since && until) console.log(`Date range: ${since} to ${until}`);\n else if (since) console.log(`From: ${since}`);\n else if (until) console.log(`Until: ${until}`);\n }\n }\n\n // Aggregate by month if requested\n if (monthly) {\n stats = aggregateByMonth(stats);\n if (!json) console.log(`Aggregated by month`);\n }\n\n // Render output\n if (json) {\n renderJson(stats);\n } else {\n renderTable(stats);\n if (watch) {\n const now = new Date().toLocaleTimeString();\n console.log(\n `[Watch mode] Last update: ${now} | Refreshing every ${WATCH_INTERVAL_MS / 60000}min | Ctrl+C to exit`\n );\n }\n }\n}\n\nasync function main(): Promise<void> {\n const { provider, days, since, until, json, monthly, watch } = parseArgs();\n const storagePath = getOpenCodeStoragePath();\n\n const options = {\n storagePath,\n provider,\n days,\n since,\n until,\n json,\n monthly,\n watch,\n };\n\n if (watch) {\n const runWatch = async () => {\n moveCursorHome();\n await renderUsage(options);\n clearToEnd();\n };\n\n await runWatch();\n setInterval(runWatch, WATCH_INTERVAL_MS);\n } else {\n await renderUsage(options);\n }\n}\n\nmain().catch(console.error);\n"
|
|
11
11
|
],
|
|
12
|
-
"mappings": "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",
|
|
13
|
-
"debugId": "
|
|
12
|
+
"mappings": "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",
|
|
13
|
+
"debugId": "E6C5D55AAF94014B64756E2164756E21",
|
|
14
14
|
"names": []
|
|
15
15
|
}
|