- _status_choices no longer caches failures: a transient /ticket_form_fields
error used to cache [] forever, silently degrading unresolved=True to an
unfiltered listing (including Resolved/Closed) until container restart.
unresolved=True and list_ticket_statuses now return an explicit error when
the status list can't be fetched instead of degrading silently.
- All API calls (server and skill helper) now use a 30s timeout with a clean
error, so a hung connection can't block a tool call indefinitely.
- _coerce_status falls back to the instance's live status list, so custom
names like "Working" coerce to their id instead of 400ing at the API.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Stdlib-only fs.py helper wrapping the Freshservice REST API v2 (auth, URL
building, filter quoting, pagination, error surfacing), plus SKILL.md and a
reference of endpoints, status/priority codes, and filter-query syntax.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>