@faithfulalabi/agent-lens 0.15.1 → 0.15.3

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.
@@ -178,6 +178,7 @@ function insertEvents(db, events, spills) {
178
178
  tokens_out: event.tokens_out,
179
179
  cache_read: event.tokens_cache_read,
180
180
  cache_write: event.tokens_cache_write,
181
+ cache_write_1h: event.tokens_cache_write_1h,
181
182
  });
182
183
  insert.run(event.id, event.session_id, event.turn_id, event.seq, event.kind, event.ts, event.request_id ?? null, event.block_index, event.name ?? null, event.status ?? null, event.duration_ms ?? null, event.duration_source ?? null, event.input ?? null, event.input_bytes ?? null, event.input_storage ?? null, event.wire_input ?? null, event.wire_input_bytes ?? null, event.wire_input_storage ?? null, event.text ?? null, event.text_bytes ?? null, output.output_storage, output.spill_path, output.spill_bytes, event.src_offset, event.src_len, event.result_offset ?? null, event.result_len ?? null, event.result_block ?? null, event.image_count, event.model ?? null, event.tokens_in ?? null, event.tokens_out ?? null, event.tokens_cache_read ?? null, event.tokens_cache_write ?? null, est_cost, event.child_session_id ?? null, event.agent_type ?? null, event.agent_status ?? null, event.raw_type, event.raw_subtype ?? null, event.attrs);
183
184
  }
@@ -226,6 +226,7 @@ export function runPipeline(lines, ctx) {
226
226
  tokens_out: tokens?.output_tokens,
227
227
  tokens_cache_read: tokens?.cache_read_input_tokens,
228
228
  tokens_cache_write: tokens?.cache_creation_input_tokens,
229
+ tokens_cache_write_1h: tokens?.ephemeral_1h_input_tokens,
229
230
  raw_type: rawTypeOf(line),
230
231
  raw_subtype: rawSubtypeOf(line),
231
232
  attrs,
@@ -28,14 +28,22 @@ export const PRICING_TABLE = Object.freeze({
28
28
  'claude-opus-4-5': { input: 5, output: 25, cache_read: 0.5, cache_write: 6.25 },
29
29
  'claude-opus-4-1': { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
30
30
  'claude-opus-4': { input: 15, output: 75, cache_read: 1.5, cache_write: 18.75 },
31
+ 'claude-sonnet-5-5': { input: 2, output: 10, cache_read: 0.1, cache_write: 2.5 },
31
32
  'claude-sonnet-5': { input: 2, output: 10, cache_read: 0.2, cache_write: 2.5 },
32
33
  'claude-sonnet-4-6': { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
33
34
  'claude-sonnet-4-5': { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
34
35
  'claude-sonnet-4': { input: 3, output: 15, cache_read: 0.3, cache_write: 3.75 },
36
+ 'claude-haiku-5-5': {
37
+ input: 0.1,
38
+ output: 0.5,
39
+ cache_read: 0.01,
40
+ cache_write: 0.125,
41
+ over_100k: { input: 0.5, output: 2.5, cache_read: 0.05, cache_write: 0.625 },
42
+ },
35
43
  'claude-haiku-4-5': { input: 1, output: 5, cache_read: 0.1, cache_write: 1.25 },
36
44
  'claude-3-5-haiku': { input: 0.8, output: 4, cache_read: 0.08, cache_write: 1 },
37
45
  });
38
- export const PRICING_TABLE_DATE = '2026-09-22';
46
+ export const PRICING_TABLE_DATE = '2026-10-29';
39
47
  export const PRICING_VERSION = `${PRICING_TABLE_DATE}+${createHash('sha256')
40
48
  .update(canonicalJson(PRICING_TABLE), 'utf8')
41
49
  .digest('hex')
@@ -57,10 +65,14 @@ export function estimateCost(model, usage) {
57
65
  const key = normalizeModelKey(model);
58
66
  if (key === undefined)
59
67
  return null;
60
- const price = PRICING_TABLE[key];
68
+ const row = PRICING_TABLE[key];
69
+ const prompt = (usage.tokens_in ?? 0) + (usage.cache_read ?? 0) + (usage.cache_write ?? 0);
70
+ const price = row.over_100k && prompt > 100_000 ? row.over_100k : row;
71
+ const oneHour = usage.cache_write_1h ?? 0;
61
72
  const millionths = (usage.tokens_in ?? 0) * price.input +
62
73
  (usage.tokens_out ?? 0) * price.output +
63
74
  (usage.cache_read ?? 0) * price.cache_read +
64
- (usage.cache_write ?? 0) * price.cache_write;
75
+ ((usage.cache_write ?? 0) - oneHour) * price.cache_write +
76
+ oneHour * 2 * price.input;
65
77
  return millionths / 1_000_000;
66
78
  }
@@ -9,6 +9,7 @@ const ZERO = {
9
9
  output_tokens: 0,
10
10
  cache_creation_input_tokens: 0,
11
11
  cache_read_input_tokens: 0,
12
+ ephemeral_1h_input_tokens: 0,
12
13
  };
13
14
  function usageOf(line) {
14
15
  return obj(obj(obj(line, undefined)?.message, undefined)?.usage, undefined);
@@ -32,6 +33,13 @@ export function foldRequestGroup(lines) {
32
33
  folded[field] = value;
33
34
  taken.add(field);
34
35
  }
36
+ if (!taken.has('ephemeral_1h_input_tokens')) {
37
+ const oneHour = num(obj(usage['cache_creation'], undefined)?.['ephemeral_1h_input_tokens'], undefined);
38
+ if (oneHour !== undefined) {
39
+ folded.ephemeral_1h_input_tokens = oneHour;
40
+ taken.add('ephemeral_1h_input_tokens');
41
+ }
42
+ }
35
43
  const output = num(usage['output_tokens'], undefined);
36
44
  if (output !== undefined)
37
45
  folded.output_tokens = output;
@@ -1 +1 @@
1
- export const PROJECTOR_VERSION = 21;
1
+ export const PROJECTOR_VERSION = 23;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faithfulalabi/agent-lens",
3
- "version": "0.15.1",
3
+ "version": "0.15.3",
4
4
  "description": "Local-first agentic tracing platform: inspect everything your agent did in a session.",
5
5
  "type": "module",
6
6
  "license": "MIT",