diff --git a/_blocks/registries/models.toml b/_blocks/registries/models.toml index 8be737d..3b7ae5b 100644 --- a/_blocks/registries/models.toml +++ b/_blocks/registries/models.toml @@ -15,6 +15,8 @@ [[model]] provider_ref = "anthropic" +# TODO: pin to "claude-haiku-4-5-20251001" once router/pricing accept slug as +# the lookup key (currently hardcoded by id in pricing.rs/escalate.rs tests). id = "claude-haiku-4-5" slug = "haiku" display_name = "Claude Haiku 4.5" @@ -22,6 +24,7 @@ context_window = 200000 cost_input_per_mtok_micro = 100_000_000 # $1.00 cost_output_per_mtok_micro = 500_000_000 # $5.00 cache_write_5m_per_mtok_micro = 125_000_000 +cache_write_1h_per_mtok_micro = 200_000_000 cache_read_per_mtok_micro = 10_000_000 verified_at = "2026-04-30" deprecated_at = "" @@ -36,6 +39,7 @@ context_window = 1000000 cost_input_per_mtok_micro = 300_000_000 # $3.00 cost_output_per_mtok_micro = 1_500_000_000 # $15.00 cache_write_5m_per_mtok_micro = 375_000_000 +cache_write_1h_per_mtok_micro = 600_000_000 cache_read_per_mtok_micro = 30_000_000 verified_at = "2026-04-30" deprecated_at = "" @@ -50,6 +54,7 @@ context_window = 1000000 cost_input_per_mtok_micro = 500_000_000 # $5.00 cost_output_per_mtok_micro = 2_500_000_000 # $25.00 cache_write_5m_per_mtok_micro = 625_000_000 +cache_write_1h_per_mtok_micro = 1_000_000_000 cache_read_per_mtok_micro = 50_000_000 verified_at = "2026-04-30" deprecated_at = "" @@ -66,6 +71,7 @@ context_window = 400000 cost_input_per_mtok_micro = 200_000_000 # $2.00 (placeholder, verify on use) cost_output_per_mtok_micro = 800_000_000 # $8.00 cache_write_5m_per_mtok_micro = 0 +cache_write_1h_per_mtok_micro = 0 cache_read_per_mtok_micro = 0 verified_at = "" deprecated_at = "" @@ -80,6 +86,7 @@ context_window = 200000 cost_input_per_mtok_micro = 0 # subscription, not per-token cost_output_per_mtok_micro = 0 cache_write_5m_per_mtok_micro = 0 +cache_write_1h_per_mtok_micro = 0 cache_read_per_mtok_micro = 0 verified_at = "2026-05-10" deprecated_at = "" @@ -96,6 +103,7 @@ context_window = 256000 cost_input_per_mtok_micro = 300_000_000 # [UNVERIFIED] cost_output_per_mtok_micro = 1_500_000_000 cache_write_5m_per_mtok_micro = 0 +cache_write_1h_per_mtok_micro = 0 cache_read_per_mtok_micro = 0 verified_at = "" deprecated_at = "" @@ -112,6 +120,7 @@ context_window = 64000 cost_input_per_mtok_micro = 55_000_000 # $0.55 [UNVERIFIED — pricing fluctuates] cost_output_per_mtok_micro = 219_000_000 # $2.19 cache_write_5m_per_mtok_micro = 0 +cache_write_1h_per_mtok_micro = 0 cache_read_per_mtok_micro = 14_000_000 # $0.14 cache hit verified_at = "" deprecated_at = "" @@ -126,6 +135,7 @@ context_window = 64000 cost_input_per_mtok_micro = 27_000_000 # $0.27 [UNVERIFIED] cost_output_per_mtok_micro = 110_000_000 # $1.10 cache_write_5m_per_mtok_micro = 0 +cache_write_1h_per_mtok_micro = 0 cache_read_per_mtok_micro = 7_000_000 verified_at = "" deprecated_at = "" @@ -142,6 +152,7 @@ context_window = 2000000 cost_input_per_mtok_micro = 125_000_000 # $1.25 [UNVERIFIED] cost_output_per_mtok_micro = 1_000_000_000 # $10.00 cache_write_5m_per_mtok_micro = 0 +cache_write_1h_per_mtok_micro = 0 cache_read_per_mtok_micro = 0 verified_at = "" deprecated_at = "" @@ -158,6 +169,7 @@ context_window = 128000 cost_input_per_mtok_micro = 0 cost_output_per_mtok_micro = 0 cache_write_5m_per_mtok_micro = 0 +cache_write_1h_per_mtok_micro = 0 cache_read_per_mtok_micro = 0 verified_at = "2026-05-13" deprecated_at = "" @@ -172,6 +184,7 @@ context_window = 32000 cost_input_per_mtok_micro = 0 cost_output_per_mtok_micro = 0 cache_write_5m_per_mtok_micro = 0 +cache_write_1h_per_mtok_micro = 0 cache_read_per_mtok_micro = 0 verified_at = "2026-05-13" deprecated_at = "" diff --git a/_primitives/_rust/kei-model-router/src/main.rs b/_primitives/_rust/kei-model-router/src/main.rs index 78ee7ef..88c337e 100644 --- a/_primitives/_rust/kei-model-router/src/main.rs +++ b/_primitives/_rust/kei-model-router/src/main.rs @@ -179,8 +179,12 @@ fn open_ledger() -> Option { format!("{home}/.claude/agents/ledger.sqlite") }; let conn = Connection::open(&path).ok()?; - conn.pragma_update(None, "journal_mode", "WAL").ok(); - conn.busy_timeout(std::time::Duration::from_secs(5)).ok(); + if let Err(e) = conn.pragma_update(None, "journal_mode", "WAL") { + eprintln!("[kei-model-router] WAL pragma failed (continuing without WAL): {e}"); + } + if let Err(e) = conn.busy_timeout(std::time::Duration::from_secs(5)) { + eprintln!("[kei-model-router] busy_timeout failed (concurrent writes may block): {e}"); + } Some(conn) } diff --git a/docs/DNA-INDEX.md b/docs/DNA-INDEX.md index 5015a11..9a18545 100644 --- a/docs/DNA-INDEX.md +++ b/docs/DNA-INDEX.md @@ -1,6 +1,6 @@ # KeiSeiKit DNA Encyclopedia -> Auto-generated from kei-registry. Last regenerated: 2026-05-13T15:51:54Z. +> Auto-generated from kei-registry. Last regenerated: 2026-05-13T16:01:55Z. > Total blocks: 679. Per-type breakdown: | Type | Count |