Files
rea/src/domain/analysisView/evmInterfaceView.ts
T
郭立 Guo Li 7590b50801 perf(schema): reduce retained integer validator allocations (#4360)
Construct integer formats directly while preserving bounds, refinements, metadata and current shared schema owners. Keep Incur-dependent CLI numeric coercion declarations unchanged.

Verify canonical advertisements, 126 numeric boundary cases, 974 actual CLI parser cases, broad source tests and real public-artifact SDK workflows. Record 72 normal tasks and 12 separate owned-inspector heap diagnostics with whole-family resource bounds; distinguish SDK spans and asymmetric audit overhead. Generate numerical report sections from receipts and reject stale tables through documentation conformance checks.

Closes #6236. Current-head CI and Greptile pass; actionable review findings are addressed. Codex review was unavailable due repository usage limits.
2026-10-22 05:11:08 +00:00

136 lines
4.7 KiB
TypeScript

import { analysisViewInputError } from "./analysisViewErrors.js";
import { z } from "zod";
import type { AnalysisError } from "../analysisErrorBase.js";
import { uniqueSorted } from "../canonicalOrdering.js";
import { evmInterfaceSchema } from "../evm/evmInterface.js";
import { err, ok, type Result } from "../result.js";
import { parseAnalysisViewResult } from "./analysisViewParent.js";
import type {
AnalysisViewParent,
AnalysisViewRequest,
UnsignedAnalysisView,
} from "./analysisView.js";
import {
completeWithinViewCoverage,
pageViewCoverage,
} from "./analysisViewCoverage.js";
import { analysisTextPage } from "./analysisViewText.js";
/** Retained inferred candidates or exact text; offsets for text count UTF-16 code units. */
export const evmViewRequestSchema = z.strictObject({
kind: z.literal("evm"),
facet: z.enum(["functions", "bytecode_hex", "stdout", "stderr"]),
offset: z.int().nonnegative().default(0),
limit: z.int().positive().default(64),
});
export const evmViewItemSchema = z.union([
evmInterfaceSchema.shape.functions,
z.strictObject({ text: z.string(), unit: z.literal("utf16-code-units") }),
]);
/** Complete inferred interface facts without the unrequested hex or duplicated stdout. */
export const evmSummarySchema = z.strictObject({
artifact: evmInterfaceSchema.shape.artifact,
bytecode: evmInterfaceSchema.shape.bytecode.omit({ hex: true }),
evidence_kind: evmInterfaceSchema.shape.evidence_kind,
functions: evmInterfaceSchema.shape.functions,
discovery_completeness: evmInterfaceSchema.shape.discovery_completeness,
runtime_execution: evmInterfaceSchema.shape.runtime_execution,
diagnostics: evmInterfaceSchema.shape.diagnostics
.omit({ stdout: true })
.extend({
stdout_code_units: z.int().nonnegative(),
}),
limitations: evmInterfaceSchema.shape.limitations,
});
/** Select already authenticated producer facts; no interpreter or provider is invoked. */
export const projectEvmInterfaceView = (
parent: AnalysisViewParent,
view: AnalysisViewRequest,
): Result<UnsignedAnalysisView, AnalysisError> => {
if (view.kind !== "summary" && view.kind !== "evm")
return err(
analysisViewInputError([
{
path: ["view"],
reason: "invalid_value",
message: "EVM Evidence supports summary and evm views.",
},
]),
);
const parsed = parseAnalysisViewResult(evmInterfaceSchema, parent);
if (!parsed.ok) return parsed;
const report = parsed.value;
if (
parent.subject == null ||
parent.subject.format !== "file" ||
parent.subject.local_path !== report.artifact.path ||
parent.subject.digest.sha256 !== report.artifact.sha256
)
return err(
analysisViewInputError([
{
path: ["source", "subject"],
reason: "invalid_value",
message:
"EVM parent subject must identify the report's exact carrier path and SHA-256.",
},
]),
);
const shared = {
parent_evidence_id: parent.evidenceId,
parent_operation: "inspect_evm_interface" as const,
parent_digest: parent.evidenceId.slice(3),
artifact: { path: report.artifact.path, sha256: report.artifact.sha256 },
limitations: uniqueSorted([...parent.limitations, ...report.limitations]),
unknowns: [
"Candidates remain inferred; discovery completeness, bytecode kind, hardfork and deployment authenticity are unknown. Runtime execution was not performed.",
],
};
if (view.kind === "summary") {
const { hex: _hex, ...bytecode } = report.bytecode;
const { stdout, ...diagnostics } = report.diagnostics;
return ok({
kind: "summary",
view,
...shared,
summary: {
artifact: report.artifact,
bytecode,
evidence_kind: report.evidence_kind,
functions: report.functions,
discovery_completeness: report.discovery_completeness,
runtime_execution: report.runtime_execution,
diagnostics: { ...diagnostics, stdout_code_units: stdout.length },
limitations: report.limitations,
},
coverage: completeWithinViewCoverage(
report.functions.length,
report.functions.length,
),
});
}
if (view.facet === "functions") {
const item = report.functions.slice(view.offset, view.offset + view.limit);
return ok({
kind: "evm",
view,
item,
...shared,
coverage: pageViewCoverage(
view.offset,
item.length,
report.functions.length,
),
});
}
const text =
view.facet === "bytecode_hex"
? report.bytecode.hex
: report.diagnostics[view.facet];
const page = analysisTextPage(text, view.offset, view.limit, view.facet);
return page.ok ? ok({ kind: "evm", view, ...page.value, ...shared }) : page;
};