Eol Lifecycle
Support/end-of-life lifecycle lookups against the public endoflife.date API.
"Is this still supported?" has a real, citable answer sitting behind a free public API — a release date, an end-of-life date, a latest patch version. This model fetches it and hands back the API's own fields plus one computed boolean, supported, so callers don't re-derive it from endoflife.date's own three-state eol field (a date, or the literal true/false) at every call site.
Method
- lifecycle — one fan-out call per product: every matching release cycle
(optionally narrowed to one
cycle), each withreleaseDate, the raweolDate,latest, and computedsupported, plus a top-levelanyEolflag.
Design notes
No product is hardcoded — the product name is always supplied by the caller. A product name endoflife.date doesn't recognize is the single most likely input, not an exceptional one, so it degrades to found: false with a note and catalog-derived suggestions rather than throwing.
Host-locked: every request goes through a guard that refuses any hostname other than endoflife.date, checked before the request and again after following any redirect.
Read-only throughout — this model only ever reads a public API.
Quick Start
swamp extension pull @hmcrum/eol-lifecycle
swamp model create @hmcrum/eol-lifecycle eol
swamp model method run eol lifecycle --input product=python swamp model method run eol lifecycle --input product=python --input cycle=3.11 ```Global Arguments
| Argument | Type | Description |
|---|---|---|
| userAgent | string | User-Agent sent to endoflife.date — identify yourself honestly |
| Argument | Type | Description |
|---|---|---|
| product | string | endoflife.date product identifier, e.g. python, ubuntu, postgresql |
| cycle? | string | Narrow to one release cycle, e.g. '3.11' — omit for every cycle |
Resources
- Has README or module doc2/2earned
- README has a code example1/1earned
- README is substantive1/1earned
- Most symbols documented1/1earned
- No slow types (deprecated)1/1earned
- Dependencies pass trust audit2/2earned
- Has description1/1earned
- Platform support declared (or universal)2/2earned
- License declared1/1earned
- Verified public repository2/2earned