Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions src/commands/guided.ts
Original file line number Diff line number Diff line change
Expand Up @@ -413,11 +413,16 @@ export function buildReviewLines(
}
}
lines.push(pad("manifest.json", "hashes for every file above", ""));
// The manifest's MCP entries leave the machine too (names and sanitized
// URLs, never secrets), so the accounting names them — the drawing's
// "mcp servers recorded by name" line, restored.
const mcpNames = plan.manifest.mcpServers.map((server) => server.name);
lines.push("");
lines.push(
`hooks: ${hooks.length > 0 ? hooks.join(", ") : "none"} | plugins: ${
plugins.length > 0 ? plugins.join(", ") : "none"
} | ${excludedCount} excluded item${excludedCount === 1 ? "" : "s"} stayed behind`,
`hooks: ${hooks.length > 0 ? hooks.join(", ") : "none"} | plugins: ${plugins.length > 0 ? plugins.join(", ") : "none"}`,
);
lines.push(
`mcp servers recorded by name: ${mcpNames.length > 0 ? mcpNames.join(", ") : "none"} | ${excludedCount} excluded item${excludedCount === 1 ? "" : "s"} stayed behind`,
);
return lines;
}
Expand Down
7 changes: 4 additions & 3 deletions test/guided.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,7 @@ test("the review tree aggregates skill dirs, names config keys, and accounts for
entry("codex/config.toml", 'model = "gpt"\n'),
entry("codex/skills/hermes/SKILL.md", "# h\n"),
],
manifest: {},
manifest: { mcpServers: [{ name: "linear" }] },
skipped: [],
secretFindings: [],
diagnostics: [],
Expand All @@ -437,7 +437,8 @@ test("the review tree aggregates skill dirs, names config keys, and accounts for
assert.match(text, /config\.toml\s+model/);
assert.match(text, /hermes\/\s+1 files/);
assert.match(text, /manifest\.json\s+hashes for every file above/);
assert.match(text, /hooks: hooks\.PostToolUse \| plugins: none \| 5 excluded items stayed behind/);
assert.match(text, /hooks: hooks\.PostToolUse \| plugins: none/);
assert.match(text, /mcp servers recorded by name: linear \| 5 excluded items stayed behind/);
});

test("the review tree never prints TOML values, section headers, or array elements", async () => {
Expand All @@ -453,7 +454,7 @@ test("the review tree never prints TOML values, section headers, or array elemen
].join("\n");
const plan = {
entries: [{ path: "codex/config.toml", content: Buffer.from(toml), executable: false }],
manifest: {},
manifest: { mcpServers: [] },
skipped: [],
secretFindings: [],
diagnostics: [],
Expand Down