fix: repair the static-check failures on the default branch (#2895)

* fix: repair the static-check failures on the default branch

The default branch fails its own required `Static checks` job three ways, so
every pull request reports that job as failed regardless of its own change.

- `npm run format:check` reports `src/domain/functionComparison.test.ts` and
  `src/ida/IdaOperationRunner.ts`.
- `npm run lint` reports a duplicate `import { join } from "node:path"` in
  `tests/boundary/mcp/ghidraInventoryMcp.test.ts` (lines 4 and 17).
- `npm run typecheck` reports `format: "devin"` missing from the client format
  union in `src/application/SupportedClients.ts`, and an unchecked index in
  `tests/boundary/cli/clientProfileLifecycle.test.ts`, whose pair array is
  inferred as `string[][]`.

Apply the pinned formatter, drop the duplicate import, list the `"devin"` format
that its own definition already uses, and mark the pair array `as const`.

Validation: `npm run check:fast` and `npm run format:check` pass.

* fix(setup): keep Devin on the JSON configuration dialect

---------

Co-authored-by: 吴佳浩 <wujiahao@supremind.com>
Co-authored-by: morluto <76467478+morluto@users.noreply.github.com>
This commit is contained in:
吴佳浩Alben 2026-10-14 00:31:27 +08:00 committed by GitHub
parent 7e3a198638
commit df3d96da80
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 7 additions and 5 deletions

View File

@ -539,7 +539,7 @@ export const SUPPORTED_CLIENT_DEFINITIONS = [
configPath: ({ home, platform, env }: ClientPathContext) =>
join(devinDirectory({ home, platform, env }), "mcp_config.json"),
markerPath: devinDirectory,
format: "devin",
format: "json",
},
{
name: "opencode",

View File

@ -175,7 +175,9 @@ describe("function comparison normalized identity", () => {
it("retains unresolved call details alongside missing facet coverage", () => {
const value: Record<string, unknown> = {
...dossier("return 0;", "0x1000"),
unresolved_calls: [{ address: "0x1010", reason: "Unknown indirect target" }],
unresolved_calls: [
{ address: "0x1010", reason: "Unknown indirect target" },
],
};
delete value.facet_availability;
const legacy = observe("a", functionDossierSchema.parse(value), "ida");

View File

@ -503,7 +503,8 @@ export class IdaOperationRunner {
items: [],
availability: {
available: false,
reason: "Upstream xrefs do not establish direct caller relationships.",
reason:
"Upstream xrefs do not establish direct caller relationships.",
},
coverage: {
status: "unknown",

View File

@ -290,7 +290,7 @@ cliTest("uninstall names each retained skill directory", async ({ cli }) => {
for (const [client, directory] of [
["shared", shared],
["claude_code", claude],
]) {
] as const) {
expect(skill?.detail).toContain(
`${client} (${directory}): retained (Skill manifest is not REA-owned.)`,
);

View File

@ -14,7 +14,6 @@ import {
} from "./ghidraMcpHarness.js";
import { spawn } from "node:child_process";
import { mkdir } from "node:fs/promises";
import { join } from "node:path";
import { fileURLToPath } from "node:url";
import { Client, InMemoryTransport } from "@modelcontextprotocol/client";
import { GhidraClient } from "../../../src/ghidra/GhidraClient.js";