Per user decision: publishing the sensitive IP pattern blocklist via public scanner is leak of the blocklist itself (attack surface). genesis-scan remains in PROJECT-E (private); user-global ~/.claude/hooks/genesis-leak-guard.sh (runtime hook) separate. Deleted: - _primitives/_rust/genesis-scan/ (whole crate, 5 files) - hooks/git-pre-commit-genesis.sh (scanner companion) Modified: - workspace Cargo.toml -1 member (24→23) - MANIFEST.toml — removed [primitive.genesis-scan] + core/full profile refs - .github/workflows/ci.yml — removed genesis-scan job - README.md — 7 count/description edits (24→23 rust, 10→9 hooks, 37→36 full) - install.sh — 5 edits (--help + menus) - mcp-server tool-registry.ts + test — scanner removed from MCP surface - kei-sleep-queue.sh — removed scan_prompt() pre-submit hook - 2 sleep-on-it skill phases — removed genesis-scan references Tests: 160 Rust (was 167, -7 genesis-scan tests as expected), 24 assembler unchanged.
21 lines
782 B
TypeScript
21 lines
782 B
TypeScript
import { describe, it, expect } from "vitest";
|
|
import { McpServer } from "../src/server.js";
|
|
|
|
describe("server handshake + tool listing", () => {
|
|
it("listTools returns every primitive plus kei", () => {
|
|
const srv = new McpServer({ rustBinDir: "/tmp/stub" });
|
|
const tools = srv.listTools();
|
|
const names = new Set(tools.map((t) => t.name));
|
|
expect(names.has("kei")).toBe(true);
|
|
expect(names.has("kei-ledger")).toBe(true);
|
|
expect(names.has("kei-memory")).toBe(true);
|
|
expect(tools.length).toBeGreaterThanOrEqual(14);
|
|
});
|
|
|
|
it("every listed tool has a non-empty description", () => {
|
|
const srv = new McpServer({ rustBinDir: "/tmp/stub" });
|
|
for (const t of srv.listTools()) {
|
|
expect(t.description.length).toBeGreaterThan(0);
|
|
}
|
|
});
|
|
});
|