cctally 1.22.0 → 1.22.2
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/CHANGELOG.md +11 -0
- package/bin/_cctally_parser.py +2541 -0
- package/bin/_cctally_project.py +714 -0
- package/bin/_cctally_share.py +1707 -0
- package/bin/_lib_pricing.py +184 -11
- package/bin/cctally +63 -4868
- package/package.json +4 -1
package/bin/_lib_pricing.py
CHANGED
|
@@ -49,7 +49,7 @@ def _chip_for_model(name: str) -> str:
|
|
|
49
49
|
# Date the embedded pricing snapshots below were last verified against
|
|
50
50
|
# vendor sources. Bump whenever CLAUDE_MODEL_PRICING / CODEX_MODEL_PRICING
|
|
51
51
|
# is synced. Read by `pricing-check` + the release pre-flight staleness nudge.
|
|
52
|
-
PRICING_SNAPSHOT_DATE = "2026-05-
|
|
52
|
+
PRICING_SNAPSHOT_DATE = "2026-05-30"
|
|
53
53
|
PRICING_STALENESS_DAYS = 60 # release pre-flight WARNs past this age
|
|
54
54
|
|
|
55
55
|
# Canonical machine-readable pricing source (Claude values + Codex values).
|
|
@@ -67,7 +67,7 @@ PRICING_DRIFT_ALLOWLIST: list[dict] = []
|
|
|
67
67
|
|
|
68
68
|
# Anthropic API pricing snapshot:
|
|
69
69
|
# - Source: https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json
|
|
70
|
-
# - Captured: 2026-05-
|
|
70
|
+
# - Captured: 2026-05-30 (see PRICING_SNAPSHOT_DATE)
|
|
71
71
|
# - Verified by maintainer against docs.claude.com/en/docs/about-claude/pricing;
|
|
72
72
|
# update in PRs touching this table.
|
|
73
73
|
CLAUDE_MODEL_PRICING: dict[str, dict[str, Any]] = {
|
|
@@ -265,12 +265,12 @@ _unknown_model_warnings: set[str] = set()
|
|
|
265
265
|
#
|
|
266
266
|
# Codex (OpenAI) API pricing snapshot:
|
|
267
267
|
# - Source: https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json
|
|
268
|
-
# - Captured: 2026-05-
|
|
269
|
-
# -
|
|
270
|
-
#
|
|
271
|
-
# back to `gpt-5`
|
|
272
|
-
#
|
|
273
|
-
# unknown model name.
|
|
268
|
+
# - Captured: 2026-05-30 (see PRICING_SNAPSHOT_DATE)
|
|
269
|
+
# - As of the 2026-05-30 sync (issue #123) this carries every openai-provider
|
|
270
|
+
# gpt-5* model the LiteLLM snapshot lists, so `pricing-check`'s scope finds
|
|
271
|
+
# nothing missing. Models absent from this table still fall back to `gpt-5`
|
|
272
|
+
# pricing with isFallback=true (matches upstream's LEGACY_FALLBACK_MODEL
|
|
273
|
+
# behavior); a one-shot stderr warning is emitted per unknown model name.
|
|
274
274
|
#
|
|
275
275
|
# Billing rules:
|
|
276
276
|
# - reasoning_output_tokens is billed at the *output* rate (matches
|
|
@@ -352,12 +352,185 @@ CODEX_MODEL_PRICING: dict[str, dict[str, Any]] = {
|
|
|
352
352
|
"output_cost_per_token": 4.5e-06,
|
|
353
353
|
},
|
|
354
354
|
"gpt-5.5": {
|
|
355
|
-
# Source:
|
|
356
|
-
# $5.00/M, cached $0.50/M, output $30.00/M.
|
|
357
|
-
#
|
|
355
|
+
# Source: LiteLLM model_prices_and_context_window.json (announced
|
|
356
|
+
# 2026-04-23). Input $5.00/M, cached $0.50/M, output $30.00/M. The
|
|
357
|
+
# above-272k tier ($10.00/M / $1.00/M / $45.00/M) was published in the
|
|
358
|
+
# 2026-05-30 sync (issue #123) and matches the dated alias below.
|
|
358
359
|
"input_cost_per_token": 5e-06,
|
|
359
360
|
"cache_read_input_token_cost": 5e-07,
|
|
360
361
|
"output_cost_per_token": 3e-05,
|
|
362
|
+
"input_cost_per_token_above_272k_tokens": 1e-05,
|
|
363
|
+
"cache_read_input_token_cost_above_272k_tokens": 1e-06,
|
|
364
|
+
"output_cost_per_token_above_272k_tokens": 4.5e-05,
|
|
365
|
+
},
|
|
366
|
+
# ── Issue #123: full gpt-5.x LiteLLM sync (2026-05-30 snapshot) ──
|
|
367
|
+
# Exact model_prices_and_context_window.json values for every
|
|
368
|
+
# openai-provider gpt-5* model `pricing-check`'s scope flags but the
|
|
369
|
+
# curated set above didn't carry (bare/dated/-chat/-pro/-mini/-nano/
|
|
370
|
+
# -search variants). The four *-pro models omit cache_read upstream; we
|
|
371
|
+
# set it to input_cost_per_token / 4 (the documented LiteLLM cache
|
|
372
|
+
# fallback) so the table stays well-formed and cached-input turns price.
|
|
373
|
+
"gpt-5-2025-08-07": {
|
|
374
|
+
"input_cost_per_token": 1.25e-06,
|
|
375
|
+
"cache_read_input_token_cost": 1.25e-07,
|
|
376
|
+
"output_cost_per_token": 1e-05,
|
|
377
|
+
},
|
|
378
|
+
"gpt-5-chat": {
|
|
379
|
+
"input_cost_per_token": 1.25e-06,
|
|
380
|
+
"cache_read_input_token_cost": 1.25e-07,
|
|
381
|
+
"output_cost_per_token": 1e-05,
|
|
382
|
+
},
|
|
383
|
+
"gpt-5-chat-latest": {
|
|
384
|
+
"input_cost_per_token": 1.25e-06,
|
|
385
|
+
"cache_read_input_token_cost": 1.25e-07,
|
|
386
|
+
"output_cost_per_token": 1e-05,
|
|
387
|
+
},
|
|
388
|
+
"gpt-5-mini": {
|
|
389
|
+
"input_cost_per_token": 2.5e-07,
|
|
390
|
+
"cache_read_input_token_cost": 2.5e-08,
|
|
391
|
+
"output_cost_per_token": 2e-06,
|
|
392
|
+
},
|
|
393
|
+
"gpt-5-mini-2025-08-07": {
|
|
394
|
+
"input_cost_per_token": 2.5e-07,
|
|
395
|
+
"cache_read_input_token_cost": 2.5e-08,
|
|
396
|
+
"output_cost_per_token": 2e-06,
|
|
397
|
+
},
|
|
398
|
+
"gpt-5-nano": {
|
|
399
|
+
"input_cost_per_token": 5e-08,
|
|
400
|
+
"cache_read_input_token_cost": 5e-09,
|
|
401
|
+
"output_cost_per_token": 4e-07,
|
|
402
|
+
},
|
|
403
|
+
"gpt-5-nano-2025-08-07": {
|
|
404
|
+
"input_cost_per_token": 5e-08,
|
|
405
|
+
"cache_read_input_token_cost": 5e-09,
|
|
406
|
+
"output_cost_per_token": 4e-07,
|
|
407
|
+
},
|
|
408
|
+
"gpt-5-pro": {
|
|
409
|
+
# *-pro: LiteLLM omits cache_read; input/4 documented fallback.
|
|
410
|
+
"input_cost_per_token": 1.5e-05,
|
|
411
|
+
"cache_read_input_token_cost": 3.75e-06,
|
|
412
|
+
"output_cost_per_token": 0.00012,
|
|
413
|
+
},
|
|
414
|
+
"gpt-5-pro-2025-10-06": {
|
|
415
|
+
# *-pro: LiteLLM omits cache_read; input/4 documented fallback.
|
|
416
|
+
"input_cost_per_token": 1.5e-05,
|
|
417
|
+
"cache_read_input_token_cost": 3.75e-06,
|
|
418
|
+
"output_cost_per_token": 0.00012,
|
|
419
|
+
},
|
|
420
|
+
"gpt-5-search-api": {
|
|
421
|
+
"input_cost_per_token": 1.25e-06,
|
|
422
|
+
"cache_read_input_token_cost": 1.25e-07,
|
|
423
|
+
"output_cost_per_token": 1e-05,
|
|
424
|
+
},
|
|
425
|
+
"gpt-5-search-api-2025-10-14": {
|
|
426
|
+
"input_cost_per_token": 1.25e-06,
|
|
427
|
+
"cache_read_input_token_cost": 1.25e-07,
|
|
428
|
+
"output_cost_per_token": 1e-05,
|
|
429
|
+
},
|
|
430
|
+
"gpt-5.1": {
|
|
431
|
+
"input_cost_per_token": 1.25e-06,
|
|
432
|
+
"cache_read_input_token_cost": 1.25e-07,
|
|
433
|
+
"output_cost_per_token": 1e-05,
|
|
434
|
+
},
|
|
435
|
+
"gpt-5.1-2025-11-13": {
|
|
436
|
+
"input_cost_per_token": 1.25e-06,
|
|
437
|
+
"cache_read_input_token_cost": 1.25e-07,
|
|
438
|
+
"output_cost_per_token": 1e-05,
|
|
439
|
+
},
|
|
440
|
+
"gpt-5.1-chat-latest": {
|
|
441
|
+
"input_cost_per_token": 1.25e-06,
|
|
442
|
+
"cache_read_input_token_cost": 1.25e-07,
|
|
443
|
+
"output_cost_per_token": 1e-05,
|
|
444
|
+
},
|
|
445
|
+
"gpt-5.2-2025-12-11": {
|
|
446
|
+
"input_cost_per_token": 1.75e-06,
|
|
447
|
+
"cache_read_input_token_cost": 1.75e-07,
|
|
448
|
+
"output_cost_per_token": 1.4e-05,
|
|
449
|
+
},
|
|
450
|
+
"gpt-5.2-chat-latest": {
|
|
451
|
+
"input_cost_per_token": 1.75e-06,
|
|
452
|
+
"cache_read_input_token_cost": 1.75e-07,
|
|
453
|
+
"output_cost_per_token": 1.4e-05,
|
|
454
|
+
},
|
|
455
|
+
"gpt-5.2-pro": {
|
|
456
|
+
# *-pro: LiteLLM omits cache_read; input/4 documented fallback.
|
|
457
|
+
"input_cost_per_token": 2.1e-05,
|
|
458
|
+
"cache_read_input_token_cost": 5.25e-06,
|
|
459
|
+
"output_cost_per_token": 0.000168,
|
|
460
|
+
},
|
|
461
|
+
"gpt-5.2-pro-2025-12-11": {
|
|
462
|
+
# *-pro: LiteLLM omits cache_read; input/4 documented fallback.
|
|
463
|
+
"input_cost_per_token": 2.1e-05,
|
|
464
|
+
"cache_read_input_token_cost": 5.25e-06,
|
|
465
|
+
"output_cost_per_token": 0.000168,
|
|
466
|
+
},
|
|
467
|
+
"gpt-5.3-chat-latest": {
|
|
468
|
+
"input_cost_per_token": 1.75e-06,
|
|
469
|
+
"cache_read_input_token_cost": 1.75e-07,
|
|
470
|
+
"output_cost_per_token": 1.4e-05,
|
|
471
|
+
},
|
|
472
|
+
"gpt-5.4-2026-03-05": {
|
|
473
|
+
"input_cost_per_token": 2.5e-06,
|
|
474
|
+
"cache_read_input_token_cost": 2.5e-07,
|
|
475
|
+
"output_cost_per_token": 1.5e-05,
|
|
476
|
+
"input_cost_per_token_above_272k_tokens": 5e-06,
|
|
477
|
+
"cache_read_input_token_cost_above_272k_tokens": 5e-07,
|
|
478
|
+
"output_cost_per_token_above_272k_tokens": 2.25e-05,
|
|
479
|
+
},
|
|
480
|
+
"gpt-5.4-mini-2026-03-17": {
|
|
481
|
+
"input_cost_per_token": 7.5e-07,
|
|
482
|
+
"cache_read_input_token_cost": 7.5e-08,
|
|
483
|
+
"output_cost_per_token": 4.5e-06,
|
|
484
|
+
},
|
|
485
|
+
"gpt-5.4-nano": {
|
|
486
|
+
"input_cost_per_token": 2e-07,
|
|
487
|
+
"cache_read_input_token_cost": 2e-08,
|
|
488
|
+
"output_cost_per_token": 1.25e-06,
|
|
489
|
+
},
|
|
490
|
+
"gpt-5.4-nano-2026-03-17": {
|
|
491
|
+
"input_cost_per_token": 2e-07,
|
|
492
|
+
"cache_read_input_token_cost": 2e-08,
|
|
493
|
+
"output_cost_per_token": 1.25e-06,
|
|
494
|
+
},
|
|
495
|
+
"gpt-5.4-pro": {
|
|
496
|
+
"input_cost_per_token": 3e-05,
|
|
497
|
+
"cache_read_input_token_cost": 3e-06,
|
|
498
|
+
"output_cost_per_token": 0.00018,
|
|
499
|
+
"input_cost_per_token_above_272k_tokens": 6e-05,
|
|
500
|
+
"cache_read_input_token_cost_above_272k_tokens": 6e-06,
|
|
501
|
+
"output_cost_per_token_above_272k_tokens": 0.00027,
|
|
502
|
+
},
|
|
503
|
+
"gpt-5.4-pro-2026-03-05": {
|
|
504
|
+
"input_cost_per_token": 3e-05,
|
|
505
|
+
"cache_read_input_token_cost": 3e-06,
|
|
506
|
+
"output_cost_per_token": 0.00018,
|
|
507
|
+
"input_cost_per_token_above_272k_tokens": 6e-05,
|
|
508
|
+
"cache_read_input_token_cost_above_272k_tokens": 6e-06,
|
|
509
|
+
"output_cost_per_token_above_272k_tokens": 0.00027,
|
|
510
|
+
},
|
|
511
|
+
"gpt-5.5-2026-04-23": {
|
|
512
|
+
"input_cost_per_token": 5e-06,
|
|
513
|
+
"cache_read_input_token_cost": 5e-07,
|
|
514
|
+
"output_cost_per_token": 3e-05,
|
|
515
|
+
"input_cost_per_token_above_272k_tokens": 1e-05,
|
|
516
|
+
"cache_read_input_token_cost_above_272k_tokens": 1e-06,
|
|
517
|
+
"output_cost_per_token_above_272k_tokens": 4.5e-05,
|
|
518
|
+
},
|
|
519
|
+
"gpt-5.5-pro": {
|
|
520
|
+
"input_cost_per_token": 3e-05,
|
|
521
|
+
"cache_read_input_token_cost": 3e-06,
|
|
522
|
+
"output_cost_per_token": 0.00018,
|
|
523
|
+
"input_cost_per_token_above_272k_tokens": 6e-05,
|
|
524
|
+
"cache_read_input_token_cost_above_272k_tokens": 6e-06,
|
|
525
|
+
"output_cost_per_token_above_272k_tokens": 0.00027,
|
|
526
|
+
},
|
|
527
|
+
"gpt-5.5-pro-2026-04-23": {
|
|
528
|
+
"input_cost_per_token": 3e-05,
|
|
529
|
+
"cache_read_input_token_cost": 3e-06,
|
|
530
|
+
"output_cost_per_token": 0.00018,
|
|
531
|
+
"input_cost_per_token_above_272k_tokens": 6e-05,
|
|
532
|
+
"cache_read_input_token_cost_above_272k_tokens": 6e-06,
|
|
533
|
+
"output_cost_per_token_above_272k_tokens": 0.00027,
|
|
361
534
|
},
|
|
362
535
|
}
|
|
363
536
|
|