Files
openclaw/src/agents/pi-embedded-runner.splitsdktools.test.ts
2026-04-23 06:02:26 +01:00

57 lines
1.5 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { splitSdkTools } from "./pi-embedded-runner.js";
import {
collectRegisteredToolNames,
toSessionToolAllowlist,
} from "./pi-embedded-runner/tool-name-allowlist.js";
import { createStubTool } from "./test-helpers/pi-tool-stubs.js";
describe("splitSdkTools", () => {
const tools = [
createStubTool("read"),
createStubTool("exec"),
createStubTool("edit"),
createStubTool("write"),
createStubTool("browser"),
];
it("routes all tools to customTools when sandboxed", () => {
const { customTools } = splitSdkTools({
tools,
sandboxEnabled: true,
});
expect(customTools.map((tool) => tool.name)).toEqual([
"read",
"exec",
"edit",
"write",
"browser",
]);
});
it("routes all tools to customTools even when not sandboxed", () => {
const { customTools } = splitSdkTools({
tools,
sandboxEnabled: false,
});
expect(customTools.map((tool) => tool.name)).toEqual([
"read",
"exec",
"edit",
"write",
"browser",
]);
});
it("keeps OpenClaw-managed custom tools in Pi's session allowlist", () => {
const { customTools } = splitSdkTools({
tools: [createStubTool("read"), createStubTool("sessions_spawn")],
sandboxEnabled: true,
});
const allowlist = toSessionToolAllowlist(collectRegisteredToolNames(customTools));
expect(customTools.map((tool) => tool.name)).toContain("sessions_spawn");
expect(allowlist).toContain("sessions_spawn");
});
});