feat(codex): migrate third-party history provider bucket to unified "custom" ID

Codex CLI filters conversations by model_provider — after normalizing
all third-party providers to "custom", old sessions with their original
provider IDs become invisible. This migration rewrites JSONL session
files and state_5.sqlite threads to use the unified ID.

Uses a three-tier trust model for source ID collection:
- Known legacy preset whitelist (46 IDs, case-insensitive)
- cc-switch-created custom providers (identified by created_at)
- User-maintained custom providers are explicitly skipped

Adds scanned_history_files flag to prevent stale v1 markers from
blocking re-runs with the improved source ID collection logic.
This commit is contained in:
Jason
2026-05-25 19:08:18 +08:00
parent 177eef6682
commit b15d9dfa11
3 changed files with 292 additions and 7 deletions
+3 -1
View File
@@ -198,6 +198,8 @@ pub struct CodexThirdPartyHistoryProviderBucketMigration {
pub migrated_jsonl_files: usize,
#[serde(default)]
pub migrated_state_rows: usize,
#[serde(default)]
pub scanned_history_files: bool,
}
/// 应用设置结构
@@ -594,7 +596,7 @@ pub fn is_codex_third_party_history_provider_bucket_migrated() -> bool {
.codex_third_party_history_provider_bucket_v1
.as_ref()
})
.is_some()
.is_some_and(|m| m.scanned_history_files)
}
pub fn mark_codex_third_party_history_provider_bucket_migrated(