inspector/specification
Repository files (latest commit first)
Filename Latest commit message Latest commit date
cliffhall de84b67046 fix(auth): stop blaming the passphrase for a corrupt payload, and refresh the stale docs
Round 23 produced **no inline comments** — nothing wrong in the code it had
not already seen. The five suppressed ones are all in unchanged code: one real
misdiagnosis and four pieces of drift.

**A decrypted-but-corrupt payload was reported as a wrong passphrase.** By the
time `JSON.parse` runs, GCM has verified the tag — so the passphrase is
*proven correct*, and a `SecretFileKeyMismatchError` there tells the user to
restore a secret they never lost. `asSecretMap` was already outside that catch
for exactly this reason; `JSON.parse` was not, so the same class of mistake
survived one line above the fix for it. The decrypt now has its own narrow
catch and everything after it reports a corrupt file.

The test fixture could not express this case — it `JSON.stringify`s its
payload, so it can only produce valid JSON. Split into a raw-plaintext variant
so a fixture can carry bytes that are authentic under the passphrase and still
unparseable, which is the only shape that reaches the branch.

The rest is documentation that had drifted from the code it describes:

- `handOff`'s doc still described the re-read-and-compare protocol that the
  atomic claim replaced two rounds ago — an obsolete concurrency invariant is
  worse than none, because the next reader takes it as the contract.
- The spec still described that same hand-off, and still called Client and
  Server Settings "the only two dialogs that accept a secret". Both now match
  the code, and the dialog count is called out as load-bearing: the one that
  was missing from it was the one taking secrets with no disclosure at all.
- The `void load()` in `refresh` carries the justification the repo's
  no-floating-promises rule requires — `load` owns its failures, and `refresh`
  is deliberately synchronous because `refreshingPersist` calls it from a
  `finally`.

Full `npm run ci` green, staged tree verified first.

Signed-off-by: cliffhall <cliff@futurescale.com>
2026-08-22 23:08:52 -04:00
..
diagrams refactor(version): single-source the version from the root package.json 2026-07-10 17:31:21 -04:00
screenshots docs(apps): specify the v2 Apps tab (#1265) 2026-04-29 17:22:59 -04:00
README.md docs(spec): add V2 Auth landing page and canonicalize spec top menus (closes #1605) 2026-07-02 17:20:06 -04:00
v1_problems.md docs(spec): add V2 Auth landing page and canonicalize spec top menus (closes #1605) 2026-07-02 17:20:06 -04:00
v2_auth.md Auth hardening CI gaps + SDK consolidation: EMA leg 2 / scopes (#1527) (#1725) 2026-07-19 22:36:21 -04:00
v2_auth_ema.md feat: surface and decode the OAuth id_token in Connection Info (#2019) 2026-08-15 18:33:41 -04:00
v2_auth_hardening.md chore: upgrade the MCP TypeScript SDK from 2.0.0-beta.5 to 2.0.0 2026-08-12 08:34:08 -04:00
v2_auth_mid_session.md refactor(web): sharpen the src/lib vs src/utils rule and move misfiled modules (#1784) 2026-07-25 22:24:30 -04:00
v2_auth_sdk_consolidation.md chore: upgrade the MCP TypeScript SDK from 2.0.0-beta.5 to 2.0.0 2026-08-12 08:34:08 -04:00
v2_auth_smoke_testing.md Auth hardening CI gaps + SDK consolidation: EMA leg 2 / scopes (#1527) (#1725) 2026-07-19 22:36:21 -04:00
v2_catalog_launch_config.md docs(spec): add V2 Auth landing page and canonicalize spec top menus (closes #1605) 2026-07-02 17:20:06 -04:00
v2_cli_tui_launcher.md Merge remote-tracking branch 'origin/v2/main' into 1579-wave-1 2026-07-09 09:41:08 -04:00
v2_new_spec_impact.md Auth hardening CI gaps + SDK consolidation: EMA leg 2 / scopes (#1527) (#1725) 2026-07-19 22:36:21 -04:00
v2_scope.md Removed Zustand storage, cleanup up auth storage IO interfaces, implementations, and usage. 2026-07-04 21:56:45 -07:00
v2_screenshots.md docs(spec): add V2 Auth landing page and canonicalize spec top menus (closes #1605) 2026-07-02 17:20:06 -04:00
v2_server.md docs(spec): add V2 Auth landing page and canonicalize spec top menus (closes #1605) 2026-07-02 17:20:06 -04:00
v2_servers_file.md fix(auth): stop blaming the passphrase for a corrupt payload, and refresh the stale docs 2026-08-22 23:08:52 -04:00
v2_storage.md docs(spec): describe tool selection by row key, not name 2026-08-17 00:23:26 -04:00
v2_ux.md feat: surface and decode the OAuth id_token in Connection Info (#2019) 2026-08-15 18:33:41 -04:00
v2_ux_components.md Removed Zustand storage, cleanup up auth storage IO interfaces, implementations, and usage. 2026-07-04 21:56:45 -07:00
v2_ux_features.md docs(spec): add V2 Auth landing page and canonicalize spec top menus (closes #1605) 2026-07-02 17:20:06 -04:00
v2_ux_handlers.md docs(spec): add V2 Auth landing page and canonicalize spec top menus (closes #1605) 2026-07-02 17:20:06 -04:00
v2_ux_interfaces.md docs(spec): describe tool selection by row key, not name 2026-08-17 00:23:26 -04:00
v2_ux_interfaces_phase_0_4_inventory.md refactor(web): sharpen the src/lib vs src/utils rule and move misfiled modules (#1784) 2026-07-25 22:24:30 -04:00
v2_ux_interfaces_plan.md chore: close a batch of quality-gate & tidy gaps (#1785 #1787 #1789 #1790 #1767) (#1792) 2026-07-26 10:43:11 -04:00
v2_ux_storybook.md docs(spec): add V2 Auth landing page and canonicalize spec top menus (closes #1605) 2026-07-02 17:20:06 -04:00
v2_web_client.md docs(spec): add V2 Auth landing page and canonicalize spec top menus (closes #1605) 2026-07-02 17:20:06 -04:00

Inspector V2 Brief

Brief | V1 Problems | V2 Scope | V2 Tech Stack | V2 UX | V2 Auth | V2 New Spec Impact

Table of Contents

Motivation and Context

The existing Inspector is hard to maintain for a number of reasons. We decided to create a more maintainable Inspector from the ground up, that retains the deterministic boundary of operation, but exposes a plugin architecture.

Track Protocol Conformance

  • Identify any gaps in V1 inspector
  • Track which features are covered
  • Implement to parity and fill gaps
  • Provide conformance testing in CI

Improve Maintainability

  • Clearer separation of concerns
  • Smaller, reusable components

Provide Extensibility

  • Plugin SDK / API
  • Third parties cand develop/maintain their own plugins for features such as
    • LLM usage
    • Evals
    • Multiple server connections
    • Apps playground
    • Testing of registry configuration
    • Interface with registry

Proper Documentation

  • One big README won't cut it anymore
  • Published documentation in MDX should
    • Render in style of spec
    • Kept up to date
    • Cover all features
    • Discuss troubleshooting strategies
    • Provide detailed contribution guidance that explains architecture and expected idioms