Skip to content

desktop/src-tauri/crates/core/src/adapters/goose/common.rs

Comment 1, line 1

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:1

//! Goose-specific helpers under the independent adapter-directory convention.

Comment 2, line 2

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:2

//! - Read-only DB access copied from adapters/zed/common.rs, following hermes/kilo.

Comment 3, line 3

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:3

//! - Per-request usage_ledger mapping: official a701bb1, A26.

Comment 4, line 4

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:4

//!

Comment 5, line 5

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:5

//! Fixed source: aaif-goose/goose a701bb1756f0c6a49a7dbc10ac8a90f94dd24bd1.

Comment 6, line 6

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:6

//! - usage_ledger migration 15 (session_manager.rs:1083-1097) inserts one row per

Comment 7, line 7

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:7

//! provider response (:913); created_timestamp is Unix seconds. cost_source is

Comment 8, line 8

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:8

//! provider_reported/estimated/carried_forward; is_compaction marks compaction calls.

Comment 9, line 9

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:9

//! - Usage (goose-provider-types token_usage.rs:93-101): input_tokens is the entire

Comment 10, line 10

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:10

//! prompt including cache-read/write subsets; derive input_uncached by subtraction

Comment 11, line 11

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:11

//! with sub_checked rejecting negative results.

Comment 12, line 12

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:12

//! - sessions.accumulated_* contains session totals; other columns are last snapshots.

Comment 13, line 13

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:13

//! Fall back to session aggregates only in older databases without usage_ledger (schema <15).

Comment 14, line 18

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:18

/// usage_ledger token columns; NULL remains unknown without zero substitution.

Comment 15, line 28

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:28

/// Derive uncached from cache-inclusive input; retain reported total for comparison.

Comment 16, line 85

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:85

// Read-only database helpers copied from adapters/hermes/common.rs; modules remain independent.

Comment 17, line 93

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:93

/// Read-only source access; busy-like probe failures switch to a staging snapshot.

Comment 18, line 117

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:117

/// SQLite busy/locked/CANTOPEN errors prevent a successful consistency probe.

Comment 19, line 127

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:127

/// Staging page/time/size limits and cleanup follow architecture.md.

Comment 20, line 145

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:145

/// Open read-only; short busy_timeout bounds probe waits before a staging fallback.

Comment 21, line 158

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:158

/// Online Backup creates a consistent system-temporary snapshot without writing the source.

Comment 22, line 189

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:189

// More means pages were copied; count those pages toward the size limit.

Comment 23, line 200

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:200

// Busy/Locked or other non-exhaustive results retry without progress, within the timeout.

Comment 24, line 201

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:201

// 2026-09-30 fix: retries previously added pages and raced the timeout, causing

Comment 25, line 202

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:202

// platform-specific false size-limit failures (Linux CI hit the page cap before timeout).

Comment 26, line 221

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:221

/// Probe read-only sessions.db; busy-like probe failures use staging, later failures propagate.

Comment 27, line 222

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:222

/// Never write the source database.

Comment 28, line 249

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:249

/// Short schema query probes access, following kilo's rule.

Comment 29, line 254

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:254

/// Required usage_ledger columns follow the fixed migration-15 schema.

Comment 30, line 255

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:255

/// Include each column from the fixed usage_ledger creation SQL.

Comment 31, line 270

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:270

/// Legacy sessions fallback requires accumulated_* columns when usage_ledger is absent.

Comment 32, line 286

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:286

// Input includes cache read/write: uncached = 100 - 30 - 10 = 60.

Comment 33, line 302

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:302

// Cache exceeds input: leave uncached unknown with a contradiction diagnostic, without zero replacement.

Comment 34, line 318

desktop/src-tauri/crates/core/src/adapters/goose/common.rs:318

// NULL columns remain unknown without zero substitution.