Compare commits

...
Author SHA1 Message Date
Cursor Agent d5ec547a91 test(cli): type the retained skill directory pairs
noUncheckedIndexedAccess treats the unlabeled pair list as an open array, so the directory passed to join was string or undefined.
2026-10-13 16:02:11 +00:00
Cursor Agent d31485fd2a test(ghidra): drop the duplicated path join import
The inventory MCP test imported join twice, which fails lint on current main.
2026-10-13 16:00:50 +00:00
Cursor Agent 0e6d8ed90f fix(setup): keep Devin configuration JSON-formatted
The empty DSH_HOME fix also changed Devin's declared format to "devin", which is not a configuration format and stops the typecheck. Devin still writes mcp_config.json.
2026-10-13 15:59:48 +00:00
3 changed files with 4 additions and 4 deletions
+1 -1
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",
@@ -287,10 +287,11 @@ cliTest("uninstall names each retained skill directory", async ({ cli }) => {
};
const skill = report.items?.find(({ name }) => name === "skill");
expect(skill?.status).toBe("retained");
for (const [client, directory] of [
const retainedDirectories = [
["shared", shared],
["claude_code", claude],
]) {
] as const;
for (const [client, directory] of retainedDirectories) {
expect(skill?.detail).toContain(
`${client} (${directory}): retained (Skill manifest is not REA-owned.)`,
);
@@ -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";