/** * TD-1144 — unknown argument keys must be REJECTED, not silently stripped. * * WHY THIS FILE EXISTS SEPARATELY FROM tools.test.ts * * tools.test.ts captures handlers through a fake server and invokes them directly. * That is the right shape for handler-contract tests, but it means the fake NEVER * PARSES ANYTHING — so the property under test here (does the argument schema reject * an unrecognized key?) is structurally invisible to it. A guard that runs beside the * validation layer instead of through it cannot see this bug: it is the same * merge≠live / built≠loaded shape the ticket itself is about, one layer down. * * So this suite drives a REAL `McpServer` through a REAL client transport — the same * `getZodSchemaObject` → `normalizeObjectSchema` → `safeParseAsync` path a live * `memory_pulse` call takes. * * NON-VACUITY IS BUILT IN. A control tool is registered on the same server with the * OLD `server.tool(name, desc, rawShape, handler)` API and asserted to ACCEPT the very * key every real tool rejects. If someone reverts strictRegistrar, the control and the * real tools converge and the "control still strips" assertion is what tells you the * suite was measuring a real difference rather than passing by construction. * * Run: npx tsx packages/memory-mcp/src/tools.strict.test.ts */ export {}; //# sourceMappingURL=tools.strict.test.d.ts.map