(v: string)
| 125 | * the trailing text straight into every session's instructions.) |
| 126 | */ |
| 127 | export function canonicalVersionTag(v: string): string | null { |
| 128 | const s = parseSemver(v); |
| 129 | if (!s) return null; |
| 130 | return `v${s.major}.${s.minor}.${s.patch}${s.pre ? `-${s.pre}` : ''}`; |
| 131 | } |
| 132 | |
| 133 | /** One user-facing sentence; every surface (stderr, instructions, status) shows this. */ |
| 134 | export function formatUpdateNotice(current: string, latest: string): string { |
no test coverage detected