Skip to content

v0.5.8

@cyanheads cyanheads tagged this 09 May 10:17
- Upgrade @cyanheads/mcp-ts-core ^0.7.6 → ^0.8.19. Twenty patches across
  two minors, two breaking: false→true. Highlights: typed error
  contracts (errors: [{ reason, code, when, recovery }]) with
  ctx.fail(reason) and ctx.recoveryFor(reason) (0.8.0), MCP error
  metadata moved from _meta.error to structuredContent.error per spec
  (breaking, 0.8.0), httpErrorFromResponse / httpStatusToErrorCode
  helpers (0.8.0), serializationError / internalError / databaseError
  factories (0.8.0), createMockContext({ errors }) test option (0.8.0),
  conformance lint scans handler source (0.8.0), Bun ≥1.3 / Node ≥24
  floor (0.8.15).
- Adopt typed error contracts on four tools: out_of_scope on
  nws_get_forecast and nws_find_stations; full five-reason set on
  nws_get_observations (missing_input, station_not_found,
  no_observations, no_stations_nearby, out_of_scope); three-reason set
  on nws_search_alerts (mutually_exclusive_filters, invalid_area_code,
  invalid_point) with the area/point/zone mutex check moved into the
  handler. nws-service.ts throws carry data: { reason,
  ...ctx.recoveryFor(reason) } so service-side failures are wire-correct
  even though the conformance lint only scans handler source.
- Replace manual 429/5xx mapping in nwsFetch with httpErrorFromResponse;
  codeOverride remaps 500/501 → ServiceUnavailable so they hit
  isRetryableNwsError's allowlist (NWS grid-forecast 500s are documented
  as transient). parseNwsJson now throws serializationError on
  malformed JSON and serviceUnavailable on HTML CDN intercepts (the
  latter stays in the retry allowlist).
- Swap four invalidParams sites to validationError per the framework's
  factory audit — invalidParams (-32602) is malformed JSON-RPC params,
  semantic post-shape validation is validationError (-32007).
- Bump engines to Node ≥24 / Bun ≥1.3, Docker base to oven/bun:1.3.
  Drop dev:stdio / dev:http scripts.
- Migrate tests: createMockContext({ errors: tool.errors }) for ctx.fail
  support, assert on data.reason and data.recovery.hint, structured-
  Content.error wire shape, /HTTP 429/ regex for the rate-limit message.
- Sync 17 skills via maintenance Phase A (3 new: api-canvas,
  api-telemetry, tool-defs-analysis); Phase B mirror to .claude/skills
  and .agents/skills; Phase C update scripts/build-changelog.ts and add
  scripts/split-changelog.ts.

Tests: 110 pass. Devcheck: all checks green, 0 warnings.
Assets 2
Loading