Files
2d84c800bc perf(android): filter class pages before bridge serialization (#4791)
Filter class names at the native owner before serialization, and resume matching pages through contiguous inventory positions without a second index or query-result cache. Preserve selected source Evidence, query identity, complete top-level coverage and shared CLI/MCP behavior.

Fixes #4776.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>
2026-10-17 13:21:37 +00:00

46 lines
1.5 KiB
JavaScript

import assert from "node:assert/strict";
import { parseEvidence } from "../../../dist/domain/evidence.js";
import { requireMcpOperationResult } from "../../lib/mcp-verifier-results.mjs";
/** Compare native selection with an explicit full-inventory oracle on one live session. */
export const verifyAndroidClassSearch = async ({ client, path, sha256 }) => {
const search = async (query) => {
const response = await client.callTool(
{ name: "search_android_classes", arguments: { path, query } },
{ timeout: 150_000 },
);
const result = requireMcpOperationResult(
response,
"search_android_classes",
);
const evidence = parseEvidence(response.structuredContent);
assert.equal(evidence.subject.digest.sha256, sha256);
assert.equal(evidence.parameters.query, query);
assert.equal(result.query, query);
return result;
};
const full = await search("");
assert.equal(full.matches.length, full.total_classes);
for (const query of [
"ApiDemos",
"apidemos",
"[.*]",
"😀",
"日本語",
"\0",
"\ud800",
"\udc00",
]) {
const selected = await search(query);
assert.equal(selected.coverage, "complete");
assert.equal(selected.total_classes, full.total_classes);
assert.deepEqual(
selected.matches,
full.matches.filter((name) => name.includes(query)),
);
}
console.log(
"PASS native class search matches full inventory, including literal and UTF-16 selectors",
);
};