agents/agents-features/agents-features-trace/src/jvmTest/kotlin/ai/koog/agents/features/tracing/writer/TraceFeatureMessageFileWriterTest.kt [441:513]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - val agentId = "test-agent-id" val strategyName = "test-strategy" val userPrompt = "Call the dummy tool with argument: test" val systemPrompt = "Test system prompt" val assistantPrompt = "Test assistant prompt" val promptId = "Test prompt id" val mockResponse = "Return test result" // Tools val dummyTool = DummyTool() val toolRegistry = ToolRegistry { tool(dummyTool) } // Model val testModel = LLModel( provider = MockLLMProvider(), id = "test-llm-id", capabilities = emptyList(), contextLength = 1_000, ) // Prompt val expectedPrompt = Prompt( messages = listOf( systemMessage(systemPrompt), userMessage(userPrompt), assistantMessage(assistantPrompt) ), id = promptId ) val expectedResponse = assistantMessage(content = mockResponse) val strategy = strategy(strategyName) { val nodeSendInput by nodeLLMRequest("test-llm-call") val nodeExecuteTool by nodeExecuteTool("test-tool-call") val nodeSendToolResult by nodeLLMSendToolResult("test-node-llm-send-tool-result") edge(nodeStart forwardTo nodeSendInput) edge(nodeSendInput forwardTo nodeExecuteTool onToolCall { true }) edge(nodeSendInput forwardTo nodeFinish onAssistantMessage { true }) edge(nodeExecuteTool forwardTo nodeSendToolResult) edge(nodeSendToolResult forwardTo nodeFinish onAssistantMessage { true }) edge(nodeSendToolResult forwardTo nodeExecuteTool onToolCall { true }) } val mockExecutor = getMockExecutor(clock = testClock) { mockLLMToolCall(tool = dummyTool, args = DummyTool.Args("test"), toolCallId = "0") onRequestEquals userPrompt mockLLMAnswer(mockResponse) onRequestContains dummyTool.result } var runId = "" createAgent( agentId = agentId, strategy = strategy, promptId = promptId, model = testModel, userPrompt = userPrompt, systemPrompt = systemPrompt, assistantPrompt = assistantPrompt, toolRegistry = toolRegistry, promptExecutor = mockExecutor ) { install(Tracing) { writer.setMessageFilter { message -> if (message is AgentStartingEvent) { runId = message.runId - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - agents/agents-features/agents-features-trace/src/jvmTest/kotlin/ai/koog/agents/features/tracing/writer/TraceFeatureMessageLogWriterTest.kt [67:139]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - val agentId = "test-agent-id" val strategyName = "test-strategy" val userPrompt = "Call the dummy tool with argument: test" val systemPrompt = "Test system prompt" val assistantPrompt = "Test assistant prompt" val promptId = "Test prompt id" val mockResponse = "Return test result" // Tools val dummyTool = DummyTool() val toolRegistry = ToolRegistry { tool(dummyTool) } // Model val testModel = LLModel( provider = MockLLMProvider(), id = "test-llm-id", capabilities = emptyList(), contextLength = 1_000, ) // Prompt val expectedPrompt = Prompt( messages = listOf( systemMessage(systemPrompt), userMessage(userPrompt), assistantMessage(assistantPrompt) ), id = promptId ) val expectedResponse = assistantMessage(content = mockResponse) val strategy = strategy(strategyName) { val nodeSendInput by nodeLLMRequest("test-llm-call") val nodeExecuteTool by nodeExecuteTool("test-tool-call") val nodeSendToolResult by nodeLLMSendToolResult("test-node-llm-send-tool-result") edge(nodeStart forwardTo nodeSendInput) edge(nodeSendInput forwardTo nodeExecuteTool onToolCall { true }) edge(nodeSendInput forwardTo nodeFinish onAssistantMessage { true }) edge(nodeExecuteTool forwardTo nodeSendToolResult) edge(nodeSendToolResult forwardTo nodeFinish onAssistantMessage { true }) edge(nodeSendToolResult forwardTo nodeExecuteTool onToolCall { true }) } val mockExecutor = getMockExecutor(clock = testClock) { mockLLMToolCall(tool = dummyTool, args = DummyTool.Args("test"), toolCallId = "0") onRequestEquals userPrompt mockLLMAnswer(mockResponse) onRequestContains dummyTool.result } var runId = "" createAgent( agentId = agentId, strategy = strategy, promptId = promptId, model = testModel, userPrompt = userPrompt, systemPrompt = systemPrompt, assistantPrompt = assistantPrompt, toolRegistry = toolRegistry, promptExecutor = mockExecutor ) { install(Tracing) { writer.setMessageFilter { message -> if (message is AgentStartingEvent) { runId = message.runId - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -