Skip to content

v0.4.1

@cyanheads cyanheads tagged this 06 May 03:34
Adopts @cyanheads/mcp-ts-core 0.8.17 (10 versions from 0.7.0). The
headline framework feature is the typed error contract:
tool({ errors: [...] }) declares a domain failure mode with a code,
trigger, and recovery string; ctx.fail(reason, …) throws it; and
the framework mirrors data.recovery.hint into rendered content[]
so format()-only clients see the same guidance.

Server changes adopting the contract:

- hn_get_thread declares item_not_found (NotFound).
- hn_get_user declares user_not_found (NotFound).
- HnService rate-limit-as-HTML throw carries
  data: { upstream, reason: 'upstream_html', recovery: { hint } } so
  the service-layer failure exposes the same shape.
- hn_search_content empty results now name the filters that were
  applied (tags, author, minPoints, dateRange) and tell the agent
  what to relax. Rendered as a recovery sentence on no-hit responses
  and a > blockquote footer on non-empty pages.

Tooling:

- New Framework Antipatterns devcheck step
  (scripts/check-framework-antipatterns.ts) flags SDK-coupling
  shortcuts.
- New scripts/split-changelog.ts helper.
- Two new project skills synced from upstream: api-canvas (DataCanvas
  + spillover) and tool-defs-analysis (read-only audit of MCP
  definition language). 15 existing skills refreshed and propagated
  to .claude/skills/.

Other:

- Tool descriptions and field describes tightened across all four
  tools — sharper guidance on count, offset, depth, maxComments,
  and the thread item type field now lists the actual HN item types.
- @biomejs/biome 2.4.13 → 2.4.14, tsc-alias 1.8.16 → 1.8.17.
- Drop dev:stdio and dev:http package scripts in favor of invoking
  bun --watch directly.

Tests: 110 passing.
Assets 2
Loading