| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import { describe, expect, test } from "bun:test"
- import { LLM } from "../../src/session/llm"
- import type { ModelMessage } from "ai"
- describe("session.llm.hasToolCalls", () => {
- test("returns false for empty messages array", () => {
- expect(LLM.hasToolCalls([])).toBe(false)
- })
- test("returns false for messages with only text content", () => {
- const messages: ModelMessage[] = [
- {
- role: "user",
- content: [{ type: "text", text: "Hello" }],
- },
- {
- role: "assistant",
- content: [{ type: "text", text: "Hi there" }],
- },
- ]
- expect(LLM.hasToolCalls(messages)).toBe(false)
- })
- test("returns true when messages contain tool-call", () => {
- const messages = [
- {
- role: "user",
- content: [{ type: "text", text: "Run a command" }],
- },
- {
- role: "assistant",
- content: [
- {
- type: "tool-call",
- toolCallId: "call-123",
- toolName: "bash",
- },
- ],
- },
- ] as ModelMessage[]
- expect(LLM.hasToolCalls(messages)).toBe(true)
- })
- test("returns true when messages contain tool-result", () => {
- const messages = [
- {
- role: "tool",
- content: [
- {
- type: "tool-result",
- toolCallId: "call-123",
- toolName: "bash",
- },
- ],
- },
- ] as ModelMessage[]
- expect(LLM.hasToolCalls(messages)).toBe(true)
- })
- test("returns false for messages with string content", () => {
- const messages: ModelMessage[] = [
- {
- role: "user",
- content: "Hello world",
- },
- {
- role: "assistant",
- content: "Hi there",
- },
- ]
- expect(LLM.hasToolCalls(messages)).toBe(false)
- })
- test("returns true when tool-call is mixed with text content", () => {
- const messages = [
- {
- role: "assistant",
- content: [
- { type: "text", text: "Let me run that command" },
- {
- type: "tool-call",
- toolCallId: "call-456",
- toolName: "read",
- },
- ],
- },
- ] as ModelMessage[]
- expect(LLM.hasToolCalls(messages)).toBe(true)
- })
- })
|