chore: pin prettier to 3.9.5 and run format check after install (#1716)

The "Check formatting" step in main.yml ran `npx prettier --check .`
before `npm install`, so npx fetched the LATEST prettier rather than the
version pinned in package-lock.json. This made the format check
non-deterministic and red on open PRs whenever the latest published
prettier differed from the pinned one.

- Pin prettier to exact 3.9.5 in devDependencies and update the lockfile
- Reformat the repo with the pinned prettier (expected source churn)
- Move the format check after `npm install --no-package-lock` and run it
  via `npm run prettier-check` so CI uses the locally-installed pinned
  prettier


Claude-Session: https://claude.ai/code/session_01HiccCEh9mwCfVzE8qYcop1

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Cliff Hall 2026-07-17 16:23:23 -04:00 • committed by GitHub
commit fd2def684f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 16 additions and 28 deletions

View file

@ -14,9 +14,6 @@ jobs:
steps:
- uses: actions/checkout@v6
- name: Check formatting
run: npx prettier --check .
- uses: actions/setup-node@v6
with:
node-version-file: package.json
@ -26,6 +23,9 @@ jobs:
# - run: npm ci
- run: npm install --no-package-lock
- name: Check formatting
run: npm run prettier-check
- name: Check version consistency
run: npm run check-version

View file

@ -347,8 +347,7 @@ const DynamicJsonForm = forwardRef<DynamicJsonFormRef, DynamicJsonFormProps>(
// Titled single-select using oneOf/anyOf with const/title pairs
const titledOptions = (
(propSchema.oneOf ?? propSchema.anyOf) as
| (JsonSchemaType | JsonSchemaConst)[]
| undefined
(JsonSchemaType | JsonSchemaConst)[] | undefined
)?.filter((opt): opt is JsonSchemaConst => "const" in opt);
if (titledOptions && titledOptions.length > 0) {
@ -606,8 +605,7 @@ const DynamicJsonForm = forwardRef<DynamicJsonFormRef, DynamicJsonFormProps>(
const titledMulti = (
(itemSchema.anyOf ?? itemSchema.oneOf) as
| (JsonSchemaType | JsonSchemaConst)[]
| undefined
(JsonSchemaType | JsonSchemaConst)[] | undefined
)?.filter((opt): opt is JsonSchemaConst => "const" in opt);
if (titledMulti && titledMulti.length > 0) {

View file

@ -20,8 +20,7 @@ export interface ElicitationUrlRequestData extends ElicitationRequestBase {
}
export type ElicitationRequestData =
| ElicitationFormRequestData
| ElicitationUrlRequestData;
ElicitationFormRequestData | ElicitationUrlRequestData;
export interface ElicitationResponse {
action: "accept" | "decline" | "cancel";

View file

@ -30,10 +30,7 @@ export const getServerSpecificKey = (
};
export type ConnectionStatus =
| "disconnected"
| "connected"
| "error"
| "error-connecting-to-proxy";
"disconnected" | "connected" | "error" | "error-connecting-to-proxy";
export const DEFAULT_MCP_PROXY_LISTEN_PORT = "6277";

View file

@ -564,8 +564,7 @@ export function useConnection({
// Create appropriate transport
let transportOptions:
| StreamableHTTPClientTransportOptions
| SSEClientTransportOptions;
StreamableHTTPClientTransportOptions | SSEClientTransportOptions;
let serverUrl: URL;
@ -843,8 +842,7 @@ export function useConnection({
const makeTaskId = () => {
// Prefer UUID when available; otherwise fall back to a reasonably unique id.
const cryptoAny = globalThis.crypto as unknown as
| { randomUUID?: () => string }
| undefined;
{ randomUUID?: () => string } | undefined;
return (
cryptoAny?.randomUUID?.() ??
`task_${Date.now()}_${Math.random().toString(16).slice(2)}`

View file

@ -59,18 +59,14 @@ export const getMCPTaskTtl = (config: InspectorConfig): number => {
};
export const getInitialTransportType = ():
| "stdio"
| "sse"
| "streamable-http" => {
"stdio" | "sse" | "streamable-http" => {
const param = getSearchParam("transport");
if (param === "stdio" || param === "sse" || param === "streamable-http") {
return param;
}
return (
(localStorage.getItem("lastTransportType") as
| "stdio"
| "sse"
| "streamable-http") || "stdio"
"stdio" | "sse" | "streamable-http") || "stdio"
);
};

8
package-lock.json generated
View file

@ -38,7 +38,7 @@
"jest-fixed-jsdom": "^0.0.9",
"lint-staged": "^16.1.5",
"playwright": "^1.56.1",
"prettier": "^3.7.1",
"prettier": "3.9.5",
"rimraf": "^6.0.1",
"typescript": "^5.4.2"
},
@ -10908,9 +10908,9 @@
}
},
"node_modules/prettier": {
"version": "3.7.4",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz",
"integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==",
"version": "3.9.5",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.5.tgz",
"integrity": "sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg==",
"dev": true,
"license": "MIT",
"bin": {

View file

@ -73,7 +73,7 @@
"jest-fixed-jsdom": "^0.0.9",
"lint-staged": "^16.1.5",
"playwright": "^1.56.1",
"prettier": "^3.7.1",
"prettier": "3.9.5",
"rimraf": "^6.0.1",
"typescript": "^5.4.2"
},