Skip to content

flush last text chunk as print mode event #3560

flush last text chunk as print mode event

flush last text chunk as print mode event #3560

Triggered via push October 3, 2025 21:59
Status Failure
Total duration 5m 4s
Artifacts

ci.yml

on: push
build-and-check
2m 31s
build-and-check
Matrix: test-integration
Matrix: test
Fit to window
Zoom out
Zoom in

Annotations

10 errors and 4 warnings
error: expect(received).toEqual(expected): backend/src/__tests__/xml-stream-parser.test.ts#L611
+ [ + "" + ] - [] - Expected - 1 + Received + 3 at <anonymous> (/home/runner/work/***/***/backend/src/__***s__/xml-stream-parser.***.ts:611:20)
error: expect(received).toEqual(expected): backend/src/__tests__/xml-stream-parser.test.ts#L500
[ "Some text before", "<***_tool_call>\n{\n \"cb_tool_name\": \"***_tool\",\n \"param1\": \"value1\"\n}\n</***_tool_call>", + "Some text after", + "Some text after\"cb_easp\": ***\n}\n</***_tool_call>", + "\"cb_easp\": ***\n}\n</***_tool_call>" - "Some text after" ] - Expected - 1 + Received + 3 at <anonymous> (/home/runner/work/***/***/backend/src/__***s__/xml-stream-parser.***.ts:500:20)
error: expect(received).toEqual(expected): backend/src/__tests__/xml-stream-parser.test.ts#L433
[ + "<***_tool_call>\n{\n \"cb_tool_name\": \"complex_tool\",\n \"array_param\": [\"item1\", \"item2\"],\n \"object_param\": {\"nested\": \"value\"},\n \"boolean_param\": ***,\n \"number_param\": 42\n}\n</***_tool_call>", + "\"cb_easp\": ***\n}\n</***_tool_call>", + "\"cb_easp\": ***\n}\n</***_tool_call>" - "<***_tool_call>\n{\n \"cb_tool_name\": \"complex_tool\",\n \"array_param\": [\"item1\", \"item2\"],\n \"object_param\": {\"nested\": \"value\"},\n \"boolean_param\": ***,\n \"number_param\": 42\n}\n</***_tool_call>" ] - Expected - 1 + Received + 3 at <anonymous> (/home/runner/work/***/***/backend/src/__***s__/xml-stream-parser.***.ts:433:20)
error: expect(received).toEqual(expected): backend/src/__tests__/xml-stream-parser.test.ts#L358
[ + "<***_tool_call>\n{\n \"cb_tool_name\": \"unknown_tool\",\n \"param1\": \"value1\"\n}\n</***_tool_call>", + "\"cb_easp\": ***\n}\n</***_tool_call>", + "\"cb_easp\": ***\n}\n</***_tool_call>" - "<***_tool_call>\n{\n \"cb_tool_name\": \"unknown_tool\",\n \"param1\": \"value1\"\n}\n</***_tool_call>" ] - Expected - 1 + Received + 3 at <anonymous> (/home/runner/work/***/***/backend/src/__***s__/xml-stream-parser.***.ts:358:20)
error: expect(received).toEqual(expected): backend/src/__tests__/xml-stream-parser.test.ts#L292
[ + "<***_tool_call>\n{\n \"cb_tool_name\": \"***_tool\",\n \"param1\": invalid_json\n}\n</***_tool_call>", + "\"cb_easp\": ***\n}\n</***_tool_call>", + "\"cb_easp\": ***\n}\n</***_tool_call>" - "<***_tool_call>\n{\n \"cb_tool_name\": \"***_tool\",\n \"param1\": invalid_json\n}\n</***_tool_call>" ] - Expected - 1 + Received + 3 at <anonymous> (/home/runner/work/***/***/backend/src/__***s__/xml-stream-parser.***.ts:292:20)
error: expect(received).toEqual(expected): backend/src/__tests__/xml-stream-parser.test.ts#L232
[ "<***_tool_call>\n{\n \"cb_tool_name\": \"tool1\",\n \"param1\": \"value1\"\n}\n</***_tool_call>", "text between tools", + "<***_tool_call>\n{\n \"cb_tool_name\": \"tool2\",\n \"param2\": \"value2\"\n}\n</***_tool_call>", + "\"cb_easp\": ***\n}\n</***_tool_call>", + "\"cb_easp\": ***\n}\n</***_tool_call>" - "<***_tool_call>\n{\n \"cb_tool_name\": \"tool2\",\n \"param2\": \"value2\"\n}\n</***_tool_call>" ] - Expected - 1 + Received + 3 at <anonymous> (/home/runner/work/***/***/backend/src/__***s__/xml-stream-parser.***.ts:232:20)
error: expect(received).toEqual(expected): backend/src/__tests__/xml-stream-parser.test.ts#L146
[ "<***_tool_call>\n{\n \"cb_tool_name\": \"***", "_tool\",\n \"param1\": \"val", + "ue1\"\n}\n</***_tool_call>", + "\"cb_easp\": ***\n}\n</***_tool_call>", + "\"cb_easp\": ***\n}\n</***_tool_call>" - "ue1\"\n}\n</***_tool_call>" ] - Expected - 1 + Received + 3 at <anonymous> (/home/runner/work/***/***/backend/src/__***s__/xml-stream-parser.***.ts:146:20)
error: expect(received).toEqual(expected): backend/src/__tests__/xml-stream-parser.test.ts#L79
[ + "<***_tool_call>\n{\n \"cb_tool_name\": \"***_tool\",\n \"param1\": \"value1\"\n}\n</***_tool_call>", + "\"cb_easp\": ***\n}\n</***_tool_call>", + "\"cb_easp\": ***\n}\n</***_tool_call>" - "<***_tool_call>\n{\n \"cb_tool_name\": \"***_tool\",\n \"param1\": \"value1\"\n}\n</***_tool_call>" ] - Expected - 1 + Received + 3 at <anonymous> (/home/runner/work/***/***/backend/src/__***s__/xml-stream-parser.***.ts:79:20)
error: expect(received).toEqual(expected): backend/src/__tests__/xml-stream-parser.test.ts#L799
[ + "<***_tool_call>\n{\n \"cb_tool_name\": \"write_file\",\n \"path\": \"backend/src/__***s__/xml-stream-parser.***.ts\",\n \"instructions\": \"Write comprehensive unit ***s for the processStreamWithTags function\",\n \"content\": \"import { describe, expect, it } from 'bun:***'\\nimport { toolSchema } from '@***/common/constants/tools'\\nimport { processStreamWithTags } from '../xml-stream-parser'\\n\\ndescribe('processStreamWithTags', () => {\\n async function* createMockStream(chunks: string[]) {\\n for (const chunk of chunks) {\\n yield chunk\\n }\\n }\\n\\n it('should handle basic tool call parsing', async () => {\\n const streamChunks = [\\n '<***_tool_call>\\\\n{\\\\n \\\"cb_tool_name\\\": \\\"***_tool\\\",\\\\n \\\"param1\\\": \\\"value1\\\"\\\\n}\\\\n</***_tool_call>',\\n ]\\n const stream = createMockStream(streamChunks)\\n\\n const events: any[] = []\\n\\n const processors = {\\n ***_tool: {\\n params: ['param1'] as string[],\\n onTagStart: (tagName: string, attributes: Record<string, string>) => {\\n events.push({ tagName, type: 'start', attributes })\\n },\\n onTagEnd: (tagName: string, params: Record<string, string>) => {\\n events.push({ tagName, type: 'end', params })\\n },\\n },\\n }\\n\\n function onError(name: string, error: string) {\\n events.push({ name, error })\\n }\\n\\n const result = []\\n for await (const chunk of processStreamWithTags(\\n stream,\\n processors,\\n onError\\n )) {\\n result.push(chunk)\\n }\\n\\n expect(events).toEqual([\\n {\\n tagName: '***_tool',\\n type: 'start',\\n attributes: {},\\n },\\n {\\n tagName: '***_tool',\\n type: 'end',\\n params: { param1: 'value1' },\\n },\\n ])\\n expect(result).toEqual(streamChunks)\\n })\\n\\n it('should handle tool calls split across chunks', async () => {\\n const streamChunks = [\\n '<***_tool_call>\\\\n{\\\\n \\\"cb_tool_name\\\": \\\"***',\\n '_tool\\\",\\\\n \\\"param1\\\": \\\"val',\\n 'ue1\\\"\\\\n}\\\\n</***_tool_call>',\\n ]\\n const stream = createMockStream(streamChunks)\\n\\n const events: any[] = []\\n\\n const processors = {\\n ***_tool: {\\n params: ['param1'] as string[],\\n onTagStart: (tagName: string, attributes: Record<string, string>) => {\\n events.push({ tagName, type: 'start', attributes })\\n },\\n onTagEnd: (tagName: string, params: Record<string, string>) => {\\n events.push({ tagName, type: 'end', params })\\n },\\n },\\n }\\n\\n function onError(name: string, error: string) {\\n events.push({ name, error })\\n }\\n\\n const result = []\\n for await (const chunk of processStreamWithTags(\\n stream,\\n processors,\\n onError\\n )) {\\n result.push(chunk)\\n }\\n\\n expect(events).toEqual([\\n {\\n tagName: '***_tool',\\n type: 'start',\\n attributes: {},\\n },\\n {\\n tagName: '***_tool',\\n type: 'end',\\n params: { param1: 'value1' },\\n },\\n ])\\n expect(result).toEqual(streamChunks)\\n })\\n\\n it('should handle multiple tool calls in sequence', async () => {\\n const streamChunks = [\\n '<***_tool_call>\\\\n{\\\\n \\\"cb_tool_name\\\": \\\"tool1\\\",\\\\n \\\"param1\\\": \\\"value1\\\"\\\\n}\\\\n</***_tool_call>',\\n 'text between tools',\\n '<***_tool_call>\\\\n{\\\\n \\\"cb_tool_name\\\": \\\"tool2\\\",\\\\n \\\"param2\\\": \\\"value2\\\"\\\\n}\\\\n</***_tool_call>',\\n ]\\n const stream = createMockStream(streamChunks)\\n\\n const events: any[] = []\\n\\n const processors = {\\n tool1: {\\n params: ['param1'] as string[],\\n onTagStart: (tagName: string, attributes: Record<string, string>) => {\\n events.push({ tagName, type: 'start', attributes })\\n },\\n onTagEnd: (tagName: string, params: Rec
error: expect(received).toBe(expected): backend/src/__tests__/run-agent-step-tools.test.ts#L458
Expected: *** Received: false at <anonymous> (/home/runner/work/***/***/backend/src/__***s__/run-agent-step-tools.***.ts:458:7)
test-backend
Attempt 4 failed. Reason: Child_process exited with error code 123
test-backend
Attempt 3 failed. Reason: Child_process exited with error code 123
test-backend
Attempt 2 failed. Reason: Child_process exited with error code 123
test-backend
Attempt 1 failed. Reason: Child_process exited with error code 123