mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-07 22:51:23 +00:00
chore: merge origin/main into main
This commit is contained in:
@@ -6,6 +6,19 @@ import {
|
||||
repairToolUseResultPairing,
|
||||
} from "./session-transcript-repair.js";
|
||||
|
||||
const TOOL_CALL_BLOCK_TYPES = new Set(["toolCall", "toolUse", "functionCall"]);
|
||||
|
||||
function getAssistantToolCallBlocks(messages: AgentMessage[]) {
|
||||
const assistant = messages[0] as Extract<AgentMessage, { role: "assistant" }> | undefined;
|
||||
if (!assistant || !Array.isArray(assistant.content)) {
|
||||
return [] as Array<{ type?: unknown; id?: unknown; name?: unknown }>;
|
||||
}
|
||||
return assistant.content.filter((block) => {
|
||||
const type = (block as { type?: unknown }).type;
|
||||
return typeof type === "string" && TOOL_CALL_BLOCK_TYPES.has(type);
|
||||
}) as Array<{ type?: unknown; id?: unknown; name?: unknown }>;
|
||||
}
|
||||
|
||||
describe("sanitizeToolUseResultPairing", () => {
|
||||
const buildDuplicateToolResultInput = (opts?: {
|
||||
middleMessage?: unknown;
|
||||
@@ -229,13 +242,7 @@ describe("sanitizeToolCallInputs", () => {
|
||||
] as unknown as AgentMessage[];
|
||||
|
||||
const out = sanitizeToolCallInputs(input);
|
||||
const assistant = out[0] as Extract<AgentMessage, { role: "assistant" }>;
|
||||
const toolCalls = Array.isArray(assistant.content)
|
||||
? assistant.content.filter((block) => {
|
||||
const type = (block as { type?: unknown }).type;
|
||||
return typeof type === "string" && ["toolCall", "toolUse", "functionCall"].includes(type);
|
||||
})
|
||||
: [];
|
||||
const toolCalls = getAssistantToolCallBlocks(out);
|
||||
|
||||
expect(toolCalls).toHaveLength(1);
|
||||
expect((toolCalls[0] as { id?: unknown }).id).toBe("call_ok");
|
||||
@@ -264,13 +271,7 @@ describe("sanitizeToolCallInputs", () => {
|
||||
] as unknown as AgentMessage[];
|
||||
|
||||
const out = sanitizeToolCallInputs(input);
|
||||
const assistant = out[0] as Extract<AgentMessage, { role: "assistant" }>;
|
||||
const toolCalls = Array.isArray(assistant.content)
|
||||
? assistant.content.filter((block) => {
|
||||
const type = (block as { type?: unknown }).type;
|
||||
return typeof type === "string" && ["toolCall", "toolUse", "functionCall"].includes(type);
|
||||
})
|
||||
: [];
|
||||
const toolCalls = getAssistantToolCallBlocks(out);
|
||||
|
||||
expect(toolCalls).toHaveLength(1);
|
||||
expect((toolCalls[0] as { name?: unknown }).name).toBe("read");
|
||||
@@ -288,13 +289,7 @@ describe("sanitizeToolCallInputs", () => {
|
||||
] as unknown as AgentMessage[];
|
||||
|
||||
const out = sanitizeToolCallInputs(input, { allowedToolNames: ["read"] });
|
||||
const assistant = out[0] as Extract<AgentMessage, { role: "assistant" }>;
|
||||
const toolCalls = Array.isArray(assistant.content)
|
||||
? assistant.content.filter((block) => {
|
||||
const type = (block as { type?: unknown }).type;
|
||||
return typeof type === "string" && ["toolCall", "toolUse", "functionCall"].includes(type);
|
||||
})
|
||||
: [];
|
||||
const toolCalls = getAssistantToolCallBlocks(out);
|
||||
|
||||
expect(toolCalls).toHaveLength(1);
|
||||
expect((toolCalls[0] as { name?: unknown }).name).toBe("read");
|
||||
|
||||
Reference in New Issue
Block a user