Files
openclaw/src/agents/pi-embedded-runner/extra-params.zai-tool-stream.test.ts
rabsef-bicrym ff47876e61 fix: carry observed overflow token counts into compaction (#40357)
Merged via squash.

Prepared head SHA: b99eed4329bda45083cdedc2386c2c4041c034be
Co-authored-by: rabsef-bicrym <52549148+rabsef-bicrym@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-03-12 06:58:42 -07:00

94 lines
2.5 KiB
TypeScript

import type { StreamFn } from "@mariozechner/pi-agent-core";
import type { Context, Model, SimpleStreamOptions } from "@mariozechner/pi-ai";
import { describe, expect, it, vi } from "vitest";
import { applyExtraParamsToAgent } from "./extra-params.js";
// Mock streamSimple for testing
vi.mock("@mariozechner/pi-ai", () => ({
streamSimple: vi.fn(() => ({
push: vi.fn(),
result: vi.fn(),
})),
}));
type ToolStreamCase = {
applyProvider: string;
applyModelId: string;
model: Model<"openai-completions">;
cfg?: Parameters<typeof applyExtraParamsToAgent>[1];
options?: SimpleStreamOptions;
};
function runToolStreamCase(params: ToolStreamCase) {
const payload: Record<string, unknown> = { model: params.model.id, messages: [] };
const baseStreamFn: StreamFn = (model, _context, options) => {
options?.onPayload?.(payload);
return {} as ReturnType<StreamFn>;
};
const agent = { streamFn: baseStreamFn };
applyExtraParamsToAgent(agent, params.cfg, params.applyProvider, params.applyModelId);
const context: Context = { messages: [] };
void agent.streamFn?.(params.model, context, params.options ?? {});
return payload;
}
describe("extra-params: Z.AI tool_stream support", () => {
it("injects tool_stream=true for zai provider by default", () => {
const payload = runToolStreamCase({
applyProvider: "zai",
applyModelId: "glm-5",
model: {
api: "openai-completions",
provider: "zai",
id: "glm-5",
} as Model<"openai-completions">,
});
expect(payload.tool_stream).toBe(true);
});
it("does not inject tool_stream for non-zai providers", () => {
const payload = runToolStreamCase({
applyProvider: "openai",
applyModelId: "gpt-5",
model: {
api: "openai-completions",
provider: "openai",
id: "gpt-5",
} as Model<"openai-completions">,
});
expect(payload).not.toHaveProperty("tool_stream");
});
it("allows disabling tool_stream via params", () => {
const payload = runToolStreamCase({
applyProvider: "zai",
applyModelId: "glm-5",
model: {
api: "openai-completions",
provider: "zai",
id: "glm-5",
} as Model<"openai-completions">,
cfg: {
agents: {
defaults: {
models: {
"zai/glm-5": {
params: {
tool_stream: false,
},
},
},
},
},
},
});
expect(payload).not.toHaveProperty("tool_stream");
});
});