import { IMPOSSIBLE, VersionInfo } from '@start9labs/start-sdk'

/**
 * v1.2.0:8 — Tolerate decimal integers in AI output (2026-06-19).
 *
 * Local models (notably Qwen via SparkControl, surfaced on the first
 * SparkControl smoke test) sometimes emit a decimal where the AI-output
 * schema expects an integer — e.g. a half-step `"rpe": 7.5`, or `"reps": 8.0`.
 * Zod's `.int()` rejected these and failed the ENTIRE parse ("JSON did not
 * match the expected shape"), so a single stray decimal killed an otherwise
 * good generation.
 *
 * Fix: a shared `looseInt` helper rounds a number to the nearest integer
 * BEFORE the `.int()` check, applied to every integer field in both the
 * program and single-workout schemas (rpe, reps, sets, gear, order,
 * durationSeconds, rest/week/day numbers, …). RPE/reps/sets are stored as
 * integers downstream, so rounding is the correct landing.
 *
 * Client-/parse-only — no schema or data change.
 */
export const v_1_2_0_8 = VersionInfo.of({
  version: '1.2.0:8',
  releaseNotes: {
    en_US:
      'AI generation is now tolerant of decimal values from local models (e.g. a half-step RPE like 7.5) — they round to the nearest whole number instead of failing the whole generation. No data changes.',
  },
  migrations: {
    up: async () => {},
    down: IMPOSSIBLE,
  },
})
