mirror of
https://github.com/morluto/rea
synced 2026-10-27 22:45:19 -04:00
fix(experiment): exhaust native baseline catalog pages
Derive missing-tool coverage only after all catalog pages are examined, reject cursor loops and omit unused result schemas in name-only generation while honoring explicit caller settings. The final actual MCP generator preserves the measured 16-tool selection and verifies owned cleanup under the resource bounds. Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com> Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>
This commit is contained in:
@@ -29,16 +29,32 @@ const client = new Client({
|
||||
const transport = new StdioClientTransport({
|
||||
command: process.execPath,
|
||||
args: [resolve("scripts/rea.mjs"), "mcp"],
|
||||
env: { ...process.env },
|
||||
env: {
|
||||
...process.env,
|
||||
// This pass needs tool identities, not large result schemas. Keep any
|
||||
// explicit caller profile; the measured runner already selects off.
|
||||
REA_MCP_OUTPUT_SCHEMA_PROFILE:
|
||||
process.env.REA_MCP_OUTPUT_SCHEMA_PROFILE ?? "off",
|
||||
},
|
||||
stderr: "pipe",
|
||||
});
|
||||
let names;
|
||||
try {
|
||||
await client.connect(transport);
|
||||
const { tools } = await client.listTools();
|
||||
names = tools
|
||||
.filter((tool) => desired.has(tool.name))
|
||||
.map((tool) => tool.name);
|
||||
names = [];
|
||||
const cursors = new Set();
|
||||
let cursor;
|
||||
do {
|
||||
assert.ok(!cursors.has(cursor), "Catalog pagination did not advance");
|
||||
cursors.add(cursor);
|
||||
const page = await client.listTools(cursor === undefined ? {} : { cursor });
|
||||
names.push(
|
||||
...page.tools
|
||||
.filter((tool) => desired.has(tool.name))
|
||||
.map((tool) => tool.name),
|
||||
);
|
||||
cursor = page.nextCursor;
|
||||
} while (cursor !== undefined);
|
||||
assert.equal(
|
||||
new Set(names).size,
|
||||
names.length,
|
||||
|
||||
Reference in New Issue
Block a user