inspector/clients/tui/__tests__
Repository files (latest commit first)
Filename Latest commit message Latest commit date
cliffhall 2f9e0901c1 feat: flag unportable tool schemas in all three clients
Closes #1005

A tool schema can be perfectly legal JSON Schema and still be rejected by
the client the server is meant to run against — Go's `jsonschema` emits a
bare `true` for `interface{}`, which the SDK accepts and Claude Code
refuses with an opaque "Invalid input". The Inspector passed it through
silently.

Adds `core/json/schemaLint.ts`, a portability lint over a tool's
inputSchema/outputSchema, and surfaces one shared verdict everywhere:
the CLI's `--strict` report (exit 6 on an error-severity finding), the
TUI's tool list marker + detail pane, and the web Tools sidebar flag +
detail section.

Deliberately not a JSON Schema validator: a census of 617 public servers
found zero that fail the SDK's own parse, so a conformance check would
report nothing on real servers. Each rule is instead a construct that is
legal JSON Schema and known to be refused or mishandled by a shipping
client — a bare boolean in a schema position, an array-form `type`, a
remote `$ref`, a schema with no validation keyword, a non-object root.

`test-servers/configs/unportable-schemas-http.json` exercises every rule,
via a new `rawToolSchemas` override — the Zod-built presets cannot emit
any of these shapes, which is the same reason a real server only hits
this when its schemas come from another generator.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UL9retfvAXRgvi6EWk4SY4
Signed-off-by: cliffhall <cliff@futurescale.com>
2026-08-25 01:18:53 -04:00
..
helpers feat: allow complex JSON values in request _meta 2026-08-23 12:23:40 -04:00
App.test.tsx Merge branch 'v2/main' into v2/fix/2067-proxy-undici 2026-08-23 23:34:07 -04:00
AuthTab.test.tsx test(cli,tui): typecheck the __tests__ dirs (#1791) (#1799) 2026-07-27 12:05:35 -04:00
DetailsModal.test.tsx test(tui): extend coverage gate to Ink components + App.tsx (closes #1501) (#1538) 2026-06-29 08:19:12 -04:00
HistoryTab.test.tsx test(cli,tui): typecheck the __tests__ dirs (#1791) (#1799) 2026-07-27 12:05:35 -04:00
InfoTab.test.tsx chore: close quality-gate coverage gaps (#1689) (#1766) 2026-07-24 17:20:12 -04:00
logger.test.ts test: raise per-file coverage gate to 90 across all clients (closes #1271) (#1532) 2026-06-27 15:26:03 -04:00
NotificationsTab.test.tsx Fixed tab naming to correspond to the web client. (#1780) 2026-07-25 20:11:52 -04:00
oauthDisplay.test.ts Guided-auth removal, OAuth smoke testing, and TUI/CLI support (#1531) 2026-06-29 15:35:51 -04:00
openUrl.test.ts test(cli,tui): add in-process source coverage gates (#1484) (#1502) 2026-06-20 15:05:58 -04:00
promptArgsToForm.test.ts test(cli,tui): add in-process source coverage gates (#1484) (#1502) 2026-06-20 15:05:58 -04:00
PromptsTab.test.tsx SDK v2 migration (behavior-neutral, versionNegotiation: 'legacy') (#1624) 2026-07-15 10:44:24 -04:00
PromptTestModal.test.tsx SDK v2 migration (behavior-neutral, versionNegotiation: 'legacy') (#1624) 2026-07-15 10:44:24 -04:00
RequestsTab.test.tsx Fixed tab naming to correspond to the web client. (#1780) 2026-07-25 20:11:52 -04:00
ResourcesTab.test.tsx SDK v2 migration (behavior-neutral, versionNegotiation: 'legacy') (#1624) 2026-07-15 10:44:24 -04:00
ResourceTestModal.test.tsx fix: honor a defined-but-empty value, and announce the expansion error 2026-08-16 23:08:30 -04:00
schemaToForm.test.ts fix: strip the enum null sentinel, and make the preset test cover its wiring 2026-08-15 18:28:38 -04:00
SelectableItem.test.tsx test(tui): extend coverage gate to Ink components + App.tsx (closes #1501) (#1538) 2026-06-29 08:19:12 -04:00
setup.ts test(tui): extend coverage gate to Ink components + App.tsx (closes #1501) (#1538) 2026-06-29 08:19:12 -04:00
Tabs.test.tsx Fixed tab naming to correspond to the web client. (#1780) 2026-07-25 20:11:52 -04:00
ToolsTab.test.tsx feat: flag unportable tool schemas in all three clients 2026-08-25 01:18:53 -04:00
ToolTestModal.test.tsx SDK v2 migration (behavior-neutral, versionNegotiation: 'legacy') (#1624) 2026-07-15 10:44:24 -04:00
tsupConfig.test.ts chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
tui-servers.test.ts Guided-auth removal, OAuth smoke testing, and TUI/CLI support (#1531) 2026-06-29 15:35:51 -04:00
tui.test.ts Fixed tab naming to correspond to the web client. (#1780) 2026-07-25 20:11:52 -04:00
tuiOAuth.test.ts test(cli,tui): typecheck the __tests__ dirs (#1791) (#1799) 2026-07-27 12:05:35 -04:00
uriTemplateToForm.test.ts fix: dedupe a repeated name in a group, and name every unmet requirement 2026-08-17 00:33:52 -04:00
useSelectableList.test.tsx test(tui): extend coverage gate to Ink components + App.tsx (closes #1501) (#1538) 2026-06-29 08:19:12 -04:00