Files
recap-relay/startos/versions/v0.2.3.ts
T

44 lines
1.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { VersionInfo } from '@start9labs/start-sdk'
import { configFile } from '../file-models/config.json'
export const v_0_2_3 = VersionInfo.of({
version: '0.2.3:0',
releaseNotes: {
en_US:
'Core tier reworked: 10 lifetime credits (was 5), with the first 5 served via Gemini and the next 5 via operator hardware. /relay/health now reports the actual package version. Existing installs migrate their saved tier-quota blob automatically on upgrade.',
},
migrations: {
// Update the saved tier-quota JSON for installs that came up under
// v0.2.0v0.2.2 (Core: 5 lifetime, all Gemini). Idempotent — if
// the operator has already moved away from the old defaults via
// Adjust Tier Quotas, we leave their values alone.
up: async ({ effects }) => {
const current = await configFile.read().once()
if (!current?.relay_tier_quotas_json) return
let parsed: any = {}
try {
parsed = JSON.parse(current.relay_tier_quotas_json)
} catch {
return
}
// Migrate only the legacy default shape — operator-edited blobs
// are left alone. The legacy shape was exactly: core.lifetime=5
// AND no geminiCapLifetime field present.
const isLegacyCore =
parsed?.core?.lifetime === 5 &&
parsed?.core?.geminiCapLifetime === undefined
if (!isLegacyCore) return
parsed.core = {
lifetime: 10,
geminiCapLifetime: 5,
monthly: null,
geminiCapMonthly: null,
}
await configFile.merge(effects, {
relay_tier_quotas_json: JSON.stringify(parsed),
})
},
down: async ({ effects }) => {},
},
})