@ccview/core 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.
- package/dist/analyzer/cost-calculator.d.ts +1 -2
- package/dist/analyzer/cost-calculator.d.ts.map +1 -1
- package/dist/analyzer/cost-calculator.js +1 -7
- package/dist/analyzer/cost-calculator.js.map +1 -1
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +3 -6
- package/dist/db/index.js.map +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +34 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/parser/log-scanner.d.ts.map +1 -1
- package/dist/parser/log-scanner.js +1 -5
- package/dist/parser/log-scanner.js.map +1 -1
- package/dist/parser/session-parser.d.ts.map +1 -1
- package/dist/parser/session-parser.js +4 -14
- package/dist/parser/session-parser.js.map +1 -1
- package/dist/parser/token-estimator.d.ts +2 -3
- package/dist/parser/token-estimator.d.ts.map +1 -1
- package/dist/parser/token-estimator.js +5 -3
- package/dist/parser/token-estimator.js.map +1 -1
- package/dist/types.d.ts +17 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +64 -5
- package/dist/types.js.map +1 -1
- package/package.json +10 -10
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function calculateCost(tokensIn: number, tokensOut: number, model: ModelName): number;
|
|
1
|
+
export { estimateCost as calculateCost } from '../parser/token-estimator.js';
|
|
3
2
|
//# sourceMappingURL=cost-calculator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost-calculator.d.ts","sourceRoot":"","sources":["../../src/analyzer/cost-calculator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cost-calculator.d.ts","sourceRoot":"","sources":["../../src/analyzer/cost-calculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,aAAa,EAAE,MAAM,8BAA8B,CAAA"}
|
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export function calculateCost(tokensIn, tokensOut, model) {
|
|
3
|
-
const pricing = DEFAULT_PRICING[model];
|
|
4
|
-
const inputCost = (tokensIn / 1_000_000) * pricing.inputPer1M;
|
|
5
|
-
const outputCost = (tokensOut / 1_000_000) * pricing.outputPer1M;
|
|
6
|
-
return Math.round((inputCost + outputCost) * 1_000_000) / 1_000_000;
|
|
7
|
-
}
|
|
1
|
+
export { estimateCost as calculateCost } from '../parser/token-estimator.js';
|
|
8
2
|
//# sourceMappingURL=cost-calculator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost-calculator.js","sourceRoot":"","sources":["../../src/analyzer/cost-calculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cost-calculator.js","sourceRoot":"","sources":["../../src/analyzer/cost-calculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,aAAa,EAAE,MAAM,8BAA8B,CAAA"}
|
package/dist/db/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAQrC,wBAAgB,YAAY,CAAC,MAAM,SAAkB,GAAG,QAAQ,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAQrC,wBAAgB,YAAY,CAAC,MAAM,SAAkB,GAAG,QAAQ,CAAC,QAAQ,CAgBxE;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA"}
|
package/dist/db/index.js
CHANGED
|
@@ -12,12 +12,9 @@ export function openDatabase(dbPath = DEFAULT_DB_PATH) {
|
|
|
12
12
|
const db = new Database(dbPath);
|
|
13
13
|
db.pragma('journal_mode = WAL');
|
|
14
14
|
db.pragma('foreign_keys = ON');
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (!tableExists || tableExists.cnt === 0) {
|
|
19
|
-
initSchema(db);
|
|
20
|
-
}
|
|
15
|
+
// Esegui sempre initSchema: i CREATE TABLE IF NOT EXISTS sono idempotenti
|
|
16
|
+
// e runMigrations controlla internamente quali migrazioni sono già state applicate
|
|
17
|
+
initSchema(db);
|
|
21
18
|
return db;
|
|
22
19
|
}
|
|
23
20
|
export { Database };
|
package/dist/db/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,MAAM,SAAS,CAAA;AAExB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;AAEvE,MAAM,UAAU,YAAY,CAAC,MAAM,GAAG,eAAe;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACxC,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;IAE/B,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAC/B,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAE9B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,MAAM,SAAS,CAAA;AAExB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;AAEvE,MAAM,UAAU,YAAY,CAAC,MAAM,GAAG,eAAe;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACxC,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;IAE/B,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAC/B,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAE9B,0EAA0E;IAC1E,mFAAmF;IACnF,UAAU,CAAC,EAAE,CAAC,CAAA;IAEd,OAAO,EAAE,CAAA;AACX,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA"}
|
package/dist/db/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAG1C,eAAO,MAAM,UAAU,ssIAwItB,CAAA;AAKD,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAgBtD"}
|
package/dist/db/schema.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getPricingForModel } from '../types.js';
|
|
1
2
|
export const SCHEMA_SQL = `
|
|
2
3
|
CREATE TABLE IF NOT EXISTS _migrations (
|
|
3
4
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
@@ -136,6 +137,7 @@ GROUP BY DATE(started_at)
|
|
|
136
137
|
ORDER BY day DESC;
|
|
137
138
|
`;
|
|
138
139
|
const INITIAL_VERSION = 1;
|
|
140
|
+
const RECALCULATE_COSTS_VERSION = 2;
|
|
139
141
|
export function initSchema(db) {
|
|
140
142
|
db.exec(SCHEMA_SQL);
|
|
141
143
|
const hasVersion = db
|
|
@@ -144,5 +146,37 @@ export function initSchema(db) {
|
|
|
144
146
|
if (!hasVersion) {
|
|
145
147
|
db.prepare(`INSERT INTO _migrations (version, name) VALUES (?, ?)`).run(INITIAL_VERSION, 'initial_schema');
|
|
146
148
|
}
|
|
149
|
+
runMigrations(db);
|
|
150
|
+
}
|
|
151
|
+
function runMigrations(db) {
|
|
152
|
+
// Migration 2: ricalcola i costi con il nuovo pricing per modello
|
|
153
|
+
const hasMigration2 = db
|
|
154
|
+
.prepare(`SELECT version FROM _migrations WHERE version = ?`)
|
|
155
|
+
.get(RECALCULATE_COSTS_VERSION);
|
|
156
|
+
if (!hasMigration2) {
|
|
157
|
+
const sessions = db
|
|
158
|
+
.prepare(`SELECT id, model, total_tokens_in, total_tokens_out FROM sessions`)
|
|
159
|
+
.all();
|
|
160
|
+
const updateSession = db.prepare(`UPDATE sessions SET total_cost_usd = ? WHERE id = ?`);
|
|
161
|
+
const txn = db.transaction(() => {
|
|
162
|
+
for (const s of sessions) {
|
|
163
|
+
const pricing = getPricingForModel(s.model);
|
|
164
|
+
const cost = (s.total_tokens_in / 1_000_000) * pricing.inputPer1M +
|
|
165
|
+
(s.total_tokens_out / 1_000_000) * pricing.outputPer1M;
|
|
166
|
+
updateSession.run(Math.round(cost * 1_000_000) / 1_000_000, s.id);
|
|
167
|
+
}
|
|
168
|
+
// Ricalcola i totali dei progetti
|
|
169
|
+
db.prepare(`
|
|
170
|
+
UPDATE projects
|
|
171
|
+
SET total_cost_usd = (
|
|
172
|
+
SELECT COALESCE(SUM(total_cost_usd), 0)
|
|
173
|
+
FROM sessions
|
|
174
|
+
WHERE project_path = projects.path
|
|
175
|
+
)
|
|
176
|
+
`).run();
|
|
177
|
+
db.prepare(`INSERT INTO _migrations (version, name) VALUES (?, ?)`).run(RECALCULATE_COSTS_VERSION, 'recalculate_costs_with_updated_pricing');
|
|
178
|
+
});
|
|
179
|
+
txn();
|
|
180
|
+
}
|
|
147
181
|
}
|
|
148
182
|
//# sourceMappingURL=schema.js.map
|
package/dist/db/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEhD,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwIzB,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,CAAA;AACzB,MAAM,yBAAyB,GAAG,CAAC,CAAA;AAEnC,MAAM,UAAU,UAAU,CAAC,EAAqB;IAC9C,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAEnB,MAAM,UAAU,GAAG,EAAE;SAClB,OAAO,CACN,mDAAmD,CACpD;SACA,GAAG,CAAC,eAAe,CAAC,CAAA;IAEvB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,EAAE,CAAC,OAAO,CACR,uDAAuD,CACxD,CAAC,GAAG,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;IAC1C,CAAC;IAED,aAAa,CAAC,EAAE,CAAC,CAAA;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,EAAqB;IAC1C,kEAAkE;IAClE,MAAM,aAAa,GAAG,EAAE;SACrB,OAAO,CAAgC,mDAAmD,CAAC;SAC3F,GAAG,CAAC,yBAAyB,CAAC,CAAA;IAEjC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,EAAE;aAChB,OAAO,CACN,mEAAmE,CACpE;aACA,GAAG,EAAE,CAAA;QAER,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAC9B,qDAAqD,CACtD,CAAA;QAED,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAC9B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;gBAC3C,MAAM,IAAI,GACR,CAAC,CAAC,CAAC,eAAe,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,UAAU;oBACpD,CAAC,CAAC,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,WAAW,CAAA;gBACxD,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;YACnE,CAAC;YAED,kCAAkC;YAClC,EAAE,CAAC,OAAO,CAAC;;;;;;;OAOV,CAAC,CAAC,GAAG,EAAE,CAAA;YAER,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC,GAAG,CACrE,yBAAyB,EACzB,wCAAwC,CACzC,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,GAAG,EAAE,CAAA;IACP,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-scanner.d.ts","sourceRoot":"","sources":["../../src/parser/log-scanner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAa,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"log-scanner.d.ts","sourceRoot":"","sources":["../../src/parser/log-scanner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAa,MAAM,aAAa,CAAA;AAIrE,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACpC;AAED,iBAAe,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhE;AAED,iBAAe,gBAAgB,CAC7B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,EAAE,CAAC,CA4C5B;AAED,iBAAe,eAAe,CAC5B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAQ7B;AAED,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC,CAmDrB;AAED,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,CAAA;AAC7D,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -5,7 +5,6 @@ import { join } from 'node:path';
|
|
|
5
5
|
import { homedir } from 'node:os';
|
|
6
6
|
import { parseSession } from './session-parser.js';
|
|
7
7
|
import { estimateCost } from './token-estimator.js';
|
|
8
|
-
import { DEFAULT_PRICING } from '../types.js';
|
|
9
8
|
async function computeFileHash(filePath) {
|
|
10
9
|
return new Promise((resolve, reject) => {
|
|
11
10
|
const hash = createHash('sha256');
|
|
@@ -91,10 +90,7 @@ export async function scanClaudeDirectory(options = {}) {
|
|
|
91
90
|
}
|
|
92
91
|
const parsed = await parseSession(file.filePath);
|
|
93
92
|
// Apply cost estimation
|
|
94
|
-
|
|
95
|
-
const pricing = DEFAULT_PRICING[parsed.session.model];
|
|
96
|
-
parsed.session.totalCostUsd = estimateCost(parsed.session.totalTokensIn, parsed.session.totalTokensOut, pricing);
|
|
97
|
-
}
|
|
93
|
+
parsed.session.totalCostUsd = estimateCost(parsed.session.totalTokensIn, parsed.session.totalTokensOut, parsed.session.model);
|
|
98
94
|
newSessions++;
|
|
99
95
|
}
|
|
100
96
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-scanner.js","sourceRoot":"","sources":["../../src/parser/log-scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"log-scanner.js","sourceRoot":"","sources":["../../src/parser/log-scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-parser.d.ts","sourceRoot":"","sources":["../../src/parser/session-parser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"session-parser.d.ts","sourceRoot":"","sources":["../../src/parser/session-parser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAQ,MAAM,aAAa,CAAA;AAIvD,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAkI5E"}
|
|
@@ -2,21 +2,11 @@ import { createReadStream } from 'node:fs';
|
|
|
2
2
|
import { createInterface } from 'node:readline';
|
|
3
3
|
import { parseStep, extractModel, extractUsage } from './step-parser.js';
|
|
4
4
|
import { extractFileImpacts } from './file-impact.js';
|
|
5
|
-
function resolveModelName(raw) {
|
|
6
|
-
const lower = raw.toLowerCase();
|
|
7
|
-
if (lower.includes('opus'))
|
|
8
|
-
return 'opus';
|
|
9
|
-
if (lower.includes('sonnet'))
|
|
10
|
-
return 'sonnet';
|
|
11
|
-
if (lower.includes('haiku'))
|
|
12
|
-
return 'haiku';
|
|
13
|
-
return 'unknown';
|
|
14
|
-
}
|
|
15
5
|
export async function parseSession(filePath) {
|
|
16
6
|
const steps = [];
|
|
17
7
|
let totalTokensIn = 0;
|
|
18
8
|
let totalTokensOut = 0;
|
|
19
|
-
let
|
|
9
|
+
let rawModelId = null;
|
|
20
10
|
let projectPath = null;
|
|
21
11
|
let startedAt = null;
|
|
22
12
|
let endedAt = null;
|
|
@@ -52,8 +42,8 @@ export async function parseSession(filePath) {
|
|
|
52
42
|
}
|
|
53
43
|
// Extract model
|
|
54
44
|
const rawModel = extractModel(entry);
|
|
55
|
-
if (rawModel && !
|
|
56
|
-
|
|
45
|
+
if (rawModel && !rawModelId) {
|
|
46
|
+
rawModelId = rawModel; // Salva la stringa esatta dal log
|
|
57
47
|
}
|
|
58
48
|
// Extract usage from final assistant entries
|
|
59
49
|
const usage = extractUsage(entry);
|
|
@@ -120,7 +110,7 @@ export async function parseSession(filePath) {
|
|
|
120
110
|
toolCallCount,
|
|
121
111
|
errorCount,
|
|
122
112
|
retryCount: 0,
|
|
123
|
-
model,
|
|
113
|
+
model: rawModelId,
|
|
124
114
|
summary,
|
|
125
115
|
rawLogPath: filePath,
|
|
126
116
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-parser.js","sourceRoot":"","sources":["../../src/parser/session-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAErD,
|
|
1
|
+
{"version":3,"file":"session-parser.js","sourceRoot":"","sources":["../../src/parser/session-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import type { PricingModel } from '../types.js';
|
|
2
1
|
/**
|
|
3
2
|
* Heuristic token estimation from text.
|
|
4
3
|
* ~4 chars/token for natural language, ~3 chars/token for code.
|
|
5
4
|
*/
|
|
6
5
|
export declare function estimateTokens(text: string, type: 'natural' | 'code'): number;
|
|
7
6
|
/**
|
|
8
|
-
* Estimate cost in USD from token counts and
|
|
7
|
+
* Estimate cost in USD from token counts and model ID string.
|
|
9
8
|
*/
|
|
10
|
-
export declare function estimateCost(tokensIn: number, tokensOut: number,
|
|
9
|
+
export declare function estimateCost(tokensIn: number, tokensOut: number, modelId: string | null): number;
|
|
11
10
|
//# sourceMappingURL=token-estimator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-estimator.d.ts","sourceRoot":"","sources":["../../src/parser/token-estimator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"token-estimator.d.ts","sourceRoot":"","sources":["../../src/parser/token-estimator.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAI7E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,MAAM,CAKR"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getPricingForModel } from '../types.js';
|
|
1
2
|
/**
|
|
2
3
|
* Heuristic token estimation from text.
|
|
3
4
|
* ~4 chars/token for natural language, ~3 chars/token for code.
|
|
@@ -9,11 +10,12 @@ export function estimateTokens(text, type) {
|
|
|
9
10
|
return Math.ceil(text.length / charsPerToken);
|
|
10
11
|
}
|
|
11
12
|
/**
|
|
12
|
-
* Estimate cost in USD from token counts and
|
|
13
|
+
* Estimate cost in USD from token counts and model ID string.
|
|
13
14
|
*/
|
|
14
|
-
export function estimateCost(tokensIn, tokensOut,
|
|
15
|
+
export function estimateCost(tokensIn, tokensOut, modelId) {
|
|
16
|
+
const pricing = getPricingForModel(modelId);
|
|
15
17
|
const inputCost = (tokensIn / 1_000_000) * pricing.inputPer1M;
|
|
16
18
|
const outputCost = (tokensOut / 1_000_000) * pricing.outputPer1M;
|
|
17
|
-
return inputCost + outputCost;
|
|
19
|
+
return Math.round((inputCost + outputCost) * 1_000_000) / 1_000_000;
|
|
18
20
|
}
|
|
19
21
|
//# sourceMappingURL=token-estimator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-estimator.js","sourceRoot":"","sources":["../../src/parser/token-estimator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"token-estimator.js","sourceRoot":"","sources":["../../src/parser/token-estimator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEhD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,IAAwB;IACnE,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAA;IACnB,MAAM,aAAa,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,CAAA;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAgB,EAChB,SAAiB,EACjB,OAAsB;IAEtB,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC3C,MAAM,SAAS,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,UAAU,CAAA;IAC7D,MAAM,UAAU,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,WAAW,CAAA;IAChE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;AACrE,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export type StepType = 'user_prompt' | 'assistant_response' | 'tool_call' | 'tool_result' | 'error';
|
|
2
2
|
export type ToolSubtype = 'file_edit' | 'bash' | 'read_file' | 'search' | 'glob' | 'other';
|
|
3
3
|
export type FileAction = 'create' | 'edit' | 'delete' | 'read' | 'rename';
|
|
4
|
-
export type
|
|
4
|
+
export type ModelTier = 'opus' | 'sonnet' | 'haiku' | 'unknown';
|
|
5
|
+
export type ModelId = 'claude-opus-4-6-20260401' | 'claude-sonnet-4-6-20260401' | 'claude-opus-4-5-20260301' | 'claude-sonnet-4-5-20241022' | 'claude-haiku-4-5-20251001' | 'claude-opus-4-20250514' | 'claude-sonnet-4-20250514' | 'claude-opus-4-1-20250414' | 'claude-3-7-sonnet-20250219' | 'claude-3-opus-20240229' | 'claude-3-5-sonnet-20241022' | 'claude-3-5-sonnet-20240620' | 'claude-3-5-haiku-20241022' | 'claude-3-haiku-20240307' | string;
|
|
5
6
|
export interface Session {
|
|
6
7
|
id: string;
|
|
7
8
|
projectPath: string | null;
|
|
@@ -16,7 +17,7 @@ export interface Session {
|
|
|
16
17
|
toolCallCount: number;
|
|
17
18
|
errorCount: number;
|
|
18
19
|
retryCount: number;
|
|
19
|
-
model:
|
|
20
|
+
model: string | null;
|
|
20
21
|
summary: string | null;
|
|
21
22
|
rawLogPath: string;
|
|
22
23
|
}
|
|
@@ -82,9 +83,21 @@ export interface ScanError {
|
|
|
82
83
|
error: string;
|
|
83
84
|
}
|
|
84
85
|
export interface PricingModel {
|
|
85
|
-
|
|
86
|
+
id: ModelId;
|
|
87
|
+
tier: ModelTier;
|
|
88
|
+
label: string;
|
|
86
89
|
inputPer1M: number;
|
|
90
|
+
cacheWrite5mPer1M: number;
|
|
91
|
+
cacheWrite1hPer1M: number;
|
|
92
|
+
cacheHitPer1M: number;
|
|
87
93
|
outputPer1M: number;
|
|
88
94
|
}
|
|
89
|
-
export declare const
|
|
95
|
+
export declare const MODEL_PRICING: PricingModel[];
|
|
96
|
+
export declare const PRICING_BY_ID: Map<string, PricingModel>;
|
|
97
|
+
export declare const TIER_FALLBACK_PRICING: Record<ModelTier, Omit<PricingModel, 'id' | 'tier' | 'label'>>;
|
|
98
|
+
/**
|
|
99
|
+
* Trova il pricing per un model string dai log.
|
|
100
|
+
* Cerca prima match esatto, poi match parziale per tier, poi fallback.
|
|
101
|
+
*/
|
|
102
|
+
export declare function getPricingForModel(rawModelString: string | null): PricingModel;
|
|
90
103
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,oBAAoB,GAAG,WAAW,GAAG,aAAa,GAAG,OAAO,CAAA;AACnG,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;AAC1F,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -2,10 +2,69 @@
|
|
|
2
2
|
// ccview — Shared Types
|
|
3
3
|
// Core data model — allineato con lo schema SQLite in db/schema.ts
|
|
4
4
|
// ============================================================
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
// Pricing ufficiale Anthropic — fonte: https://platform.claude.com/docs/en/about-claude/pricing
|
|
6
|
+
// Ultimo aggiornamento: Aprile 2026
|
|
7
|
+
export const MODEL_PRICING = [
|
|
8
|
+
// ── Claude 4.6 ──
|
|
9
|
+
{ id: 'claude-opus-4-6-20260401', tier: 'opus', label: 'Opus 4.6', inputPer1M: 5, cacheWrite5mPer1M: 6.25, cacheWrite1hPer1M: 10, cacheHitPer1M: 0.50, outputPer1M: 25 },
|
|
10
|
+
{ id: 'claude-sonnet-4-6-20260401', tier: 'sonnet', label: 'Sonnet 4.6', inputPer1M: 3, cacheWrite5mPer1M: 3.75, cacheWrite1hPer1M: 6, cacheHitPer1M: 0.30, outputPer1M: 15 },
|
|
11
|
+
// ── Claude 4.5 ──
|
|
12
|
+
{ id: 'claude-opus-4-5-20260301', tier: 'opus', label: 'Opus 4.5', inputPer1M: 5, cacheWrite5mPer1M: 6.25, cacheWrite1hPer1M: 10, cacheHitPer1M: 0.50, outputPer1M: 25 },
|
|
13
|
+
{ id: 'claude-sonnet-4-5-20241022', tier: 'sonnet', label: 'Sonnet 4.5', inputPer1M: 3, cacheWrite5mPer1M: 3.75, cacheWrite1hPer1M: 6, cacheHitPer1M: 0.30, outputPer1M: 15 },
|
|
14
|
+
{ id: 'claude-haiku-4-5-20251001', tier: 'haiku', label: 'Haiku 4.5', inputPer1M: 1, cacheWrite5mPer1M: 1.25, cacheWrite1hPer1M: 2, cacheHitPer1M: 0.10, outputPer1M: 5 },
|
|
15
|
+
// ── Claude 4.x ──
|
|
16
|
+
{ id: 'claude-opus-4-20250514', tier: 'opus', label: 'Opus 4', inputPer1M: 15, cacheWrite5mPer1M: 18.75, cacheWrite1hPer1M: 30, cacheHitPer1M: 1.50, outputPer1M: 75 },
|
|
17
|
+
{ id: 'claude-sonnet-4-20250514', tier: 'sonnet', label: 'Sonnet 4', inputPer1M: 3, cacheWrite5mPer1M: 3.75, cacheWrite1hPer1M: 6, cacheHitPer1M: 0.30, outputPer1M: 15 },
|
|
18
|
+
{ id: 'claude-opus-4-1-20250414', tier: 'opus', label: 'Opus 4.1', inputPer1M: 15, cacheWrite5mPer1M: 18.75, cacheWrite1hPer1M: 30, cacheHitPer1M: 1.50, outputPer1M: 75 },
|
|
19
|
+
// ── Claude 3.x legacy ──
|
|
20
|
+
{ id: 'claude-3-7-sonnet-20250219', tier: 'sonnet', label: 'Sonnet 3.7', inputPer1M: 3, cacheWrite5mPer1M: 3.75, cacheWrite1hPer1M: 6, cacheHitPer1M: 0.30, outputPer1M: 15 },
|
|
21
|
+
{ id: 'claude-3-opus-20240229', tier: 'opus', label: 'Opus 3', inputPer1M: 15, cacheWrite5mPer1M: 18.75, cacheWrite1hPer1M: 30, cacheHitPer1M: 1.50, outputPer1M: 75 },
|
|
22
|
+
{ id: 'claude-3-5-sonnet-20241022', tier: 'sonnet', label: 'Sonnet 3.5 v2', inputPer1M: 3, cacheWrite5mPer1M: 3.75, cacheWrite1hPer1M: 6, cacheHitPer1M: 0.30, outputPer1M: 15 },
|
|
23
|
+
{ id: 'claude-3-5-sonnet-20240620', tier: 'sonnet', label: 'Sonnet 3.5', inputPer1M: 3, cacheWrite5mPer1M: 3.75, cacheWrite1hPer1M: 6, cacheHitPer1M: 0.30, outputPer1M: 15 },
|
|
24
|
+
{ id: 'claude-3-5-haiku-20241022', tier: 'haiku', label: 'Haiku 3.5', inputPer1M: 0.80, cacheWrite5mPer1M: 1, cacheWrite1hPer1M: 1.6, cacheHitPer1M: 0.08, outputPer1M: 4 },
|
|
25
|
+
{ id: 'claude-3-haiku-20240307', tier: 'haiku', label: 'Haiku 3', inputPer1M: 0.25, cacheWrite5mPer1M: 0.30, cacheWrite1hPer1M: 0.50, cacheHitPer1M: 0.03, outputPer1M: 1.25 },
|
|
26
|
+
];
|
|
27
|
+
// Lookup veloce per model ID esatto
|
|
28
|
+
export const PRICING_BY_ID = new Map(MODEL_PRICING.map(p => [p.id, p]));
|
|
29
|
+
// Fallback per tier quando il model ID esatto non è trovato
|
|
30
|
+
export const TIER_FALLBACK_PRICING = {
|
|
31
|
+
opus: { inputPer1M: 5, cacheWrite5mPer1M: 6.25, cacheWrite1hPer1M: 10, cacheHitPer1M: 0.50, outputPer1M: 25 },
|
|
32
|
+
sonnet: { inputPer1M: 3, cacheWrite5mPer1M: 3.75, cacheWrite1hPer1M: 6, cacheHitPer1M: 0.30, outputPer1M: 15 },
|
|
33
|
+
haiku: { inputPer1M: 1, cacheWrite5mPer1M: 1.25, cacheWrite1hPer1M: 2, cacheHitPer1M: 0.10, outputPer1M: 5 },
|
|
34
|
+
unknown: { inputPer1M: 3, cacheWrite5mPer1M: 3.75, cacheWrite1hPer1M: 6, cacheHitPer1M: 0.30, outputPer1M: 15 },
|
|
10
35
|
};
|
|
36
|
+
/**
|
|
37
|
+
* Trova il pricing per un model string dai log.
|
|
38
|
+
* Cerca prima match esatto, poi match parziale per tier, poi fallback.
|
|
39
|
+
*/
|
|
40
|
+
export function getPricingForModel(rawModelString) {
|
|
41
|
+
if (!rawModelString) {
|
|
42
|
+
return { id: 'unknown', tier: 'unknown', label: 'Unknown', ...TIER_FALLBACK_PRICING.unknown };
|
|
43
|
+
}
|
|
44
|
+
// 1. Match esatto
|
|
45
|
+
const exact = PRICING_BY_ID.get(rawModelString);
|
|
46
|
+
if (exact)
|
|
47
|
+
return exact;
|
|
48
|
+
// 2. Match parziale — il log potrebbe avere alias o versioni future
|
|
49
|
+
const lower = rawModelString.toLowerCase();
|
|
50
|
+
const tier = resolveModelTier(lower);
|
|
51
|
+
// 3. Cerca il modello più recente del tier come best guess
|
|
52
|
+
const tierMatch = MODEL_PRICING.find(p => p.tier === tier);
|
|
53
|
+
if (tierMatch) {
|
|
54
|
+
return { ...tierMatch, id: rawModelString, label: `${tierMatch.label} (matched)` };
|
|
55
|
+
}
|
|
56
|
+
// 4. Fallback
|
|
57
|
+
const fb = TIER_FALLBACK_PRICING[tier];
|
|
58
|
+
return { id: rawModelString, tier, label: rawModelString, ...fb };
|
|
59
|
+
}
|
|
60
|
+
/** Risolvi tier da una model string lowercase */
|
|
61
|
+
function resolveModelTier(lower) {
|
|
62
|
+
if (lower.includes('opus'))
|
|
63
|
+
return 'opus';
|
|
64
|
+
if (lower.includes('sonnet'))
|
|
65
|
+
return 'sonnet';
|
|
66
|
+
if (lower.includes('haiku'))
|
|
67
|
+
return 'haiku';
|
|
68
|
+
return 'unknown';
|
|
69
|
+
}
|
|
11
70
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,wBAAwB;AACxB,mEAAmE;AACnE,+DAA+D;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ccview/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Core parser and database for ccview — Claude Code session analytics",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -15,14 +15,6 @@
|
|
|
15
15
|
"files": [
|
|
16
16
|
"dist"
|
|
17
17
|
],
|
|
18
|
-
"scripts": {
|
|
19
|
-
"build": "tsc",
|
|
20
|
-
"build:watch": "tsc --watch",
|
|
21
|
-
"test": "vitest run",
|
|
22
|
-
"test:watch": "vitest",
|
|
23
|
-
"typecheck": "tsc --noEmit",
|
|
24
|
-
"clean": "rm -rf dist"
|
|
25
|
-
},
|
|
26
18
|
"dependencies": {
|
|
27
19
|
"better-sqlite3": "^12.8.0"
|
|
28
20
|
},
|
|
@@ -34,5 +26,13 @@
|
|
|
34
26
|
},
|
|
35
27
|
"engines": {
|
|
36
28
|
"node": ">=18.0.0"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"build": "tsc",
|
|
32
|
+
"build:watch": "tsc --watch",
|
|
33
|
+
"test": "vitest run",
|
|
34
|
+
"test:watch": "vitest",
|
|
35
|
+
"typecheck": "tsc --noEmit",
|
|
36
|
+
"clean": "rm -rf dist"
|
|
37
37
|
}
|
|
38
|
-
}
|
|
38
|
+
}
|