mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-08-12 23:29:16 +03:00
45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import {
|
|
canonicalToolTrace,
|
|
mergeToolProgressTraceLines,
|
|
mergeUniqueToolTraceLines,
|
|
} from "@/lib/tool-traces";
|
|
|
|
describe("tool trace identity", () => {
|
|
it("treats persisted and live JSON formatting as the same call", () => {
|
|
const persisted = 'web_search({"query": "site:linkedin.com/company Evomap startup", "count": 10})';
|
|
const live = 'web_search({"query":"site:linkedin.com/company Evomap startup","count":10})';
|
|
|
|
expect(canonicalToolTrace(persisted)).toBe(canonicalToolTrace(live));
|
|
expect(mergeUniqueToolTraceLines([persisted], [live])).toEqual({
|
|
traces: [persisted],
|
|
added: false,
|
|
});
|
|
});
|
|
|
|
it("keeps genuinely different calls separate", () => {
|
|
const first = 'web_search({"query":"nanobot"})';
|
|
const second = 'web_search({"query":"nanobot cloud"})';
|
|
|
|
expect(mergeUniqueToolTraceLines([first], [second])).toEqual({
|
|
traces: [first, second],
|
|
added: true,
|
|
});
|
|
});
|
|
|
|
it("replaces an empty streaming placeholder when hosted search arguments arrive", () => {
|
|
expect(mergeToolProgressTraceLines(
|
|
["web_search()"],
|
|
[{ phase: "start", call_id: "ws-1", name: "web_search", arguments: {} }],
|
|
['web_search({"query":"nanobot news"})'],
|
|
[{
|
|
phase: "end",
|
|
call_id: "ws-1",
|
|
name: "web_search",
|
|
arguments: { query: "nanobot news" },
|
|
}],
|
|
)).toEqual(['web_search({"query":"nanobot news"})']);
|
|
});
|
|
});
|