cherry-studio/packages/catalog/scripts/cleanup-overrides.ts
suyao 2593a427e0
refactor: update schemas and models for consistency and clarity
- Changed `perMillionTokens` to `per_million_tokens` in PricePerTokenSchema for snake_case consistency.
- Removed unused types from index.ts and simplified ProviderModelOverrideSchema by removing deprecated fields.
- Enhanced ModelConfigSchema to enforce unique capabilities and modalities, and made context_window and max_output_tokens optional.
- Updated ProviderConfigSchema to require at least one supported endpoint.
- Removed commented-out code and unused imports in route.ts for cleaner code.
- Added a cleanup script to remove deprecated fields from overrides.json.
- Implemented a new importer for AIHubMix models, transforming API data into the internal format.
- Created a utility for applying and validating model overrides, ensuring better error handling and warnings.
- Updated various scripts for better organization and clarity, including removing search models and generating AIHubMix models.
2025-12-08 22:47:16 +08:00

77 lines
1.9 KiB
TypeScript

#!/usr/bin/env tsx
/**
* Cleanup script for data/overrides.json
* Removes deprecated tracking fields: last_updated, updated_by
* These fields will be removed from override schema as git provides better tracking
*/
import * as fs from 'fs/promises'
import * as path from 'path'
interface Override {
provider_id: string
model_id: string
disabled?: boolean
reason?: string
priority?: number
last_updated?: string // To be removed
updated_by?: string // To be removed
limits?: unknown
pricing?: unknown
capabilities?: unknown
reasoning?: unknown
parameters?: unknown
replace_with?: string
[key: string]: unknown
}
interface OverrideFile {
version: string
overrides: Override[]
}
async function cleanupOverrides(): Promise<void> {
const overridesPath = path.join(process.cwd(), 'data', 'overrides.json')
console.log('Reading overrides file...')
const content = await fs.readFile(overridesPath, 'utf-8')
const data: OverrideFile = JSON.parse(content)
console.log(`Found ${data.overrides.length} override entries`)
let removedCount = 0
const cleanedOverrides = data.overrides.map((override) => {
const cleaned: Override = { ...override }
// Remove deprecated tracking fields
if ('last_updated' in cleaned) {
delete cleaned.last_updated
removedCount++
}
if ('updated_by' in cleaned) {
delete cleaned.updated_by
}
return cleaned
})
const cleanedData: OverrideFile = {
version: data.version,
overrides: cleanedOverrides
}
// Write cleaned data back
console.log(`Removing last_updated and updated_by from ${removedCount} entries...`)
await fs.writeFile(overridesPath, JSON.stringify(cleanedData, null, 2) + '\n', 'utf-8')
console.log('✓ Cleanup completed successfully')
console.log(`✓ Saved ${cleanedOverrides.length} cleaned override entries`)
}
// Run the cleanup
cleanupOverrides().catch((error) => {
console.error('Cleanup failed:', error)
process.exit(1)
})