chore(deps): bump rusqlite from 0.32.1 to 0.40.1 in /ecc2 (#2211)

* chore(deps): bump rusqlite from 0.32.1 to 0.40.1 in /ecc2

Bumps [rusqlite](https://github.com/rusqlite/rusqlite) from 0.32.1 to 0.40.1.
- [Release notes](https://github.com/rusqlite/rusqlite/releases)
- [Changelog](https://github.com/rusqlite/rusqlite/blob/master/Changelog.md)
- [Commits](https://github.com/rusqlite/rusqlite/compare/v0.32.1...v0.40.1)

---
updated-dependencies:
- dependency-name: rusqlite
  dependency-version: 0.40.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix(ecc2): cast u64 columns at sqlite boundary for rusqlite 0.40

rusqlite 0.40 removed the u64 ToSql/FromSql impls (SQLite stores
INTEGER as i64). Cast token counts, durations, counts, and paging
values to/from i64 at each bind/read site in session/store.rs.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Affaan Mustafa <me@affaanmustafa.com>
This commit is contained in:
dependabot[bot]
2026-06-11 01:41:43 -04:00
committed by GitHub
parent 1481aa707e
commit fec84fcf19
3 changed files with 62 additions and 76 deletions
+31 -49
View File
@@ -8,18 +8,6 @@ version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
[[package]]
name = "ahash"
version = "0.8.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
dependencies = [
"cfg-if",
"once_cell",
"version_check",
"zerocopy",
]
[[package]] [[package]]
name = "aho-corasick" name = "aho-corasick"
version = "1.1.4" version = "1.1.4"
@@ -802,15 +790,6 @@ dependencies = [
"url", "url",
] ]
[[package]]
name = "hashbrown"
version = "0.14.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
dependencies = [
"ahash",
]
[[package]] [[package]]
name = "hashbrown" name = "hashbrown"
version = "0.15.5" version = "0.15.5"
@@ -844,11 +823,11 @@ dependencies = [
[[package]] [[package]]
name = "hashlink" name = "hashlink"
version = "0.9.1" version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" checksum = "a5081f264ed7adee96ea4b4778b6bb9da0a7228b084587aa3bd3ff05da7c5a3b"
dependencies = [ dependencies = [
"hashbrown 0.14.5", "hashbrown 0.17.1",
] ]
[[package]] [[package]]
@@ -1167,9 +1146,9 @@ dependencies = [
[[package]] [[package]]
name = "libsqlite3-sys" name = "libsqlite3-sys"
version = "0.30.1" version = "0.38.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" checksum = "f6c19a05435c21ac299d71b6a9c13db3e3f47c520517d58990a462a1397a61db"
dependencies = [ dependencies = [
"cc", "cc",
"pkg-config", "pkg-config",
@@ -1833,10 +1812,20 @@ dependencies = [
] ]
[[package]] [[package]]
name = "rusqlite" name = "rsqlite-vfs"
version = "0.32.1" version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e" checksum = "c51c9ae4df8a7fba42103df5c621fa3c37eccf3a3c650879e90fc48b11cc192c"
dependencies = [
"hashbrown 0.16.1",
"thiserror 2.0.18",
]
[[package]]
name = "rusqlite"
version = "0.40.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11438310b19e3109b6446c33d1ed5e889428cf2e278407bc7896bc4aaea43323"
dependencies = [ dependencies = [
"bitflags 2.13.0", "bitflags 2.13.0",
"fallible-iterator", "fallible-iterator",
@@ -1844,6 +1833,7 @@ dependencies = [
"hashlink", "hashlink",
"libsqlite3-sys", "libsqlite3-sys",
"smallvec", "smallvec",
"sqlite-wasm-rs",
] ]
[[package]] [[package]]
@@ -2075,6 +2065,18 @@ dependencies = [
"windows-sys 0.61.2", "windows-sys 0.61.2",
] ]
[[package]]
name = "sqlite-wasm-rs"
version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc3efc0da82635d7e1ced0053bbbfa8c7ab9645d0bf36ceb4f7127bb85315d75"
dependencies = [
"cc",
"js-sys",
"rsqlite-vfs",
"wasm-bindgen",
]
[[package]] [[package]]
name = "stable_deref_trait" name = "stable_deref_trait"
version = "1.2.1" version = "1.2.1"
@@ -3065,26 +3067,6 @@ dependencies = [
"synstructure", "synstructure",
] ]
[[package]]
name = "zerocopy"
version = "0.8.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "efbb2a062be311f2ba113ce66f697a4dc589f85e78a4aea276200804cea0ed87"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.8.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e8bc7269b54418e7aeeef514aa68f8690b8c0489a06b0136e5f57c4c5ccab89"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.117",
]
[[package]] [[package]]
name = "zerofrom" name = "zerofrom"
version = "0.1.6" version = "0.1.6"
+1 -1
View File
@@ -20,7 +20,7 @@ crossterm = "0.29"
tokio = { version = "1", features = ["full"] } tokio = { version = "1", features = ["full"] }
# State store # State store
rusqlite = { version = "0.32", features = ["bundled"] } rusqlite = { version = "0.40", features = ["bundled"] }
# Git integration # Git integration
git2 = { version = "0.20", features = ["ssh"] } git2 = { version = "0.20", features = ["ssh"] }
+30 -26
View File
@@ -1025,7 +1025,7 @@ impl StateStore {
profile.permission_mode, profile.permission_mode,
add_dirs_json, add_dirs_json,
profile.max_budget_usd, profile.max_budget_usd,
profile.token_budget, profile.token_budget.map(|tokens| tokens as i64),
profile.append_system_prompt, profile.append_system_prompt,
], ],
)?; )?;
@@ -1062,7 +1062,9 @@ impl StateStore {
permission_mode: row.get(4)?, permission_mode: row.get(4)?,
add_dirs: serde_json::from_str(&add_dirs_json).unwrap_or_default(), add_dirs: serde_json::from_str(&add_dirs_json).unwrap_or_default(),
max_budget_usd: row.get(6)?, max_budget_usd: row.get(6)?,
token_budget: row.get(7)?, token_budget: row
.get::<_, Option<i64>>(7)?
.map(|tokens| tokens as u64),
append_system_prompt: row.get(8)?, append_system_prompt: row.get(8)?,
agent: None, agent: None,
}) })
@@ -1568,12 +1570,12 @@ impl StateStore {
updated_at = ?8 updated_at = ?8
WHERE id = ?9", WHERE id = ?9",
rusqlite::params![ rusqlite::params![
metrics.input_tokens, metrics.input_tokens as i64,
metrics.output_tokens, metrics.output_tokens as i64,
metrics.tokens_used, metrics.tokens_used as i64,
metrics.tool_calls, metrics.tool_calls as i64,
metrics.files_changed, metrics.files_changed,
metrics.duration_secs, metrics.duration_secs as i64,
metrics.cost_usd, metrics.cost_usd,
chrono::Utc::now().to_rfc3339(), chrono::Utc::now().to_rfc3339(),
session_id, session_id,
@@ -1596,7 +1598,7 @@ impl StateStore {
row.get::<_, String>(1)?, row.get::<_, String>(1)?,
row.get::<_, String>(2)?, row.get::<_, String>(2)?,
row.get::<_, String>(3)?, row.get::<_, String>(3)?,
row.get::<_, u64>(4)?, row.get::<_, i64>(4)? as u64,
)) ))
})? })?
.collect::<std::result::Result<Vec<_>, _>>()?; .collect::<std::result::Result<Vec<_>, _>>()?;
@@ -1626,7 +1628,7 @@ impl StateStore {
if duration_secs != current_duration { if duration_secs != current_duration {
self.conn.execute( self.conn.execute(
"UPDATE sessions SET duration_secs = ?1 WHERE id = ?2", "UPDATE sessions SET duration_secs = ?1 WHERE id = ?2",
rusqlite::params![duration_secs, session_id], rusqlite::params![duration_secs as i64, session_id],
)?; )?;
} }
} }
@@ -1706,11 +1708,11 @@ impl StateStore {
cost_usd = ?4 cost_usd = ?4
WHERE id = ?5", WHERE id = ?5",
rusqlite::params![ rusqlite::params![
aggregate.input_tokens, aggregate.input_tokens as i64,
aggregate.output_tokens, aggregate.output_tokens as i64,
aggregate aggregate
.input_tokens .input_tokens
.saturating_add(aggregate.output_tokens), .saturating_add(aggregate.output_tokens) as i64,
aggregate.cost_usd, aggregate.cost_usd,
session_id, session_id,
], ],
@@ -1871,7 +1873,7 @@ impl StateStore {
row.input_params_json, row.input_params_json,
row.output_summary, row.output_summary,
trigger_summary, trigger_summary,
row.duration_ms, row.duration_ms as i64,
risk_score, risk_score,
timestamp, timestamp,
file_paths_json, file_paths_json,
@@ -2135,12 +2137,12 @@ impl StateStore {
}) })
.with_timezone(&chrono::Utc), .with_timezone(&chrono::Utc),
metrics: SessionMetrics { metrics: SessionMetrics {
input_tokens: row.get(11)?, input_tokens: row.get::<_, i64>(11)? as u64,
output_tokens: row.get(12)?, output_tokens: row.get::<_, i64>(12)? as u64,
tokens_used: row.get(13)?, tokens_used: row.get::<_, i64>(13)? as u64,
tool_calls: row.get(14)?, tool_calls: row.get::<_, i64>(14)? as u64,
files_changed: row.get(15)?, files_changed: row.get(15)?,
duration_secs: row.get(16)?, duration_secs: row.get::<_, i64>(16)? as u64,
cost_usd: row.get(17)?, cost_usd: row.get(17)?,
}, },
}) })
@@ -3813,7 +3815,7 @@ impl StateStore {
input_params_json, input_params_json,
output_summary, output_summary,
trigger_summary, trigger_summary,
duration_ms, duration_ms as i64,
risk_score, risk_score,
timestamp, timestamp,
], ],
@@ -3842,11 +3844,11 @@ impl StateStore {
let page = page.max(1); let page = page.max(1);
let offset = (page - 1) * page_size; let offset = (page - 1) * page_size;
let total: u64 = self.conn.query_row( let total = self.conn.query_row(
"SELECT COUNT(*) FROM tool_log WHERE session_id = ?1", "SELECT COUNT(*) FROM tool_log WHERE session_id = ?1",
rusqlite::params![session_id], rusqlite::params![session_id],
|row| row.get(0), |row| row.get::<_, i64>(0),
)?; )? as u64;
let mut stmt = self.conn.prepare( let mut stmt = self.conn.prepare(
"SELECT id, session_id, tool_name, input_summary, input_params_json, output_summary, trigger_summary, duration_ms, risk_score, timestamp "SELECT id, session_id, tool_name, input_summary, input_params_json, output_summary, trigger_summary, duration_ms, risk_score, timestamp
@@ -3857,7 +3859,9 @@ impl StateStore {
)?; )?;
let entries = stmt let entries = stmt
.query_map(rusqlite::params![session_id, page_size, offset], |row| { .query_map(
rusqlite::params![session_id, page_size as i64, offset as i64],
|row| {
Ok(ToolLogEntry { Ok(ToolLogEntry {
id: row.get(0)?, id: row.get(0)?,
session_id: row.get(1)?, session_id: row.get(1)?,
@@ -3868,7 +3872,7 @@ impl StateStore {
.unwrap_or_else(|| "{}".to_string()), .unwrap_or_else(|| "{}".to_string()),
output_summary: row.get::<_, Option<String>>(5)?.unwrap_or_default(), output_summary: row.get::<_, Option<String>>(5)?.unwrap_or_default(),
trigger_summary: row.get::<_, Option<String>>(6)?.unwrap_or_default(), trigger_summary: row.get::<_, Option<String>>(6)?.unwrap_or_default(),
duration_ms: row.get::<_, Option<u64>>(7)?.unwrap_or_default(), duration_ms: row.get::<_, Option<i64>>(7)?.unwrap_or_default() as u64,
risk_score: row.get::<_, Option<f64>>(8)?.unwrap_or_default(), risk_score: row.get::<_, Option<f64>>(8)?.unwrap_or_default(),
timestamp: row.get(9)?, timestamp: row.get(9)?,
}) })
@@ -3903,7 +3907,7 @@ impl StateStore {
.unwrap_or_else(|| "{}".to_string()), .unwrap_or_else(|| "{}".to_string()),
output_summary: row.get::<_, Option<String>>(5)?.unwrap_or_default(), output_summary: row.get::<_, Option<String>>(5)?.unwrap_or_default(),
trigger_summary: row.get::<_, Option<String>>(6)?.unwrap_or_default(), trigger_summary: row.get::<_, Option<String>>(6)?.unwrap_or_default(),
duration_ms: row.get::<_, Option<u64>>(7)?.unwrap_or_default(), duration_ms: row.get::<_, Option<i64>>(7)?.unwrap_or_default() as u64,
risk_score: row.get::<_, Option<f64>>(8)?.unwrap_or_default(), risk_score: row.get::<_, Option<f64>>(8)?.unwrap_or_default(),
timestamp: row.get(9)?, timestamp: row.get(9)?,
}) })
@@ -6629,7 +6633,7 @@ mod tests {
"{}", "{}",
"updated file", "updated file",
"context graph", "context graph",
0u64, 0i64,
0.0f64, 0.0f64,
"2026-04-10T00:01:00Z", "2026-04-10T00:01:00Z",
"[\"src/backfill.rs\"]", "[\"src/backfill.rs\"]",