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.
@@ -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-04"
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-04 (see PRICING_SNAPSHOT_DATE)
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-04 (see PRICING_SNAPSHOT_DATE)
269
- # - Models listed are those observed in ~/.codex/sessions/ at implementation
270
- # time plus common Codex/GPT-5 variants. Models absent from this table fall
271
- # back to `gpt-5` pricing with isFallback=true (matches upstream's
272
- # LEGACY_FALLBACK_MODEL behavior); a one-shot stderr warning is emitted per
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: OpenAI published pricing (announced 2026-04-23). Input
356
- # $5.00/M, cached $0.50/M, output $30.00/M. No above-272k tier
357
- # announced. Add tiered fields here when LiteLLM publishes them.
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