Files
dev/third_party/pi/packages/coding-agent/test/experimental-tool-strict-mode.test.ts
alexion 4def357d09 chore(vendor): import pi 0.85.1
Imported as a linear vendor commit so forge rebases do not replay the upstream root tree.

git-subtree-dir: third_party/pi

git-subtree-split: d981de1229ef899957bbe968bc8dcda02a21f477
2026-09-14 10:48:47 -04:00

41 lines
1.3 KiB
TypeScript

import { afterEach, describe, expect, it } from "vitest";
import {
createBashToolDefinition,
createEditToolDefinition,
createPowerShellToolDefinition,
createReadToolDefinition,
createWriteToolDefinition,
} from "../src/core/tools/index.ts";
function createBuiltInTools() {
return [
createReadToolDefinition(process.cwd()),
createBashToolDefinition(process.cwd()),
createPowerShellToolDefinition(process.cwd()),
createEditToolDefinition(process.cwd()),
createWriteToolDefinition(process.cwd()),
];
}
describe("experimental strict built-in tools", () => {
const originalPiExperimental = process.env.PI_EXPERIMENTAL;
afterEach(() => {
if (originalPiExperimental === undefined) delete process.env.PI_EXPERIMENTAL;
else process.env.PI_EXPERIMENTAL = originalPiExperimental;
});
it("only enables strict-prefer sampling in experimental mode", () => {
delete process.env.PI_EXPERIMENTAL;
const normalTools = createBuiltInTools();
process.env.PI_EXPERIMENTAL = "1";
const experimentalTools = createBuiltInTools();
for (const [index, tool] of experimentalTools.entries()) {
expect(tool.constrainedSampling).toEqual({ type: "json_schema", strict: "prefer" });
expect(tool.parameters).toEqual(normalTools[index]?.parameters);
expect(normalTools[index]?.constrainedSampling).toBeUndefined();
}
});
});