mirror of
https://github.com/morluto/rea.git
synced 2026-10-29 10:55:57 +00:00
Hosts forward every tool's input schema to the model on each request. Seventeen tools advertised a canonical example that embedded a complete producer Evidence record, up to 22 KB each, accounting for 116 KB of the 450 KB of advertised input schemas. Advertised examples now show an embedded Evidence record as its exact retained-evidence reference when the canonical input accepts one, and omit an example that can only carry inline Evidence. Canonical contract examples, their executable tests, and validation are unchanged. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
81 lines
2.7 KiB
TypeScript
81 lines
2.7 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { z } from "zod";
|
|
|
|
import { advertisedInputExamples } from "./advertisedInputExamples.js";
|
|
import { evidenceInputSchema } from "./evidenceInputContracts.js";
|
|
import { JAVASCRIPT_FEATURE_TRACE_EXAMPLE } from "./javascript/javascriptApplicationWorkflowExamples.js";
|
|
import { TOOL_CONTRACTS } from "./toolContracts.js";
|
|
import { evidenceSchema } from "../domain/evidence.js";
|
|
import type { JsonValue } from "../domain/jsonValue.js";
|
|
|
|
const evidence = JAVASCRIPT_FEATURE_TRACE_EXAMPLE.application;
|
|
const retained = {
|
|
kind: "retained-evidence",
|
|
evidence_id: evidence.evidence_id,
|
|
} as const;
|
|
|
|
const embedsEvidence = (value: JsonValue): boolean => {
|
|
if (Array.isArray(value)) return value.some(embedsEvidence);
|
|
if (value === null || typeof value !== "object") return false;
|
|
return (
|
|
evidenceSchema.safeParse(value).success ||
|
|
Object.values(value).some(embedsEvidence)
|
|
);
|
|
};
|
|
|
|
describe("advertised input examples", () => {
|
|
it("shows embedded Evidence as its exact retained reference", () => {
|
|
const inputSchema = z.strictObject({
|
|
left: evidenceInputSchema,
|
|
right: z.array(evidenceInputSchema),
|
|
label: z.string(),
|
|
});
|
|
expect(
|
|
advertisedInputExamples({
|
|
inputSchema,
|
|
examples: [
|
|
{
|
|
title: "Inline",
|
|
input: { left: evidence, right: [evidence], label: "a" },
|
|
},
|
|
{
|
|
title: "Retained",
|
|
input: { left: retained, right: [retained], label: "a" },
|
|
},
|
|
{ title: "Other", input: { left: retained, right: [], label: "b" } },
|
|
],
|
|
}),
|
|
).toEqual([
|
|
{ left: retained, right: [retained], label: "a" },
|
|
{ left: retained, right: [], label: "b" },
|
|
]);
|
|
});
|
|
|
|
it("leaves the advertisement when only inline Evidence is accepted", () => {
|
|
const inputSchema = z.strictObject({
|
|
left: z.union([evidenceSchema, z.string()]),
|
|
});
|
|
expect(
|
|
advertisedInputExamples({
|
|
inputSchema,
|
|
examples: [
|
|
{ title: "Inline", input: { left: evidence } },
|
|
{ title: "Literal", input: { left: "value" } },
|
|
],
|
|
}),
|
|
).toEqual([{ left: "value" }]);
|
|
});
|
|
|
|
it("advertises only distinct canonical inputs without complete Evidence", () => {
|
|
for (const contract of TOOL_CONTRACTS) {
|
|
const examples = advertisedInputExamples(contract);
|
|
const serialized = examples.map((example) => JSON.stringify(example));
|
|
expect(new Set(serialized).size, contract.name).toBe(examples.length);
|
|
for (const example of examples) {
|
|
expect(contract.inputSchema.safeParse(example).success).toBe(true);
|
|
expect(embedsEvidence(example), contract.name).toBe(false);
|
|
}
|
|
}
|
|
});
|
|
});
|