Skip to content

Latest commit

 

History

History
36 lines (25 loc) · 4.75 KB

File metadata and controls

36 lines (25 loc) · 4.75 KB
summary Uppercase `find_eligible.sex` enum (breaking); specific offending-field error on field-values 404; directory-based changelog; new `security-pass` skill; framework 0.6.17
breaking true

2.4.0 — 2026-04-24

Breaking

  • clinicaltrials_find_eligiblesex enum uppercased — Input enum changed from 'Female' | 'Male' | 'All''FEMALE' | 'MALE' | 'ALL'. Matches the upstream ClinicalTrials.gov API's own casing, so the handler no longer .toUpperCase()s the value before emitting AREA[Sex] filters. Callers passing the old mixed-case values will now fail input-schema validation. Update any stored patient profiles or caller code accordingly.

Changed

  • ClinicalTrialsService.getFieldValues — specific offending field name on 404 — The upstream API reports only the first bad piece name (Unknown piece name of field path: X) when any input is invalid. The service now extracts that name, blames only it, and — when multiple fields were submitted — explicitly notes that the others may also be invalid because upstream doesn't say. Previously the error blanket-flagged every submitted field, so callers couldn't tell which one was actually wrong.
  • ClinicalTrialsService — surface upstream body on non-/studies/ 404s — Endpoints like /stats/field/values now bubble up the upstream error text (which names the offending input) instead of a generic Not found: <path>. The /studies/<nctId> path keeps its dedicated Study <id> not found message.
  • Tool schemas — per-member z.union() descriptions — Added .describe() to every discriminated z.union() member and inner object schema across search-studies, get-study-count, get-study-results, get-field-values, get-field-definitions, and find-eligible. Required by the framework's schema linter; no wire-level behavior change.

Added

  • Directory-based changelog — New changelog/<major.minor>.x/<version>.md per-version files with YAML frontmatter (summary, breaking). CHANGELOG.md is now an auto-generated navigation index — each rollup entry is a clickable header linking to the full per-version file. bun run changelog:build regenerates the rollup; bun run changelog:check (wired into devcheck) fails if the rollup drifts. Retroactively migrated every prior release from the old flat CHANGELOG.md into the new structure.
  • scripts/build-changelog.ts — Generator for the rollup. Semver-descending sort (finals rank above their prereleases), frontmatter validation (summary cap 250 chars, breaking must be literal true/false), --check mode for CI.
  • scripts/check-skills-sync.ts — Compares canonical skills/ against local mirrors (.agents/skills, .claude/skills); reports missing/drifted files. Skipped when no mirrors exist. Ignore patterns configurable via devcheck.config.json skillsSync.ignore.
  • devcheck steps — New Skills Sync and Changelog Sync steps gate the above scripts into the standard check suite. Skills Sync drift demotes to a warning (you may be mid-sync); Changelog Sync drift is a hard failure with a bun run changelog:build tip.
  • scripts/tree.ts — Ignores changelog/*/*.md per-version files (keeps series directories visible for orientation but avoids bloat).
  • security-pass skill (1.1) — New skill from mcp-ts-core: audits handlers for MCP-specific security gaps (output injection, scope blast radius, input sinks, tenant isolation, error leakage). Surfaced in CLAUDE.md / AGENTS.md "What's Next" and skills table.
  • Tests — ClinicalTrialsService.getFieldValues — Added regression cases for the new error-message behavior: single-bad-field extracts the name; multi-field calls flag valid inputs as possibly-invalid; empty upstream body falls back to the full input list.

Dependencies

  • Upgraded @cyanheads/mcp-ts-core from ^0.6.10 to ^0.6.17. Brings the new schema-description linter rules for z.union() members and inner objects (hence the tool-schema changes above).
  • Bumped devDeps: @biomejs/biome ^2.4.12^2.4.13, @cloudflare/workers-types ^4.20260423.1^4.20260424.1.

Chores

  • Skill sync — Refreshed synced skills from mcp-ts-core 0.6.17: field-test rewritten (1.3 → 2.0) as a live HTTP/JSON-RPC exercise flow with a reusable bash helper; major updates to api-auth, api-errors, report-issue-framework, report-issue-local; smaller polish to add-tool, design-mcp-server, maintenance, polish-docs-meta, release-and-publish, setup. All propagated to .claude/skills/.
  • scripts/devcheck.ts — Resynced from framework: escape-regex hardening in the color utility; skillsSync ignore field added to DevcheckConfig; bun run updatemaintenance skill pointer in the outdated-check tip.