mirror of
https://github.com/morluto/rea.git
synced 2026-11-03 05:16:16 +00:00
* test: strengthen and prune audited test coverage * test: require delivered DeepSeek skill instructions * test: keep schema fixture types private * test: verify Gemini receives skill instructions * test: bind Qwen skill evidence to its tool result * test: report NativeAOT verifier checks precisely * fix: verify Ghidra cleanup paths reliably * fix: verify Command Code skill activation * test: tighten cleanup and fixture checks * test: verify packet capture evidence is recorded * fix: report HTTP3 capture provenance accurately * test: preserve resource coverage through MCP * test: prune repeated assertions and retain cancellation identity * fix: validate client verifier fixture paths * test: skip Copilot verifier cases on Windows * test: keep verifier setup target relative
35 lines
2.8 KiB
JavaScript
35 lines
2.8 KiB
JavaScript
import { registerHooks } from "node:module";
|
|
const model = `
|
|
const identity={sha256:'a'.repeat(64),bytes:1};
|
|
export function result(operation,input) {
|
|
const path=input.path;const target={path,...identity};
|
|
if(operation==='identify_flutter_build') return {target,flutter_detected:true,coverage:'complete',abis:[{abi:'x86_64',libapp:{present:true,elf_header_valid:true,snapshot_hash_sources:2,snapshot_hash:'hash',sha256:'b'.repeat(64),bytes:100},libflutter:{present:true,build_id:'12345678',build_id_candidates:['12345678']}}]};
|
|
const abi=input.abi ?? (process.env.REA_FLUTTER_PROBE === 'wrong' ? 'ghost' : 'x86_64');
|
|
return {target,abi,coverage:'complete',libapp:{coverage:'complete',sha256:'b'.repeat(64),bytes:100,snapshot_hash_sources:2,snapshot_hash:'hash',sections:['_kDartVmSnapshotData','_kDartVmSnapshotInstructions','_kDartIsolateSnapshotData','_kDartIsolateSnapshotInstructions'].map(name=>({name,offset:0,size:64,magic_valid:true,kind:3,header_length:48}))},string_pool:{coverage:'complete',package_uri_count_at_least:1,dart_uri_count_at_least:1}};
|
|
}
|
|
export function envelope(op,input){const resultValue=result(op,input);return {normalized_result:resultValue,subject:{local_path:input.path,digest:{sha256:identity.sha256}},limitations:[]};}
|
|
`;
|
|
const modelUrl = "data:text/javascript," + encodeURIComponent(model);
|
|
const mocks = {
|
|
"node:child_process": `import {promisify} from 'node:util';import {envelope} from ${JSON.stringify(modelUrl)};export const execFile=Object.assign(()=>{}, {[promisify.custom]:async (_cmd,args)=>{const op=args[1].replaceAll('-','_');const index=args.indexOf('--abi');const input={path:args[2],...(index<0?{}:{abi:args[index+1]})};return {stdout:JSON.stringify(envelope(op,input)),stderr:''};}});`,
|
|
"@modelcontextprotocol/client": `import {envelope} from ${JSON.stringify(modelUrl)};export class Client {async connect(){} async close(){} async callTool({name,arguments:input}){return {structuredContent:envelope(name,input)}}}`,
|
|
"@modelcontextprotocol/client/stdio": `export class StdioClientTransport {async close(){}}`,
|
|
"../dist/contracts/toolContracts.js": `export const toolContract=()=>({outputSchema:{parse:value=>value}});`,
|
|
"../dist/artifacts/ArtifactResourceScope.js": `export class ArtifactResourceScope {async close(){}}`,
|
|
"./lib/mcp-verifier-results.mjs": `export const requireMcpOutput=response=>response.structuredContent;`,
|
|
"./lib/verifier-file-resources.mjs": `export const hashVerifierFile=async()=>({sha256:'a'.repeat(64),bytes:1});`,
|
|
};
|
|
registerHooks({
|
|
resolve(specifier, context, next) {
|
|
if (
|
|
context.parentURL?.endsWith("/scripts/verify-flutter.mjs") &&
|
|
Object.hasOwn(mocks, specifier)
|
|
)
|
|
return {
|
|
shortCircuit: true,
|
|
url: "data:text/javascript," + encodeURIComponent(mocks[specifier]),
|
|
};
|
|
return next(specifier, context);
|
|
},
|
|
});
|