import { VersionInfo } from '@start9labs/start-sdk' export const v_0_2_110 = VersionInfo.of({ version: '0.2.110:0', releaseNotes: { en_US: "Internal Meetings — Phase 2 of Path 2A: meeting extras. One additional LLM pass at the end of the pipeline (after transcribe → diarize → cluster → analyze → name-inference → summary-polish) pulls out four categories of structured information operators consistently want at the top of a meeting recap: Decisions (what was agreed, who agreed, the timestamp where it was settled), Action items (who owes what, by when if mentioned, supporting timestamp), Open questions (questions raised that didn't get resolved, who asked them), and Key quotes (3-6 pivotal statements worth surfacing verbatim, with the speaker + offset + why-notable note). Each item carries speaker cluster IDs so existing operator renames AND per-line overrides flow through — the extras chips reflect the same Speaker_A → 'Matt Hill' display throughout. Each item also carries an offset in seconds rendered as a clickable [m:ss] timestamp in the dashboard that jumps to the supporting transcript line (opens the containing topic's details panel and highlight-flashes the row); in the .html download, timestamps render as styled tags but are static (it's a shareable file). Extras render ABOVE the topics list with four collapsible sections (default expanded). Empty categories collapse; if all four are empty the whole block hides. Flows into all download formats — dashboard render, .html download (with matching inline CSS), .md download (top-level ## sections), and .json (rec.extras). Failure is non-fatal — if the LLM can't return valid JSON after 3 retries, rec.extras stays null and the UI just hides the section. Cost: ~5-15s wall time added to the end of the pipeline. Operator toggle: relay_meeting_extras_enabled (default true) in config; operator-editable prompt: relay_meeting_extras_prompt. Schema is intentionally conservative — the prompt explicitly instructs 'empty array beats fabricated items' and validates each item shape on parse, dropping malformed entries silently. Phase 3 (multiple operator-editable prompt sets — default / 1on1 / all-hands / customer-interview / standup, selectable per upload) is the next item on Path 2A.", }, migrations: { up: async ({ effects }) => {}, down: async ({ effects }) => {}, }, })