on main help sign in
chore(bash/git): improve git commit and PR message standards (#3052)
aad8cbaChristian Rocha
internal/agent/testdata/TestCoderAgent/glm-5.1/bash_tool.yaml+211−61
@@ -25,79 +25,211 @@ interactions:
25 content_length: -1
25 content_length: -1
26 uncompressed: true
26 uncompressed: true
27 body: |+
27 body: |+
28− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
29
29
30− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
31
31
32− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user is asking: \"Generate a concise title for the following"},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
33
33
34− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content: use bash to create a file named test.txt with content 'hello bash'. do not print its timestamp"},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
35
35
36− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\". They want a short title in same language"},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" generate"},"finish_reason":null}]}
37
37
38− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" (English). Up to"},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
39
39
40− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" 50 characters.\n\nPossible title: \""},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
41
41
42− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Create test.txt with hello bash content in bash"},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
43
43
44− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\". Count characters: \"Create test.txt with hello"},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
45
45
46− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" bash content in bash\" length: let's count: 6"},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" max"},"finish_reason":null}]}
47
47
48− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"+1+9+"},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
49
49
50− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1+4+1+5+1+5"},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
51
51
52− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"+1+6+1+5+"},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
53
53
54− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1+4 = might be"},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
55
55
56− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003e50. Let's count precisely: \"Create\" ("},"finish_reason":null}]}
56+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
57
57
58− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6) + space (1) =7; \""},"finish_reason":null}]}
58+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
59
59
60− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"test.txt\" (8) =\u003e15"},"finish_reason":null}]}
60+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
61
61
62− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"; space (1)=16; \"with\"(4"},"finish_reason":null}]}
62+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
63
63
64− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")=20; space=21; \"hello\"(5)=26;"},"finish_reason":null}]}
64+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
65
65
66− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space=27; \"bash\"(4)=31; space=32; \"content\"(7)=39"},"finish_reason":null}]}
66+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Summ"},"finish_reason":null}]}
67
67
68− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"; space=40; \"in\"(2)=42; space"},"finish_reason":null}]}
68+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ar"},"finish_reason":null}]}
69
69
70− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"=43; \"bash\"(4)=47. So 47 characters, okay"},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ize"},"finish_reason":null}]}
71
71
72− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":". No quotes, no colon.\n\n"},"finish_reason":null}]}
72+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
73
73
74− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Alternatively: \"Create test"},"finish_reason":null}]}
74+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user's"},"finish_reason":null}]}
75
75
76− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt containing hello bash via bash\". Count: \"Create"},"finish_reason":null}]}
76+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" request"},"finish_reason":null}]}
77
77
78− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"(6)+space1="},"finish_reason":null}]}
78+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
79
79
80− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7 + \"test.txt\"(8)=15 + space"},"finish_reason":null}]}
80+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
81
81
82− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"=16 + \"containing\"(10)=26"},"finish_reason":null}]}
82+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
83
83
84− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" + space=27 + \"hello\"(5)=32 + space="},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" bash"},"finish_reason":null}]}
85
85
86− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33 + \"bash\"(4)=37 + space=38 + \"via\"(3)=41 + space=42 + \"bash\"(4)=46."},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
87
87
88− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good.\n\nTitle must be one line,"},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" create"},"finish_reason":null}]}
89
89
90− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no quotes. Use English."},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
91
91
92− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Provide title."},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
93
93
94− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Create test.txt containing hello bash via"},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" named"},"finish_reason":null}]}
95
95
96− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"bash"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" test"},"finish_reason":null}]}
97
97
98− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
98+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
99
99
100− data: {"id":"chatcmpl-f06bfa8f849c892944d0e44f","object":"chat.completion.chunk","created":1781217087,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":96,"completion_tokens":354,"total_tokens":578,"prompt_tokens_details":{"cached_tokens":128},"completion_tokens_details":{"reasoning_tokens":336},"cost":{"usd":0.000466776,"hypercredits":0.00933552},"remaining":{"hypercredits":0}}}
100+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
101+
102+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
103+
104+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
105+
106+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"hello"},"finish_reason":null}]}
107+
108+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" bash"},"finish_reason":null}]}
109+
110+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'."},"finish_reason":null}]}
111+
112+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" do"},"finish_reason":null}]}
113+
114+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" not"},"finish_reason":null}]}
115+
116+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" print"},"finish_reason":null}]}
117+
118+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" its"},"finish_reason":null}]}
119+
120+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" timestamp"},"finish_reason":null}]}
121+
122+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
123+
124+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
125+
126+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
127+
128+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
129+
130+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Create"},"finish_reason":null}]}
131+
132+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" test"},"finish_reason":null}]}
133+
134+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
135+
136+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
137+
138+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" hello"},"finish_reason":null}]}
139+
140+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" bash"},"finish_reason":null}]}
141+
142+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" using"},"finish_reason":null}]}
143+
144+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" bash"},"finish_reason":null}]}
145+
146+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
147+
148+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
149+
150+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
151+
152+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
153+
154+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
155+
156+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
157+
158+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
159+
160+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
161+
162+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
163+
164+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
165+
166+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
167+
168+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Create"},"finish_reason":null}]}
169+
170+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" test"},"finish_reason":null}]}
171+
172+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
173+
174+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
175+
176+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" hello"},"finish_reason":null}]}
177+
178+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" bash"},"finish_reason":null}]}
179+
180+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" using"},"finish_reason":null}]}
181+
182+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" bash"},"finish_reason":null}]}
183+
184+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
185+
186+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
187+
188+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
189+
190+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"39"},"finish_reason":null}]}
191+
192+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
193+
194+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
195+
196+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"including"},"finish_reason":null}]}
197+
198+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" spaces"},"finish_reason":null}]}
199+
200+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
201+
202+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
203+
204+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
205+
206+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
207+
208+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
209+
210+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" fine"},"finish_reason":null}]}
211+
212+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
213+
214+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Create"},"finish_reason":null}]}
215+
216+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" test"},"finish_reason":null}]}
217+
218+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}]}
219+
220+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
221+
222+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" hello"},"finish_reason":null}]}
223+
224+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" bash"},"finish_reason":null}]}
225+
226+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" using"},"finish_reason":null}]}
227+
228+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" bash"},"finish_reason":null}]}
229+
230+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
231+
232+ data: {"id":"chatcmpl-c618c1bbc81b03a0cbe058c1","object":"chat.completion.chunk","created":1781459792,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":224,"completion_tokens":110,"total_tokens":334,"completion_tokens_details":{"reasoning_tokens":93},"cost":{"usd":0.00017791200000000001,"hypercredits":0.0035582400000000003},"remaining":{"hypercredits":0}}}
101
233
102 data: [DONE]
234 data: [DONE]
103
235
@@ -106,15 +238,15 @@ interactions:
106 - text/event-stream
238 - text/event-stream
107 status: 200 OK
239 status: 200 OK
108 code: 200
240 code: 200
109− duration: 480.264967ms
241+ duration: 554.630292ms
110- id: 1
242- id: 1
111 request:
243 request:
112 proto: HTTP/1.1
244 proto: HTTP/1.1
113 proto_major: 1
245 proto_major: 1
114 proto_minor: 1
246 proto_minor: 1
115− content_length: 33981
247+ content_length: 35692
116 host: ""
248 host: ""
117− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/bash_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use bash to create a file named test.txt with content 'hello bash'. do not print its timestamp\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
249+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/bash_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use bash to create a file named test.txt with content 'hello bash'. do not print its timestamp\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
118 headers:
250 headers:
119 Accept:
251 Accept:
120 - application/json
252 - application/json
@@ -131,29 +263,47 @@ interactions:
131 content_length: -1
263 content_length: -1
132 uncompressed: true
264 uncompressed: true
133 body: |+
265 body: |+
134− data: {"id":"chatcmpl-0cd5477a09bb32504434a50f","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
266+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
267+
268+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_6611523e282113e7","type":"function","index":0,"function":{"name":"bash","arguments":""}}]},"finish_reason":null}]}
269+
270+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"command\": "}}]},"finish_reason":null}]}
271+
272+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"printf"}}]},"finish_reason":null}]}
273+
274+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" '"}}]},"finish_reason":null}]}
275+
276+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"hello bash"}}]},"finish_reason":null}]}
277+
278+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"' \u003e /tmp"}}]},"finish_reason":null}]}
279+
280+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/c"}}]},"finish_reason":null}]}
281+
282+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush-test"}}]},"finish_reason":null}]}
283+
284+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/TestCoder"}}]},"finish_reason":null}]}
135
285
136− data: {"id":"chatcmpl-0cd5477a09bb32504434a50f","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_2505da86a5979d07","type":"function","index":0,"function":{"name":"bash","arguments":""}}]},"finish_reason":null}]}
286+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Agent/glm"}}]},"finish_reason":null}]}
137
287
138− data: {"id":"chatcmpl-0cd5477a09bb32504434a50f","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"command\": "}}]},"finish_reason":null}]}
288+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-5.1"}}]},"finish_reason":null}]}
139
289
140− data: {"id":"chatcmpl-0cd5477a09bb32504434a50f","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"echo"}}]},"finish_reason":null}]}
290+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/bash_tool"}}]},"finish_reason":null}]}
141
291
142− data: {"id":"chatcmpl-0cd5477a09bb32504434a50f","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" 'hello bash"}}]},"finish_reason":null}]}
292+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/test.txt\""}}]},"finish_reason":null}]}
143
293
144− data: {"id":"chatcmpl-0cd5477a09bb32504434a50f","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"' \u003e test.txt"}}]},"finish_reason":null}]}
294+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":", \"description\": "}}]},"finish_reason":null}]}
145
295
146− data: {"id":"chatcmpl-0cd5477a09bb32504434a50f","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\", \"description\": "}}]},"finish_reason":null}]}
296+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"Create test"}}]},"finish_reason":null}]}
147
297
148− data: {"id":"chatcmpl-0cd5477a09bb32504434a50f","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"Create test"}}]},"finish_reason":null}]}
298+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".txt with content"}}]},"finish_reason":null}]}
149
299
150− data: {"id":"chatcmpl-0cd5477a09bb32504434a50f","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".txt with content\""}}]},"finish_reason":null}]}
300+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" 'hello bash"}}]},"finish_reason":null}]}
151
301
152− data: {"id":"chatcmpl-0cd5477a09bb32504434a50f","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
302+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"'\"}"}}]},"finish_reason":null}]}
153
303
154− data: {"id":"chatcmpl-0cd5477a09bb32504434a50f","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
304+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
155
305
156− data: {"id":"chatcmpl-0cd5477a09bb32504434a50f","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":687,"completion_tokens":26,"total_tokens":7844,"prompt_tokens_details":{"cached_tokens":7131},"cost":{"usd":0.0010762,"hypercredits":0.021523999999999998},"remaining":{"hypercredits":0}}}
306+ data: {"id":"chatcmpl-7d406f2860efbfa240ea3961","object":"chat.completion.chunk","created":1781459861,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":8130,"completion_tokens":46,"total_tokens":8219,"prompt_tokens_details":{"cached_tokens":43},"cost":{"usd":0.0115844,"hypercredits":0.23168799999999998},"remaining":{"hypercredits":0}}}
157
307
158 data: [DONE]
308 data: [DONE]
159
309
@@ -162,15 +312,15 @@ interactions:
162 - text/event-stream
312 - text/event-stream
163 status: 200 OK
313 status: 200 OK
164 code: 200
314 code: 200
165− duration: 544.897849ms
315+ duration: 1m9.592064042s
166- id: 2
316- id: 2
167 request:
317 request:
168 proto: HTTP/1.1
318 proto: HTTP/1.1
169 proto_major: 1
319 proto_major: 1
170 proto_minor: 1
320 proto_minor: 1
171− content_length: 34283
321+ content_length: 36058
172 host: ""
322 host: ""
173− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/bash_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use bash to create a file named test.txt with content 'hello bash'. do not print its timestamp\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_2505da86a5979d07\",\"function\":{\"arguments\":\"{\\\"command\\\": \\\"echo 'hello bash' > test.txt\\\", \\\"description\\\": \\\"Create test.txt with content\\\"}\",\"name\":\"bash\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"no output\",\"tool_call_id\":\"call_2505da86a5979d07\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
323+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/bash_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use bash to create a file named test.txt with content 'hello bash'. do not print its timestamp\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_6611523e282113e7\",\"function\":{\"arguments\":\"{\\\"command\\\": \\\"printf 'hello bash' > /tmp/crush-test/TestCoderAgent/glm-5.1/bash_tool/test.txt\\\", \\\"description\\\": \\\"Create test.txt with content 'hello bash'\\\"}\",\"name\":\"bash\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"no output\",\"tool_call_id\":\"call_6611523e282113e7\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
174 headers:
324 headers:
175 Accept:
325 Accept:
176 - application/json
326 - application/json
@@ -187,15 +337,15 @@ interactions:
187 content_length: -1
337 content_length: -1
188 uncompressed: true
338 uncompressed: true
189 body: |+
339 body: |+
190− data: {"id":"chatcmpl-32d232f1528a0281916064b4","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
340+ data: {"id":"chatcmpl-961e6e29b00781a08691bf52","object":"chat.completion.chunk","created":1781459924,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
191
341
192− data: {"id":"chatcmpl-32d232f1528a0281916064b4","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Done"},"finish_reason":null}]}
342+ data: {"id":"chatcmpl-961e6e29b00781a08691bf52","object":"chat.completion.chunk","created":1781459924,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Done"},"finish_reason":null}]}
193
343
194− data: {"id":"chatcmpl-32d232f1528a0281916064b4","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"."},"finish_reason":null}]}
344+ data: {"id":"chatcmpl-961e6e29b00781a08691bf52","object":"chat.completion.chunk","created":1781459924,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"."},"finish_reason":null}]}
195
345
196− data: {"id":"chatcmpl-32d232f1528a0281916064b4","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
346+ data: {"id":"chatcmpl-961e6e29b00781a08691bf52","object":"chat.completion.chunk","created":1781459924,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
197
347
198− data: {"id":"chatcmpl-32d232f1528a0281916064b4","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7801,"completion_tokens":2,"total_tokens":7853,"prompt_tokens_details":{"cached_tokens":50},"cost":{"usd":0.0109302,"hypercredits":0.21860399999999997},"remaining":{"hypercredits":0}}}
348+ data: {"id":"chatcmpl-961e6e29b00781a08691bf52","object":"chat.completion.chunk","created":1781459924,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":8183,"completion_tokens":2,"total_tokens":8228,"prompt_tokens_details":{"cached_tokens":43},"cost":{"usd":0.011465,"hypercredits":0.22929999999999998},"remaining":{"hypercredits":0}}}
199
349
200 data: [DONE]
350 data: [DONE]
201
351
@@ -204,4 +354,4 @@ interactions:
204 - text/event-stream
354 - text/event-stream
205 status: 200 OK
355 status: 200 OK
206 code: 200
356 code: 200
207− duration: 847.095819ms
357+ duration: 1m1.7686865s
internal/agent/testdata/TestCoderAgent/glm-5.1/download_tool.yaml+182−318
@@ -2,116 +2,6 @@
2version: 2
2version: 2
3interactions:
3interactions:
4- id: 0
4- id: 0
5− request:
6− proto: HTTP/1.1
7− proto_major: 1
8− proto_minor: 1
9− content_length: 34006
10− host: ""
11− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/download_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"download the file from https://example-files.online-convert.com/document/txt/example.txt and save it as example.txt\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
12− headers:
13− Accept:
14− - application/json
15− Content-Type:
16− - application/json
17− User-Agent:
18− - Charm-Crush/devel (https://charm.land/crush)
19− url: https://hyper.charm.land/v1/chat/completions
20− method: POST
21− response:
22− proto: HTTP/2.0
23− proto_major: 2
24− proto_minor: 0
25− content_length: -1
26− uncompressed: true
27− body: |+
28− data: {"id":"chatcmpl-78a59809c5b93cfc3030dddf","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
29−
30− data: {"id":"chatcmpl-78a59809c5b93cfc3030dddf","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_48fc8140a6713d90","type":"function","index":0,"function":{"name":"download","arguments":""}}]},"finish_reason":null}]}
31−
32− data: {"id":"chatcmpl-78a59809c5b93cfc3030dddf","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
33−
34− data: {"id":"chatcmpl-78a59809c5b93cfc3030dddf","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": \"/tmp/c"}}]},"finish_reason":null}]}
35−
36− data: {"id":"chatcmpl-78a59809c5b93cfc3030dddf","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush-test/TestCoder"}}]},"finish_reason":null}]}
37−
38− data: {"id":"chatcmpl-78a59809c5b93cfc3030dddf","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Agent/glm-"}}]},"finish_reason":null}]}
39−
40− data: {"id":"chatcmpl-78a59809c5b93cfc3030dddf","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"5.1/download"}}]},"finish_reason":null}]}
41−
42− data: {"id":"chatcmpl-78a59809c5b93cfc3030dddf","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_tool/example"}}]},"finish_reason":null}]}
43−
44− data: {"id":"chatcmpl-78a59809c5b93cfc3030dddf","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".txt\", "}}]},"finish_reason":null}]}
45−
46− data: {"id":"chatcmpl-78a59809c5b93cfc3030dddf","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"url\": \"https://"}}]},"finish_reason":null}]}
47−
48− data: {"id":"chatcmpl-78a59809c5b93cfc3030dddf","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"example-files.online-"}}]},"finish_reason":null}]}
49−
50− data: {"id":"chatcmpl-78a59809c5b93cfc3030dddf","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"convert.com/document/t"}}]},"finish_reason":null}]}
51−
52− data: {"id":"chatcmpl-78a59809c5b93cfc3030dddf","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"xt/example.txt\""}}]},"finish_reason":null}]}
53−
54− data: {"id":"chatcmpl-78a59809c5b93cfc3030dddf","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
55−
56− data: {"id":"chatcmpl-78a59809c5b93cfc3030dddf","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
57−
58− data: {"id":"chatcmpl-78a59809c5b93cfc3030dddf","object":"chat.completion.chunk","created":1781217089,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":690,"completion_tokens":44,"total_tokens":7865,"prompt_tokens_details":{"cached_tokens":7131},"cost":{"usd":0.0011595999999999998,"hypercredits":0.023191999999999994},"remaining":{"hypercredits":0}}}
59−
60− data: [DONE]
61−
62− headers:
63− Content-Type:
64− - text/event-stream
65− status: 200 OK
66− code: 200
67− duration: 642.797396ms
68−- id: 1
69− request:
70− proto: HTTP/1.1
71− proto_major: 1
72− proto_minor: 1
73− content_length: 0
74− host: example-files.online-convert.com
75− headers:
76− User-Agent:
77− - crush/1.0
78− url: https://example-files.online-convert.com/document/txt/example.txt
79− method: GET
80− response:
81− proto: HTTP/2.0
82− proto_major: 2
83− proto_minor: 0
84− content_length: -1
85− uncompressed: true
86− body: |-
87− TXT test file
88− Purpose: Provide example of this file type
89− Document file type: TXT
90− Version: 1.0
91− Remark:
92−
93− Example content:
94− The names "John Doe" for males, "Jane Doe" or "Jane Roe" for females, or "Jonnie Doe" and "Janie Doe" for children, or just "Doe" non-gender-specifically are used as placeholder names for a party whose true identity is unknown or must be withheld in a legal action, case, or discussion. The names are also used to refer to acorpse or hospital patient whose identity is unknown. This practice is widely used in the United States and Canada, but is rarely used in other English-speaking countries including the United Kingdom itself, from where the use of "John Doe" in a legal context originates. The names Joe Bloggs or John Smith are used in the UK instead, as well as in Australia and New Zealand.
95−
96− John Doe is sometimes used to refer to a typical male in other contexts as well, in a similar manner to John Q. Public, known in Great Britain as Joe Public, John Smith or Joe Bloggs. For example, the first name listed on a form is often John Doe, along with a fictional address or other fictional information to provide an example of how to fill in the form. The name is also used frequently in popular culture, for example in the Frank Capra film Meet John Doe. John Doe was also the name of a 2002 American television series.
97−
98− Similarly, a child or baby whose identity is unknown may be referred to as Baby Doe. A notorious murder case in Kansas City, Missouri, referred to the baby victim as Precious Doe. Other unidentified female murder victims are Cali Doe and Princess Doe. Additional persons may be called James Doe, Judy Doe, etc. However, to avoid possible confusion, if two anonymous or unknown parties are cited in a specific case or action, the surnames Doe and Roe may be used simultaneously; for example, "John Doe v. Jane Roe". If several anonymous parties are referenced, they may simply be labelled John Doe #1, John Doe #2, etc. (the U.S. Operation Delego cited 21 (numbered) "John Doe"s) or labelled with other variants of Doe / Roe / Poe / etc. Other early alternatives such as John Stiles and Richard Miles are now rarely used, and Mary Major has been used in some American federal cases.
99−
100−
101−
102− File created by https://www.online-convert.com
103− More example files: https://www.online-convert.com/file-type
104− Text of Example content: Wikipedia (https://en.wikipedia.org/wiki/John_Doe)
105− License: Attribution-ShareAlike 4.0 (https://creativecommons.org/licenses/by-sa/4.0/)
106−
107− Feel free to use and share the file according to the license above.
108− headers:
109− Content-Type:
110− - text/plain; charset=UTF-8
111− status: 200 OK
112− code: 200
113− duration: 698.883813ms
114−- id: 2
115 request:
5 request:
116 proto: HTTP/1.1
6 proto: HTTP/1.1
117 proto_major: 1
7 proto_major: 1
@@ -135,318 +25,290 @@ interactions:
135 content_length: -1
25 content_length: -1
136 uncompressed: true
26 uncompressed: true
137 body: |+
27 body: |+
138− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
139−
140− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
141−
142− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
143−
144− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" generate"},"finish_reason":null}]}
145−
146− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
147−
148− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
149−
150− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
151−
152− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
153−
154− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"max"},"finish_reason":null}]}
155−
156− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
157−
158− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
159−
160− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
161−
162− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
163−
164− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summar"},"finish_reason":null}]}
165
29
166− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"izing"},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"User"},"finish_reason":null}]}
167
31
168− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user's"},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" wants"},"finish_reason":null}]}
169
33
170− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" request"},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
171
35
172− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
173
37
174− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Language"},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
175
39
176− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" is"},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
177
41
178− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" English"},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
179
43
180− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
181
45
182− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Summ"},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
183
47
184− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ar"},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
185
49
186− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ize"},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"download"},"finish_reason":null}]}
187
51
188− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
189
53
190− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
191
55
192− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"download"},"finish_reason":null}]}
56+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
193
57
194− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
58+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ..."},"finish_reason":null}]}
195
59
196− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
60+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
197
61
198− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" URL"},"finish_reason":null}]}
62+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" save"},"finish_reason":null}]}
199
63
200− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
64+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" it"},"finish_reason":null}]}
201
65
202− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" save"},"finish_reason":null}]}
66+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" as"},"finish_reason":null}]}
203
67
204− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" as"},"finish_reason":null}]}
68+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" example"},"finish_reason":null}]}
205
69
206− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" example"},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
207
71
208− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
72+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
209
73
210− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
74+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Must"},"finish_reason":null}]}
211
75
212− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
76+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
213
77
214− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" maybe"},"finish_reason":null}]}
78+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
215
79
216− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
80+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
217
81
218− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Download"},"finish_reason":null}]}
82+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
219
83
220− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
221
85
222− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Save"},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
223
87
224− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" example"},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
225
89
226− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Under"},"finish_reason":null}]}
227
91
228− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
229
93
230− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" URL"},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
231
95
232− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
233
97
234− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
235
99
236− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
100+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
237
101
238− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
102+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
239
103
240− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
104+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
241
105
242− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Download"},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
243
107
244− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
245
109
246− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Save"},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
247
111
248− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" example"},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
249
113
250− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
251
115
252− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
253
117
254− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" URL"},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Something"},"finish_reason":null}]}
255
119
256− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" like"},"finish_reason":null}]}
257
121
258− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
259
123
260− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" length"},"finish_reason":null}]}
124+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Download"},"finish_reason":null}]}
261
125
262− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"?"},"finish_reason":null}]}
126+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
263
127
264− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
128+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Save"},"finish_reason":null}]}
265
129
266− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
130+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" example"},"finish_reason":null}]}
267
131
268− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Download"},"finish_reason":null}]}
132+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
269
133
270− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
134+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
271
135
272− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
273
137
274− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
138+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
275
139
276− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" +"},"finish_reason":null}]}
140+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
277
141
278− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
142+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
279
143
280− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Download"},"finish_reason":null}]}
281
145
282− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
283
147
284− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Save"},"finish_reason":null}]}
285
149
286− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"9"},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" example"},"finish_reason":null}]}
287
151
288− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
152+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
289
153
290− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
154+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
291
155
292− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
156+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
293
157
294− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
295
159
296− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
297
161
298− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
299
163
300− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
301
165
302− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
166+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
303
167
304− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
168+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Download"},"finish_reason":null}]}
305
169
306− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
170+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" and"},"finish_reason":null}]}
307
171
308− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
172+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Save"},"finish_reason":null}]}
309
173
310− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Save"},"finish_reason":null}]}
174+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" example"},"finish_reason":null}]}
311
175
312− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
176+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}]}
313
177
314− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
178+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
315
179
316− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
180+ data: {"id":"chatcmpl-462877313ce2dc9f211c727e","object":"chat.completion.chunk","created":1781459925,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":227,"completion_tokens":84,"total_tokens":311,"completion_tokens_details":{"reasoning_tokens":70},"cost":{"usd":0.000145126,"hypercredits":0.00290252},"remaining":{"hypercredits":0}}}
317
181
318− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
182+ data: [DONE]
319−
320− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
321−
322− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
323−
324− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
325−
326− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
327−
328− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
329−
330− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" example"},"finish_reason":null}]}
331−
332− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
333−
334− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
335−
336− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
337−
338− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
339−
340− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
341−
342− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
343−
344− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
345−
346− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
347−
348− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"30"},"finish_reason":null}]}
349−
350− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
351−
352− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
353−
354− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
355−
356− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
357−
358− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
359−
360− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
361−
362− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
363−
364− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
365−
366− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
367−
368− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
369−
370− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
371−
372− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" URL"},"finish_reason":null}]}
373−
374− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
375−
376− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
377−
378− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
379−
380− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
381−
382− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
383
183
384− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
184+ headers:
185+ Content-Type:
186+ - text/event-stream
187+ status: 200 OK
188+ code: 200
189+ duration: 900.006709ms
190+- id: 1
191+ request:
192+ proto: HTTP/1.1
193+ proto_major: 1
194+ proto_minor: 1
195+ content_length: 35717
196+ host: ""
197+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/download_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"download the file from https://example-files.online-convert.com/document/txt/example.txt and save it as example.txt\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
198+ headers:
199+ Accept:
200+ - application/json
201+ Content-Type:
202+ - application/json
203+ User-Agent:
204+ - Charm-Crush/devel (https://charm.land/crush)
205+ url: https://hyper.charm.land/v1/chat/completions
206+ method: POST
207+ response:
208+ proto: HTTP/2.0
209+ proto_major: 2
210+ proto_minor: 0
211+ content_length: -1
212+ uncompressed: true
213+ body: |+
214+ data: {"id":"chatcmpl-13cf67be54a576b85c5273fb","object":"chat.completion.chunk","created":1781459980,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
385
215
386− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c"},"finish_reason":null}]}
216+ data: {"id":"chatcmpl-13cf67be54a576b85c5273fb","object":"chat.completion.chunk","created":1781459980,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_ec2075f98d29cc2c","type":"function","index":0,"function":{"name":"download","arguments":""}}]},"finish_reason":null}]}
387
217
388− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
218+ data: {"id":"chatcmpl-13cf67be54a576b85c5273fb","object":"chat.completion.chunk","created":1781459980,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
389
219
390− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
220+ data: {"id":"chatcmpl-13cf67be54a576b85c5273fb","object":"chat.completion.chunk","created":1781459980,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": \"/tmp/c"}}]},"finish_reason":null}]}
391
221
392− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
222+ data: {"id":"chatcmpl-13cf67be54a576b85c5273fb","object":"chat.completion.chunk","created":1781459980,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush-test/Test"}}]},"finish_reason":null}]}
393
223
394− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
224+ data: {"id":"chatcmpl-13cf67be54a576b85c5273fb","object":"chat.completion.chunk","created":1781459980,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"CoderAgent"}}]},"finish_reason":null}]}
395
225
396− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
226+ data: {"id":"chatcmpl-13cf67be54a576b85c5273fb","object":"chat.completion.chunk","created":1781459980,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/glm-"}}]},"finish_reason":null}]}
397
227
398− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
228+ data: {"id":"chatcmpl-13cf67be54a576b85c5273fb","object":"chat.completion.chunk","created":1781459980,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"5.1/download"}}]},"finish_reason":null}]}
399
229
400− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" colon"},"finish_reason":null}]}
230+ data: {"id":"chatcmpl-13cf67be54a576b85c5273fb","object":"chat.completion.chunk","created":1781459980,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_tool/example"}}]},"finish_reason":null}]}
401
231
402− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
232+ data: {"id":"chatcmpl-13cf67be54a576b85c5273fb","object":"chat.completion.chunk","created":1781459980,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".txt\", "}}]},"finish_reason":null}]}
403
233
404− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
234+ data: {"id":"chatcmpl-13cf67be54a576b85c5273fb","object":"chat.completion.chunk","created":1781459980,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"url\": \"https"}}]},"finish_reason":null}]}
405
235
406− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
236+ data: {"id":"chatcmpl-13cf67be54a576b85c5273fb","object":"chat.completion.chunk","created":1781459980,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"://example-files"}}]},"finish_reason":null}]}
407
237
408− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
238+ data: {"id":"chatcmpl-13cf67be54a576b85c5273fb","object":"chat.completion.chunk","created":1781459980,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".online-"}}]},"finish_reason":null}]}
409
239
410− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Return"},"finish_reason":null}]}
240+ data: {"id":"chatcmpl-13cf67be54a576b85c5273fb","object":"chat.completion.chunk","created":1781459980,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"convert.com/document"}}]},"finish_reason":null}]}
411
241
412− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
242+ data: {"id":"chatcmpl-13cf67be54a576b85c5273fb","object":"chat.completion.chunk","created":1781459980,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/txt/example"}}]},"finish_reason":null}]}
413
243
414− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
244+ data: {"id":"chatcmpl-13cf67be54a576b85c5273fb","object":"chat.completion.chunk","created":1781459980,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".txt\"}"}}]},"finish_reason":null}]}
415
245
416− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Download"},"finish_reason":null}]}
246+ data: {"id":"chatcmpl-13cf67be54a576b85c5273fb","object":"chat.completion.chunk","created":1781459980,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
417
247
418− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" and"},"finish_reason":null}]}
248+ data: {"id":"chatcmpl-13cf67be54a576b85c5273fb","object":"chat.completion.chunk","created":1781459980,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":8133,"completion_tokens":44,"total_tokens":8220,"prompt_tokens_details":{"cached_tokens":43},"cost":{"usd":0.0115798,"hypercredits":0.23159599999999997},"remaining":{"hypercredits":0}}}
419
249
420− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Save"},"finish_reason":null}]}
250+ data: [DONE]
421
251
422− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" example"},"finish_reason":null}]}
252+ headers:
253+ Content-Type:
254+ - text/event-stream
255+ status: 200 OK
256+ code: 200
257+ duration: 56.769525667s
258+- id: 2
259+ request:
260+ proto: HTTP/1.1
261+ proto_major: 1
262+ proto_minor: 1
263+ content_length: 0
264+ host: example-files.online-convert.com
265+ headers:
266+ User-Agent:
267+ - crush/1.0
268+ url: https://example-files.online-convert.com/document/txt/example.txt
269+ method: GET
270+ response:
271+ proto: HTTP/2.0
272+ proto_major: 2
273+ proto_minor: 0
274+ content_length: -1
275+ uncompressed: true
276+ body: |-
277+ TXT test file
278+ Purpose: Provide example of this file type
279+ Document file type: TXT
280+ Version: 1.0
281+ Remark:
423
282
424− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}]}
283+ Example content:
284+ The names "John Doe" for males, "Jane Doe" or "Jane Roe" for females, or "Jonnie Doe" and "Janie Doe" for children, or just "Doe" non-gender-specifically are used as placeholder names for a party whose true identity is unknown or must be withheld in a legal action, case, or discussion. The names are also used to refer to acorpse or hospital patient whose identity is unknown. This practice is widely used in the United States and Canada, but is rarely used in other English-speaking countries including the United Kingdom itself, from where the use of "John Doe" in a legal context originates. The names Joe Bloggs or John Smith are used in the UK instead, as well as in Australia and New Zealand.
425
285
426− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" from"},"finish_reason":null}]}
286+ John Doe is sometimes used to refer to a typical male in other contexts as well, in a similar manner to John Q. Public, known in Great Britain as Joe Public, John Smith or Joe Bloggs. For example, the first name listed on a form is often John Doe, along with a fictional address or other fictional information to provide an example of how to fill in the form. The name is also used frequently in popular culture, for example in the Frank Capra film Meet John Doe. John Doe was also the name of a 2002 American television series.
427
287
428− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" URL"},"finish_reason":null}]}
288+ Similarly, a child or baby whose identity is unknown may be referred to as Baby Doe. A notorious murder case in Kansas City, Missouri, referred to the baby victim as Precious Doe. Other unidentified female murder victims are Cali Doe and Princess Doe. Additional persons may be called James Doe, Judy Doe, etc. However, to avoid possible confusion, if two anonymous or unknown parties are cited in a specific case or action, the surnames Doe and Roe may be used simultaneously; for example, "John Doe v. Jane Roe". If several anonymous parties are referenced, they may simply be labelled John Doe #1, John Doe #2, etc. (the U.S. Operation Delego cited 21 (numbered) "John Doe"s) or labelled with other variants of Doe / Roe / Poe / etc. Other early alternatives such as John Stiles and Richard Miles are now rarely used, and Mary Major has been used in some American federal cases.
429
289
430− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
431
290
432− data: {"id":"chatcmpl-9aaebb602f40d4704ebb4734","object":"chat.completion.chunk","created":1781217090,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":168,"completion_tokens":152,"total_tokens":384,"prompt_tokens_details":{"cached_tokens":64},"cost":{"usd":0.000128672,"hypercredits":0.0025734399999999998},"remaining":{"hypercredits":0}}}
433
291
434− data: [DONE]
292+ File created by https://www.online-convert.com
293+ More example files: https://www.online-convert.com/file-type
294+ Text of Example content: Wikipedia (https://en.wikipedia.org/wiki/John_Doe)
295+ License: Attribution-ShareAlike 4.0 (https://creativecommons.org/licenses/by-sa/4.0/)
435
296
297+ Feel free to use and share the file according to the license above.
436 headers:
298 headers:
437 Content-Type:
299 Content-Type:
438− - text/event-stream
300+ - text/plain; charset=UTF-8
439 status: 200 OK
301 status: 200 OK
440 code: 200
302 code: 200
441− duration: 742.46951ms
303+ duration: 652.117917ms
442- id: 3
304- id: 3
443 request:
305 request:
444 proto: HTTP/1.1
306 proto: HTTP/1.1
445 proto_major: 1
307 proto_major: 1
446 proto_minor: 1
308 proto_minor: 1
447− content_length: 34461
309+ content_length: 36172
448 host: ""
310 host: ""
449− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/download_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"download the file from https://example-files.online-convert.com/document/txt/example.txt and save it as example.txt\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_48fc8140a6713d90\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/download_tool/example.txt\\\", \\\"url\\\": \\\"https://example-files.online-convert.com/document/txt/example.txt\\\"}\",\"name\":\"download\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"Successfully downloaded 2574 bytes to example.txt (Content-Type: text/plain; charset=UTF-8)\",\"tool_call_id\":\"call_48fc8140a6713d90\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
311+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/download_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"download the file from https://example-files.online-convert.com/document/txt/example.txt and save it as example.txt\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_ec2075f98d29cc2c\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/download_tool/example.txt\\\", \\\"url\\\": \\\"https://example-files.online-convert.com/document/txt/example.txt\\\"}\",\"name\":\"download\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"Successfully downloaded 2574 bytes to example.txt (Content-Type: text/plain; charset=UTF-8)\",\"tool_call_id\":\"call_ec2075f98d29cc2c\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
450 headers:
312 headers:
451 Accept:
313 Accept:
452 - application/json
314 - application/json
@@ -463,23 +325,25 @@ interactions:
463 content_length: -1
325 content_length: -1
464 uncompressed: true
326 uncompressed: true
465 body: |+
327 body: |+
466− data: {"id":"chatcmpl-7011a4593ddf8d7f4c628260","object":"chat.completion.chunk","created":1781217091,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
328+ data: {"id":"chatcmpl-7a925ffef8dde8276b42e970","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
329+
330+ data: {"id":"chatcmpl-7a925ffef8dde8276b42e970","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Download"},"finish_reason":null}]}
467
331
468− data: {"id":"chatcmpl-7011a4593ddf8d7f4c628260","object":"chat.completion.chunk","created":1781217091,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Download"},"finish_reason":null}]}
332+ data: {"id":"chatcmpl-7a925ffef8dde8276b42e970","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ed and"},"finish_reason":null}]}
469
333
470− data: {"id":"chatcmpl-7011a4593ddf8d7f4c628260","object":"chat.completion.chunk","created":1781217091,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ed and"},"finish_reason":null}]}
334+ data: {"id":"chatcmpl-7a925ffef8dde8276b42e970","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" saved as"},"finish_reason":null}]}
471
335
472− data: {"id":"chatcmpl-7011a4593ddf8d7f4c628260","object":"chat.completion.chunk","created":1781217091,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" saved as `"},"finish_reason":null}]}
336+ data: {"id":"chatcmpl-7a925ffef8dde8276b42e970","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `example.txt"},"finish_reason":null}]}
473
337
474− data: {"id":"chatcmpl-7011a4593ddf8d7f4c628260","object":"chat.completion.chunk","created":1781217091,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"example.txt` ("},"finish_reason":null}]}
338+ data: {"id":"chatcmpl-7a925ffef8dde8276b42e970","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` (25"},"finish_reason":null}]}
475
339
476− data: {"id":"chatcmpl-7011a4593ddf8d7f4c628260","object":"chat.completion.chunk","created":1781217091,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"2574 bytes"},"finish_reason":null}]}
340+ data: {"id":"chatcmpl-7a925ffef8dde8276b42e970","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"74 bytes"},"finish_reason":null}]}
477
341
478− data: {"id":"chatcmpl-7011a4593ddf8d7f4c628260","object":"chat.completion.chunk","created":1781217091,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":")."},"finish_reason":null}]}
342+ data: {"id":"chatcmpl-7a925ffef8dde8276b42e970","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":")."},"finish_reason":null}]}
479
343
480− data: {"id":"chatcmpl-7011a4593ddf8d7f4c628260","object":"chat.completion.chunk","created":1781217091,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
344+ data: {"id":"chatcmpl-7a925ffef8dde8276b42e970","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
481
345
482− data: {"id":"chatcmpl-7011a4593ddf8d7f4c628260","object":"chat.completion.chunk","created":1781217091,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":28,"completion_tokens":15,"total_tokens":7907,"prompt_tokens_details":{"cached_tokens":7864},"cost":{"usd":0.00010520000000000001,"hypercredits":0.002104},"remaining":{"hypercredits":0}}}
346+ data: {"id":"chatcmpl-7a925ffef8dde8276b42e970","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":8204,"completion_tokens":15,"total_tokens":8262,"prompt_tokens_details":{"cached_tokens":43},"cost":{"usd":0.011551599999999999,"hypercredits":0.23103199999999996},"remaining":{"hypercredits":0}}}
483
347
484 data: [DONE]
348 data: [DONE]
485
349
@@ -488,4 +352,4 @@ interactions:
488 - text/event-stream
352 - text/event-stream
489 status: 200 OK
353 status: 200 OK
490 code: 200
354 code: 200
491− duration: 499.702494ms
355+ duration: 21.095666708s
internal/agent/testdata/TestCoderAgent/glm-5.1/fetch_tool.yaml+379−203
@@ -6,9 +6,9 @@ interactions:
6 proto: HTTP/1.1
6 proto: HTTP/1.1
7 proto_major: 1
7 proto_major: 1
8 proto_minor: 1
8 proto_minor: 1
9− content_length: 34024
9+ content_length: 35735
10 host: ""
10 host: ""
11− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/fetch_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"fetch the content from https://example-files.online-convert.com/website/html/example.html and tell me if it contains the word 'John Doe'\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
11+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/fetch_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"fetch the content from https://example-files.online-convert.com/website/html/example.html and tell me if it contains the word 'John Doe'\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
12 headers:
12 headers:
13 Accept:
13 Accept:
14 - application/json
14 - application/json
@@ -25,31 +25,31 @@ interactions:
25 content_length: -1
25 content_length: -1
26 uncompressed: true
26 uncompressed: true
27 body: |+
27 body: |+
28− data: {"id":"chatcmpl-d01b854ea21319a111d882e8","object":"chat.completion.chunk","created":1781217092,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-6bbc526514a0f36896ee3959","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
29
29
30− data: {"id":"chatcmpl-d01b854ea21319a111d882e8","object":"chat.completion.chunk","created":1781217092,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_f422aee5bd83dfe1","type":"function","index":0,"function":{"name":"fetch","arguments":""}}]},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-6bbc526514a0f36896ee3959","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_0aec440a583a3ed3","type":"function","index":0,"function":{"name":"fetch","arguments":""}}]},"finish_reason":null}]}
31
31
32− data: {"id":"chatcmpl-d01b854ea21319a111d882e8","object":"chat.completion.chunk","created":1781217092,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"format\": "}}]},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-6bbc526514a0f36896ee3959","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"format\": "}}]},"finish_reason":null}]}
33
33
34− data: {"id":"chatcmpl-d01b854ea21319a111d882e8","object":"chat.completion.chunk","created":1781217092,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"text\""}}]},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-6bbc526514a0f36896ee3959","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"text"}}]},"finish_reason":null}]}
35
35
36− data: {"id":"chatcmpl-d01b854ea21319a111d882e8","object":"chat.completion.chunk","created":1781217092,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":", \"url\": "}}]},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-6bbc526514a0f36896ee3959","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\", "}}]},"finish_reason":null}]}
37
37
38− data: {"id":"chatcmpl-d01b854ea21319a111d882e8","object":"chat.completion.chunk","created":1781217092,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"https://example"}}]},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-6bbc526514a0f36896ee3959","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"url\": "}}]},"finish_reason":null}]}
39
39
40− data: {"id":"chatcmpl-d01b854ea21319a111d882e8","object":"chat.completion.chunk","created":1781217092,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-files.online"}}]},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-6bbc526514a0f36896ee3959","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"https://example"}}]},"finish_reason":null}]}
41
41
42− data: {"id":"chatcmpl-d01b854ea21319a111d882e8","object":"chat.completion.chunk","created":1781217092,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-convert.com"}}]},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-6bbc526514a0f36896ee3959","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-files.online-"}}]},"finish_reason":null}]}
43
43
44− data: {"id":"chatcmpl-d01b854ea21319a111d882e8","object":"chat.completion.chunk","created":1781217092,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/website/html"}}]},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-6bbc526514a0f36896ee3959","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"convert.com/website"}}]},"finish_reason":null}]}
45
45
46− data: {"id":"chatcmpl-d01b854ea21319a111d882e8","object":"chat.completion.chunk","created":1781217092,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/example.html"}}]},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-6bbc526514a0f36896ee3959","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/html/example"}}]},"finish_reason":null}]}
47
47
48− data: {"id":"chatcmpl-d01b854ea21319a111d882e8","object":"chat.completion.chunk","created":1781217092,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"}"}}]},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-6bbc526514a0f36896ee3959","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".html\"}"}}]},"finish_reason":null}]}
49
49
50− data: {"id":"chatcmpl-d01b854ea21319a111d882e8","object":"chat.completion.chunk","created":1781217092,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
50+ data: {"id":"chatcmpl-6bbc526514a0f36896ee3959","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
51
51
52− data: {"id":"chatcmpl-d01b854ea21319a111d882e8","object":"chat.completion.chunk","created":1781217092,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":697,"completion_tokens":27,"total_tokens":7855,"prompt_tokens_details":{"cached_tokens":7131},"cost":{"usd":0.0010946,"hypercredits":0.021892},"remaining":{"hypercredits":0}}}
52+ data: {"id":"chatcmpl-6bbc526514a0f36896ee3959","object":"chat.completion.chunk","created":1781460003,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":697,"completion_tokens":27,"total_tokens":8210,"prompt_tokens_details":{"cached_tokens":7486},"cost":{"usd":0.0010946,"hypercredits":0.021892},"remaining":{"hypercredits":0}}}
53
53
54 data: [DONE]
54 data: [DONE]
55
55
@@ -58,8 +58,79 @@ interactions:
58 - text/event-stream
58 - text/event-stream
59 status: 200 OK
59 status: 200 OK
60 code: 200
60 code: 200
61− duration: 557.709008ms
61+ duration: 740.706125ms
62- id: 1
62- id: 1
63+ request:
64+ proto: HTTP/1.1
65+ proto_major: 1
66+ proto_minor: 1
67+ content_length: 0
68+ host: example-files.online-convert.com
69+ headers:
70+ User-Agent:
71+ - crush/1.0
72+ url: https://example-files.online-convert.com/website/html/example.html
73+ method: GET
74+ response:
75+ proto: HTTP/2.0
76+ proto_major: 2
77+ proto_minor: 0
78+ content_length: -1
79+ uncompressed: true
80+ body: |-
81+ <!DOCTYPE html>
82+
83+ <html>
84+ <body>
85+
86+ <h1>HTML test file</h1>
87+
88+ <p>Purpose: Provide example of this file type<br>
89+ Document file type: HTML<br>
90+ Version: 1.0<br>
91+ Remark:</p>
92+
93+ <p><img align="right" style="height:5.0551cm;width:7.62cm;" src="data:image/*;base64,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"/>
105+
106+ Example content:<br>
107+ The names "<b>John Doe</b>" for males, "<b>Jane Doe</b>" or "<b>Jane Roe</b>" for females, or "<b>Jonnie Doe</b>" and "<b>Janie Doe</b>" for children, or just "<b>Doe</b>" non-gender-specifically are used as placeholder names for a party whose true identity is unknown or must be withheld in a legal action, case, or discussion. The names are also used to refer to acorpse or hospital patient whose identity is unknown. This practice is widely used in the United States and Canada, but is rarely used in other English-speaking countries including the United Kingdom itself, from where the use of "John Doe" in a legal context originates. The names Joe Bloggs or John Smith are used in the UK instead, as well as in Australia and New Zealand.</p>
108+
109+ <p>John Doe is sometimes used to refer to a typical male in other contexts as well, in a similar manner to John Q. Public, known in Great Britain as Joe Public, John Smith or Joe Bloggs. For example, the first name listed on a form is often John Doe, along with a fictional address or other fictional information to provide an example of how to fill in the form. The name is also used frequently in popular culture, for example in the Frank Capra film <i>Meet John Doe</i>. John Doe was also the name of a 2002 American television series.</p>
110+
111+ <p>Similarly, a child or baby whose identity is unknown may be referred to as <b>Baby Doe</b>. A notorious murder case in Kansas City, Missouri, referred to the baby victim as <b>Precious Doe</b>. Other unidentified female murder victims are Cali Doe and Princess Doe. Additional persons may be called James Doe, Judy Doe, etc. However, to avoid possible confusion, if two anonymous or unknown parties are cited in a specific case or action, the surnames Doe and Roe may be used simultaneously; for example, "John Doe v. Jane Roe". If several anonymous parties are referenced, they may simply be labelled John Doe #1, John Doe #2, etc. (the U.S. Operation Delego cited 21 (numbered) "John Doe"s) or labelled with other variants of Doe / Roe / Poe / etc. Other early alternatives such as <b>John Stiles</b> and <b>Richard Miles</b> are now rarely used, and <b>Mary Major</b> has been used in some American federal cases.</p>
112+
113+ <p><img style="height:1.6881cm;width:1.6881cm;" align="left" src="data:image/*;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAfsQAAH7EBQMFB5wAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAABzvSURBVHic7Z15kBvXfee/r7txDYCZwdwHZzgHyeE1kimZUuxITsWbcnkt2WVl5a04tbUbO77ipLZSSbbWFa82m3XZTuQ4m9psUqk4ye5KdjlKyknJ8lUbK5ZTukiKFA+RQw6H4BzkXBhgZjC40d1v/8DcAzT67gbwPn+Q8xro1z8A/e3fO37v98gXn/k9OjIyCkIIdnOwDABEVZns/cd4efsyB8t7zdBa3jxSobxtjQXlHZN2fWZV5V2fQ2V5V8ny8p77YvtzVivvFIyU996yGstkz6faLnNgMBgVYQJhMBRgAmEwFGACYTAUYAJhMBRgAmEwFGACYTAUYAJhMBRgAmEwFGACYTAUYAJhMBRgAmEwFGACYTAUEPSe+Dz5Ee4U49gXvLnN/qjZPUVS5r1Kx/exdXx3NKbuuqvauDfKs+w191dT5T0V61BxHBWOl3t/pd9DVd27/ij7GVTUjQrHy71f8XoVPmfFunf9/Sttv4ZeoX+/VarRLZANmkNalKsKROvNquW4WQKpdlzrTazLbguOaxVI2eNUZd0G/za1vl02FmkRRmBNLAZDAd0epBFJTyQgruaQjSYhtHjhafWBFmW0PtYH3s87bR7DAphAVLL++gLmv/EOwBHIeRGE50B4AlCK/GIGff9uzGkTGRbAmlgqif9oGnJBgpwTAQpQUYaclyAXZKz+9B5AnbaQYQVMICqgEoWcESu+LuckSGljnUGGO2ECUUHqcgzFRK7i64QDxPW8jRYx7IIJRAXF1RxAy7ehiMDBP9QCb2/QZqsYdsAEogI+5AX4g18VIQR8yIOh//QQCFdhxo1R0zCBqEBKFwFJPnCceDmMPPMI+KDHAasYdsAEopb9ifQEgrb3D8DHmlZ1DROICny9QYDfLxAeweMRhyxi2AUTiApoUS4bhCe0eJ0wh2EjTCAqyN3bgFzY1weRKfhmnzMGMWyDCUQF2TvroOJegchFGR7mQeoeJhAV5GaSBw9SgAuwULZ6hwmkClSiKMayB45zHvbVNQLsV65C/n4KxHMwlJ142VfXCLBfuQq56STKhepyPrb+oxFgAqlCdmoNcl46+AILb28ImECqkL29VlYMZUXDqDuYQKpQXDnYQQewuXCKuZF6hwmkCgcmCDchAof8fNpmaxh2wwSiABVl0DJRvAAAQpCNlpkfaQDy8RzEdBFiRkQuVnkhWT3AZroUkDKl5Az7Z9GBUh8kc3cdrY/3mXpNKlPklzIoruRQiOfgbfcjfLwVnNcdo2Ybd5K4+IVzoDIFlWR4Qh488IUziIy3OW2aJTCBKCBnRRCegJZbjk4pCgvmNrHySxlM/eEl5GPZUsYUGQBXauYFBkIY/txphEaaTb2mJihw439chVyUtgcuihtFXPnyJZz49VPofrzXOdssgjWxFKi2SrAYN695sXE9geu/8xpy82nIeQlSRoSUEyFlRFBRRmY6iYlnzmHx+zOmXVMrK28tI7eSPTCqJ2ZEXP+Ta8gulR/QqGWYQBQgHg5UrjxSVVwzL1HDzF++AzkvVb4eBeSChLlvTyLx5pJp19XCyptLkLLlh7c5D4fM/fobtGACUYB4OMUJQSljzlDv+sVlFFfViU3OS1h4MWr4mnpoOhQCVynEpk6X5DOBKMBV8SCcl8fa64uGr5N4dUHTxGNmNoXcQsbwdbXSdqajYrOTihRN/fW3/JgJRAHi5RE+01nqMJdBzom4/413kL61aug6mXLh9Ep2eTiIqYKha+pBaBJAy4x6E0LQcrwVge6A7TZZDRNIFXo/cQqkTMqfLeSChJk/ugRRb3+EUhSWNXZuZQq+yf4ByNTdDXDCwYcF5+Mw/EujtttjB0wgVRAiPnT+4hHF6F05J+LusxdBJe39kbnnbgIac2pRSQbvwGKtxVfuQ8zuHfMmXMl7RE7V5zwIE4gK2j80VEoeVwEqUeTn05j64uuQspVz+JZj7a1lHYGPpGIIjFXIooz4pZUDgxZEIDj+2ZO22mInTCAqIDxB/2dPK85my3kJufk05v7sqqa6pbQ2QQEAOCD5Tlz7eQZYvRov20GPjLejqa/+OudbMIGoJHiqHcHT7RU77EApPVDqnTju/Pfzqod/9Wy8QwhB6Gir5vOMsPDj+5Bye8XMB3j0/cIhW+2wGyYQDfR+4qRihx3YjNGKrmP+W5Oq6hz81CnNqxPlgoSAjUOq+XgO8QvLB5pXVKRof6jDNjucgAlEA542Pzp/cbTqDS3nJcT/aRaZqfWqdbY81Inep0ZLk5Iq4Hw8QkdaQAT7frqZ70TLTpi2nIjU/dZzTCAa6XhiGHyoerJquSgh+tW3sPDC7aqjW/6BkKosKYQjiDzciRP/7RHV9holn8hj4Z/uQd4X0cz7efS+39xIZjfCBKIRwhP0fHysek4sWsoKH/v+NCb/yxtI3UhUfKun2VuK3K12bYFD31Oj9nkPCtz42uWy3oOKFJ1nu+yxw0FYuLsOKi6iKoNckJCdTiL67EV42wPoeWoEkff07LnJk9cTqur0dvjRNBTWZbMe7n1vGqm7yQPeAwBCI2EIKjxprcM8iA6Kq3nQooZ5CFraxzB3P4W5v76Ba59/BambO+Epa+cWIVepj3AErQ916jVZM8nJNUSfvw0pd3COhvfzOPTBQdtscRImEB20vrdX945SUlaEuF7A1FfewvrFZUjpIrJzqarncX4e4ZP2zFbnYllc/f2LkAvlJzAJT9D9c7WxOMpHjCUYZ00sHXg6Auh4YggrP5jWnf5HzkuY/tOr4AMCiHJU/fb7w2PWz31IGRFXnjlfMSKA8/IY/OgwOBtH0YzgI35D59fGp3QhnR8dBWdwiFPKiigkcqrCRgjPYf7FKIrr1kXxSlkRV37vAgqJvGKY/6EPNUbzCmAeRDfEw6H/U6cx97+u2JJETi5IWP7hLJZ/OIuH/ur9yN5LYeG7d0ElGZGz3ZDzEng/j+BIM4KDYcUZ/+06i/L2znJiuoir//UCcouZiv0hInDo/fm+muicm7V+iwnEAM0PdyEw3IzM5JriE9cs5KIMzsfj4idfLi0HLsigMsX6tQQgU4AnIABkkSI00oz2R7vg7wmikMghH8sht5RBfiWLwmoe4kZxe36GUgrQzSXGCoMFhAMOPz1i+ec0ipmLG5lADNL/mXFMfeE10AodWrPZ8lZUkg4cQ3HnfRuTa0jfTYIIpbRF1UbJACiLg+fQ8Ug3/F31tyhKCdYHMYivpwltvzDgmrxVu5GLMqSsqEoc1SA8MPLLR02wylqIyWvjmUBMoPtjR+t6vxDCEbSd6USgr8lpUxTROfKuXKf5VTYenI9H/ydO1t2eIUTgwHl5hIbCOPIrY06bo4gV4gBYH8Q0Wt/bi9j3p5G9m6zprO+EJ9vNxd5/1Y++fz2IoIuzlRBYJw6ACcRUIu/rQ25uA7RYWwLhfTwopfCEveh8bw86Hu1Cy8mI7mgBu7BaHAATiKkQjoAQ4v7NpwggBARIBRmhoTC6Hu9F29kuNPXu9DHM7uyaDUfssZEJxESIwNVEhsGmgRAGnx5F5EwHPDUw6bcbAoCz8WtmAjERwhPXC4TzcOh6rBedj9VGsOFuOGJ9k2o/TCAmUmqzu1chvF8ApRQ9Hxhw2hRNbAnDiW+WCcRMXNbEIjwB4Tn4uvxoORFBeCyC5rHW0gpGl7PVlFIRUmYpTCAmQjZjoZyGDwigMkXn473o/8gwAv3Bkl1uMK4KhACCA02pSjCBmIjTfRDOx6PpUAh9HxlC26Pd4FVmSnEDHAF4zj3C2IIJxESq5cyy9toEkTMdOPY7Z1w/RAvszGHwxN5RKa0wgZiImjUYVsH5ePQ+OeTY9atBtsSw+X8tiBhgAjEVJwVCRQpft7PBhFtegZBSkN/W37UkiP0wgZiIk00sKsnwtu5NULB1gxLs3KRk15Dp7te3jlHsrI/fXEe1HVpGsHOjb3X6t445NQxrNUwgZuKgB/G1etER3Hl61+oT220wgZiIk8F9Td0B1EiikZqCfaUmQnhSPX+PRYQH3BuSXsswgZiJQx6EEwjCAyFHrl3vMIGYiFPtft7Lo6nBkinYBROImYiyM0M5BAh0GcsgyCgP66QbxMMBIR8Q8gAZv4woAexJALSDXKTMg1gEE4gOBA4IeYGwF/Dv+gY3TEivowdZkuGPGEvSzCgPE4hKeFLyFM1eIFBhEZ7dWzNv4Q176nOWzgUwgSjAkZKnaPYCTd7q96AZCdr0EGhn/Q+rYAIpQ8gLtPiBoEfbyG1uNQ+5yn6EVtDUy/ofVsEEsgkhQIsPaA8AerOIpuYzkPP2ehFCCMKH2ByIVTS8QDgCtPmBtgAMh2pszKRKmdJthPNyCDIPYhkNKxCBK3mLSMC8CfD0QsacijTACQSBTiYQq2g4gXh5oKMJaPWZP/OdS+TNrVAFVAaa2CShZTSMQAIC0NkENFs0XVBMFSGW2RHWaqSCxGbRLaTuBSJwQE8IaLX4Htq4lwbv4yFmym9+aRW8hwPvwr1J6oW6jcUiKDWljrVbLw4ASM2lrb9IGagMpO7b3/dpFOpSIEEvcKQN6A3ZF4HuDXu29/yzE8IDsctx26/bKNSVQDwcMNgMjLTujZGyg56f6ULHeBuIzTHvhBC0jIZtvWYjURd9EAKgMwh0B51LPLZ+dwOxq3Hb50GKWREtQ0wgVlHzHiToAcba7W1O7UcWKc5/+bIjG+cIAQFLl1Zsv26jUNMC6QoCo22Az2E/OPHcbWRXcrZ7DwAQMyKmvjNt+3UbhZoUiMABo5GS13A6ynv15hruvDgDyYE5kG0bJteRWc46dv16puYEEvICYx1A2AXrg6S8hDe/9DakvHPiAEoRAdM/mHPUhnqlpgTSEyoN37olafmVP59AMWXvxGA5pIKMu9+fA5VdvztizeGSW00ZgQOOuKRJtcXSxRXc++mC495jC1mUsXQ+5rQZdYfrBRL0Aidc0qTaorBRxFt/cMXRfsd+xKyEa391y7HEdfWKqwXS4geOuqhJtcWlr19zJDCxGrmVHOZfW3LajLrCZbfeDu0BYCTivh2H7v1kAbHLccfWnysh5iRc+8ZN5kVMxJUC6Q4CQ63u6W9skY3n8Pb/vO5K77FFIVnEwhvMi5iF6wTSHwYONTttRRkocOHLVxxL7aMWMSvi+v+57bQZdYNrBEIADLWUhnLdyJ0XZ7AeTUKW3C0QAMguZ7F8iUX4moErBEJIKWSkw9kdxCqSupfG9f89aW7TipTWkzd1B9B8OATea95PIeYl3PzWlGn1NTKuiOYdabVnUZMeqERx7ktvm9spJ4DgF/D41x5B65FSe3Lun+fx9p9ch1QwQYQUWJtKIruSQ6DDpV9sjeC4BzncUsos4lYmvjmFzFLWvFnqMuIAgIH392H8s8ch+E1aPkspZn50z5y6GhhHBdIbKkXkupXVyXVM/cO0eU0rUgpP3y+OLYafGEDPo13gfcZFIhVkRL83y4Z8DeKYQDqaXDpatYlUkHDuS2+b0+QBdsTxbHlxbPHQb59GoN1nyn6HUl5C7ArrrBvBEYG0+kvzHG7m6l/cRGGjaM4TWKU4gNJuUe/98rvBmdBpl3Iy7rw4Y7ieRsZ2gYS8pcBDt00C7mblWgJzL8+bE2tFAI9KcWwR7G3CqU8egxAw1tSilGLprRXbUxHVE7YKROBKsVVuCx/ZjVyU8dYfXjUnSnfTczxWoc+hxOiHDyPY22S4qcUJBIsXWJSvXmwVyGgE8Lg8x9mN/3u71LQyyqbneN/XHkHrqI7OFgHOfuFBcAYjNcWshLmX5w3V0cjYJpDeUCk6180kpzcQfWnWFO/haRLw+NcfRYsecWwSHgzh6NPD4A0O/bo1uLIWsEUgIS8w0GLHlfRDKcWFr5oTa8X7ePzsV8+iZdh4Op6xj4/C1+o1VAfhOZZcTieWC4TnSstkXdztAADc+ccZpJeyhjOT8D4ej3zxXYgcM+eJwAkED//WuCEvIuUkzL2yYIo9jYblAhlpBUyY97KUzHION567bXjUivfzGP/McfQ80mmSZSU6HmhDeEB/FCelFItvLDuSlqjWsVQg7YHSzk1u59IfXzPctOL9PEY/PIjhJwZMsmov458ZM+RFKAUSN9ZMtKgxsEwgPFcKX3c7K9cSSEysGYq14jwc2o634uQnj5lo2V46xtvQPKg/a4VUkHD/1UVzjWoALBPIQLP7h3RBgct/esPQqBUhBL4WLx595ozliatPf3pMd5wWlSju/5QJRCuWCCToAbpduvBpN/f+ZQFZgxkJOS+Hn/3Ku+EJWr9yoGO8Dc2H9XuRYkZEcjplrlF1jiUCGXF5KAlQyiN17S9uGorU5f08Hv7tcYQH7XsajH/6uH4vIlMssVl1TZgukO5gad7D7URfmoWY0x+jxHk59JztRP/7eky0qjrtpyNoHgrras7JBZnl8NWIqQLhiLtD2LcopkVMPDcFMavfewgBAWd+87SJVqln/NNj4Hz6frrcqv078dYypgqkO1jaZtntTP3DXUOjVryPxyO/+y5b+h3laD8VQcuwPi9SWDchzqyBME0gPAH6a8B7SHkJU/84o3vkivfxOPyBfnQ+2GayZdo4/Sl9XqSQLFhgTf1imkB6w+5LEVqOuz+cA4x4Dy+H0786ZqJF+mg/FYGnSbsHK6bZ2hAtmHJL8wToq4FhXSpR3Pp2VPfIleDn8cDnTxqOrjWLzne1ax8udPvwosswRSDtTaXFUG5n7ifzukNKCCEI9Qcx8PO9Jluln66HOyBo3M63qbMGYn9chCm3dbeLM5NsQ4GJ56cgZvU1MTgPwZnfcmbUqhJd72qHLGoTfLDPpdn5XIphgTR5gHANzHvEr6+ikNQ3gsN5OPT/XK++lYEW4m/3IdSv7Ybn/TXg6l2E4W+rJrwHgLs/mNM9csXxBOOfPm6yRebQ91iPpnXr+VU2iqUFQwLhCNBZAwKRChLmX1vSNffB+3mc/MQxeJs9FlhmnObDIU2hJ3q9aKNiSCDtgdronC+8sQzC6xu+8bf5MPLhQZMtMo/IsZbSYg+VsHkQbRi6vWuleRV9aVZXbijeVwpGNCPLoVUUUkVN4i+yHFma0C0QL+HQ7PIsJUAp9mj11rrm8zgPh55HO9F+KmKBVeYh+HgtDsRQ/Fkjolsg3d5ATcw5zb08r8sDcDzBg58/aYFF5hLo8GsafHDLttW1gm6BdHlqY8Jp7uV5zTeF4Odx4t8fNZxuxw54Pw9OQ0dQLsrmbeXQAOgWiIe4v3cuZkRszKU1n+cJeTDykcMWWGQNvoh6IXM8Ybl6NeD+u9wAC+dimrOkC34eD/7GSXBCLTQgSwTa1HcGicChmGICUUtdC2TyhaimpyUhBOHDIfT+TJeFVpmPJ6w+HotwBMU0mwtRS90KZPXWOtILGU3ncB6CM//xlEUWWYcnpGESk7CQdy3UrUAm/y6qKWEz4Qi6HuowlGzaKbxaguEokF9jk4VqqUuB5FbzWLwQ0zRaw3k5jP3yqIVWWYc3LKhe5yGLMluXroG6FEj0xVnNczT+Vq9pCaftxhP0qB7qlYsycgkmELXUnUBkUUb0uzOQNCyMEgICjj49YqFV1uKLeDVttJNZYql/1FJ3Arn3yoKm0AsAIBww+IF+awyyAX+bD1oSnGRXctYZU2fUnUBu/W1U06pB3sfj2L8dAW/CrrJO4W/za+pvsTUh6qndu6IMiYk15OLano6EACMfcW84uxoC7T5NTUoW8q6euhLI0sUVTTcK7+Uw+tHDEALOJIAzC97PawrILGZEczYqbQDqSiCxy3FQSUMHhBAcfXrYOoNsJNDuU/1ejieYeP62hdbUD3UlkJyGzueW99A0C+1imjVsGCoVZEz/6J7mSINGpG4EklnKapshJgTHPlYf3gMAImMt2pYVS8Drz1w0vC9jvVMXAsksZfHKb74JSUNoSfup1rrxHgDQPBSGoCF5gyzJyMayePP3L7HNPRWo7d4pdsRRSBZU9z94P4++x+zd18NqQn1Nmud/pLyMxMQaXvvdt/DA506Udq8ygWKqiPjEGuLvrCJ+fRVrk+uaBk/K4Y/4MPrUYYw8OQhBR05ivdS8QF79z+c1iQMo5ejtfrjDQqvsp5AsQs8aNjEnYeVKAj/5jdfhDXvQdqIVbcdbER4KoflwGE1d1deaSAUJSxdWEHs7jvj1VSSnU6Z7pdxqHtf/ZhKTL0Qx/OQgjv6bIXibrV/xWdMCycXzyCby2kauAHibPWjqro0lw2pJL2Z0L6WlMgWVKXKJPOZfW8LiuRh4LwdZpAAomofC6H53B4afHIS/zYf8agGZpQw27meweG4Zi+djtvVlimkRky9EcefFGYw8MYAjTw/DH1E/gqeVmhbIxPO3NW8iQ3iCvvd0W2SRc6QXsob2W9yNLMp7cv6uTq5j9fY6br0QBcdxkIrOd+ylnITb35lG9KVZHP7gIRz72AgCnean2anZTvqVP5/A3CsLmhMycAKH4ScHTLWl9KR1luRMCrDSDFpqmrpBHLuRCjKi353F//vkv2Dim1OG+zr7qTkPIuUknP/KZcSuJnS59fBgCM1D6ucMyhG/vor5V5eQnNnAxkwa2XgOnEAgNHngCQoIHwqifTyCjvE2tB5tsWV9e6PPachFGTe/OYW5l+fxwOdPoOdspyn1ulogUkFGNpZDNpZFZimLxQsxLF9cKT3JdDwphICAsV/SF9YuZkTM/vM87n5vtuxe47JIUUgWUEgWkF7IYHFzu2Xey6PtRAvax9vQcTqCthOturdxVkLL6sl6Jr2QwRvPXMTYx0dx8j8cNVyfKwWSjeVw/quXsXprfTPKluy4dwPNCM5D0PsebQkZkjMpRF+cwdxP5nVlJZQKEmJXEohdSZRsEAhaj7Rse5j2k8bmYwrJIlZvraHIYqv2cOvbd0pb1H3OWD2uEEgunkdqPo30fAap+2nc+e5sqW9BzUuVyfs4HHlqSHVQnyzKuPmtO5j8u6jmUTLleikSN9eQuLmG239/F4QQNA+H0HWmHd1nO9F+OqK4OjCXyGP+1SUkJlaRuKk9MUUj8c5f38K9D91D67D+9LG2C4RSimR0A/Eba4hfX0XixioyyzYs4KFAoEvd0O7qrXVc/Po1bMwebEqZDaUU69ENrEc3cPs70xACPDofLIml+2wHmroCkHIS5l9fwuzL84i9HWeZETWQSRt7gNgikORMCotvLiN2NYHEjTXd26AZQSrIuPRH13D/pwsY+fAgust04iilmHhuCpMvRB27CcWshIU3l7Hw5jIAINQfRDaeYzFTOhFFY/eaJQKRRRkrV1exeG4ZC+eWkVl0xxpoSikWz8eweD6G7oc78OCvn9zesy85ncL1v7mFxfMxh63cS+q+9tSpjB1cIxBKKWKXE5j78X3Mv77siJfQwtLFFfz4s69i6IOHkJxOYeVawmmTGBbguEA25tKY/fF9zL08X3PJAOSijOhLs06bwbAQySmBpOJpvPLsG7o2p2Ew7EIUjfXddIeaZJNZJg6G6zHaxKrZWCwGQw2S5JAHYTBqAUEw1s1mAmHUNUwgDIYCHo+xvANMIIy6xuNlAmEwKuJYEysk1d5OTIzGI+A1lntAt7xGpGPo7e3dd3RvKDmtsHiDAFVS1FR+sex5ROlF5RpLtqg7b3+gfPnzyOZ5
114+ B1/bMVO7nYqfTdlIhfMUvxUd51lhy67Tyq1UqJI9Jew1tnpUt0B6+/rwB89+fbtcyp1Q+gRk7z/Gy9tfzMHyrrfpKG8eqVDetsaC8o5Juz6zqvKuz6GyvKtkeXn3fbDzOauVdwpGynvzd+wv64P1QRgMBZhAGAwFmEAYDAWYQBgMBZhAGAwFmEAYDAWYQBgMBZhAGAwFmEAYDAWYQBgMBZhAGAwFmEAYDAWYQBgMBf4/fQGdtWECNsgAAAAASUVORK5CYII="/>
115+
116+ File created by <a href="https://www.online-convert.com" target="_blank">https://www.online-convert.com</a><br>
117+ More example files: <a href="https://www.online-convert.com/file-type" target="_blank">https://www.online-convert.com/file-type</a><br>
118+ Text of "Example content": <a href="https://en.wikipedia.org/wiki/John_Doe" target="_blank">Wikipedia</a><br>
119+ License: <a href="https://creativecommons.org/licenses/by-sa/3.0/" target="_blank">Attribution-ShareAlike 3.0 Unported</a>
120+
121+ <img style="height:0.6949cm;width:1.9741cm;" align="right" src="data:image/*;base64,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"/></p>
122+
123+ <p>Feel free to use and share the file according to license above.</p>
124+
125+ </body>
126+ </html>
127+ headers:
128+ Content-Type:
129+ - text/html; charset=UTF-8
130+ status: 200 OK
131+ code: 200
132+ duration: 135.932417ms
133+- id: 2
63 request:
134 request:
64 proto: HTTP/1.1
135 proto: HTTP/1.1
65 proto_major: 1
136 proto_major: 1
@@ -83,321 +154,426 @@ interactions:
83 content_length: -1
154 content_length: -1
84 uncompressed: true
155 uncompressed: true
85 body: |+
156 body: |+
86− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
157+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
87
158
88− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
159+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"User"},"finish_reason":null}]}
89
160
90− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" asks"},"finish_reason":null}]}
161+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" asks"},"finish_reason":null}]}
91
162
92− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
163+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
93
164
94− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
165+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
95
166
96− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
167+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
97
168
98− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
169+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
99
170
100− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
171+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
101
172
102− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
173+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
103
174
104− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
175+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
105
176
106− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
177+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
107
178
108− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
179+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
109
180
110− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
181+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
111
182
112− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
183+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
113
184
114− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" fetch"},"finish_reason":null}]}
185+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" fetch"},"finish_reason":null}]}
115
186
116− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
187+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
117
188
118− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
189+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
119
190
120− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
191+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
121
192
122− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" https"},"finish_reason":null}]}
193+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" https"},"finish_reason":null}]}
123
194
124− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"://"},"finish_reason":null}]}
195+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"://"},"finish_reason":null}]}
125
196
126− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"..."},"finish_reason":null}]}
197+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"..."},"finish_reason":null}]}
127
198
128− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
199+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
129
200
130− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" tell"},"finish_reason":null}]}
201+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" tell"},"finish_reason":null}]}
131
202
132− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" me"},"finish_reason":null}]}
203+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" me"},"finish_reason":null}]}
133
204
134− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" if"},"finish_reason":null}]}
205+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" if"},"finish_reason":null}]}
135
206
136− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" it"},"finish_reason":null}]}
207+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" it"},"finish_reason":null}]}
137
208
138− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" contains"},"finish_reason":null}]}
209+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" contains"},"finish_reason":null}]}
139
210
140− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
211+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
141
212
142− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" word"},"finish_reason":null}]}
213+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" word"},"finish_reason":null}]}
143
214
144− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
215+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
145
216
146− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"John"},"finish_reason":null}]}
217+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"John"},"finish_reason":null}]}
147
218
148− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Doe"},"finish_reason":null}]}
219+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Doe"},"finish_reason":null}]}
149
220
150− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
221+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
151
222
152− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
223+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
153
224
154− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" We"},"finish_reason":null}]}
225+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
155
226
156− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
227+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" we"},"finish_reason":null}]}
157
228
158− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
229+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
159
230
160− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" produce"},"finish_reason":null}]}
231+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
161
232
162− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
233+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" produce"},"finish_reason":null}]}
163
234
164− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
235+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
165
236
166− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
237+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
167
238
168− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summar"},"finish_reason":null}]}
239+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
169
240
170− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"izing"},"finish_reason":null}]}
241+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summar"},"finish_reason":null}]}
171
242
172− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
243+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"izing"},"finish_reason":null}]}
173
244
174− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
245+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
175
246
176− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Must"},"finish_reason":null}]}
247+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" request"},"finish_reason":null}]}
177
248
178− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
249+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
179
250
180− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
251+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
181
252
182− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
253+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" English"},"finish_reason":null}]}
183
254
184− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
255+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
185
256
186− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
257+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ≤"},"finish_reason":null}]}
187
258
188− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
259+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
189
260
190− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Under"},"finish_reason":null}]}
261+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
191
262
192− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
263+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
193
264
194− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
265+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
195
266
196− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
267+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
197
268
198− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
269+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
199
270
200− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" One"},"finish_reason":null}]}
271+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
201
272
202− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
273+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
203
274
204− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
275+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
205
276
206− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
277+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
207
278
208− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
279+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
209
280
210− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
281+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
211
282
212− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
283+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Something"},"finish_reason":null}]}
213
284
214− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
285+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" like"},"finish_reason":null}]}
215
286
216− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
287+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
217
288
218− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Something"},"finish_reason":null}]}
289+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Check"},"finish_reason":null}]}
219
290
220− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" like"},"finish_reason":null}]}
291+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" example"},"finish_reason":null}]}
221
292
222− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
293+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".html"},"finish_reason":null}]}
223
294
224− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Check"},"finish_reason":null}]}
295+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
225
296
226− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" HTML"},"finish_reason":null}]}
297+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" presence"},"finish_reason":null}]}
227
298
228− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
299+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" of"},"finish_reason":null}]}
229
300
230− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" presence"},"finish_reason":null}]}
301+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" John"},"finish_reason":null}]}
231
302
232− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" of"},"finish_reason":null}]}
303+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Doe"},"finish_reason":null}]}
233
304
234− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" John"},"finish_reason":null}]}
305+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
235
306
236− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Doe"},"finish_reason":null}]}
307+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
237
308
238− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
309+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
239
310
240− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
311+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
241
312
242− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
313+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
243
314
244− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
315+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Check"},"finish_reason":null}]}
245
316
246− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
317+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" example"},"finish_reason":null}]}
247
318
248− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Check"},"finish_reason":null}]}
319+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".html"},"finish_reason":null}]}
249
320
250− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" HTML"},"finish_reason":null}]}
321+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
251
322
252− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
323+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" presence"},"finish_reason":null}]}
253
324
254− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" presence"},"finish_reason":null}]}
325+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" of"},"finish_reason":null}]}
255
326
256− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" of"},"finish_reason":null}]}
327+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" John"},"finish_reason":null}]}
257
328
258− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" John"},"finish_reason":null}]}
329+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Doe"},"finish_reason":null}]}
259
330
260− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Doe"},"finish_reason":null}]}
331+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
261
332
262− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
333+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" length"},"finish_reason":null}]}
263
334
264− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
335+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"?"},"finish_reason":null}]}
265
336
266− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" about"},"finish_reason":null}]}
337+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
267
338
268− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
339+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
269
340
270− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33"},"finish_reason":null}]}
341+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
271
342
272− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
343+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
273
344
274− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
345+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Check"},"finish_reason":null}]}
275
346
276− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" fine"},"finish_reason":null}]}
347+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
277
348
278− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
349+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
279
350
280− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
351+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
281
352
282− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" colon"},"finish_reason":null}]}
353+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
283
354
284− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
355+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" +"},"finish_reason":null}]}
285
356
286− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Return"},"finish_reason":null}]}
357+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
287
358
288− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" just"},"finish_reason":null}]}
359+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
289
360
290− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
361+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
291
362
292− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
363+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
293
364
294− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
365+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
295
366
296− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Check"},"finish_reason":null}]}
367+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
297
368
298− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" HTML"},"finish_reason":null}]}
369+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
299
370
300− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]}
371+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
301
372
302− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" presence"},"finish_reason":null}]}
373+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"example"},"finish_reason":null}]}
303
374
304− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" of"},"finish_reason":null}]}
375+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".html"},"finish_reason":null}]}
305
376
306− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" John"},"finish_reason":null}]}
377+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
307
378
308− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Doe"},"finish_reason":null}]}
379+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
309
380
310− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
381+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
311
382
312− data: {"id":"chatcmpl-1ec924ab55addac65d6d909e","object":"chat.completion.chunk","created":1781217091,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":173,"completion_tokens":118,"total_tokens":355,"prompt_tokens_details":{"cached_tokens":64},"cost":{"usd":0.000107384,"hypercredits":0.00214768},"remaining":{"hypercredits":0}}}
383+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
313
384
314− data: [DONE]
385+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
315
386
316− headers:
387+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
317− Content-Type:
318− - text/event-stream
319− status: 200 OK
320− code: 200
321− duration: 495.722032ms
322−- id: 2
323− request:
324− proto: HTTP/1.1
325− proto_major: 1
326− proto_minor: 1
327− content_length: 0
328− host: example-files.online-convert.com
329− headers:
330− User-Agent:
331− - crush/1.0
332− url: https://example-files.online-convert.com/website/html/example.html
333− method: GET
334− response:
335− proto: HTTP/2.0
336− proto_major: 2
337− proto_minor: 0
338− content_length: -1
339− uncompressed: true
340− body: |-
341− <!DOCTYPE html>
342
388
343− <html>
389+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
344− <body>
345
390
346− <h1>HTML test file</h1>
391+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
347
392
348− <p>Purpose: Provide example of this file type<br>
393+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
349− Document file type: HTML<br>
350− Version: 1.0<br>
351− Remark:</p>
352
394
353− <p><img align="right" style="height:5.0551cm;width:7.62cm;" src="data:image/*;base64,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
395+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
354− 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
355− +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
356− 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
357− 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
358− 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
359− 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
360− YDZCz8ro5c+3Lv5I9knsF7MaIUzRl/EGt15fW3JbntgnIg3ll7b9/Hr5a9gxk38a2+WPjJ3YHs6TiGotsy3rej+wHbI4z9yZEU5c8h3RtPbnyR7CX8Y/2+qf5hIz2RuDOmWEL7+eLpwIO9lpLk+U5cbh1CvZRtfSPtaYYXJ4QTNm3SEGs/SNWPUA8nTY78keWy2Fw2n2wmFybMO2MnLI/OIcoMt3KPLvL3LZJ5+UfkzmS326GShjaFrxL4k7fys0WGfbAZFnOFhwgiY4mdEDHkZDMQByzLK2f4hY3YUlwbdHLYcsVzsI7K9v9JytZDp3y0S5han5BKkJmkYtypDGX8tJxj6Rpz8aHtk+wc2Hxacyfa0Ow/IH38HTsN/pIIF8jVwjP2+OfZIkByDMljBn5yTISJKADyBdMnPIfZ/mBeWYsHy+cg+/mLywewdgLNj5adsJOwIyzUP4my5tY/wBsYs15CDZGQEtHkLxA/bcdnPlm+XRYzrI9LTB8ukdMZJ5cdtfV3bcfbxuMQ0xkCkaIxyFHWRLWThy79lTtr8hFh5Kdk+wjz8lsf0XwtPxxsT5KLAw3jD2Dn/EAFttm2N12S/xd+2Iq/l9UVxgnTC+QRLYsIlrCWHeyWbx2RZI9hfbPhPe22xIx1lZPE/5IQZ1/AO5I/JHEn4lDlrmybc9lGVQM8ayk94SvIqOyQSZ7IsQH4w8l55O3n40v+7QLcIdmwgP3f3f+G8uf8OWH2TAsLl5H/DCSyfhmIn9siQyWCEqw+30YGAMjLsBtHbFuF6kKWchDK/De8dT5y3nZZ5ESLOzluRJiGA/970sWyyepTeLIl/efm9jd/Ok95MIYJB5dms/hn24cjxtmWXn/AAGJj8yzLNks7bk9/Mksk7P41bs49sbbblu/ifyPLX8AZoHZKxkjHkYC1OW9sOf5fxch/c2PzMtlyVtCPNhy2OXtkuT/AIfm5bfLZ1CH5ssOnbmy4TDlv4N27M7EPZm52O3yLyZAkxkCdXi3BlnyDDINvJ8jsj7EJ7aZNlm+Xlpsx2//xAAqEQEBAQEBAAIBAwMEAwEBAAABABEhMUFRYRBxgZGh8LHB0eEgQPFQMP/aAAgBAgEBPxBiGnz9wF8v9f8A+m222/8Anv8A/bbf/VaScP6c7/nzO/XPPr/meQ3b2D4jXIMhnkjapsD5tGWqMDll5e5T4kYYc+MsGbv/AJ7bb/57+m2/qf8A8dt/9hV58f30uL6f2Z6f6SV3MujbxIDB9T5y9hzt4ycGT5vPbrH6ZxrOf3+YtzGf/j7+u2222/rttv8A5bbbbbb/AO0J+ghE0AnPz/Pf5tYOD7Lkc5lo6RtredZ+UiZGkB3Z+kau2Z+g0jDHhz/qR9bKvWTz/wANtt//AAjdWQs6hp+ITH2anff039N/UiO+2UT1gAPc7e5fuHDeTdlcvfZ8/TGO3wQ87Dh2F3ZH28/om/oD90b8XzXsDAy0T/8AigvkWw6kyESUbnn4tZKxbB/eUl59wxOf1u4YFtD9/i1C5+/Yirk0Py/whRO/jL5j/WOJPybZa/i0iF7eOW82TXSWx5DmktPZOWsb8/oT6fPYA/8AosZ35KrrP/4uuckaAViP2ZWD/wC3e71/0gLHXxfKi+LEvj/nk7cc2V9zPwdLZ7JRuxyuPxGuuzAH+yW+QL2XcF+IukrnLr6wHxJyeIObdW87H3ftHP02E47smD35mo6/14fz/jEg92//AISQXzAsDfuGT8QDGEQatF6iAhmLZpw9xvl7EJ75OUeyePIkUDy4OxmMgqcf2/ktN8jYXY9yOeyPi3se5J6WhjJ0tDbh2DZctPj9MiH/ANtrRjttF/P97jbr92WWf+5z5gNeWzvPqQV3IcF8YnR1/wAy2cPYBhQkOWJnwkzDxgqzz0+7ZDi7/vdKY11ctEznMvhB+bFcOdmefFk4NvpsFrBrVyZ5Aox1sx7euMO3rJHLGfmKok+8lbO9lzhEmQXxGk0PllMAssHT6IvkvO/+0uXD+b+XLN3F8CXHyfMWTyAgv9r7zOM2X30JSYYXzA6izVIuwd9f+rRe8zZEt2x4QNBqn7SutqMn5hFtZNCy7s4NPi8cj+1gGmP8sL09vA85/eDu292G2N2O+245fWcIMP0HUGQEhONuMpKM+TgvnxdowblPl82zPbt7OP8A1NMiz+ZwJAPl+LZh7DC/HJl9N2fhwth3siFmfV9KP+bY3zj/AKM/f3Hth58TD8FmT+sliPI0/oizc9/4gr1hMm6tf5lppbHZkTme3LE4Mba+GefxKsUeXDkkDgQA9kbvZccuZt40nTYBrL8Fh5aJ6sAydxP4j6Z08y+e/wCPmzuZE1rBD/5+ZOm0CvxM6P8A0BDfmMX8QDTt9BLt/wB58piHLDXL0WOQUGCyAfcRnvglV0vZ9/z2375a8AmXu6f8/e5Ju/2j5DMuxfZQfiEJdDD78kJzuf5tsZ8tJ8SDjHgSGxDVHZtgHZ2n5tPwCx2lPTy/KcA6vj/ePLBIztpzJXstCHOxu98nvk6/MAi9sFzjr3S+yNnHsZtx9kkafxOfE39zPp/vP/to9/8AF57afovlcHspmyUveWouc+2J259XiFsTdp+f/sjzdZQ9ee/4yLR3P95Hs192XA/HPLrMgF582kOEyIh9p+8nH8WQzI4QfFl82+yyaRHy7wzD/wAz5MyHxkRX55/xIz/slnXll++T9+DphZcWwHX3kDN273zMsY6l4eB+Js/OZPmTrmW5EPl45jIobBzst2QzWP2lD9DI20Qz4jecz3I067LxfH+f6R2Wh5GmvsiNZ+IBr4nVryAInx/p3+9kE5K+iTJjLErD/eBIwsB+9wJdHwuXhlrlHrn1YE+c5dDOPz/vDR+OftLqZp+zZEPr5+0AQCMUv0ds4Xbjr217KK9hHqQIFjST5jwgel6AlHieSrZ8bj+ijxOsG8XT8zrcPCRHrpLu9PY37gNmjPL5oHr7EvtyD19zHnsGKcR1OLIRvpYO+sv7Fkm3XSDMN6xt2D9HBs5W+3yQte0f6xxquwfPIMD2b1zffsnNlp/xfkbOneQIU/6urIwHycYmOk/cFn3ktAcMlj7Oft+YG34noDhuGL+LTHAx9wPH9IBr3/OQHXz8zhJ6NlnQfc+SCx6Tk48fpGhkkcY2hyxNOQfF+c4Nuz3l51pX38wBjZuz6vTV9UFActpCi9uY9Zn8EZ6Oe2jjiDpF6+G/62KzI9nzyPE4wL1zbamwp2AuPclpYJ85AT1krUIe4W3rkuWQGT9kCF5G1ObAROf2D3+tjZ8gtAX+9vg7OA+Y6ot92358PbKfMZROQ9oQAf6zjhmm2So7+ZOKfNrUAfJN/wA/NlQDfeQAJ8k+w7IfNwj/ABmb8MFnORDGB7fuW8SDl9oRzLO3uto+ZIeX1l3Z3bA7ai75H1lGNPO/xYp/MgsTdWRKMjsj8zFq+T96r38fRJ0eb/jKHEgTOEiTFc5LD7OQZtgdl1pBYZjkri7ZNGxTsHYIO2MOxgeyNZf62MR+bhD3f8/z6n/O9I4HPiHZcyKNQB9bHhv+dmQSznlk6Q4atsXGHx/va7cX1Af5/rEg+XP+LIflQ/rHbk2Tgn3Ob9LkeoUn0xcTzbYvH/W4ZI9LJRJA5BwI37L0heJKfjaZYcgC/Mhs4mWibLhZ9bFu4XRXX7zemvqD+BNFcA7/AByNR4/rJahHwQfYpY46nYDfw/5sk9b8ToJ/eDGM65+bHfnkgFr/AH/z8RYWF9C9PxOD7jPJUwIRpYI/LCBsa7bs34QV7aGFvZCPj2HCFAemSDrLdd+LIU/2Iz7sbwkeB7Yy1lmo/MG1/wAxs953/P8Am2tJn3szXzsmfBxvtPz+bbg/22c95/eZe/8AF0HzDc+GUbgBd8Sasc2B8Th2SaJHY7fAtDYiH1ddWgas+kuGx5SmcnZSL5jtyH6IdTp7OBvXj/Fo/aYzfYGZ6eXACHzXX/SND9r/AJshPYgqdhS4hD4SgvTy7HA28D8wB5MPbjiwuk7dhkdLfH6BnpHWZEDaOkl1mQ+D/SxQdga783qIw+n+dvf59/rdhZq0+JjDGpr8w7yRmr7J8N2cDrnydl2PuFyef3tJePx/vfFUoVaNz4sQ/cOWY7fE/mH4gkfLR1Khg8sx2xOkHYG9hvqaEZyyLtrI0SQS3Hv5tY8LtOZGz4B/eRkgTOl7F6wyHhgfbB7EsS5Lr7MHwfP+fzKmHv5usesaPzMwmGyboyJ3+kBh5bd2p5d5eRrkK63Tt45IScU88/E3bt812Fwzt1TmZy2B4Ns76SpTxtcJ1gFs86Rps7L2SsgKmdAxn8L3EgeM4SHch24jLUh934sw7MD0uPfbxxkWRaFPL1PVWBuQa1luLes9Oz5kTOkIV+Pj4kx6LULoyGP4FxvB6sxxXhPf+n6sZG9gL5MZDp3+Wc9MCfmDIaWOFyBMtPAgzwtes98Lnr7erXiS5GHLO8vrdYDHIb+Vp16NyAkb35JHLgZaIfLtS4xJ7+XrGVj82tNmiG/xJhJmtsWOrFdnM1tBbu4GwXNyxzbTJ7279bIbZ9wC32e5GQZHiTMucCmpVgIa/iPAzTTy3wHZHPgTbrm3RGEKur5Ih7XkpduP8TYfD5+Y3+y/7idHjyRbA9LSCXnZ+OLOx1kAum3LickNwOS2weQL2FpEOyc2DSe3mDY+Dp3Ypj/bMEeBBeYnYm/iEP0kevzKaJbzZp2eH1ZoNhJvhGA21HNgisuLd9TqyKz8S+U94nqX9ZbTJQmml9rch6JXMll4D2DfYoYXBlkArtiOdnhy56+MIro3o/EhqOxD+H7vv+bl/CNpmO/ufNp+QTB/3hKf9kcLVhn3+bOCDG58ICgCXYO5AMGV5lhOvJ8uIu9jUGHJpB8XEHN/rLflFAocUfX/AHJh/wAa2azr/SAvXyZCz5R0rh75D0joclXkz/acDZG2TY3b45OJHxKcRxm7yNMQWzfbz2TRvGsTZuC8Mchb+21yHYizuscCAOwBtr+GwYQGO7I4fEr8z+0tfwTvJ3Hj7KMb/vdT345D159x5nv38yAVig6+n+17D2I8Tl4YHLb8TobDsggMiOWa3hIC2MgFghycSzCFo9sYv7Tuo5PwPs3APns4p/wf5kOGvWEP2SxV7F3j+Y+kHsnovR8XIvjb9pdyE38S7GxZ/VTbajEHf0JmXEBAjrdNkpHXYIIdsFvnI95cuPTOEBi1hxyQi89kZH7Q0Pv+k4/Mg5Hc5F+T/Rtdzq/2IvR8W3Pi5DuZaesmGfN9p4+5Pqx8fNhl8JOs3WWUy5u/Em0WwjPP0WjRgUg2D34jDG+L3z29oeFh5cuy4fUSn352BYF9tBvklX5CH4iLgtR/lyBsSPPmwWUgbVYD9llMEeJ11HkeR5aQW+iHJs7sEdnrAS4Q85cOsddkzIR8sD21JUr6/wCFgj8Zlh1jaLa+LyX2cD1+oSuITdwhWnkDvUe6dJfuXiwHW37DXdkIvxcnP/AGtxKZV63PYM35geyPq+fiEKPz/NtD8Fg57/WWw/6szkH+ZaNeSaBYsyTF3GyBj9kcQOr7IZce2XEFeR6WphJT9Ptc8P0J8y63NSdPIP0PZyPuLY9h+JryxdvpDhk4/E8hJMX/AImswO/uzr9/5yABlVeQnjyww1+IxSZOHlwCX3D1sPd7bkvX3ZPPYdIxqN7M69gVO+7byGvf0EBYQOB1lAXmzKDJh/mHXpJZhLs6i/egexuSuPNl8fIvY09h7n3fyFo8kj2wfmGjedlrl9N8MW/p5+m4x7brEtgNvy23F72xYa/Cx3GDTsFZOR5GMwH8Ww05MZ+Dn+8u68hMLWz5nL8t3w8sEtRkbeCTes3msv1POJW38y5M1uQN8EmaOx7Ma5ccJXhbrxB26A9nwef3vYzPLog+uQuDtk7y8PDJo+wvDYHH3LpOGEGQJyyyyTJ8ibZYYz26b36n52XfdTv5JdZSErsAxu2T678z0SUXfiNDAcmZ/hCeQjYzD5i0XxlhWS6m7+YxkZ2yTHYb1vHbw5ZZVg+52xHzrOZAHty5sDMg2MJD9M9l42Zlp3d2MErHhvr/AKfmVEdYK4P+pIxJdMu3JRr9x8d2Zjfgy5H5nF9Sd5c8mP8Awy6Eguvp/TnyIGae3UNsufE7vGxYxHSHcuGMtLR5PeN+/fo4ydvRCyKJPqdTGxmRvZeSOE0zdP01TGHWwNjCM+Wvq+CfxtOWA7YLheWPIZB8wzJh7KHMxgfYSe4yUH4ZsxgyLz5hj4QDHYGvkucvR5Hy9ss4I+xk+IVnvR/S3Ln6Mnb4NkKFzrI9kCRkHhaPCGTmy9liETsH1B7JfZRux856sjOSdLmZG6t+rl2ETV01lvkA9teT8LU5AjcFE/QBXHbHt1M+SekpvGRMnNjEpgfi06kOdFkziDHCz8lB5+PuGgcd8sPU5AW/dpDjWZfRHBkAeWU4+24Y2nJEYfix9WX2IzCfxvrlfmEfNuVb6pcbJ21HbQ9l+RFv6PWhPZhnY07fAW65fAuzfm7mBw8sCbnNnwOfU6Z8wz2wO2PiWbvJ2aeP6eptodgzSMMtID2XPbTwunth+JXlt89t5yD7OJrLDjYTnLSXCNA4P1y1fcpxOROvpdAfMDcfm+IXxPsZxlHsRzdsJLSHrsj3JpvCVn4l2v1HUC6lktT59oT9Jmlv1J1rsm8s+5aANvgsfWxoxjDls8WI/mBfpdJXUHEi3brDZGkUeDODkgcjB0lknhkOpcZ/ol0keRi/DNwcl4XBAywyPqAP0g2+bK95ttPmQ46TrEcAS+HydmTPCEP3sXRtX8zLSETaJYyX4h9Rcnsy7e23gtyUkP0d22uRHTl+l0J+LSGEbix6QyOG1fZ+xZ4ebJFzsAbPp82viGY3jsetlNb3sDlfic8fN3NYNe2gbXp5HWRx2Mhl821evL6FjH8LcNlM7L6XXMjk6kbyOCGtmhz+kHoFYCRR/j+JGb1+/f8APqRF7dPjBAHX2B15fD4Q/HxMKltQYgSjaCQ3YGPLV6zPnuAgG3oFz+nn2H8XsS7klLzD+z+jhfjdTYH/AAMko7sLaCf4kskHJNl5l9hE6WcPiyFgMfWfs2h+mA9h3reNkb7df2sGrH82BsYHiT1jkNfYHeEaxt1gBszntg/Fg2s25BxlHVn4kF/sWCHLLwlzEg8Mk6MV9sRrCPPiYxbZnkZ32B9SA2z5JzbiQ3rAesAwY4RJfzP8tq8LVnT9ATy1jAu5/wAR2O/Ba8cfxG+P9kBjre+Tx+5Xv+lg5B8QPxIM28Y2h7CGs6VdT9TJMwN3ye6Fz7E2wBht9GHiH3filJjeXywWMcn52ntl+Lt5dPJC+R+F37H3Th5MHMhe5p9yXAydfOQnzC+NiyvZU9mgwvGz8TgSh47f1SvzLvy3Hdj5XLoXitBmXwpqifa8Ep5IbjP0YzS1FQWBr/ZBHrc/F94DnTUJ/Rfp+kwOsLn2Ju/cNIsZl9T5tjfbsQ/m9baQ26yE78w18hzZw8hzCFIG+SI+SPtzyR92pwYWAfMp8vAsoD3y08kblxxnb2K0sSTXYXxAefpDEZBrKJCvwJ34Rh0I09JecIYeR81sb4LLkM5K9jTrblrdLV6z5B3jJnzYH2F92929eRxsKAJGnFz8Fl/ANgky63B9xj1LoPR+rvmWfDpC5C6J4zoa32mIAtCQ1+LoD6iWBY8s+TB4nT2SZD7J8iSHxvqgnhHzSKBFjHtyu/LS6Lb5bv7fAlnLkywjPYD42nCz7kcSniRo8h/KOPYRPbzxZb1WXsm+/ol6dj7Q/Ejy/eH5snFsz88MD38yfsgjfZQHn9IzuB+bpeWm0dNh8tjYENTfdiOmOQQFS6RpcqwA/MZI2E4RwvyQbSNvbdZAB+bTeMYlCDyxEhwSH4mFDGjP52nVtaBI3sBZ+x2xoS92GfmzHUs3gSHyc3Q3TnJMc2VntxbIXL20ewS+WnxLnxO4SOpPkPxlhm26YwJDfi8MvxCfNr9WkNw68s4BP6WGGv6xFLseyQ6s5D+5UNtl9ZQjrJHr/ST7n+82RFqjkPnSwFvjZ4RRj6hcBS6wP8xcQJ+ZGnYRz82MIPWJ6SB5Y9+fqXf3hu8yMcu+RyXXJYdekE5HyeQuvxAumfxHutm3fbwIR0EJ1bbJtGB9J02GwB2RNIBiQD2+kOQy06j4GPoG3rlieww2VnJR6XvYx5PXtq4zttxtG0EuM1uE9/QhDjdwHdhftmD42L8RRy6gUj4IEfIIOY7M7ekWxMguHskLgLDnwimPt8Z2I8lLcTNs7y5uX0/QcPJHiPv2W8hLPMgfPv3JXyljuRXCNXMnjAwf0n8b1tv4szsv1HrYTcgBZvlrJWHfqQa+2CZK8YZp89nFs9yUPLp42SJDRhmS17GIT7uDAhXCAPL8DY8YPgjjYb07IM/k9ryy1J6ckOAGHsjpI63U+YREu0YwfulGfeQ1+h/ePRMJTrYfgW/WJictpdg98n7wXVKHSRGQPzd+Ns3YcQ1wj4TXF31W3lnOxrliMK4lGLrxkHscggNyXuQZstcIvIcaNgWgkPLJ+b+CA6Nv3YckNj8I0208tkjPmDOZddiG9Lh55CNEutu42+m3xZZ1/QcEMPbLrI/I1wHYHT3+bhZNBDj8l0f0jr7ZIPHyMOlv4XPpdQ3yAN3rZ+Pl0z1da+LCCJFdfqUF89i3Ty3XkANtWHlg7lMjpF3XzGfi67Nes8MZck5dOwTrK4wnZc0Yur5mZiIutn2iwJx5dfMiZI4zoYIAAnTIRtpA8JxlDhAfmHHbSAeXPHsoysg5ajYEDvIqyGXyt6foD8MX5XwE/cQnnA5ybw1jIzjkg0+TpEmdHlj5b0vsnx8WKOewoO/UCzazH4YQzNZYci07uxrqS77bONhT6yFQM2T+LY1s9eSVy6ZlzZHbmHy9n0uiOiyYMkGQ3lxMBrGzZXbatQJjB8nySzI7MhKsu6T+4Pq6bKtvkgbhLzLH8UbcY0Y2nEvaTl2RnI+0JxIvGSeyE98vshjkIdIC1Evzdb5AH4tABz6tuvD6hTObgxsI+f8ASHgw7DtqcjJvq6B5ctTtpAkTnxYtGR5jfzbuCeWHqQMyHmaHDBT9yS3fLiL5d4jtw7ANTkkMRt7IoE56LEcW4HOWR5yKMMgutt1lHkwnJPTA2tBHdH5iwCx5g6J2ML3IO8lzF1LhYMbqbbaPCE+IXha5Frur8JQ1Xm28hCdQmPif3Nn4eTjl6Jm1yGsuDL1vLATfOaZvLAGOBngYHOfMALmOwq7EhObk1yAw8tQRIxz0kEV1h/Nkcf0Ill+fJQ/hJXM5L+CwGwdPxGfytipckjpBnl/FjFtHb0Rp0iRB1Zvuy/GyuFuBEyPZOXfzZak8bAVunpfHdAlJsyGAgd34uMNhDZCwJ9yBotSGxxnZxOQxg+3oOyxibQIudsaMo5vzBdu/PZ3201nA2DrDK2Ji9LfVTnM2FgbMK1CPZHTyVwByEvWEdPLFVzZRwyReGV07D9xT6D/eM8GQ2SaiQJl3CTMRRgcxaushH3th7ObImHL6LUcXwg4Tg/tc4Y4Gy7t5E60IM2+WQ4sBkh0W4fc99uQ+o5EAMjl7MHvZBSDkGEE9P0T5GAeSvcstR1A3GKN+CAxD4uiPZJ7d3nsHGRAORhhkgp4urVD424dOwI5OnV7tHbUiZ1gho2Lt0X3GZBuw2xZAp321gs1adICd+JOY9tRhcAezmo+JPzvWykHLoEiMIPz3VyQdtfCQOWN0PboDKDD4kVYO+3wvJXygbbBWcOr5CPPuPJ3btzuWk35lr6nPZ6GFeL2CRHOQj99ro8mPDkz0Lv2x1bnMOJJuT0ZcLE2zt+SXhWwdQPfYoct0efokEv2IgJ7ZD8r6d5iW7Cfi0cZ+iABGO2dEsGLY8sV29GJ4Ep5KJiI4yERKDraL8506x/1jjA9lPfAkMZO+JYxg2NWOsZyeIHfn/S2PSWI3n/yEfJIHRj/vdLXdsGEX/gw0gJ1/jH
361− i8st1YPbNV6/8Ad/L/ANLBg9sjHfIbF6/Uhjk+b7OIv4ErhBwln5cPptH5yTjO5IP+eXIltyaVYvzLHBBHBa1Hwkb0mdvkz5eQSvjpYtHn+975z8RrPkH8wg5dTO2THzKYy6cdkmXn3IINkgHnxMnYDrbP2sZtr1asQHVWtcCA/mMhPNEY+Fi7vkqCkXVtYf1kN7OitwXsh1eQQK9/tNoGwEixp62tB3kIN5tuz9v5h71+D+LnOPzJ8EbGmm5F7HOL3Pq3ydG6XYdPowjRM6PLCaEZrG6cLTnZ/IRnjYaYd99gbJwH1JQTVPJVi5YPmy0EHJkDcz7/ADZCzDE2978QHHnzOBkYb5cKO84/7QVa5OZW5a0Xj7+L2PSQ6kEQ5OHmbeIc+5KEnYeXSSM86WXSF6G2O7Jn4R6zyDk9tsPqft92wZ/mSZ/Ra8PsnyJx+l9XlpY9sonRp+14Z/MATGEHx/SdNC5BgKZOx3rJgt4a1n72tz8n9eQhn3/X/wCQAAcL2Hl7P0cmQfy8LFHzGXhl+RP+lg6PHz9rc79yQP7f3h0adttbdOfuTgCdawHCB78/5u3vJPly+15b9TPJc8fcFWW4fpZq4RvD4uIMtKN8Q5J3twzyFy7YnNuRarDzeTpNumuSdPbXcENdORl34ks/zcKJS5Ode28fCC9efEgn1f/EACoQAQEAAgICAgICAwEBAQEBAQERACExQVFhcYGRobHwwdHh8RBAUCAw/9oACAEBAAE/ECtnzCptsBSQFeU3bAgsUg8Cdc+TZnc/+THJmsv/AMv/ANmTJk/+/Gff/wBDJk//AM3/AOX/AOhkyZP/AMu/qChAjsNYXV51cWfQLVCEoADfBVRxaAgDUFduIQ0TT5eBJCzXJ97xQFNGoL8+MqEqsePFn94x0eLKneKIXaeD+3GZ0nLhc06Dzql4x6s9Q114nGO3lIqgHY998GI+QdL0fvKIWVHrrHaz6wQEb8azV2acqLTJV1sTyIDtwyqBB074ITwkVF1wPBIQrt/oVl/+XL/9MDJk/wDk/wDkyZMTWTJkwMDHHI4Yf/H/AOTeTJ/+iL0ZcBVUCpt1YYXT0keFzwjzq1OBzdqtHDqsOAOv9ZYUhbX968ZtwThQbd6cCLRK5P8AjHla3jwxBZeB3MCjd6Xb7yQUKBV+sJIbu+sVNAZcP6HFFLHVHvrBswhFXAYpQSHv9GBQLweT84einzi141CCEEROjePJj1SSiI7tJGURdO/GIiZjqnpK/nXWscmTAyf/ACYGTJkyZP8A4hkMhk//AMzJkyZMmT/9HcwTz+NEO+3Y8g+MVrS9XFalzvsrXG+xs1RWNSF/ejZXkdb4MUElcLUm/wAuBKktHfvfeI38mzfPfXWGEBIgbeMGm4dKGA20g273luNJnqT/ADfrAIgXlNmOg0QeHzgREE0NOIH6H+f1l0BQb9fnOigPXtxxAq7P85ryPe+fWcetbNJF5gXYdTY5J57Qe0YBedTLOrFaIz1Xk3xz4w2UJQjHjWT/AOI//Eyf/wAJQnnmMSE1jGzKwXX1i8bc7SfOEoSXyP8A6oFWGCUT/wCkLaJEv1F+RMIRCIdFwKzcTpdDcHBcgdn1DwklnCYwlu6MF0rAVq7HkRUDWKM5A7nL7feLSiSbti774V+ctvx2C++zHxIdUX+zCtahBl9Y0ja7i33ixCOJ4T5xiDpNN5zaqndSA3jQWUgpPeILRqIEfGHpWbb7dfeEUqjQZUeMLvuCpHBiXXfnGhCsCF0PFxNROgLGACGxHoOYQciFDKFrUm4opshM6kHygK2XScdZRG8VIo0hEaMpTSkUP/4qVWRQCrPBmmhEDoMu3qHzjfnuaIoByXc6jXjB8ZXqIN8e3e/o7S+ikKZZThnms+sJtiCl4/x/ecJzLANlLrz8epgyc3YRt7gQ5deFwY52tuKPVLN8795dH0SJZ2cVh+neEwlCgU51tdf9DnH8EIIkU47j940fFMLQSME/DWa1MsIAUfmABAW4uxMvAQDd1CdvOOFroHl7yRrtR38tHvvxi7pNqAeevOQyXug19vbvxlIoNDfL3foxjUMEB0af74wDuotrzkIhXg95sWgvrDQVnq8v+4xpOAaeZljX33rzPnWINRZL53jULvqr/jGCniV/TKm5b3E1dZQkBBNgX/N3hLXyQb847J6yDRVKcpej5AKvDjoLSESGlCtk5bK49bVgaNBg6KBwgEaSDwSgYQDokw//AIrKhIGAn7/XjzjdFESRXbsRPcoczBpJ4RKenLr73NZB85TGWHItaY3rGyjEVIDei5502bHKGEUConKFdHyj8h1BEVSZDWhDT9ZE0rlsUg1RTnyHpx6RCsFU4BTT0fJFSkQXEVOaHnn1w8tAWU1scaFCe+mjA8YFIDyW6TWt/ThwuF2ZU897/wDRcBeOQ6O33esq9hBGVoUItN1n05u3n1wUDR1Xm0k3gikJSXY8/GULQ9gsa/xgAKrwvG43xrAV2poDvF7dO3oDT+cXot6eeDeK7YMVb7EkyvQOoMP1iAgu5hB0q6r+MhFOhwe8cBIKG+Ru+WYECGldmvjIwJQDZU3p1/5jgjnJJ40GEoHRnI+8kT+Cb+cbTNvnGj6EydIB5Zs7u5M1R1aiqrCOARWO9KyLJxgCsAAmmDLpDdztKBuDp0F5lWh//ACBCgV7WB+cJoCyjgDNJF5RT3p8/wAYumwFE0mWXR/0JhbJWlBCpVNULw9eclSLXBPIRvD+kmDSymm1YXZdD4UdmrJSB53D4cAkpHnHmWwlZSREqicxpBxHPnVgVA66N5xxaEnymPdBZ4+HOZV6BVISs1d6fRhPQYsD1Ubw1/o7r2Eg22CFFm3lOGYF4ULCNC8Jr5bxdYA5SJNCqTXBzdVarj7WilgqrREgcjQMwzUDo6ozaDt3yy2OBgVsawCI83649YMBRGg3ep7PoMUO6e5QRf3nEje0CLtVFkab/jfEPRSsh4T2Yw07OkJr8TODAAdDfq4RCst2s2KJ0aesKJL+VtfH/uCpDVFfIfGALgoPOckbLHHpfMxnkm2bve8qySGk7pP85vCjhre/GTKsza0j16xQlqqyOCDYcrv8GHAvo0zZwFMaSDyAujDylKKAQCWe4BDUobdR0Rz4Mt0kSwsEKxOSMl4VR0gGmgaNGCTLl/8A0IEFBWHv/wCc4QF9rDKErzxhSW+AIYILTOIIrRGtcDcHN8sDZWzsmEvvjFPjjq0QDk70g37xbNHA2BM2tkEqBRYIm61mxQgW1njZeS8UtGyOC68uN8Y3uKTF4CRXwct88YgskgTOU7J2iXaBgXhLaDAVdj2LpnhtLJ5FHBCI9zkOJhDKITQWhhE2Tyb3iAGulKgTYpTXQ8YtG43AIxDt8iTwUEjZsBUitooCT946fFibw7rD8rOZi9hW0E8LsE8T0LYmPGk9i8Ng2z3gQBhZtuQ6DlN/nlo6wpW4luqB3Wd4GtbEHKKXdvHAvsD3ohXdbFOV+HtxZPxVMJQvaC+JrYqW2sMlU1oiJ5J0TcAKFHyLK0BLBHE4zTVOSd+cREKdPS9fn+cAkHbzPWACPs2bvk/jHhQFTS1+sSjsAtJ9e8UpTVT3j50NeT/XCLx0AusBE51CQyoWWwhdk/0OLSBww3iorDSNzxc0QO0GDjWngAxjQIThceHyoSBQhqbFRhl0yHMj6NRKAcrO82MJbvMLFegivUgsUpJpHXLsKuBITTQAOAh/8P8A80hhSrNGHsWD5eMiWTM34HmrvwHV3PeACkdOp8vGXIFWzQqaCm2jmdYBNNRCCIEJ5Fl4uRuoua2qWrm7dnDGpfGMbUCCCp0g9JihBjEROdaDVPDw6lBNlQ2YVVOXVsaZvwRGDqwVtPHdxHymajghHlbo2XAJEdjN/Ap3x8eWkFJjzKtTg38G9zEDeoFChVjKBta1sS20Jga9kRXRpkYY1LikqDU2BHjXsyZrLXuThqrobU44bZ1dyC6tEXhwjWaFWGqqaaStBAYYmSHu/RCiqBrhNvdNNMNMqUXQK0jJyCeOTzyUiI0VAOlTEGJ0AEugIzp5zaDFDBEOHqYv2aAHgVHOzgnBwEF7pVhuG5EAxV+UHRbQMkbBTbjU4pDItHvBKTuAnSFQThgTSV8g35/yKnAr91Uk1rsDNe/W+Qm0jrnf5ybgRvmmr9cZey0DXBO8ekql6v8A3IdA3R5ecvY1I/nKWRNF3XImgOOt4kjcoOgEuK+/3cMGVHZevBvn6ysvPQA4p+8096y13+cbtsEAfnz3mvQXZzY8flxCG5zZWmt5vYQdQQIcIU8BVY45jhNBm2iQpSPyJ4gYCPRbaXYIwBGl5msB4x2k8bTUadJMokRygs3T5HBA5QCnzhNoArisVi//AIUCwIULtD/0/wDvc0ldHvjpfMU4w4NppvAdapX4F4Mjhs26tQULALzW02KR7F1cSNROufrQe0mvykFLErAGJ1MKVYLhm4cpUa3Xxm1tq7vNK6s5uh8YBoeqCIEYKOnJOyBDBHKlBwLdN2jw7UogEGdAQCNUN75YeIxCdw+SaFCR1S6eS6pGgg7U0a6lcPvRA4VZYBYtlUltypSBOAoA7Rokmwx30ItCQJo01O47xnCC45pErW+jsdu4CCBMECxCDQ3ULd4gXxCCMsdzfF8HIVq4JtuhATQvGyKXG42gDVoTXmI2preBfECi67SdI+Udb4uAPMJsb/8Ab5wPYRdJaaoTgj5fuqDgwAAKOeY+9Y33G9gmSLdFBBY83F/RQtkbC43POIOwYaFAAAGzQaD4w8/aJpxCjo2VTzDKDkobZXYThAsqAm8vlFQCTXn35sHnjOCCQqmmvRQ8eY84UJOpSTuBiBRRmdI7MK8XicPZE04BJikLd3sHx/nJi02rI+pjfAWBgqJagIvjnCCRsgJvWI5JE22j4w0iQDgfk3hoLsNkweHBM8ec2QDjYv8AXFytpdA4xZPeEH+O8ehI2sI+cH08refWPnuSps+fOCGmVAcwQ9/cThTqw17glsjqHCmztUbrshEVXfFfAit4tHskFRFU8JF5xNarEi35FOzFPyiMHTATbXlefty0hhQAvcpdw57zUY20JsaLR3I8e9w//wCaUatAIfP1lVBEvJespZd+MpvfGHeDWEjCh74en1h5VVDQDgI96Oh+XBC6CwsklU0/KHLjqET1Bougml3zGOxyXUkQCQrpuIz4YIgKymkKqiaWPbeGA4/TFReG3QrtSOsKkGEJkVLsEbJHcYqqzPepQDpA8iCpRbNOIACWNAXc7d7SHUsEAVDW5UkSwjm7QDSLe/it4mGKraWmEHqL7fW8riN7ALs4qThrL9jXYzGVzwu5acTFfF1RdBodm5sI7QUt9wApYLoNa5pfACKDUrsrb1NHxrDhHoSeYSKrsbweDFZ1BbEOSvs+NY9wzwx87P5614wGa9Bq0JdL1Hie7hLvOjRRIg4DNs2QLI7xEjsGoA6X0ZtKSRQUgDHaNnLbscm2vpEClB5RQKmvnFAaTAuiDeic874M5txYI0VyTZz48GAS9AlNW9xDs633mrBAuz4Bx3lzrCi8lZtU4/jKhy6jIQdTVtnn4xMQPtSh2tjIOvgZLv2kqKBoQVFDmGsFwKaTWLELVJtab5yxzAArsE58E1w6t0GB15RG498RmGkOlw0INh6HGMIGyyYwW0GscbfGDV89Ff8AJ/zBSjTc7/7iapB0J31h1gix5ND3jISbrfBCriQS7zNJMWJLXk/bxnEFVH4QvPeBslgOnjLG75MDvCOPs6lyoRtRyH+MW0+JCFLWVSikeYSTbWtAAoKEEghvqtTaQwpLTq8FghpvEqgosIIgAFWrXNoXqNQSBrAB5JwBq5QJm8AIa97u9fGBtpUAUijcPkXYHLhuIT1QNuSOxBBYacoQgB6UUfpfvECCleDAKgjNPrLhsdK4ZC8QgFocxu5YCU7cwZnFpspvkw+SoAum+vLD7cn+pXoatctx/HfGONIVdkmveb6mLYNQ4cRU2b85eTtxURqOglHG0Sqy9yHNQnhFvubpioZiIi8hBg4eYStwGiKKjrQDhqXV0wcMCC0UjC6Ias9vJhkFcLZgHFqRk8shv4UAgAIsLKeIvRxhJWwQ6diGovSTIxyWghNCwFM5HTrGq29kHkaA/O+3GAwUAbUvXoDgjsPGIAbqLAmKBU1p6dGVcyZ5DuqlN7NppfKzE37Ugc7MPie5DSAVaHArzB+R+81CAmvTX331iAALAQWpby/CMvSjAQ8Naj1y3rTgOqquRAUPGte44qWEmVr5O/tjALCMEem9eD51jBFHdZ48ZboA7G4v/vvK0k0DZOep/lkxMfK2pjV0JbGoeFzyyaeKbu2KHPywI/SABVU06NmpbMhW8ph9UNoa69dmH4FW4JXfSyEOKeGOdeiMnwlVpNzzcRymR0CEHm70b6mNwRayXkfJG2fxm4fRE1kGQNvnil1jQMQDCgUWmrPtCONKIkw/kTxwsdkmHKiQGoPw5r+e8F9AcMNnyp51vrA9G1ALtG5Xa7hxwcSeLw1hoEAUVm9suBOTtS6kTbKg7NIcYAO0YBTBXyyo84JEVFTQTv8AvnEJlkzAbs8HXiYjuSogrvvWjAUYce9UJ+tGFGYqBY81n7xVFGQtGuevxhqiqqPEsUPjvEcBY+LoD/WWpHY8R6LjaUF2u/7chabaXdzqRRjbc50aKn+cEFlCYcE7G6Ks3cAT4JxpZpI0UUVSYuQR8o2HpDuh0Ku7Fu7yKBzp6tKJvswa0UHAqS04U3h0mGoQg3tFkunnLsgFtkFAfYO2oS1L6AhIvSHOhTWmre/ISoTU0DbbU1u4MShBdydboY7Y04zADwrKOhs1aF39YWMBEAlALplXj3vOK2pA/I3WhZNOFs4S3Da3zJBv3mkkEC2hDZJ4lTiZWe8CNw43w7+OSrHNzRqwt4nKbmuMJYxIhasNA1Wmu0cNXU0BqSPaCG2ETB6UIe1ABhJe3AccPI2rY2pFedBfEesJG6sWCkDHRsFGbqY4y7ErFpfEEd60XXGiI0vCiSHVKEq87hNuQ03uAUE215WJsF9K0VjmOydPfIM4UIE4XN9QOvI5XhKiCrC7EpKUNgoYoyHRKhFgBoRYyhhoAjgB0lbdT7fWApEwvDVayg+mOalwYlccX6PePXZAkAwEa6D4VmNG94kJVIHJ0NAJDFwjaUmcw6ePHXWJdPZ7J4PvvFgqoGt3s985sBAAutxvzN/ccarCASC9a2885WAdKWxw28f8zY3cKWOB8f8AcCJhX6fj+3NLg6L3Mlu2s6CQjt2ePOIuujyUIqEopO/MzQtTYQSyAC77f7wG4HSUitNMxsfA5Vb4KC6FFTYHHfmkv4u8yjpUptAS4k1QcCDYeVKBbu9ZVnABoSt3IccR+chWSyrioIiZXjNIxoGQnEGq64JMpUBEECMYcEjs97Ao6kSJDg5Sk8Y0IGdOZ/Abcs0O+CI0G7ZDhdHeNalyxMboJWnOr5yEXodGkk3aw7r1SpRDIiCS6TUGnNvrJd2xs+p+salA8Xi+MVAwIvpjPmYDUJq09mzUD4JveEACRNFHI2Nvn51iJMREQFNxAL8nzhnLYVR78uGkKFQ87MDkI0aF3v8AbiLJSh1r1iA/Aar6/GES47+HZzkEQ7SbyhhYXcuDIRFHjjx5wgrWfNaIUghDamTCLMCNwag8Ng9TLzdLDdCjorjQNPGXsGaiSmwdbbo6ohTIGkTsoqefBryIMVIgqsuxE0q4sALmBgiNNwR5csiLkNgEHYCou2eQJnIviAHc3aC8+i6mQz5ToxBvhTa+ugm7Y1TsU0qICMEld4s5N1ZBTSUFVS6dTLYbpLeBR4Wu+tdKdNCmgVKREXYR2CFc8ThFIajVtHQpuAarXRzcRlL+ErwdqFXCMBlUbtry8+XADeYCiTe6vJTglyw0wBdMQ4QHdT2LxBn6EtNLzo5vvKtBIGyF0WK6SxWIIRUUG44HwJDmXePLwLQODXbsFe03i4hn8ZQ1QcjYSIosEqg6BaIcLOrDeBDPmGweuozmsaAiVqSKNLbCEiIygEIFIWGbTYSldkJ5cvbSkuCpoYADaThcT+j0aDfjFtUq1sJfTX7wsXsVdca/GFcQSNNk0CU0c79F61hvHA3Z0PzgByxru8FH5MOqEPDib1MQUdSyW6g4s6wiiYP83v6yYoKYQ3U8cesIEjyTUm1+M+L2XQ2ks1m1BWjH8J+8ILChqg3/AMx5k4FDZtAd7+o5DO8KoYAco/CbhqbvrA1mnrnq5rcKAIKGAi3ffHWHcOIvA55Jtm7uZGbJuBJAgNEHXsDE38YUA279vDhNG8nLcAVKRrrk6tIE2GO9wgqKThXGjh3jvjEu2ug5DWebjXQoQjNuyC6jB5xUZiIFEgUPrfd4wnt6FleEDbShO0fWJHWzeNiKBR/1jbeY2AALtip36XyxkLgUiKkAJtqI6cjzJIAXaCo0m4c84OJETdFDyGJbi0l29scGp6HYACirxY78OsHikSqvX+f94I4WACe67OjNyDSUH2neR90cAF+cSqHEMcFCzrERIYDtxe2CDSA83vnDM8w3Zis7opsXk8ZzF9rh8KgxX4ej4xDasSWlIdglAfYxvKNpShb6jANiiMxmOJ4XT/IEaA0A4gg9KABAVtQeRpcKLRxHxNEUMVexwgsAAs9KHk6OaTGg9C6XTTek23dKOIy7hc6O8BGzx0+DiJwoUKsBNGR86RcvmwRcRQEEKTEmhjhtNu+PR1zoQ5C4TgkQkbgRbGcc0aVNl6yGm5pjZFJiWgVKlp33/wCYBMiGC0ODs5H1oZK/NiDy1WjOBEb4cVTiw1godQDvjYZGVAoGNhoF66t1uUao3eiIiQtKrzCjggH6pyEqCaUnB7yE3qApCaC0JtnfNWpqBYN5QOStRjk6C+gCkC62CPZDIL6QSIqUdRk4ceVAFtHmNHd0O/8AJj4S9TiSwSi/aHNy3liKeEQaF1Fdl51m9sqjZEEiALOOKJheoSG9gcjqc8cdZVlZIg4HQPe94HQSGK6V4UbvXPeIJ5ARHU88jm6NtxE8F7J96xqhZWtDsP3+cIIOqwAwZzydfnCQpAyc5JvREDodcfDzlFDKgA373vr1idwUzYDQzz/rOQ6WpF1uHOxxcVnZaNf+Yylo3p7xJg1eTXH8TCQk5eA/1hqsigXR0oGeBYpSvRQCVKCzTY3zy4s53NFhdN7i1izWnDwvKnJ2wSU3wyl1o1gVCLRoAdFGXs3MqQakkgQVA02dGKwLSi6wBERA4eZOs5jB7t1052fgZIck1gemhELfAGpsphGpRTsGiztzouAX8/jsFKCxdHvBfFQ6Nu23V3sNpgt4xdTmxZK3c7WmUW8AEKA6UhQW74wtym2GyMIbgvW2da0oSnrsT77cpiXlx94t1Qq/r1hWrt4isebyD1+sKUDy6DtbeucEJEXbpe637xhyYpqeXc/eHXI62pyniYhLjVPP3+NYjbIFbXA9oJ+xnGMG13iuaGgt/B5eMGs0hegyshKgdd/eO2s6H9THfPOEMFpKXAbJvYIjBQjSFBsAFKE1GOyPnwWknzWnXAOpxBHaUqAnQ+QK4Ekzn2XIUQCaFPBh6KIcN6WYsVJDhMGUi2mREtkqRs7XnNBY4DYB9RWoaX4EMBFsat2v0eeuMbvXgEeZqoEX7XIuhbo+B0toLxt1DHfLNCF5FiLz3XZw7T1nTmoct0zeKEIxhDUaaVrQuoJipkyUIVWEIcVzpMYVTS2iDV2C1o3vT3pFiCgbAKWO+LOx2BxY8Wb1y8bfRms09Cg3FNIbxd6OnJd/AUE0rjbOqjjxCG9Js28T8Cl3loo5KiNWoJm+805sB3kdCIjXSjJUJNQ0CkvC0CrVXow8CnyVaFIqnQeVMS50IjIAR0pQmsdXb37jqdiWlTG4edFhXpzRae8l/qW6zba78c4LgYCREOQP1v1gBEnRdt5sVuIwHqvfeLaRwq9ydO+LhKmrwNDj9ZseDWtcdfa4T
362− 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
363− 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
364− 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"/>
365
396
366− Example content:<br>
397+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
367− The names "<b>John Doe</b>" for males, "<b>Jane Doe</b>" or "<b>Jane Roe</b>" for females, or "<b>Jonnie Doe</b>" and "<b>Janie Doe</b>" for children, or just "<b>Doe</b>" non-gender-specifically are used as placeholder names for a party whose true identity is unknown or must be withheld in a legal action, case, or discussion. The names are also used to refer to acorpse or hospital patient whose identity is unknown. This practice is widely used in the United States and Canada, but is rarely used in other English-speaking countries including the United Kingdom itself, from where the use of "John Doe" in a legal context originates. The names Joe Bloggs or John Smith are used in the UK instead, as well as in Australia and New Zealand.</p>
368
398
369− <p>John Doe is sometimes used to refer to a typical male in other contexts as well, in a similar manner to John Q. Public, known in Great Britain as Joe Public, John Smith or Joe Bloggs. For example, the first name listed on a form is often John Doe, along with a fictional address or other fictional information to provide an example of how to fill in the form. The name is also used frequently in popular culture, for example in the Frank Capra film <i>Meet John Doe</i>. John Doe was also the name of a 2002 American television series.</p>
399+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
370
400
371− <p>Similarly, a child or baby whose identity is unknown may be referred to as <b>Baby Doe</b>. A notorious murder case in Kansas City, Missouri, referred to the baby victim as <b>Precious Doe</b>. Other unidentified female murder victims are Cali Doe and Princess Doe. Additional persons may be called James Doe, Judy Doe, etc. However, to avoid possible confusion, if two anonymous or unknown parties are cited in a specific case or action, the surnames Doe and Roe may be used simultaneously; for example, "John Doe v. Jane Roe". If several anonymous parties are referenced, they may simply be labelled John Doe #1, John Doe #2, etc. (the U.S. Operation Delego cited 21 (numbered) "John Doe"s) or labelled with other variants of Doe / Roe / Poe / etc. Other early alternatives such as <b>John Stiles</b> and <b>Richard Miles</b> are now rarely used, and <b>Mary Major</b> has been used in some American federal cases.</p>
401+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"for"},"finish_reason":null}]}
372
402
373− <p><img style="height:1.6881cm;width:1.6881cm;" align="left" src="data:image/*;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAfsQAAH7EBQMFB5wAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAABzvSURBVHic7Z15kBvXfee/r7txDYCZwdwHZzgHyeE1kimZUuxITsWbcnkt2WVl5a04tbUbO77ipLZSSbbWFa82m3XZTuQ4m9psUqk4ye5KdjlKyknJ8lUbK5ZTukiKFA+RQw6H4BzkXBhgZjC40d1v/8DcAzT67gbwPn+Q8xro1z8A/e3fO37v98gXn/k9OjIyCkIIdnOwDABEVZns/cd4efsyB8t7zdBa3jxSobxtjQXlHZN2fWZV5V2fQ2V5V8ny8p77YvtzVivvFIyU996yGstkz6faLnNgMBgVYQJhMBRgAmEwFGACYTAUYAJhMBRgAmEwFGACYTAUYAJhMBRgAmEwFGACYTAUYAJhMBRgAmEwFGACYTAUEPSe+Dz5Ee4U49gXvLnN/qjZPUVS5r1Kx/exdXx3NKbuuqvauDfKs+w191dT5T0V61BxHBWOl3t/pd9DVd27/ij7GVTUjQrHy71f8XoVPmfFunf9/Sttv4ZeoX+/VarRLZANmkNalKsKROvNquW4WQKpdlzrTazLbguOaxVI2eNUZd0G/za1vl02FmkRRmBNLAZDAd0epBFJTyQgruaQjSYhtHjhafWBFmW0PtYH3s87bR7DAphAVLL++gLmv/EOwBHIeRGE50B4AlCK/GIGff9uzGkTGRbAmlgqif9oGnJBgpwTAQpQUYaclyAXZKz+9B5AnbaQYQVMICqgEoWcESu+LuckSGljnUGGO2ECUUHqcgzFRK7i64QDxPW8jRYx7IIJRAXF1RxAy7ehiMDBP9QCb2/QZqsYdsAEogI+5AX4g18VIQR8yIOh//QQCFdhxo1R0zCBqEBKFwFJPnCceDmMPPMI+KDHAasYdsAEopb9ifQEgrb3D8DHmlZ1DROICny9QYDfLxAeweMRhyxi2AUTiApoUS4bhCe0eJ0wh2EjTCAqyN3bgFzY1weRKfhmnzMGMWyDCUQF2TvroOJegchFGR7mQeoeJhAV5GaSBw9SgAuwULZ6hwmkClSiKMayB45zHvbVNQLsV65C/n4KxHMwlJ142VfXCLBfuQq56STKhepyPrb+oxFgAqlCdmoNcl46+AILb28ImECqkL29VlYMZUXDqDuYQKpQXDnYQQewuXCKuZF6hwmkCgcmCDchAof8fNpmaxh2wwSiABVl0DJRvAAAQpCNlpkfaQDy8RzEdBFiRkQuVnkhWT3AZroUkDKl5Az7Z9GBUh8kc3cdrY/3mXpNKlPklzIoruRQiOfgbfcjfLwVnNcdo2Ybd5K4+IVzoDIFlWR4Qh488IUziIy3OW2aJTCBKCBnRRCegJZbjk4pCgvmNrHySxlM/eEl5GPZUsYUGQBXauYFBkIY/txphEaaTb2mJihw439chVyUtgcuihtFXPnyJZz49VPofrzXOdssgjWxFKi2SrAYN695sXE9geu/8xpy82nIeQlSRoSUEyFlRFBRRmY6iYlnzmHx+zOmXVMrK28tI7eSPTCqJ2ZEXP+Ta8gulR/QqGWYQBQgHg5UrjxSVVwzL1HDzF++AzkvVb4eBeSChLlvTyLx5pJp19XCyptLkLLlh7c5D4fM/fobtGACUYB4OMUJQSljzlDv+sVlFFfViU3OS1h4MWr4mnpoOhQCVynEpk6X5DOBKMBV8SCcl8fa64uGr5N4dUHTxGNmNoXcQsbwdbXSdqajYrOTihRN/fW3/JgJRAHi5RE+01nqMJdBzom4/413kL61aug6mXLh9Ep2eTiIqYKha+pBaBJAy4x6E0LQcrwVge6A7TZZDRNIFXo/cQqkTMqfLeSChJk/ugRRb3+EUhSWNXZuZQq+yf4ByNTdDXDCwYcF5+Mw/EujtttjB0wgVRAiPnT+4hHF6F05J+LusxdBJe39kbnnbgIac2pRSQbvwGKtxVfuQ8zuHfMmXMl7RE7V5zwIE4gK2j80VEoeVwEqUeTn05j64uuQspVz+JZj7a1lHYGPpGIIjFXIooz4pZUDgxZEIDj+2ZO22mInTCAqIDxB/2dPK85my3kJufk05v7sqqa6pbQ2QQEAOCD5Tlz7eQZYvRov20GPjLejqa/+OudbMIGoJHiqHcHT7RU77EApPVDqnTju/Pfzqod/9Wy8QwhB6Gir5vOMsPDj+5Bye8XMB3j0/cIhW+2wGyYQDfR+4qRihx3YjNGKrmP+W5Oq6hz81CnNqxPlgoSAjUOq+XgO8QvLB5pXVKRof6jDNjucgAlEA542Pzp/cbTqDS3nJcT/aRaZqfWqdbY81Inep0ZLk5Iq4Hw8QkdaQAT7frqZ70TLTpi2nIjU/dZzTCAa6XhiGHyoerJquSgh+tW3sPDC7aqjW/6BkKosKYQjiDzciRP/7RHV9holn8hj4Z/uQd4X0cz7efS+39xIZjfCBKIRwhP0fHysek4sWsoKH/v+NCb/yxtI3UhUfKun2VuK3K12bYFD31Oj9nkPCtz42uWy3oOKFJ1nu+yxw0FYuLsOKi6iKoNckJCdTiL67EV42wPoeWoEkff07LnJk9cTqur0dvjRNBTWZbMe7n1vGqm7yQPeAwBCI2EIKjxprcM8iA6Kq3nQooZ5CFraxzB3P4W5v76Ba59/BambO+Epa+cWIVepj3AErQ916jVZM8nJNUSfvw0pd3COhvfzOPTBQdtscRImEB20vrdX945SUlaEuF7A1FfewvrFZUjpIrJzqarncX4e4ZP2zFbnYllc/f2LkAvlJzAJT9D9c7WxOMpHjCUYZ00sHXg6Auh4YggrP5jWnf5HzkuY/tOr4AMCiHJU/fb7w2PWz31IGRFXnjlfMSKA8/IY/OgwOBtH0YzgI35D59fGp3QhnR8dBWdwiFPKiigkcqrCRgjPYf7FKIrr1kXxSlkRV37vAgqJvGKY/6EPNUbzCmAeRDfEw6H/U6cx97+u2JJETi5IWP7hLJZ/OIuH/ur9yN5LYeG7d0ElGZGz3ZDzEng/j+BIM4KDYcUZ/+06i/L2znJiuoir//UCcouZiv0hInDo/fm+muicm7V+iwnEAM0PdyEw3IzM5JriE9cs5KIMzsfj4idfLi0HLsigMsX6tQQgU4AnIABkkSI00oz2R7vg7wmikMghH8sht5RBfiWLwmoe4kZxe36GUgrQzSXGCoMFhAMOPz1i+ec0ipmLG5lADNL/mXFMfeE10AodWrPZ8lZUkg4cQ3HnfRuTa0jfTYIIpbRF1UbJACiLg+fQ8Ug3/F31tyhKCdYHMYivpwltvzDgmrxVu5GLMqSsqEoc1SA8MPLLR02wylqIyWvjmUBMoPtjR+t6vxDCEbSd6USgr8lpUxTROfKuXKf5VTYenI9H/ydO1t2eIUTgwHl5hIbCOPIrY06bo4gV4gBYH8Q0Wt/bi9j3p5G9m6zprO+EJ9vNxd5/1Y++fz2IoIuzlRBYJw6ACcRUIu/rQ25uA7RYWwLhfTwopfCEveh8bw86Hu1Cy8mI7mgBu7BaHAATiKkQjoAQ4v7NpwggBARIBRmhoTC6Hu9F29kuNPXu9DHM7uyaDUfssZEJxESIwNVEhsGmgRAGnx5F5EwHPDUw6bcbAoCz8WtmAjERwhPXC4TzcOh6rBedj9VGsOFuOGJ9k2o/TCAmUmqzu1chvF8ApRQ9Hxhw2hRNbAnDiW+WCcRMXNbEIjwB4Tn4uvxoORFBeCyC5rHW0gpGl7PVlFIRUmYpTCAmQjZjoZyGDwigMkXn473o/8gwAv3Bkl1uMK4KhACCA02pSjCBmIjTfRDOx6PpUAh9HxlC26Pd4FVmSnEDHAF4zj3C2IIJxESq5cyy9toEkTMdOPY7Z1w/RAvszGHwxN5RKa0wgZiImjUYVsH5ePQ+OeTY9atBtsSw+X8tiBhgAjEVJwVCRQpft7PBhFtegZBSkN/W37UkiP0wgZiIk00sKsnwtu5NULB1gxLs3KRk15Dp7te3jlHsrI/fXEe1HVpGsHOjb3X6t445NQxrNUwgZuKgB/G1etER3Hl61+oT220wgZiIk8F9Td0B1EiikZqCfaUmQnhSPX+PRYQH3BuSXsswgZiJQx6EEwjCAyFHrl3vMIGYiFPtft7Lo6nBkinYBROImYiyM0M5BAh0GcsgyCgP66QbxMMBIR8Q8gAZv4woAexJALSDXKTMg1gEE4gOBA4IeYGwF/Dv+gY3TEivowdZkuGPGEvSzCgPE4hKeFLyFM1eIFBhEZ7dWzNv4Q176nOWzgUwgSjAkZKnaPYCTd7q96AZCdr0EGhn/Q+rYAIpQ8gLtPiBoEfbyG1uNQ+5yn6EVtDUy/ofVsEEsgkhQIsPaA8AerOIpuYzkPP2ehFCCMKH2ByIVTS8QDgCtPmBtgAMh2pszKRKmdJthPNyCDIPYhkNKxCBK3mLSMC8CfD0QsacijTACQSBTiYQq2g4gXh5oKMJaPWZP/OdS+TNrVAFVAaa2CShZTSMQAIC0NkENFs0XVBMFSGW2RHWaqSCxGbRLaTuBSJwQE8IaLX4Htq4lwbv4yFmym9+aRW8hwPvwr1J6oW6jcUiKDWljrVbLw4ASM2lrb9IGagMpO7b3/dpFOpSIEEvcKQN6A3ZF4HuDXu29/yzE8IDsctx26/bKNSVQDwcMNgMjLTujZGyg56f6ULHeBuIzTHvhBC0jIZtvWYjURd9EAKgMwh0B51LPLZ+dwOxq3Hb50GKWREtQ0wgVlHzHiToAcba7W1O7UcWKc5/+bIjG+cIAQFLl1Zsv26jUNMC6QoCo22Az2E/OPHcbWRXcrZ7DwAQMyKmvjNt+3UbhZoUiMABo5GS13A6ynv15hruvDgDyYE5kG0bJteRWc46dv16puYEEvICYx1A2AXrg6S8hDe/9DakvHPiAEoRAdM/mHPUhnqlpgTSEyoN37olafmVP59AMWXvxGA5pIKMu9+fA5VdvztizeGSW00ZgQOOuKRJtcXSxRXc++mC495jC1mUsXQ+5rQZdYfrBRL0Aidc0qTaorBRxFt/cMXRfsd+xKyEa391y7HEdfWKqwXS4geOuqhJtcWlr19zJDCxGrmVHOZfW3LajLrCZbfeDu0BYCTivh2H7v1kAbHLccfWnysh5iRc+8ZN5kVMxJUC6Q4CQ63u6W9skY3n8Pb/vO5K77FFIVnEwhvMi5iF6wTSHwYONTttRRkocOHLVxxL7aMWMSvi+v+57bQZdYNrBEIADLWUhnLdyJ0XZ7AeTUKW3C0QAMguZ7F8iUX4moErBEJIKWSkw9kdxCqSupfG9f89aW7TipTWkzd1B9B8OATea95PIeYl3PzWlGn1NTKuiOYdabVnUZMeqERx7ktvm9spJ4DgF/D41x5B65FSe3Lun+fx9p9ch1QwQYQUWJtKIruSQ6DDpV9sjeC4BzncUsos4lYmvjmFzFLWvFnqMuIAgIH392H8s8ch+E1aPkspZn50z5y6GhhHBdIbKkXkupXVyXVM/cO0eU0rUgpP3y+OLYafGEDPo13gfcZFIhVkRL83y4Z8DeKYQDqaXDpatYlUkHDuS2+b0+QBdsTxbHlxbPHQb59GoN1nyn6HUl5C7ArrrBvBEYG0+kvzHG7m6l/cRGGjaM4TWKU4gNJuUe/98rvBmdBpl3Iy7rw4Y7ieRsZ2gYS8pcBDt00C7mblWgJzL8+bE2tFAI9KcWwR7G3CqU8egxAw1tSilGLprRXbUxHVE7YKROBKsVVuCx/ZjVyU8dYfXjUnSnfTczxWoc+hxOiHDyPY22S4qcUJBIsXWJSvXmwVyGgE8Lg8x9mN/3u71LQyyqbneN/XHkHrqI7OFgHOfuFBcAYjNcWshLmX5w3V0cjYJpDeUCk6180kpzcQfWnWFO/haRLw+NcfRYsecWwSHgzh6NPD4A0O/bo1uLIWsEUgIS8w0GLHlfRDKcWFr5oTa8X7ePzsV8+iZdh4Op6xj4/C1+o1VAfhOZZcTieWC4TnSstkXdztAADc+ccZpJeyhjOT8D4ej3zxXYgcM+eJwAkED//WuCEvIuUkzL2yYIo9jYblAhlpBUyY97KUzHION567bXjUivfzGP/McfQ80mmSZSU6HmhDeEB/FCelFItvLDuSlqjWsVQg7YHSzk1u59IfXzPctOL9PEY/PIjhJwZMsmov458ZM+RFKAUSN9ZMtKgxsEwgPFcKX3c7K9cSSEysGYq14jwc2o634uQnj5lo2V46xtvQPKg/a4VUkHD/1UVzjWoALBPIQLP7h3RBgct/esPQqBUhBL4WLx595ozliatPf3pMd5wWlSju/5QJRCuWCCToAbpduvBpN/f+ZQFZgxkJOS+Hn/3Ku+EJWr9yoGO8Dc2H9XuRYkZEcjplrlF1jiUCGXF5KAlQyiN17S9uGorU5f08Hv7tcYQH7XsajH/6uH4vIlMssVl1TZgukO5gad7D7URfmoWY0x+jxHk59JztRP/7eky0qjrtpyNoHgrras7JBZnl8NWIqQLhiLtD2LcopkVMPDcFMavfewgBAWd+87SJVqln/NNj4Hz6frrcqv078dYypgqkO1jaZtntTP3DXUOjVryPxyO/+y5b+h3laD8VQcuwPi9SWDchzqyBME0gPAH6a8B7SHkJU/84o3vkivfxOPyBfnQ+2GayZdo4/Sl9XqSQLFhgTf1imkB6w+5LEVqOuz+cA4x4Dy+H0786ZqJF+mg/FYGnSbsHK6bZ2hAtmHJL8wToq4FhXSpR3Pp2VPfIleDn8cDnTxqOrjWLzne1ax8udPvwosswRSDtTaXFUG5n7ifzukNKCCEI9Qcx8PO9Jluln66HOyBo3M63qbMGYn9chCm3dbeLM5NsQ4GJ56cgZvU1MTgPwZnfcmbUqhJd72qHLGoTfLDPpdn5XIphgTR5gHANzHvEr6+ikNQ3gsN5OPT/XK++lYEW4m/3IdSv7Ybn/TXg6l2E4W+rJrwHgLs/mNM9csXxBOOfPm6yRebQ91iPpnXr+VU2iqUFQwLhCNBZAwKRChLmX1vSNffB+3mc/MQxeJs9FlhmnObDIU2hJ3q9aKNiSCDtgdronC+8sQzC6xu+8bf5MPLhQZMtMo/IsZbSYg+VsHkQbRi6vWuleRV9aVZXbijeVwpGNCPLoVUUUkVN4i+yHFma0C0QL+HQ7PIsJUAp9mj11rrm8zgPh55HO9F+KmKBVeYh+HgtDsRQ/Fkjolsg3d5ATcw5zb08r8sDcDzBg58/aYFF5hLo8GsafHDLttW1gm6BdHlqY8Jp7uV5zTeF4Odx4t8fNZxuxw54Pw9OQ0dQLsrmbeXQAOgWiIe4v3cuZkRszKU1n+cJeTDykcMWWGQNvoh6IXM8Ybl6NeD+u9wAC+dimrOkC34eD/7GSXBCLTQgSwTa1HcGicChmGICUUtdC2TyhaimpyUhBOHDIfT+TJeFVpmPJ6w+HotwBMU0mwtRS90KZPXWOtILGU3ncB6CM//xlEUWWYcnpGESk7CQdy3UrUAm/y6qKWEz4Qi6HuowlGzaKbxaguEokF9jk4VqqUuB5FbzWLwQ0zRaw3k5jP3yqIVWWYc3LKhe5yGLMluXroG6FEj0xVnNczT+Vq9pCaftxhP0qB7qlYsycgkmELXUnUBkUUb0uzOQNCyMEgICjj49YqFV1uKLeDVttJNZYql/1FJ3Arn3yoKm0AsAIBww+IF+awyyAX+bD1oSnGRXctYZU2fUnUBu/W1U06pB3sfj2L8dAW/CrrJO4W/za+pvsTUh6qndu6IMiYk15OLano6EACMfcW84uxoC7T5NTUoW8q6euhLI0sUVTTcK7+Uw+tHDEALOJIAzC97PawrILGZEczYqbQDqSiCxy3FQSUMHhBAcfXrYOoNsJNDuU/1ejieYeP62hdbUD3UlkJyGzueW99A0C+1imjVsGCoVZEz/6J7mSINGpG4EklnKapshJgTHPlYf3gMAImMt2pYVS8Drz1w0vC9jvVMXAsksZfHKb74JSUNoSfup1rrxHgDQPBSGoCF5gyzJyMayePP3L7HNPRWo7d4pdsRRSBZU9z94P4++x+zd18NqQn1Nmud/pLyMxMQaXvvdt/DA506Udq8ygWKqiPjEGuLvrCJ+fRVrk+uaBk/K4Y/4MPrUYYw8OQhBR05ivdS8QF79z+c1iQMo5ejtfrjDQqvsp5AsQs8aNjEnYeVKAj/5jdfhDXvQdqIVbcdbER4KoflwGE1d1deaSAUJSxdWEHs7jvj1VSSnU6Z7pdxqHtf/ZhKTL0Qx/OQgjv6bIXibrV/xWdMCycXzyCby2kauAHibPWjqro0lw2pJL2Z0L6WlMgWVKXKJPOZfW8LiuRh4LwdZpAAomofC6H53B4afHIS/zYf8agGZpQw27meweG4Zi+djtvVlimkRky9EcefFGYw8MYAjTw/DH1E/gqeVmhbIxPO3NW8iQ3iCvvd0W2SRc6QXsob2W9yNLMp7cv6uTq5j9fY6br0QBcdxkIrOd+ylnITb35lG9KVZHP7gIRz72AgCnean2anZTvqVP5/A3CsLmhMycAKH4ScHTLWl9KR1luRMCrDSDFpqmrpBHLuRCjKi353F//vkv2Dim1OG+zr7qTkPIuUknP/KZcSuJnS59fBgCM1D6ucMyhG/vor5V5eQnNnAxkwa2XgOnEAgNHngCQoIHwqifTyCjvE2tB5tsWV9e6PPachFGTe/OYW5l+fxwOdPoOdspyn1ulogUkFGNpZDNpZFZimLxQsxLF9cKT3JdDwphICAsV/SF9YuZkTM/vM87n5vtuxe47JIUUgWUEgWkF7IYHFzu2Xey6PtRAvax9vQcTqCthOturdxVkLL6sl6Jr2QwRvPXMTYx0dx8j8cNVyfKwWSjeVw/quXsXprfTPKluy4dwPNCM5D0PsebQkZkjMpRF+cwdxP5nVlJZQKEmJXEohdSZRsEAhaj7Rse5j2k8bmYwrJIlZvraHIYqv2cOvbd0pb1H3OWD2uEEgunkdqPo30fAap+2nc+e5sqW9BzUuVyfs4HHlqSHVQnyzKuPmtO5j8u6jmUTLleikSN9eQuLmG239/F4QQNA+H0HWmHd1nO9F+OqK4OjCXyGP+1SUkJlaRuKk9MUUj8c5f38K9D91D67D+9LG2C4RSimR0A/Eba4hfX0XixioyyzYs4KFAoEvd0O7qrXVc/Po1bMwebEqZDaUU69ENrEc3cPs70xACPDofLIml+2wHmroCkHIS5l9fwuzL84i9HWeZETWQSRt7gNgikORMCotvLiN2NYHEjTXd26AZQSrIuPRH13D/pwsY+fAgust04iilmHhuCpMvRB27CcWshIU3l7Hw5jIAINQfRDaeYzFTOhFFY/eaJQKRRRkrV1exeG4ZC+eWkVl0xxpoSikWz8eweD6G7oc78OCvn9zesy85ncL1v7mFxfMxh63cS+q+9tSpjB1cIxBKKWKXE5j78X3Mv77siJfQwtLFFfz4s69i6IOHkJxOYeVawmmTGBbguEA25tKY/fF9zL08X3PJAOSijOhLs06bwbAQySmBpOJpvPLsG7o2p2Ew7EIUjfXddIeaZJNZJg6G6zHaxKrZWCwGQw2S5JAHYTBqAUEw1s1mAmHUNUwgDIYCHo+xvANMIIy6xuNlAmEwKuJYEysk1d5OTIzGI+A1lntAt7xGpGPo7e3dd3RvKDmtsHiDAFVS1FR+sex5ROlF5RpLtqg7b3+gfPnzyOZ5
403+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
374− B1/bMVO7nYqfTdlIhfMUvxUd51lhy67Tyq1UqJI9Jew1tnpUt0B6+/rwB89+fbtcyp1Q+gRk7z/Gy9tfzMHyrrfpKG8eqVDetsaC8o5Juz6zqvKuz6GyvKtkeXn3fbDzOauVdwpGynvzd+wv64P1QRgMBZhAGAwFmEAYDAWYQBgMBZhAGAwFmEAYDAWYQBgMBZhAGAwFmEAYDAWYQBgMBZhAGAwFmEAYDAWYQBgMBf4/fQGdtWECNsgAAAAASUVORK5CYII="/>
375
404
376− File created by <a href="https://www.online-convert.com" target="_blank">https://www.online-convert.com</a><br>
405+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
377− More example files: <a href="https://www.online-convert.com/file-type" target="_blank">https://www.online-convert.com/file-type</a><br>
378− Text of "Example content": <a href="https://en.wikipedia.org/wiki/John_Doe" target="_blank">Wikipedia</a><br>
379− License: <a href="https://creativecommons.org/licenses/by-sa/3.0/" target="_blank">Attribution-ShareAlike 3.0 Unported</a>
380
406
381− <img style="height:0.6949cm;width:1.9741cm;" align="right" src="data:image/*;base64,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"/></p>
407+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
382
408
383− <p>Feel free to use and share the file according to license above.</p>
409+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
410+
411+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"22"},"finish_reason":null}]}
412+
413+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
414+
415+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
416+
417+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
418+
419+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
420+
421+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
422+
423+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
424+
425+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"presence"},"finish_reason":null}]}
426+
427+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
428+
429+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
430+
431+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
432+
433+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
434+
435+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"31"},"finish_reason":null}]}
436+
437+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
438+
439+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
440+
441+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
442+
443+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"32"},"finish_reason":null}]}
444+
445+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
446+
447+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
448+
449+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"of"},"finish_reason":null}]}
450+
451+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
452+
453+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
454+
455+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
456+
457+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
458+
459+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
460+
461+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
462+
463+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
464+
465+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
466+
467+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
468+
469+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
470+
471+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
472+
473+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"John"},"finish_reason":null}]}
474+
475+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
476+
477+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
478+
479+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
480+
481+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
482+
483+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"39"},"finish_reason":null}]}
484+
485+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
486+
487+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
488+
489+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
490+
491+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"40"},"finish_reason":null}]}
492+
493+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
494+
495+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
496+
497+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Doe"},"finish_reason":null}]}
498+
499+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
500+
501+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
502+
503+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
504+
505+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
506+
507+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"43"},"finish_reason":null}]}
508+
509+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
510+
511+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
512+
513+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
514+
515+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"43"},"finish_reason":null}]}
516+
517+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
518+
519+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
520+
521+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" okay"},"finish_reason":null}]}
522+
523+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
524+
525+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
526+
527+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" colon"},"finish_reason":null}]}
528+
529+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
530+
531+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
532+
533+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
534+
535+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
536+
537+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
538+
539+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
540+
541+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Check"},"finish_reason":null}]}
542+
543+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" example"},"finish_reason":null}]}
544+
545+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".html"},"finish_reason":null}]}
546+
547+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]}
548+
549+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" presence"},"finish_reason":null}]}
550+
551+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" of"},"finish_reason":null}]}
552+
553+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" John"},"finish_reason":null}]}
554+
555+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Doe"},"finish_reason":null}]}
556+
557+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
558+
559+ data: {"id":"chatcmpl-438bc99ac0f795105d32a4c1","object":"chat.completion.chunk","created":1781460004,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":232,"completion_tokens":209,"total_tokens":441,"completion_tokens_details":{"reasoning_tokens":192},"cost":{"usd":0.000313976,"hypercredits":0.006279519999999999},"remaining":{"hypercredits":0}}}
560+
561+ data: [DONE]
384
562
385− </body>
386− </html>
387 headers:
563 headers:
388 Content-Type:
564 Content-Type:
389− - text/html; charset=UTF-8
565+ - text/event-stream
390 status: 200 OK
566 status: 200 OK
391 code: 200
567 code: 200
392− duration: 155.04043ms
568+ duration: 1.71506225s
393- id: 3
569- id: 3
394 request:
570 request:
395 proto: HTTP/1.1
571 proto: HTTP/1.1
396 proto_major: 1
572 proto_major: 1
397 proto_minor: 1
573 proto_minor: 1
398− content_length: 34426
574+ content_length: 36137
399 host: ""
575 host: ""
400− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/fetch_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"fetch the content from https://example-files.online-convert.com/website/html/example.html and tell me if it contains the word 'John Doe'\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_f422aee5bd83dfe1\",\"function\":{\"arguments\":\"{\\\"format\\\": \\\"text\\\", \\\"url\\\": \\\"https://example-files.online-convert.com/website/html/example.html\\\"}\",\"name\":\"fetch\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"HTML test file Purpose: Provide example of this file type Document file type: HTML Version: 1.0 Remark:\",\"tool_call_id\":\"call_f422aee5bd83dfe1\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
576+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/fetch_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"fetch the content from https://example-files.online-convert.com/website/html/example.html and tell me if it contains the word 'John Doe'\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_0aec440a583a3ed3\",\"function\":{\"arguments\":\"{\\\"format\\\": \\\"text\\\", \\\"url\\\": \\\"https://example-files.online-convert.com/website/html/example.html\\\"}\",\"name\":\"fetch\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"HTML test file Purpose: Provide example of this file type Document file type: HTML Version: 1.0 Remark:\",\"tool_call_id\":\"call_0aec440a583a3ed3\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
401 headers:
577 headers:
402 Accept:
578 Accept:
403 - application/json
579 - application/json
@@ -414,21 +590,21 @@ interactions:
414 content_length: -1
590 content_length: -1
415 uncompressed: true
591 uncompressed: true
416 body: |+
592 body: |+
417− data: {"id":"chatcmpl-d6308dd9c62015f64e92668b","object":"chat.completion.chunk","created":1781217093,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
593+ data: {"id":"chatcmpl-c48b6b9b082ddf277db0c5d3","object":"chat.completion.chunk","created":1781460005,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
418
594
419− data: {"id":"chatcmpl-d6308dd9c62015f64e92668b","object":"chat.completion.chunk","created":1781217093,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"No"},"finish_reason":null}]}
595+ data: {"id":"chatcmpl-c48b6b9b082ddf277db0c5d3","object":"chat.completion.chunk","created":1781460005,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"No"},"finish_reason":null}]}
420
596
421− data: {"id":"chatcmpl-d6308dd9c62015f64e92668b","object":"chat.completion.chunk","created":1781217093,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":", the fetched"},"finish_reason":null}]}
597+ data: {"id":"chatcmpl-c48b6b9b082ddf277db0c5d3","object":"chat.completion.chunk","created":1781460005,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":", the fetched"},"finish_reason":null}]}
422
598
423− data: {"id":"chatcmpl-d6308dd9c62015f64e92668b","object":"chat.completion.chunk","created":1781217093,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" content does not contain"},"finish_reason":null}]}
599+ data: {"id":"chatcmpl-c48b6b9b082ddf277db0c5d3","object":"chat.completion.chunk","created":1781460005,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" content does not contain"},"finish_reason":null}]}
424
600
425− data: {"id":"chatcmpl-d6308dd9c62015f64e92668b","object":"chat.completion.chunk","created":1781217093,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" the word \""},"finish_reason":null}]}
601+ data: {"id":"chatcmpl-c48b6b9b082ddf277db0c5d3","object":"chat.completion.chunk","created":1781460005,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" the word \""},"finish_reason":null}]}
426
602
427− data: {"id":"chatcmpl-d6308dd9c62015f64e92668b","object":"chat.completion.chunk","created":1781217093,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"John Doe\"."},"finish_reason":null}]}
603+ data: {"id":"chatcmpl-c48b6b9b082ddf277db0c5d3","object":"chat.completion.chunk","created":1781460005,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"John Doe\"."},"finish_reason":null}]}
428
604
429− data: {"id":"chatcmpl-d6308dd9c62015f64e92668b","object":"chat.completion.chunk","created":1781217093,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
605+ data: {"id":"chatcmpl-c48b6b9b082ddf277db0c5d3","object":"chat.completion.chunk","created":1781460005,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
430
606
431− data: {"id":"chatcmpl-d6308dd9c62015f64e92668b","object":"chat.completion.chunk","created":1781217093,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7834,"completion_tokens":14,"total_tokens":7898,"prompt_tokens_details":{"cached_tokens":50},"cost":{"usd":0.0110292,"hypercredits":0.22058399999999997},"remaining":{"hypercredits":0}}}
607+ data: {"id":"chatcmpl-c48b6b9b082ddf277db0c5d3","object":"chat.completion.chunk","created":1781460005,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":8196,"completion_tokens":14,"total_tokens":8253,"prompt_tokens_details":{"cached_tokens":43},"cost":{"usd":0.011536,"hypercredits":0.23071999999999998},"remaining":{"hypercredits":0}}}
432
608
433 data: [DONE]
609 data: [DONE]
434
610
@@ -437,4 +613,4 @@ interactions:
437 - text/event-stream
613 - text/event-stream
438 status: 200 OK
614 status: 200 OK
439 code: 200
615 code: 200
440− duration: 913.271194ms
616+ duration: 1.211092s
internal/agent/testdata/TestCoderAgent/glm-5.1/glob_tool.yaml+157−559
@@ -6,9 +6,9 @@ interactions:
6 proto: HTTP/1.1
6 proto: HTTP/1.1
7 proto_major: 1
7 proto_major: 1
8 proto_minor: 1
8 proto_minor: 1
9− content_length: 33942
9+ content_length: 35653
10 host: ""
10 host: ""
11− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/glob_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use glob to find all .go files in the current directory\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
11+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/glob_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use glob to find all .go files in the current directory\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
12 headers:
12 headers:
13 Accept:
13 Accept:
14 - application/json
14 - application/json
@@ -25,75 +25,33 @@ interactions:
25 content_length: -1
25 content_length: -1
26 uncompressed: true
26 uncompressed: true
27 body: |+
27 body: |+
28− data: {"id":"chatcmpl-bd9cd0ad8361eb556c9ff6cf","object":"chat.completion.chunk","created":1781217094,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-6032aa6678986e47dd2e9827","object":"chat.completion.chunk","created":1781460006,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
29
29
30− data: {"id":"chatcmpl-bd9cd0ad8361eb556c9ff6cf","object":"chat.completion.chunk","created":1781217094,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_bfd20a846fb6fbac","type":"function","index":0,"function":{"name":"glob","arguments":""}}]},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-6032aa6678986e47dd2e9827","object":"chat.completion.chunk","created":1781460006,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_8599e8e2b077705f","type":"function","index":0,"function":{"name":"glob","arguments":""}}]},"finish_reason":null}]}
31
31
32− data: {"id":"chatcmpl-bd9cd0ad8361eb556c9ff6cf","object":"chat.completion.chunk","created":1781217094,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"path\": "}}]},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-6032aa6678986e47dd2e9827","object":"chat.completion.chunk","created":1781460006,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"path\": "}}]},"finish_reason":null}]}
33
33
34− data: {"id":"chatcmpl-bd9cd0ad8361eb556c9ff6cf","object":"chat.completion.chunk","created":1781217094,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/tmp/crush"}}]},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-6032aa6678986e47dd2e9827","object":"chat.completion.chunk","created":1781460006,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/tmp/c"}}]},"finish_reason":null}]}
35
35
36− data: {"id":"chatcmpl-bd9cd0ad8361eb556c9ff6cf","object":"chat.completion.chunk","created":1781217094,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-test/TestCoderAgent"}}]},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-6032aa6678986e47dd2e9827","object":"chat.completion.chunk","created":1781460006,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush-test"}}]},"finish_reason":null}]}
37
37
38− data: {"id":"chatcmpl-bd9cd0ad8361eb556c9ff6cf","object":"chat.completion.chunk","created":1781217094,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/glm-5"}}]},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-6032aa6678986e47dd2e9827","object":"chat.completion.chunk","created":1781460006,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/TestCoder"}}]},"finish_reason":null}]}
39
39
40− data: {"id":"chatcmpl-bd9cd0ad8361eb556c9ff6cf","object":"chat.completion.chunk","created":1781217094,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".1/g"}}]},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-6032aa6678986e47dd2e9827","object":"chat.completion.chunk","created":1781460006,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Agent/glm"}}]},"finish_reason":null}]}
41
41
42− data: {"id":"chatcmpl-bd9cd0ad8361eb556c9ff6cf","object":"chat.completion.chunk","created":1781217094,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"lob_tool\", "}}]},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-6032aa6678986e47dd2e9827","object":"chat.completion.chunk","created":1781460006,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-5."}}]},"finish_reason":null}]}
43
43
44− data: {"id":"chatcmpl-bd9cd0ad8361eb556c9ff6cf","object":"chat.completion.chunk","created":1781217094,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"pattern\": \"*."}}]},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-6032aa6678986e47dd2e9827","object":"chat.completion.chunk","created":1781460006,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"1/glob_tool"}}]},"finish_reason":null}]}
45
45
46− data: {"id":"chatcmpl-bd9cd0ad8361eb556c9ff6cf","object":"chat.completion.chunk","created":1781217094,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"go\"}"}}]},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-6032aa6678986e47dd2e9827","object":"chat.completion.chunk","created":1781460006,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\", "}}]},"finish_reason":null}]}
47
47
48− data: {"id":"chatcmpl-bd9cd0ad8361eb556c9ff6cf","object":"chat.completion.chunk","created":1781217094,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
48+ data: {"id":"chatcmpl-6032aa6678986e47dd2e9827","object":"chat.completion.chunk","created":1781460006,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"pattern\": \"*.go"}}]},"finish_reason":null}]}
49
49
50− data: {"id":"chatcmpl-bd9cd0ad8361eb556c9ff6cf","object":"chat.completion.chunk","created":1781217094,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":680,"completion_tokens":31,"total_tokens":7842,"prompt_tokens_details":{"cached_tokens":7131},"cost":{"usd":0.0010884,"hypercredits":0.021768},"remaining":{"hypercredits":0}}}
50+ data: {"id":"chatcmpl-6032aa6678986e47dd2e9827","object":"chat.completion.chunk","created":1781460006,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"}"}}]},"finish_reason":null}]}
51
51
52− data: [DONE]
52+ data: {"id":"chatcmpl-6032aa6678986e47dd2e9827","object":"chat.completion.chunk","created":1781460006,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
53−
54− headers:
55− Content-Type:
56− - text/event-stream
57− status: 200 OK
58− code: 200
59− duration: 609.315946ms
60−- id: 1
61− request:
62− proto: HTTP/1.1
63− proto_major: 1
64− proto_minor: 1
65− content_length: 34280
66− host: ""
67− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/glob_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use glob to find all .go files in the current directory\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_bfd20a846fb6fbac\",\"function\":{\"arguments\":\"{\\\"path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/glob_tool\\\", \\\"pattern\\\": \\\"*.go\\\"}\",\"name\":\"glob\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/glob_tool/main.go\",\"tool_call_id\":\"call_bfd20a846fb6fbac\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
68− headers:
69− Accept:
70− - application/json
71− Content-Type:
72− - application/json
73− User-Agent:
74− - Charm-Crush/devel (https://charm.land/crush)
75− url: https://hyper.charm.land/v1/chat/completions
76− method: POST
77− response:
78− proto: HTTP/2.0
79− proto_major: 2
80− proto_minor: 0
81− content_length: -1
82− uncompressed: true
83− body: |+
84− data: {"id":"chatcmpl-7a9e5dd940c9da770c8f2198","object":"chat.completion.chunk","created":1781217095,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
85−
86− data: {"id":"chatcmpl-7a9e5dd940c9da770c8f2198","object":"chat.completion.chunk","created":1781217095,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Found"},"finish_reason":null}]}
87−
88− data: {"id":"chatcmpl-7a9e5dd940c9da770c8f2198","object":"chat.completion.chunk","created":1781217095,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" 1 `.go"},"finish_reason":null}]}
89−
90− data: {"id":"chatcmpl-7a9e5dd940c9da770c8f2198","object":"chat.completion.chunk","created":1781217095,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` file:"},"finish_reason":null}]}
91−
92− data: {"id":"chatcmpl-7a9e5dd940c9da770c8f2198","object":"chat.completion.chunk","created":1781217095,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `main.go`"},"finish_reason":null}]}
93
53
94− data: {"id":"chatcmpl-7a9e5dd940c9da770c8f2198","object":"chat.completion.chunk","created":1781217095,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
95−
96− data: {"id":"chatcmpl-7a9e5dd940c9da770c8f2198","object":"chat.completion.chunk","created":1781217095,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":734,"completion_tokens":12,"total_tokens":7877,"prompt_tokens_details":{"cached_tokens":7131},"cost":{"usd":0.0010803999999999998,"hypercredits":0.021607999999999995},"remaining":{"hypercredits":0}}}
54+ data: {"id":"chatcmpl-6032aa6678986e47dd2e9827","object":"chat.completion.chunk","created":1781460006,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":680,"completion_tokens":31,"total_tokens":8197,"prompt_tokens_details":{"cached_tokens":7486},"cost":{"usd":0.0010884,"hypercredits":0.021768},"remaining":{"hypercredits":0}}}
97
55
98 data: [DONE]
56 data: [DONE]
99
57
@@ -102,8 +60,8 @@ interactions:
102 - text/event-stream
60 - text/event-stream
103 status: 200 OK
61 status: 200 OK
104 code: 200
62 code: 200
105− duration: 524.77414ms
63+ duration: 531.581125ms
106−- id: 2
64+- id: 1
107 request:
65 request:
108 proto: HTTP/1.1
66 proto: HTTP/1.1
109 proto_major: 1
67 proto_major: 1
@@ -127,611 +85,251 @@ interactions:
127 content_length: -1
85 content_length: -1
128 uncompressed: true
86 uncompressed: true
129 body: |+
87 body: |+
130− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
131−
132− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
133−
134− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
135−
136− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" follow"},"finish_reason":null}]}
137−
138− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" developer"},"finish_reason":null}]}
139−
140− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" instructions"},"finish_reason":null}]}
141−
142− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
143−
144− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" generate"},"finish_reason":null}]}
145−
146− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
147−
148− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
149−
150− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
151−
152− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"max"},"finish_reason":null}]}
153−
154− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
155−
156− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
157−
158− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
159−
160− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
161−
162− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summary"},"finish_reason":null}]}
163−
164− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" of"},"finish_reason":null}]}
165−
166− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user's"},"finish_reason":null}]}
167−
168− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" message"},"finish_reason":null}]}
169−
170− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
171−
172− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" User"},"finish_reason":null}]}
173−
174− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" message"},"finish_reason":null}]}
175−
176− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
177−
178− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
179−
180− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
181−
182− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
183−
184− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
185−
186− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
187−
188− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
189−
190− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
191−
192− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
193−
194− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
195−
196− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
197−
198− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" use"},"finish_reason":null}]}
199−
200− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
201−
202− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
203−
204− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" find"},"finish_reason":null}]}
205−
206− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" all"},"finish_reason":null}]}
207−
208− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
209−
210− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
211−
212− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
213−
214− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
215−
216− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
217−
218− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
219−
220− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
221−
222− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
223−
224− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
225−
226− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" should"},"finish_reason":null}]}
227−
228− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
229−
230− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summary"},"finish_reason":null}]}
231−
232− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
233−
234− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" e"},"finish_reason":null}]}
235−
236− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".g"},"finish_reason":null}]}
237−
238− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".,"},"finish_reason":null}]}
239−
240− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
241−
242− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Using"},"finish_reason":null}]}
243−
244− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
245−
246− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
247−
248− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" locate"},"finish_reason":null}]}
249−
250− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" all"},"finish_reason":null}]}
251−
252− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
253−
254− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
255−
256− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
257−
258− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
259−
260− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
261−
262− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
263−
264− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
265−
266− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
267−
268− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" within"},"finish_reason":null}]}
269−
270− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
271−
272− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
273−
274− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
275−
276− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"?"},"finish_reason":null}]}
277−
278− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
279−
280− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
281−
282− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
283−
284− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Using"},"finish_reason":null}]}
285−
286− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
287−
288− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
289−
290− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" locate"},"finish_reason":null}]}
291−
292− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" all"},"finish_reason":null}]}
293−
294− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
295−
296− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
297−
298− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
299−
300− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
301−
302− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
303−
304− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
305−
306− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
307−
308− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" length"},"finish_reason":null}]}
309−
310− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
311−
312− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" let's"},"finish_reason":null}]}
313−
314− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
315−
316− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
317−
318− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Using"},"finish_reason":null}]}
319
89
320− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
321
91
322− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
323
93
324− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
325
95
326− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" produce"},"finish_reason":null}]}
327
97
328− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
329
99
330− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
100+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
331
101
332− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
102+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
333
103
334− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
104+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
335
105
336− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
337
107
338− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
339
109
340− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
341
111
342− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
343
113
344− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"10"},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
345
115
346− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Not"},"finish_reason":null}]}
347
117
348− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" more"},"finish_reason":null}]}
349
119
350− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" than"},"finish_reason":null}]}
351
121
352− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
353
123
354− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
124+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
355
125
356− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
126+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
357
127
358− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
128+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
359
129
360− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
130+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Summ"},"finish_reason":null}]}
361
131
362− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
132+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ar"},"finish_reason":null}]}
363
133
364− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
134+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ize"},"finish_reason":null}]}
365
135
366− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user's"},"finish_reason":null}]}
367
137
368− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
138+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" message"},"finish_reason":null}]}
369
139
370− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
140+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
371
141
372− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"14"},"finish_reason":null}]}
142+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
373
143
374− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
375
145
376− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" locate"},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
377
147
378− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
379
149
380− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" find"},"finish_reason":null}]}
381
151
382− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
152+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" all"},"finish_reason":null}]}
383
153
384− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"20"},"finish_reason":null}]}
154+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
385
155
386− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
156+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
387
157
388− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
389
159
390− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
391
161
392− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
393
163
394− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
395
165
396− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" all"},"finish_reason":null}]}
166+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
397
167
398− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
168+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
399
169
400− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
170+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
401
171
402− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
172+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" could"},"finish_reason":null}]}
403
173
404− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
174+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
405
175
406− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
176+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
407
177
408− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
178+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Finding"},"finish_reason":null}]}
409
179
410− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
180+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
411
181
412− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"25"},"finish_reason":null}]}
182+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
413
183
414− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
184+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Files"},"finish_reason":null}]}
415
185
416− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
186+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
417
187
418− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
188+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Current"},"finish_reason":null}]}
419
189
420− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
190+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Directory"},"finish_reason":null}]}
421
191
422− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
192+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
423
193
424− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
194+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Glob"},"finish_reason":null}]}
425
195
426− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
196+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
427
197
428− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
198+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
429
199
430− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
200+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
431
201
432− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
202+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
433
203
434− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
204+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
435
205
436− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
206+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
437
207
438− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
208+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
439
209
440− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
210+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
441
211
442− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
212+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Finding"},"finish_reason":null}]}
443
213
444− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
214+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
445
215
446− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
216+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
447
217
448− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
218+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Files"},"finish_reason":null}]}
449
219
450− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
220+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
451
221
452− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
222+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Current"},"finish_reason":null}]}
453
223
454− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
224+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Directory"},"finish_reason":null}]}
455
225
456− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
226+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
457
227
458− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
228+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Glob"},"finish_reason":null}]}
459
229
460− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
230+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
461
231
462− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
232+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
463
233
464− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
234+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
465
235
466− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"37"},"finish_reason":null}]}
236+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"45"},"finish_reason":null}]}
467
237
468− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
238+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
469
239
470− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
240+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
471
241
472− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
242+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"including"},"finish_reason":null}]}
473
243
474− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
244+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" spaces"},"finish_reason":null}]}
475
245
476− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
246+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
477
247
478− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
248+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
479
249
480− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
250+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
481
251
482− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
252+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
483
253
484− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
254+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
485
255
486− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"45"},"finish_reason":null}]}
256+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
487
257
488− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
258+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" One"},"finish_reason":null}]}
489
259
490− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
260+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
491
261
492− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
262+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
493
263
494− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"46"},"finish_reason":null}]}
264+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Finding"},"finish_reason":null}]}
495
265
496− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
266+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" ."},"finish_reason":null}]}
497
267
498− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
268+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"go"},"finish_reason":null}]}
499
269
500− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
270+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Files"},"finish_reason":null}]}
501
271
502− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"9"},"finish_reason":null}]}
272+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
503
273
504− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
274+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Current"},"finish_reason":null}]}
505
275
506− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"55"},"finish_reason":null}]}
276+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Directory"},"finish_reason":null}]}
507
277
508− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
278+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
509
279
510− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
280+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Glob"},"finish_reason":null}]}
511
281
512− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
282+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
513
283
514− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"55"},"finish_reason":null}]}
284+ data: {"id":"chatcmpl-25d036aaf0a213889b487af4","object":"chat.completion.chunk","created":1781460007,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":216,"completion_tokens":106,"total_tokens":322,"completion_tokens_details":{"reasoning_tokens":88},"cost":{"usd":0.000170368,"hypercredits":0.00340736},"remaining":{"hypercredits":0}}}
515
285
516− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003e"},"finish_reason":null}]}
286+ data: [DONE]
517−
518− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
519−
520− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
521−
522− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Need"},"finish_reason":null}]}
523−
524− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" shorter"},"finish_reason":null}]}
525−
526− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
527−
528− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Maybe"},"finish_reason":null}]}
529−
530− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
531−
532− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
533−
534− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Glob"},"finish_reason":null}]}
535−
536− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
537−
538− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" find"},"finish_reason":null}]}
539−
540− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" all"},"finish_reason":null}]}
541−
542− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
543−
544− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
545−
546− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
547−
548− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" here"},"finish_reason":null}]}
549−
550− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
551−
552− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
553−
554− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
555−
556− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Glob"},"finish_reason":null}]}
557−
558− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
559−
560− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
561−
562− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")+"},"finish_reason":null}]}
563−
564− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
565−
566− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
567−
568− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
569−
570− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
571−
572− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
573−
574− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
575−
576− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
577−
578− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
579−
580− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
581−
582− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
583−
584− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
585−
586− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
587−
588− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
589−
590− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
591−
592− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" find"},"finish_reason":null}]}
593−
594− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
595−
596− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
597−
598− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
599−
600− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
601−
602− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
603−
604− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
605−
606− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
607−
608− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
609−
610− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
611−
612− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" all"},"finish_reason":null}]}
613−
614− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
615−
616− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
617−
618− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
619−
620− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"16"},"finish_reason":null}]}
621−
622− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
623−
624− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
625−
626− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
627−
628− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
629−
630− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
631−
632− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
633−
634− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
635−
636− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
637−
638− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
639−
640− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
641−
642− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"20"},"finish_reason":null}]}
643−
644− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
645−
646− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
647−
648− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
649−
650− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21"},"finish_reason":null}]}
651−
652− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
653−
654− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
655−
656− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
657−
658− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
659−
660− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
661−
662− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"26"},"finish_reason":null}]}
663−
664− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
665−
666− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
667−
668− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
669−
670− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
671−
672− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
673−
674− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" here"},"finish_reason":null}]}
675−
676− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
677−
678− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
679−
680− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
681−
682− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"31"},"finish_reason":null}]}
683−
684− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
685−
686− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Under"},"finish_reason":null}]}
687−
688− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
689−
690− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
691−
692− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
693−
694− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
695−
696− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
697−
698− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Make"},"finish_reason":null}]}
699−
700− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" sure"},"finish_reason":null}]}
701−
702− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" not"},"finish_reason":null}]}
703−
704− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
705−
706− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
707−
708− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Return"},"finish_reason":null}]}
709−
710− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" single"},"finish_reason":null}]}
711−
712− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
713−
714− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
715−
716− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Glob"},"finish_reason":null}]}
717−
718− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}]}
719
287
720− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" find"},"finish_reason":null}]}
288+ headers:
289+ Content-Type:
290+ - text/event-stream
291+ status: 200 OK
292+ code: 200
293+ duration: 1.456542416s
294+- id: 2
295+ request:
296+ proto: HTTP/1.1
297+ proto_major: 1
298+ proto_minor: 1
299+ content_length: 35991
300+ host: ""
301+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/glob_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use glob to find all .go files in the current directory\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_8599e8e2b077705f\",\"function\":{\"arguments\":\"{\\\"path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/glob_tool\\\", \\\"pattern\\\": \\\"*.go\\\"}\",\"name\":\"glob\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/glob_tool/main.go\",\"tool_call_id\":\"call_8599e8e2b077705f\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
302+ headers:
303+ Accept:
304+ - application/json
305+ Content-Type:
306+ - application/json
307+ User-Agent:
308+ - Charm-Crush/devel (https://charm.land/crush)
309+ url: https://hyper.charm.land/v1/chat/completions
310+ method: POST
311+ response:
312+ proto: HTTP/2.0
313+ proto_major: 2
314+ proto_minor: 0
315+ content_length: -1
316+ uncompressed: true
317+ body: |+
318+ data: {"id":"chatcmpl-0a59dc2fc24e191f9c8a0b0f","object":"chat.completion.chunk","created":1781460013,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
721
319
722− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" all"},"finish_reason":null}]}
320+ data: {"id":"chatcmpl-0a59dc2fc24e191f9c8a0b0f","object":"chat.completion.chunk","created":1781460013,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Found"},"finish_reason":null}]}
723
321
724− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" ."},"finish_reason":null}]}
322+ data: {"id":"chatcmpl-0a59dc2fc24e191f9c8a0b0f","object":"chat.completion.chunk","created":1781460013,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" 1 `."},"finish_reason":null}]}
725
323
726− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"go"},"finish_reason":null}]}
324+ data: {"id":"chatcmpl-0a59dc2fc24e191f9c8a0b0f","object":"chat.completion.chunk","created":1781460013,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"go` file"},"finish_reason":null}]}
727
325
728− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
326+ data: {"id":"chatcmpl-0a59dc2fc24e191f9c8a0b0f","object":"chat.completion.chunk","created":1781460013,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":": `main"},"finish_reason":null}]}
729
327
730− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" here"},"finish_reason":null}]}
328+ data: {"id":"chatcmpl-0a59dc2fc24e191f9c8a0b0f","object":"chat.completion.chunk","created":1781460013,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go`"},"finish_reason":null}]}
731
329
732− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
330+ data: {"id":"chatcmpl-0a59dc2fc24e191f9c8a0b0f","object":"chat.completion.chunk","created":1781460013,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
733
331
734− data: {"id":"chatcmpl-76a7c40a029354eed8c9e907","object":"chat.completion.chunk","created":1781217094,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":29,"completion_tokens":307,"total_tokens":528,"prompt_tokens_details":{"cached_tokens":192},"cost":{"usd":0.00020526800000000001,"hypercredits":0.00410536},"remaining":{"hypercredits":0}}}
332+ data: {"id":"chatcmpl-0a59dc2fc24e191f9c8a0b0f","object":"chat.completion.chunk","created":1781460013,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":8177,"completion_tokens":12,"total_tokens":8232,"prompt_tokens_details":{"cached_tokens":43},"cost":{"usd":0.0115006,"hypercredits":0.230012},"remaining":{"hypercredits":0}}}
735
333
736 data: [DONE]
334 data: [DONE]
737
335
@@ -740,4 +338,4 @@ interactions:
740 - text/event-stream
338 - text/event-stream
741 status: 200 OK
339 status: 200 OK
742 code: 200
340 code: 200
743− duration: 541.629006ms
341+ duration: 6.772063208s
internal/agent/testdata/TestCoderAgent/glm-5.1/grep_tool.yaml+410−118
@@ -6,9 +6,9 @@ interactions:
6 proto: HTTP/1.1
6 proto: HTTP/1.1
7 proto_major: 1
7 proto_major: 1
8 proto_minor: 1
8 proto_minor: 1
9− content_length: 33940
9+ content_length: 35651
10 host: ""
10 host: ""
11− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/grep_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use grep to search for the word 'package' in go files\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
11+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/grep_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use grep to search for the word 'package' in go files\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
12 headers:
12 headers:
13 Accept:
13 Accept:
14 - application/json
14 - application/json
@@ -25,39 +25,35 @@ interactions:
25 content_length: -1
25 content_length: -1
26 uncompressed: true
26 uncompressed: true
27 body: |+
27 body: |+
28− data: {"id":"chatcmpl-9c006a883ce61f3014a20460","object":"chat.completion.chunk","created":1781217096,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-070713ebf7b29c9e860cb3a3","object":"chat.completion.chunk","created":1781460014,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
29
29
30− data: {"id":"chatcmpl-9c006a883ce61f3014a20460","object":"chat.completion.chunk","created":1781217096,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_83b87e650f5ce4e2","type":"function","index":0,"function":{"name":"grep","arguments":""}}]},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-070713ebf7b29c9e860cb3a3","object":"chat.completion.chunk","created":1781460014,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_2f22b1c70646d2ec","type":"function","index":0,"function":{"name":"grep","arguments":""}}]},"finish_reason":null}]}
31
31
32− data: {"id":"chatcmpl-9c006a883ce61f3014a20460","object":"chat.completion.chunk","created":1781217096,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-070713ebf7b29c9e860cb3a3","object":"chat.completion.chunk","created":1781460014,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"include\": "}}]},"finish_reason":null}]}
33
33
34− data: {"id":"chatcmpl-9c006a883ce61f3014a20460","object":"chat.completion.chunk","created":1781217096,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"include\": \"*."}}]},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-070713ebf7b29c9e860cb3a3","object":"chat.completion.chunk","created":1781460014,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"*.go\""}}]},"finish_reason":null}]}
35
35
36− data: {"id":"chatcmpl-9c006a883ce61f3014a20460","object":"chat.completion.chunk","created":1781217096,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"go\""}}]},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-070713ebf7b29c9e860cb3a3","object":"chat.completion.chunk","created":1781460014,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":", \"path\": "}}]},"finish_reason":null}]}
37
37
38− data: {"id":"chatcmpl-9c006a883ce61f3014a20460","object":"chat.completion.chunk","created":1781217096,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":", \"path\": "}}]},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-070713ebf7b29c9e860cb3a3","object":"chat.completion.chunk","created":1781460014,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/tmp/c"}}]},"finish_reason":null}]}
39
39
40− data: {"id":"chatcmpl-9c006a883ce61f3014a20460","object":"chat.completion.chunk","created":1781217096,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/tmp/c"}}]},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-070713ebf7b29c9e860cb3a3","object":"chat.completion.chunk","created":1781460014,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush-test/Test"}}]},"finish_reason":null}]}
41
41
42− data: {"id":"chatcmpl-9c006a883ce61f3014a20460","object":"chat.completion.chunk","created":1781217096,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush-test"}}]},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-070713ebf7b29c9e860cb3a3","object":"chat.completion.chunk","created":1781460014,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"CoderAgent/g"}}]},"finish_reason":null}]}
43
43
44− data: {"id":"chatcmpl-9c006a883ce61f3014a20460","object":"chat.completion.chunk","created":1781217096,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/TestCoder"}}]},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-070713ebf7b29c9e860cb3a3","object":"chat.completion.chunk","created":1781460014,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"lm-5"}}]},"finish_reason":null}]}
45
45
46− data: {"id":"chatcmpl-9c006a883ce61f3014a20460","object":"chat.completion.chunk","created":1781217096,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Agent/glm"}}]},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-070713ebf7b29c9e860cb3a3","object":"chat.completion.chunk","created":1781460014,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".1/grep"}}]},"finish_reason":null}]}
47
47
48− data: {"id":"chatcmpl-9c006a883ce61f3014a20460","object":"chat.completion.chunk","created":1781217096,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-5.1"}}]},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-070713ebf7b29c9e860cb3a3","object":"chat.completion.chunk","created":1781460014,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_tool\", "}}]},"finish_reason":null}]}
49
49
50− data: {"id":"chatcmpl-9c006a883ce61f3014a20460","object":"chat.completion.chunk","created":1781217096,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/grep_tool"}}]},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-070713ebf7b29c9e860cb3a3","object":"chat.completion.chunk","created":1781460014,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"pattern\": \"package"}}]},"finish_reason":null}]}
51
51
52− data: {"id":"chatcmpl-9c006a883ce61f3014a20460","object":"chat.completion.chunk","created":1781217096,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\", "}}]},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-070713ebf7b29c9e860cb3a3","object":"chat.completion.chunk","created":1781460014,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"}"}}]},"finish_reason":null}]}
53
53
54− data: {"id":"chatcmpl-9c006a883ce61f3014a20460","object":"chat.completion.chunk","created":1781217096,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"pattern\": \"package"}}]},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-070713ebf7b29c9e860cb3a3","object":"chat.completion.chunk","created":1781460014,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
55
55
56− data: {"id":"chatcmpl-9c006a883ce61f3014a20460","object":"chat.completion.chunk","created":1781217096,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"}"}}]},"finish_reason":null}]}
57−
58− data: {"id":"chatcmpl-9c006a883ce61f3014a20460","object":"chat.completion.chunk","created":1781217096,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
59−
60− data: {"id":"chatcmpl-9c006a883ce61f3014a20460","object":"chat.completion.chunk","created":1781217096,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":680,"completion_tokens":37,"total_tokens":7849,"prompt_tokens_details":{"cached_tokens":7132},"cost":{"usd":0.0011148,"hypercredits":0.022296},"remaining":{"hypercredits":0}}}
56+ data: {"id":"chatcmpl-070713ebf7b29c9e860cb3a3","object":"chat.completion.chunk","created":1781460014,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":681,"completion_tokens":37,"total_tokens":8204,"prompt_tokens_details":{"cached_tokens":7486},"cost":{"usd":0.0011162,"hypercredits":0.022323999999999997},"remaining":{"hypercredits":0}}}
61
57
62 data: [DONE]
58 data: [DONE]
63
59
@@ -66,7 +62,7 @@ interactions:
66 - text/event-stream
62 - text/event-stream
67 status: 200 OK
63 status: 200 OK
68 code: 200
64 code: 200
69− duration: 616.114993ms
65+ duration: 557.764375ms
70- id: 1
66- id: 1
71 request:
67 request:
72 proto: HTTP/1.1
68 proto: HTTP/1.1
@@ -91,173 +87,469 @@ interactions:
91 content_length: -1
87 content_length: -1
92 uncompressed: true
88 uncompressed: true
93 body: |+
89 body: |+
94− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
91+
92+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
93+
94+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
95+
96+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" asks"},"finish_reason":null}]}
97+
98+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
99+
100+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
101+
102+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
103+
104+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
105+
106+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
107+
108+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
109+
110+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
111+
112+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
113+
114+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
115+
116+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
117+
118+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
119+
120+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" use"},"finish_reason":null}]}
121+
122+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" grep"},"finish_reason":null}]}
123+
124+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
125+
126+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" search"},"finish_reason":null}]}
127+
128+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
129+
130+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
131+
132+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" word"},"finish_reason":null}]}
133+
134+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
135+
136+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"package"},"finish_reason":null}]}
137+
138+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
139+
140+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
141+
142+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" go"},"finish_reason":null}]}
143+
144+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
145+
146+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
147+
148+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Need"},"finish_reason":null}]}
149+
150+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
151+
152+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
153+
154+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
155+
156+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
157+
158+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
159+
160+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
161+
162+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" English"},"finish_reason":null}]}
163+
164+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
165+
166+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
167+
168+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
169+
170+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
171+
172+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
173+
174+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
175+
176+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
177+
178+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
179+
180+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
181+
182+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
183+
184+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
185+
186+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
187+
188+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
189+
190+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
191+
192+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Possible"},"finish_reason":null}]}
193+
194+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
195+
196+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
197+
198+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
199+
200+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"G"},"finish_reason":null}]}
201+
202+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"rep"},"finish_reason":null}]}
203+
204+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
205+
206+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
207+
208+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"package"},"finish_reason":null}]}
209+
210+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
211+
212+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
213+
214+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
215+
216+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" source"},"finish_reason":null}]}
217+
218+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
219+
220+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
221+
222+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
223+
224+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
225+
226+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
227+
228+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" G"},"finish_reason":null}]}
229+
230+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
231+
232+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" e"},"finish_reason":null}]}
233+
234+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" p"},"finish_reason":null}]}
235+
236+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
237+
238+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
239+
240+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
241+
242+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" +"},"finish_reason":null}]}
243+
244+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
245+
246+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
247+
248+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
249+
250+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
251+
252+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
253+
254+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
255+
256+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
257+
258+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
259+
260+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
261+
262+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
263+
264+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
265+
266+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
267+
268+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
269+
270+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
271+
272+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
273+
274+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
275+
276+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"9"},"finish_reason":null}]}
277+
278+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
279+
280+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
281+
282+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"package"},"finish_reason":null}]}
283+
284+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
285+
286+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
287+
288+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
289+
290+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" inc"},"finish_reason":null}]}
291+
292+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
293+
294+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"?)"},"finish_reason":null}]}
295+
296+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" but"},"finish_reason":null}]}
297+
298+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" we"},"finish_reason":null}]}
299+
300+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" can"},"finish_reason":null}]}
301+
302+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" write"},"finish_reason":null}]}
303+
304+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" package"},"finish_reason":null}]}
305+
306+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" without"},"finish_reason":null}]}
307+
308+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
309+
310+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
311+
312+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" package"},"finish_reason":null}]}
313+
314+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
315+
316+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
317+
318+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
319+
320+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" plus"},"finish_reason":null}]}
321+
322+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
323+
324+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
325+
326+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"?"},"finish_reason":null}]}
327+
328+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
329+
330+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
331+
332+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
333+
334+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
335+
336+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"G"},"finish_reason":null}]}
337+
338+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"rep"},"finish_reason":null}]}
339+
340+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
341+
342+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" package"},"finish_reason":null}]}
343+
344+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
345+
346+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
347+
348+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" source"},"finish_reason":null}]}
349+
350+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
351+
352+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
353+
354+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
355+
356+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
357+
358+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
359+
360+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" G"},"finish_reason":null}]}
361+
362+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
363+
364+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
365+
366+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
367+
368+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"r"},"finish_reason":null}]}
369+
370+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
371+
372+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
373+
374+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
375+
376+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"p"},"finish_reason":null}]}
377+
378+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
379+
380+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
381+
382+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
383+
384+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" f"},"finish_reason":null}]}
385+
386+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
95
387
96− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
388+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"o"},"finish_reason":null}]}
97
389
98− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" wants"},"finish_reason":null}]}
390+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
99
391
100− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
392+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"r"},"finish_reason":null}]}
101
393
102− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
394+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
103
395
104− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
396+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
105
397
106− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
398+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"9"},"finish_reason":null}]}
107
399
108− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
400+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" p"},"finish_reason":null}]}
109
401
110− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
402+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"10"},"finish_reason":null}]}
111
403
112− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
404+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
113
405
114− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
406+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
115
407
116− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
408+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"c"},"finish_reason":null}]}
117
409
118− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" grep"},"finish_reason":null}]}
410+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
119
411
120− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
412+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"k"},"finish_reason":null}]}
121
413
122− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" search"},"finish_reason":null}]}
414+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
123
415
124− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
416+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
125
417
126− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
418+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"14"},"finish_reason":null}]}
127
419
128− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" word"},"finish_reason":null}]}
420+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"g"},"finish_reason":null}]}
129
421
130− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
422+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"15"},"finish_reason":null}]}
131
423
132− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"package"},"finish_reason":null}]}
424+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
133
425
134− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
426+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"16"},"finish_reason":null}]}
135
427
136− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
428+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
137
429
138− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" go"},"finish_reason":null}]}
430+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
139
431
140− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
432+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" i"},"finish_reason":null}]}
141
433
142− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
434+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
143
435
144− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Must"},"finish_reason":null}]}
436+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"n"},"finish_reason":null}]}
145
437
146− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
438+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
147
439
148− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
440+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
149
441
150− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
442+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"20"},"finish_reason":null}]}
151
443
152− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
444+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" G"},"finish_reason":null}]}
153
445
154− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
446+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21"},"finish_reason":null}]}
155
447
156− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
448+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"o"},"finish_reason":null}]}
157
449
158− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
450+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"22"},"finish_reason":null}]}
159
451
160− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
452+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
161
453
162− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
454+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
163
455
164− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
456+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" s"},"finish_reason":null}]}
165
457
166− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
458+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
167
459
168− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
460+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"o"},"finish_reason":null}]}
169
461
170− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
462+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"25"},"finish_reason":null}]}
171
463
172− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
464+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"u"},"finish_reason":null}]}
173
465
174− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
466+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"26"},"finish_reason":null}]}
175
467
176− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Summ"},"finish_reason":null}]}
468+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"r"},"finish_reason":null}]}
177
469
178− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ar"},"finish_reason":null}]}
470+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
179
471
180− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ize"},"finish_reason":null}]}
472+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"c"},"finish_reason":null}]}
181
473
182− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
474+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
183
475
184− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
476+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
185
477
186− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"G"},"finish_reason":null}]}
478+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
187
479
188− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"rep"},"finish_reason":null}]}
480+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
189
481
190− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
482+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"30"},"finish_reason":null}]}
191
483
192− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ‘"},"finish_reason":null}]}
484+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" f"},"finish_reason":null}]}
193
485
194− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"package"},"finish_reason":null}]}
486+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"31"},"finish_reason":null}]}
195
487
196− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"’"},"finish_reason":null}]}
488+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"i"},"finish_reason":null}]}
197
489
198− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
490+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"32"},"finish_reason":null}]}
199
491
200− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
492+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"l"},"finish_reason":null}]}
201
493
202− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
494+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33"},"finish_reason":null}]}
203
495
204− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
496+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
205
497
206− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
498+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
207
499
208− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
500+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"s"},"finish_reason":null}]}
209
501
210− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
502+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
211
503
212− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
504+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
213
505
214− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
506+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
215
507
216− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
508+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
217
509
218− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
510+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
219
511
220− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
512+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
221
513
222− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Should"},"finish_reason":null}]}
514+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
223
515
224− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" not"},"finish_reason":null}]}
516+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
225
517
226− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" include"},"finish_reason":null}]}
518+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
227
519
228− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" colon"},"finish_reason":null}]}
520+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
229
521
230− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
522+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
231
523
232− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
524+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
233
525
234− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" output"},"finish_reason":null}]}
526+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
235
527
236− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" exactly"},"finish_reason":null}]}
528+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Return"},"finish_reason":null}]}
237
529
238− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
530+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
239
531
240− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
532+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
241
533
242− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
534+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"G"},"finish_reason":null}]}
243
535
244− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"G"},"finish_reason":null}]}
536+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"rep"},"finish_reason":null}]}
245
537
246− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"rep"},"finish_reason":null}]}
538+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]}
247
539
248− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]}
540+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" package"},"finish_reason":null}]}
249
541
250− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" package"},"finish_reason":null}]}
542+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
251
543
252− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
544+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Go"},"finish_reason":null}]}
253
545
254− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Go"},"finish_reason":null}]}
546+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" source"},"finish_reason":null}]}
255
547
256− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
548+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
257
549
258− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
550+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
259
551
260− data: {"id":"chatcmpl-c96b7d2b63c7919ab5f9266c","object":"chat.completion.chunk","created":1781217096,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":158,"completion_tokens":88,"total_tokens":310,"prompt_tokens_details":{"cached_tokens":64},"cost":{"usd":0.0001,"hypercredits":0.002},"remaining":{"hypercredits":0}}}
552+ data: {"id":"chatcmpl-0b71e671cb17662b8dd4f854","object":"chat.completion.chunk","created":1781460014,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":217,"completion_tokens":239,"total_tokens":456,"completion_tokens_details":{"reasoning_tokens":222},"cost":{"usd":0.00035210600000000003,"hypercredits":0.007042120000000001},"remaining":{"hypercredits":0}}}
261
553
262 data: [DONE]
554 data: [DONE]
263
555
@@ -266,15 +558,15 @@ interactions:
266 - text/event-stream
558 - text/event-stream
267 status: 200 OK
559 status: 200 OK
268 code: 200
560 code: 200
269− duration: 481.629812ms
561+ duration: 439.173708ms
270- id: 2
562- id: 2
271 request:
563 request:
272 proto: HTTP/1.1
564 proto: HTTP/1.1
273 proto_major: 1
565 proto_major: 1
274 proto_minor: 1
566 proto_minor: 1
275− content_length: 34356
567+ content_length: 36067
276 host: ""
568 host: ""
277− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/grep_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use grep to search for the word 'package' in go files\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_83b87e650f5ce4e2\",\"function\":{\"arguments\":\"{\\\"include\\\": \\\"*.go\\\", \\\"path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/grep_tool\\\", \\\"pattern\\\": \\\"package\\\"}\",\"name\":\"grep\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"Found 1 matches\\n/tmp/crush-test/TestCoderAgent/glm-5.1/grep_tool/main.go:\\n Line 1, Char 1: package main\\n\",\"tool_call_id\":\"call_83b87e650f5ce4e2\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
569+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/grep_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use grep to search for the word 'package' in go files\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_2f22b1c70646d2ec\",\"function\":{\"arguments\":\"{\\\"include\\\": \\\"*.go\\\", \\\"path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/grep_tool\\\", \\\"pattern\\\": \\\"package\\\"}\",\"name\":\"grep\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"Found 1 matches\\n/tmp/crush-test/TestCoderAgent/glm-5.1/grep_tool/main.go:\\n Line 1, Char 1: package main\\n\",\"tool_call_id\":\"call_2f22b1c70646d2ec\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
278 headers:
570 headers:
279 Accept:
571 Accept:
280 - application/json
572 - application/json
@@ -291,21 +583,21 @@ interactions:
291 content_length: -1
583 content_length: -1
292 uncompressed: true
584 uncompressed: true
293 body: |+
585 body: |+
294− data: {"id":"chatcmpl-3becf6749e133c622f813e8b","object":"chat.completion.chunk","created":1781217097,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
586+ data: {"id":"chatcmpl-bdf4ba346dc45b5d90a6850d","object":"chat.completion.chunk","created":1781460015,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
295
587
296− data: {"id":"chatcmpl-3becf6749e133c622f813e8b","object":"chat.completion.chunk","created":1781217097,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Found"},"finish_reason":null}]}
588+ data: {"id":"chatcmpl-bdf4ba346dc45b5d90a6850d","object":"chat.completion.chunk","created":1781460015,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Found"},"finish_reason":null}]}
297
589
298− data: {"id":"chatcmpl-3becf6749e133c622f813e8b","object":"chat.completion.chunk","created":1781217097,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" 1 match:"},"finish_reason":null}]}
590+ data: {"id":"chatcmpl-bdf4ba346dc45b5d90a6850d","object":"chat.completion.chunk","created":1781460015,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" 1 match:"},"finish_reason":null}]}
299
591
300− data: {"id":"chatcmpl-3becf6749e133c622f813e8b","object":"chat.completion.chunk","created":1781217097,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `main.go:"},"finish_reason":null}]}
592+ data: {"id":"chatcmpl-bdf4ba346dc45b5d90a6850d","object":"chat.completion.chunk","created":1781460015,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `main.go:"},"finish_reason":null}]}
301
593
302− data: {"id":"chatcmpl-3becf6749e133c622f813e8b","object":"chat.completion.chunk","created":1781217097,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"1` — `"},"finish_reason":null}]}
594+ data: {"id":"chatcmpl-bdf4ba346dc45b5d90a6850d","object":"chat.completion.chunk","created":1781460015,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"1` — `"},"finish_reason":null}]}
303
595
304− data: {"id":"chatcmpl-3becf6749e133c622f813e8b","object":"chat.completion.chunk","created":1781217097,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"package main`"},"finish_reason":null}]}
596+ data: {"id":"chatcmpl-bdf4ba346dc45b5d90a6850d","object":"chat.completion.chunk","created":1781460015,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"package main`"},"finish_reason":null}]}
305
597
306− data: {"id":"chatcmpl-3becf6749e133c622f813e8b","object":"chat.completion.chunk","created":1781217097,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
598+ data: {"id":"chatcmpl-bdf4ba346dc45b5d90a6850d","object":"chat.completion.chunk","created":1781460015,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
307
599
308− data: {"id":"chatcmpl-3becf6749e133c622f813e8b","object":"chat.completion.chunk","created":1781217097,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7840,"completion_tokens":16,"total_tokens":7906,"prompt_tokens_details":{"cached_tokens":50},"cost":{"usd":0.0110464,"hypercredits":0.22092799999999999},"remaining":{"hypercredits":0}}}
600+ data: {"id":"chatcmpl-bdf4ba346dc45b5d90a6850d","object":"chat.completion.chunk","created":1781460015,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":758,"completion_tokens":16,"total_tokens":8261,"prompt_tokens_details":{"cached_tokens":7487},"cost":{"usd":0.0011316,"hypercredits":0.022632},"remaining":{"hypercredits":0}}}
309
601
310 data: [DONE]
602 data: [DONE]
311
603
@@ -314,4 +606,4 @@ interactions:
314 - text/event-stream
606 - text/event-stream
315 status: 200 OK
607 status: 200 OK
316 code: 200
608 code: 200
317− duration: 859.812964ms
609+ duration: 614.314458ms
internal/agent/testdata/TestCoderAgent/glm-5.1/ls_tool.yaml+156−98
@@ -6,9 +6,9 @@ interactions:
6 proto: HTTP/1.1
6 proto: HTTP/1.1
7 proto_major: 1
7 proto_major: 1
8 proto_minor: 1
8 proto_minor: 1
9− content_length: 33934
9+ content_length: 35645
10 host: ""
10 host: ""
11− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/ls_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use ls to list the files in the current directory\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
11+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/ls_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use ls to list the files in the current directory\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
12 headers:
12 headers:
13 Accept:
13 Accept:
14 - application/json
14 - application/json
@@ -25,29 +25,15 @@ interactions:
25 content_length: -1
25 content_length: -1
26 uncompressed: true
26 uncompressed: true
27 body: |+
27 body: |+
28− data: {"id":"chatcmpl-4d98c0c4ebdda2ef0555d3bf","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-fa0ffc0ad5ac253f7aeee781","object":"chat.completion.chunk","created":1781460016,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
29
29
30− data: {"id":"chatcmpl-4d98c0c4ebdda2ef0555d3bf","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_93eb9b681a62bfc2","type":"function","index":0,"function":{"name":"ls","arguments":""}}]},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-fa0ffc0ad5ac253f7aeee781","object":"chat.completion.chunk","created":1781460016,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_6214bb131bcb9e0c","type":"function","index":0,"function":{"name":"ls","arguments":""}}]},"finish_reason":null}]}
31
31
32− data: {"id":"chatcmpl-4d98c0c4ebdda2ef0555d3bf","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"path\": "}}]},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-fa0ffc0ad5ac253f7aeee781","object":"chat.completion.chunk","created":1781460016,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{}"}}]},"finish_reason":null}]}
33
33
34− data: {"id":"chatcmpl-4d98c0c4ebdda2ef0555d3bf","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/tmp/c"}}]},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-fa0ffc0ad5ac253f7aeee781","object":"chat.completion.chunk","created":1781460016,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
35
35
36− data: {"id":"chatcmpl-4d98c0c4ebdda2ef0555d3bf","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush-test"}}]},"finish_reason":null}]}
37−
38− data: {"id":"chatcmpl-4d98c0c4ebdda2ef0555d3bf","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/TestCoder"}}]},"finish_reason":null}]}
39−
40− data: {"id":"chatcmpl-4d98c0c4ebdda2ef0555d3bf","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Agent/glm-"}}]},"finish_reason":null}]}
41−
42− data: {"id":"chatcmpl-4d98c0c4ebdda2ef0555d3bf","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"5.1/"}}]},"finish_reason":null}]}
43−
44− data: {"id":"chatcmpl-4d98c0c4ebdda2ef0555d3bf","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"ls_tool\""}}]},"finish_reason":null}]}
45−
46− data: {"id":"chatcmpl-4d98c0c4ebdda2ef0555d3bf","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
47−
48− data: {"id":"chatcmpl-4d98c0c4ebdda2ef0555d3bf","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
49−
50− data: {"id":"chatcmpl-4d98c0c4ebdda2ef0555d3bf","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":678,"completion_tokens":24,"total_tokens":7833,"prompt_tokens_details":{"cached_tokens":7131},"cost":{"usd":0.0010548,"hypercredits":0.021096},"remaining":{"hypercredits":0}}}
36+ data: {"id":"chatcmpl-fa0ffc0ad5ac253f7aeee781","object":"chat.completion.chunk","created":1781460016,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":678,"completion_tokens":3,"total_tokens":8167,"prompt_tokens_details":{"cached_tokens":7486},"cost":{"usd":0.0009624,"hypercredits":0.019247999999999998},"remaining":{"hypercredits":0}}}
51
37
52 data: [DONE]
38 data: [DONE]
53
39
@@ -56,7 +42,7 @@ interactions:
56 - text/event-stream
42 - text/event-stream
57 status: 200 OK
43 status: 200 OK
58 code: 200
44 code: 200
59− duration: 514.1366ms
45+ duration: 642.430541ms
60- id: 1
46- id: 1
61 request:
47 request:
62 proto: HTTP/1.1
48 proto: HTTP/1.1
@@ -81,135 +67,207 @@ interactions:
81 content_length: -1
67 content_length: -1
82 uncompressed: true
68 uncompressed: true
83 body: |+
69 body: |+
84− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
71+
72+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
73+
74+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
75+
76+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" says"},"finish_reason":null}]}
77+
78+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
79+
80+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
81+
82+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
83+
84+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
85+
86+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
87+
88+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
89+
90+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
91+
92+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
93+
94+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
95+
96+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
97+
98+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":\n\n"},"finish_reason":null}]}
99+
100+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
101+
102+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ls"},"finish_reason":null}]}
103+
104+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
105+
106+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" list"},"finish_reason":null}]}
107+
108+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
109+
110+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
111+
112+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
113+
114+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
115+
116+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
117+
118+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
119+
120+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\n"},"finish_reason":null}]}
121+
122+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c"},"finish_reason":null}]}
123+
124+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"think"},"finish_reason":null}]}
125+
126+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\u003e"},"finish_reason":null}]}
127+
128+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"\n\n"},"finish_reason":null}]}
129+
130+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
131+
132+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
133+
134+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
135+
136+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" generate"},"finish_reason":null}]}
137+
138+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
139+
140+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
141+
142+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
85
143
86− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
87
145
88− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"max"},"finish_reason":null}]}
89
147
90− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" generate"},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
91
149
92− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
93
151
94− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
152+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
95
153
96− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
154+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"),"},"finish_reason":null}]}
97
155
98− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
156+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
99
157
100− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
101
159
102− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
103
161
104− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
105
163
106− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
107
165
108− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
166+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
109
167
110− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
168+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Summ"},"finish_reason":null}]}
111
169
112− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
170+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ar"},"finish_reason":null}]}
113
171
114− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
172+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ize"},"finish_reason":null}]}
115
173
116− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
174+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
117
175
118− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Summ"},"finish_reason":null}]}
176+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
119
177
120− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ar"},"finish_reason":null}]}
178+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Use"},"finish_reason":null}]}
121
179
122− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ize"},"finish_reason":null}]}
180+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ls"},"finish_reason":null}]}
123
181
124− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
182+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
125
183
126− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
184+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" list"},"finish_reason":null}]}
127
185
128− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
186+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
129
187
130− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ls"},"finish_reason":null}]}
188+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
131
189
132− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
190+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
133
191
134− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" list"},"finish_reason":null}]}
192+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
135
193
136− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
194+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
137
195
138− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
196+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
139
197
140− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
198+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" could"},"finish_reason":null}]}
141
199
142− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
200+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
143
201
144− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
202+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
145
203
146− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
204+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Listing"},"finish_reason":null}]}
147
205
148− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
206+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Files"},"finish_reason":null}]}
149
207
150− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
208+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
151
209
152− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" could"},"finish_reason":null}]}
210+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ls"},"finish_reason":null}]}
153
211
154− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
212+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
155
213
156− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
214+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
157
215
158− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"List"},"finish_reason":null}]}
216+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
159
217
160− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
218+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
161
219
162− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
220+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
163
221
164− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
222+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
165
223
166− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
224+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
167
225
168− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
226+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
169
227
170− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ls"},"finish_reason":null}]}
228+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
171
229
172− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
230+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
173
231
174− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
232+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
175
233
176− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
234+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" colon"},"finish_reason":null}]}
177
235
178− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
236+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
179
237
180− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
238+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
181
239
182− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
240+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
183
241
184− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
242+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
185
243
186− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
244+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Return"},"finish_reason":null}]}
187
245
188− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
246+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" only"},"finish_reason":null}]}
189
247
190− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" One"},"finish_reason":null}]}
248+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
191
249
192− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
250+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
193
251
194− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
252+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
195
253
196− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"List"},"finish_reason":null}]}
254+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Listing"},"finish_reason":null}]}
197
255
198− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
256+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
199
257
200− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
258+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
201
259
202− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" current"},"finish_reason":null}]}
260+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" current"},"finish_reason":null}]}
203
261
204− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" directory"},"finish_reason":null}]}
262+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" directory"},"finish_reason":null}]}
205
263
206− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" using"},"finish_reason":null}]}
264+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
207
265
208− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" ls"},"finish_reason":null}]}
266+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" ls"},"finish_reason":null}]}
209
267
210− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
268+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
211
269
212− data: {"id":"chatcmpl-ef278f39042c23aa23657c81","object":"chat.completion.chunk","created":1781217098,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":155,"completion_tokens":69,"total_tokens":288,"prompt_tokens_details":{"cached_tokens":64},"cost":{"usd":0.0001,"hypercredits":0.002},"remaining":{"hypercredits":0}}}
270+ data: {"id":"chatcmpl-28793d44d28f1dc1a615c400","object":"chat.completion.chunk","created":1781460016,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":214,"completion_tokens":108,"total_tokens":322,"completion_tokens_details":{"reasoning_tokens":92},"cost":{"usd":0.000174092,"hypercredits":0.00348184},"remaining":{"hypercredits":0}}}
213
271
214 data: [DONE]
272 data: [DONE]
215
273
@@ -218,15 +276,15 @@ interactions:
218 - text/event-stream
276 - text/event-stream
219 status: 200 OK
277 status: 200 OK
220 code: 200
278 code: 200
221− duration: 483.438056ms
279+ duration: 611.496791ms
222- id: 2
280- id: 2
223 request:
281 request:
224 proto: HTTP/1.1
282 proto: HTTP/1.1
225 proto_major: 1
283 proto_major: 1
226 proto_minor: 1
284 proto_minor: 1
227− content_length: 34267
285+ content_length: 35918
228 host: ""
286 host: ""
229− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/ls_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use ls to list the files in the current directory\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_93eb9b681a62bfc2\",\"function\":{\"arguments\":\"{\\\"path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/ls_tool\\\"}\",\"name\":\"ls\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"\\n- /tmp/crush-test/TestCoderAgent/glm-5.1/ls_tool/\\n - go.mod\\n - main.go\\n\",\"tool_call_id\":\"call_93eb9b681a62bfc2\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
287+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/ls_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use ls to list the files in the current directory\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_6214bb131bcb9e0c\",\"function\":{\"arguments\":\"{}\",\"name\":\"ls\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"\\n- /tmp/crush-test/TestCoderAgent/glm-5.1/ls_tool/\\n - go.mod\\n - main.go\\n\",\"tool_call_id\":\"call_6214bb131bcb9e0c\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
230 headers:
288 headers:
231 Accept:
289 Accept:
232 - application/json
290 - application/json
@@ -243,19 +301,19 @@ interactions:
243 content_length: -1
301 content_length: -1
244 uncompressed: true
302 uncompressed: true
245 body: |+
303 body: |+
246− data: {"id":"chatcmpl-d18629b60981c7ea93306935","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
304+ data: {"id":"chatcmpl-4528a3e733b2cd212d8935d6","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
247
305
248− data: {"id":"chatcmpl-d18629b60981c7ea93306935","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}]}
306+ data: {"id":"chatcmpl-4528a3e733b2cd212d8935d6","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}]}
249
307
250− data: {"id":"chatcmpl-d18629b60981c7ea93306935","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `go.mod`\n"},"finish_reason":null}]}
308+ data: {"id":"chatcmpl-4528a3e733b2cd212d8935d6","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `go.mod`\n"},"finish_reason":null}]}
251
309
252− data: {"id":"chatcmpl-d18629b60981c7ea93306935","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"- `main.go"},"finish_reason":null}]}
310+ data: {"id":"chatcmpl-4528a3e733b2cd212d8935d6","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"- `main"},"finish_reason":null}]}
253
311
254− data: {"id":"chatcmpl-d18629b60981c7ea93306935","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
312+ data: {"id":"chatcmpl-4528a3e733b2cd212d8935d6","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go`"},"finish_reason":null}]}
255
313
256− data: {"id":"chatcmpl-d18629b60981c7ea93306935","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
314+ data: {"id":"chatcmpl-4528a3e733b2cd212d8935d6","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
257
315
258− data: {"id":"chatcmpl-d18629b60981c7ea93306935","object":"chat.completion.chunk","created":1781217098,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":737,"completion_tokens":10,"total_tokens":7878,"prompt_tokens_details":{"cached_tokens":7131},"cost":{"usd":0.0010758,"hypercredits":0.021516},"remaining":{"hypercredits":0}}}
316+ data: {"id":"chatcmpl-4528a3e733b2cd212d8935d6","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":716,"completion_tokens":10,"total_tokens":8212,"prompt_tokens_details":{"cached_tokens":7486},"cost":{"usd":0.0010464,"hypercredits":0.020928},"remaining":{"hypercredits":0}}}
259
317
260 data: [DONE]
318 data: [DONE]
261
319
@@ -264,4 +322,4 @@ interactions:
264 - text/event-stream
322 - text/event-stream
265 status: 200 OK
323 status: 200 OK
266 code: 200
324 code: 200
267− duration: 527.376418ms
325+ duration: 953.270125ms
internal/agent/testdata/TestCoderAgent/glm-5.1/multiedit_tool.yaml+321−703
@@ -6,9 +6,9 @@ interactions:
6 proto: HTTP/1.1
6 proto: HTTP/1.1
7 proto_major: 1
7 proto_major: 1
8 proto_minor: 1
8 proto_minor: 1
9− content_length: 34020
9+ content_length: 35731
10 host: ""
10 host: ""
11− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use multiedit to change 'Hello, World!' to 'Hello, Crush!' and add a comment '// Greeting' above the fmt.Println line in main.go\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
11+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use multiedit to change 'Hello, World!' to 'Hello, Crush!' and add a comment '// Greeting' above the fmt.Println line in main.go\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
12 headers:
12 headers:
13 Accept:
13 Accept:
14 - application/json
14 - application/json
@@ -25,31 +25,29 @@ interactions:
25 content_length: -1
25 content_length: -1
26 uncompressed: true
26 uncompressed: true
27 body: |+
27 body: |+
28− data: {"id":"chatcmpl-de636672b42550d009ba4b18","object":"chat.completion.chunk","created":1781217099,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-333e7c9583d966bcf94c5f06","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
29
29
30− data: {"id":"chatcmpl-de636672b42550d009ba4b18","object":"chat.completion.chunk","created":1781217099,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_3d1eccbfa09a6d92","type":"function","index":0,"function":{"name":"view","arguments":""}}]},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-333e7c9583d966bcf94c5f06","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_a6cb069feb7d4b31","type":"function","index":0,"function":{"name":"view","arguments":""}}]},"finish_reason":null}]}
31
31
32− data: {"id":"chatcmpl-de636672b42550d009ba4b18","object":"chat.completion.chunk","created":1781217099,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"file_path\": "}}]},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-333e7c9583d966bcf94c5f06","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"file_path\": "}}]},"finish_reason":null}]}
33
33
34− data: {"id":"chatcmpl-de636672b42550d009ba4b18","object":"chat.completion.chunk","created":1781217099,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/tmp/c"}}]},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-333e7c9583d966bcf94c5f06","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/tmp/c"}}]},"finish_reason":null}]}
35
35
36− data: {"id":"chatcmpl-de636672b42550d009ba4b18","object":"chat.completion.chunk","created":1781217099,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush-test"}}]},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-333e7c9583d966bcf94c5f06","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush-test/Test"}}]},"finish_reason":null}]}
37
37
38− data: {"id":"chatcmpl-de636672b42550d009ba4b18","object":"chat.completion.chunk","created":1781217099,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/TestCoder"}}]},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-333e7c9583d966bcf94c5f06","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"CoderAgent"}}]},"finish_reason":null}]}
39
39
40− data: {"id":"chatcmpl-de636672b42550d009ba4b18","object":"chat.completion.chunk","created":1781217099,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Agent/glm-"}}]},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-333e7c9583d966bcf94c5f06","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/glm-"}}]},"finish_reason":null}]}
41
41
42− data: {"id":"chatcmpl-de636672b42550d009ba4b18","object":"chat.completion.chunk","created":1781217099,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"5.1/m"}}]},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-333e7c9583d966bcf94c5f06","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"5.1/m"}}]},"finish_reason":null}]}
43
43
44− data: {"id":"chatcmpl-de636672b42550d009ba4b18","object":"chat.completion.chunk","created":1781217099,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"ultied"}}]},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-333e7c9583d966bcf94c5f06","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"ultiedit_tool"}}]},"finish_reason":null}]}
45
45
46− data: {"id":"chatcmpl-de636672b42550d009ba4b18","object":"chat.completion.chunk","created":1781217099,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"it_tool"}}]},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-333e7c9583d966bcf94c5f06","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/main.go\"}"}}]},"finish_reason":null}]}
47
47
48− data: {"id":"chatcmpl-de636672b42550d009ba4b18","object":"chat.completion.chunk","created":1781217099,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/main.go\"}"}}]},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-333e7c9583d966bcf94c5f06","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
49
49
50− data: {"id":"chatcmpl-de636672b42550d009ba4b18","object":"chat.completion.chunk","created":1781217099,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
51−
52− data: {"id":"chatcmpl-de636672b42550d009ba4b18","object":"chat.completion.chunk","created":1781217099,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":703,"completion_tokens":29,"total_tokens":7863,"prompt_tokens_details":{"cached_tokens":7131},"cost":{"usd":0.0011118,"hypercredits":0.022236},"remaining":{"hypercredits":0}}}
50+ data: {"id":"chatcmpl-333e7c9583d966bcf94c5f06","object":"chat.completion.chunk","created":1781460017,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":703,"completion_tokens":29,"total_tokens":8218,"prompt_tokens_details":{"cached_tokens":7486},"cost":{"usd":0.0011118,"hypercredits":0.022236},"remaining":{"hypercredits":0}}}
53
51
54 data: [DONE]
52 data: [DONE]
55
53
@@ -58,96 +56,8 @@ interactions:
58 - text/event-stream
56 - text/event-stream
59 status: 200 OK
57 status: 200 OK
60 code: 200
58 code: 200
61− duration: 542.15483ms
59+ duration: 557.312542ms
62- id: 1
60- id: 1
63− request:
64− proto: HTTP/1.1
65− proto_major: 1
66− proto_minor: 1
67− content_length: 34458
68− host: ""
69− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use multiedit to change 'Hello, World!' to 'Hello, Crush!' and add a comment '// Greeting' above the fmt.Println line in main.go\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_3d1eccbfa09a6d92\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<file>\\n 1|package main\\n 2|\\n 3|import \\\"fmt\\\"\\n 4|\\n 5|func main() {\\n 6|\\tfmt.Println(\\\"Hello, World!\\\")\\n 7|}\\n 8|\\n</file>\\n\",\"tool_call_id\":\"call_3d1eccbfa09a6d92\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
70− headers:
71− Accept:
72− - application/json
73− Content-Type:
74− - application/json
75− User-Agent:
76− - Charm-Crush/devel (https://charm.land/crush)
77− url: https://hyper.charm.land/v1/chat/completions
78− method: POST
79− response:
80− proto: HTTP/2.0
81− proto_major: 2
82− proto_minor: 0
83− content_length: -1
84− uncompressed: true
85− body: |+
86− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
87−
88− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_a32673400ff8d213","type":"function","index":0,"function":{"name":"multiedit","arguments":""}}]},"finish_reason":null}]}
89−
90− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
91−
92− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"edits\": ["}}]},"finish_reason":null}]}
93−
94− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"new_string\":"}}]},"finish_reason":null}]}
95−
96− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" \"Hello, Crush"}}]},"finish_reason":null}]}
97−
98− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"!\", \"old_string"}}]},"finish_reason":null}]}
99−
100− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\": \"Hello,"}}]},"finish_reason":null}]}
101−
102− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" World!\"}, {\""}}]},"finish_reason":null}]}
103−
104− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"new_string\": \"\\"}}]},"finish_reason":null}]}
105−
106− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"t// Greeting"}}]},"finish_reason":null}]}
107−
108− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\n\\tfmt.Println"}}]},"finish_reason":null}]}
109−
110− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"(\\\"Hello, Crush"}}]},"finish_reason":null}]}
111−
112− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"!\\\")\", \""}}]},"finish_reason":null}]}
113−
114− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"old_string\": \"\\"}}]},"finish_reason":null}]}
115−
116− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"t"}}]},"finish_reason":null}]}
117−
118− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"fmt.Println(\\\"Hello"}}]},"finish_reason":null}]}
119−
120− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":", Crush!\\\")"}}]},"finish_reason":null}]}
121−
122− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"}], "}}]},"finish_reason":null}]}
123−
124− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": "}}]},"finish_reason":null}]}
125−
126− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/tmp/crush-test"}}]},"finish_reason":null}]}
127−
128− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/TestCoderAgent/g"}}]},"finish_reason":null}]}
129−
130− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"lm-5."}}]},"finish_reason":null}]}
131−
132− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"1/multied"}}]},"finish_reason":null}]}
133−
134− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"it_tool/main.go"}}]},"finish_reason":null}]}
135−
136− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"}"}}]},"finish_reason":null}]}
137−
138− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
139−
140− data: {"id":"chatcmpl-0fb1974a737e441046aa181c","object":"chat.completion.chunk","created":1781217100,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7874,"completion_tokens":93,"total_tokens":8017,"prompt_tokens_details":{"cached_tokens":50},"cost":{"usd":0.011432799999999998,"hypercredits":0.22865599999999994},"remaining":{"hypercredits":0}}}
141−
142− data: [DONE]
143−
144− headers:
145− Content-Type:
146− - text/event-stream
147− status: 200 OK
148− code: 200
149− duration: 806.481955ms
150−- id: 2
151 request:
61 request:
152 proto: HTTP/1.1
62 proto: HTTP/1.1
153 proto_major: 1
63 proto_major: 1
@@ -171,809 +81,517 @@ interactions:
171 content_length: -1
81 content_length: -1
172 uncompressed: true
82 uncompressed: true
173 body: |+
83 body: |+
174− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
175−
176− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
177−
178− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
179−
180− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" generate"},"finish_reason":null}]}
181−
182− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
183−
184− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
185−
186− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
187−
188− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
189−
190− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
191−
192− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
193−
194− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
195−
196− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
197−
198− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"),"},"finish_reason":null}]}
199−
200− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" max"},"finish_reason":null}]}
201−
202− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
203−
204− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
205−
206− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
207−
208− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
209−
210− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summary"},"finish_reason":null}]}
211−
212− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" of"},"finish_reason":null}]}
213−
214− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user's"},"finish_reason":null}]}
215−
216− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" message"},"finish_reason":null}]}
217−
218− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
219−
220− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Their"},"finish_reason":null}]}
221−
222− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" message"},"finish_reason":null}]}
223−
224− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
225−
226− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
227−
228− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
229−
230− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
231−
232− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
233−
234− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
235−
236− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
237−
238− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
239−
240− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
241−
242− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
243−
244− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
245−
246− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" use"},"finish_reason":null}]}
247−
248− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" mult"},"finish_reason":null}]}
249−
250− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ied"},"finish_reason":null}]}
251−
252− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"it"},"finish_reason":null}]}
253−
254− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
255−
256− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" change"},"finish_reason":null}]}
257−
258− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
259−
260− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
261−
262− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
263−
264− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" World"},"finish_reason":null}]}
265−
266− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"!'"},"finish_reason":null}]}
267−
268− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
269−
270− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
271−
272− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
273−
274− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
275−
276− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
277−
278− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"!'"},"finish_reason":null}]}
279−
280− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
281−
282− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
283−
284− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
285−
286− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
287−
288− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '//"},"finish_reason":null}]}
289−
290− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Greeting"},"finish_reason":null}]}
291−
292− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
293−
294− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" above"},"finish_reason":null}]}
295−
296− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
297−
298− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" fmt"},"finish_reason":null}]}
299−
300− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".Println"},"finish_reason":null}]}
301−
302− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
303−
304− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
305−
306− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
307−
308− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
309
85
310− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
311
87
312− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
313
89
314− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" could"},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" asks"},"finish_reason":null}]}
315
91
316− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
317
93
318− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
319
95
320− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Modify"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
321
97
322− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
323
99
324− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" World"},"finish_reason":null}]}
100+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
325
101
326− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
102+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
327
103
328− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
104+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
329
105
330− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
331
107
332− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
333
109
334− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
335
111
336− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":\n\n"},"finish_reason":null}]}
337
113
338− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
339
115
340− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" mult"},"finish_reason":null}]}
341
117
342− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ied"},"finish_reason":null}]}
343
119
344− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" let's"},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"it"},"finish_reason":null}]}
345
121
346− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
347
123
348− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
124+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" change"},"finish_reason":null}]}
349
125
350− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
126+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
351
127
352− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Modify"},"finish_reason":null}]}
128+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
353
129
354− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
130+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
355
131
356− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" World"},"finish_reason":null}]}
132+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" World"},"finish_reason":null}]}
357
133
358− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
134+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"!'"},"finish_reason":null}]}
359
135
360− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
361
137
362− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
138+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
363
139
364− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
140+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
365
141
366− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
142+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
367
143
368− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
369
145
370− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" length"},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"!'"},"finish_reason":null}]}
371
147
372− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
373
149
374− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
375
151
376− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
152+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
377
153
378− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" M"},"finish_reason":null}]}
154+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
379
155
380− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
156+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '//"},"finish_reason":null}]}
381
157
382− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Greeting"},"finish_reason":null}]}
383
159
384− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")o"},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
385
161
386− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" above"},"finish_reason":null}]}
387
163
388− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"d"},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
389
165
390− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
166+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" fmt"},"finish_reason":null}]}
391
167
392− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"i"},"finish_reason":null}]}
168+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".Println"},"finish_reason":null}]}
393
169
394− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
170+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
395
171
396− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"f"},"finish_reason":null}]}
172+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
397
173
398− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
174+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
399
175
400− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"y"},"finish_reason":null}]}
176+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
401
177
402− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
178+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"\n\n"},"finish_reason":null}]}
403
179
404− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
180+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
405
181
406− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
182+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
407
183
408− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
184+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
409
185
410− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
186+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" produce"},"finish_reason":null}]}
411
187
412− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
188+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
413
189
414− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
190+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
415
191
416− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
192+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
417
193
418− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
194+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
419
195
420− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"9"},"finish_reason":null}]}
196+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"max"},"finish_reason":null}]}
421
197
422− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
198+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
423
199
424− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"World"},"finish_reason":null}]}
200+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
425
201
426− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"10"},"finish_reason":null}]}
202+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
427
203
428− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
204+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"),"},"finish_reason":null}]}
429
205
430− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
206+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
431
207
432− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
208+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
433
209
434− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
210+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
435
211
436− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"to"},"finish_reason":null}]}
212+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
437
213
438− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
214+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
439
215
440− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
216+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Summ"},"finish_reason":null}]}
441
217
442− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
218+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ar"},"finish_reason":null}]}
443
219
444− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
220+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ize"},"finish_reason":null}]}
445
221
446− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
222+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
447
223
448− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
224+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
449
225
450− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"14"},"finish_reason":null}]}
226+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Replace"},"finish_reason":null}]}
451
227
452− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
228+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
453
229
454− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
230+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" World"},"finish_reason":null}]}
455
231
456− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"15"},"finish_reason":null}]}
232+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
457
233
458− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
234+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
459
235
460− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Cr"},"finish_reason":null}]}
236+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
461
237
462− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ush"},"finish_reason":null}]}
238+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
463
239
464− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"16"},"finish_reason":null}]}
240+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
465
241
466− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
242+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
467
243
468− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
244+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
469
245
470− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
246+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
471
247
472− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
248+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" could"},"finish_reason":null}]}
473
249
474− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"with"},"finish_reason":null}]}
250+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
475
251
476− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
252+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
477
253
478− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
254+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
479
255
480− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
256+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Modify"},"finish_reason":null}]}
481
257
482− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
258+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" greeting"},"finish_reason":null}]}
483
259
484− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
260+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
485
261
486− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"comment"},"finish_reason":null}]}
262+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
487
263
488− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"20"},"finish_reason":null}]}
264+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
489
265
490− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
266+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
491
267
492− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
268+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
493
269
494− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
270+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
495
271
496− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"20"},"finish_reason":null}]}
272+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
497
273
498− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
274+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
499
275
500− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"?"},"finish_reason":null}]}
276+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
501
277
502− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Actually"},"finish_reason":null}]}
278+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
503
279
504− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
280+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
505
281
506− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" includes"},"finish_reason":null}]}
282+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Modify"},"finish_reason":null}]}
507
283
508− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" spaces"},"finish_reason":null}]}
284+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" greeting"},"finish_reason":null}]}
509
285
510− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
286+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
511
287
512− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
288+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
513
289
514− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" recount"},"finish_reason":null}]}
290+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
515
291
516− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" precisely"},"finish_reason":null}]}
292+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
517
293
518− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
294+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
519
295
520− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
296+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
521
297
522− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Modify"},"finish_reason":null}]}
298+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
523
299
524− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
300+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
525
301
526− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
302+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" let's"},"finish_reason":null}]}
527
303
528− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
304+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
529
305
530− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
306+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
531
307
532− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" +"},"finish_reason":null}]}
308+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Modify"},"finish_reason":null}]}
533
309
534− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
310+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
535
311
536− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
312+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
537
313
538− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
314+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
539
315
540− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
316+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" +"},"finish_reason":null}]}
541
317
542− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
318+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
543
319
544− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
320+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
545
321
546− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
322+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
547
323
548− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
324+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
549
325
550− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"("},"finish_reason":null}]}
326+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
551
327
552− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
328+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
553
329
554− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
330+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" greeting"},"finish_reason":null}]}
555
331
556− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
332+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
557
333
558− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
334+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
559
335
560− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
336+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
561
337
562− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
338+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"15"},"finish_reason":null}]}
563
339
564− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
340+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
565
341
566− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
342+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
567
343
568− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
344+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
569
345
570− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"World"},"finish_reason":null}]}
346+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"16"},"finish_reason":null}]}
571
347
572− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"("},"finish_reason":null}]}
348+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
573
349
574− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
350+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
575
351
576− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
352+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
577
353
578− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
354+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
579
355
580− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
356+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
581
357
582− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
358+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
583
359
584− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
360+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
585
361
586− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
362+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
587
363
588− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
364+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
589
365
590− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
366+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"20"},"finish_reason":null}]}
591
367
592− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"to"},"finish_reason":null}]}
368+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
593
369
594− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"("},"finish_reason":null}]}
370+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
595
371
596− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
372+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
597
373
598− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
374+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
599
375
600− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21"},"finish_reason":null}]}
376+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
601
377
602− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
378+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
603
379
604− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
380+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
605
381
606− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
382+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
607
383
608− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"22"},"finish_reason":null}]}
384+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
609
385
610− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
386+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
611
387
612− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
388+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
613
389
614− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
390+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
615
391
616− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"("},"finish_reason":null}]}
392+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
617
393
618− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
394+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
619
395
620− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
396+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
621
397
622− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
398+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"31"},"finish_reason":null}]}
623
399
624− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
400+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
625
401
626− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
402+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
627
403
628− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
404+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
629
405
630− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
406+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"32"},"finish_reason":null}]}
631
407
632− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
408+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
633
409
634− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
410+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
635
411
636− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Cr"},"finish_reason":null}]}
412+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
637
413
638− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ush"},"finish_reason":null}]}
414+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
639
415
640− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"("},"finish_reason":null}]}
416+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
641
417
642− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
418+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
643
419
644− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
420+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
645
421
646− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33"},"finish_reason":null}]}
422+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
647
423
648− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
424+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
649
425
650− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
426+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
651
427
652− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
428+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
653
429
654− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
430+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
655
431
656− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
432+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
657
433
658− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
434+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
659
435
660− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"with"},"finish_reason":null}]}
436+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
661
437
662− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"("},"finish_reason":null}]}
438+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
663
439
664− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
440+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"42"},"finish_reason":null}]}
665
441
666− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
442+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
667
443
668− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
444+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
669
445
670− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
446+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
671
447
672− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
448+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"42"},"finish_reason":null}]}
673
449
674− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
450+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
675
451
676− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"39"},"finish_reason":null}]}
452+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
677
453
678− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
454+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" fine"},"finish_reason":null}]}
679
455
680− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
456+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
681
457
682− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"comment"},"finish_reason":null}]}
458+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Make"},"finish_reason":null}]}
683
459
684− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"("},"finish_reason":null}]}
460+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" sure"},"finish_reason":null}]}
685
461
686− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
462+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
687
463
688− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
464+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
689
465
690− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"46"},"finish_reason":null}]}
466+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
691
467
692− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
468+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
693
469
694− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
470+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
695
471
696− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" total"},"finish_reason":null}]}
472+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
697
473
698− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
474+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" One"},"finish_reason":null}]}
699
475
700− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"46"},"finish_reason":null}]}
476+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
701
477
702− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
478+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
703
479
704− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
480+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Return"},"finish_reason":null}]}
705
481
706− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
482+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" only"},"finish_reason":null}]}
707
483
708− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
484+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
709
485
710− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
486+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
711
487
712− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
488+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Modify"},"finish_reason":null}]}
713
489
714− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
490+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" greeting"},"finish_reason":null}]}
715
491
716− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
492+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" and"},"finish_reason":null}]}
717
493
718− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Alternatively"},"finish_reason":null}]}
494+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" add"},"finish_reason":null}]}
719
495
720− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
496+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" comment"},"finish_reason":null}]}
721
497
722− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Change"},"finish_reason":null}]}
498+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
723
499
724− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
500+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" main"},"finish_reason":null}]}
725
501
726− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" World"},"finish_reason":null}]}
502+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
727
503
728− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
504+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
729
505
730− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
506+ data: {"id":"chatcmpl-2275ac554b61b8869df10259","object":"chat.completion.chunk","created":1781460018,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":236,"completion_tokens":219,"total_tokens":455,"completion_tokens_details":{"reasoning_tokens":202},"cost":{"usd":0.00032828800000000004,"hypercredits":0.00656576},"remaining":{"hypercredits":0}}}
731
507
732− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
508+ data: [DONE]
733−
734− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
735−
736− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
737−
738− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
739−
740− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
741−
742− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
743−
744− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
745−
746− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
747−
748− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Change"},"finish_reason":null}]}
749−
750− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
751−
752− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" World"},"finish_reason":null}]}
753−
754− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
755−
756− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
757−
758− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
759−
760− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
761−
762− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
763−
764− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
765−
766− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
767−
768− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
769−
770− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
771−
772− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
773−
774− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Change"},"finish_reason":null}]}
775−
776− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
777−
778− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
779−
780− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
781−
782− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
783−
784− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
785−
786− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
787−
788− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
789−
790− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
791−
792− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
793−
794− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
795−
796− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
797−
798− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
799−
800− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
801−
802− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
803−
804− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
805−
806− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
807−
808− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
809−
810− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
811−
812− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
813−
814− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" World"},"finish_reason":null}]}
815−
816− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
817−
818− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
819−
820− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
821−
822− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
823−
824− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
825−
826− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
827−
828− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
829−
830− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
831−
832− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
833−
834− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
835−
836− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
837−
838− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
839−
840− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
841−
842− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21"},"finish_reason":null}]}
843−
844− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
845−
846− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
847−
848− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
849−
850− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"22"},"finish_reason":null}]}
851−
852− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
853−
854− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
855−
856− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
857−
858− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
859−
860− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
861−
862− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
863−
864− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
865−
866− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
867−
868− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
869−
870− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
871−
872− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
873−
874− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
875−
876− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":",("},"finish_reason":null}]}
877−
878− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
879−
880− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
881−
882− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
883−
884− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
885−
886− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
887−
888− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
889−
890− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
891−
892− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
893−
894− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
895−
896− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
897−
898− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
899−
900− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
901−
902− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
903−
904− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
905−
906− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
907−
908− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
909−
910− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
911−
912− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"39"},"finish_reason":null}]}
913−
914− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
915−
916− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
917−
918− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
919−
920− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
921
509
922− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
510+ headers:
511+ Content-Type:
512+ - text/event-stream
513+ status: 200 OK
514+ code: 200
515+ duration: 847.885417ms
516+- id: 2
517+ request:
518+ proto: HTTP/1.1
519+ proto_major: 1
520+ proto_minor: 1
521+ content_length: 36169
522+ host: ""
523+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use multiedit to change 'Hello, World!' to 'Hello, Crush!' and add a comment '// Greeting' above the fmt.Println line in main.go\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_a6cb069feb7d4b31\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<file>\\n 1|package main\\n 2|\\n 3|import \\\"fmt\\\"\\n 4|\\n 5|func main() {\\n 6|\\tfmt.Println(\\\"Hello, World!\\\")\\n 7|}\\n 8|\\n</file>\\n\",\"tool_call_id\":\"call_a6cb069feb7d4b31\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
524+ headers:
525+ Accept:
526+ - application/json
527+ Content-Type:
528+ - application/json
529+ User-Agent:
530+ - Charm-Crush/devel (https://charm.land/crush)
531+ url: https://hyper.charm.land/v1/chat/completions
532+ method: POST
533+ response:
534+ proto: HTTP/2.0
535+ proto_major: 2
536+ proto_minor: 0
537+ content_length: -1
538+ uncompressed: true
539+ body: |+
540+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
923
541
924− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"46"},"finish_reason":null}]}
542+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_790e86aa9266dc03","type":"function","index":0,"function":{"name":"multiedit","arguments":""}}]},"finish_reason":null}]}
925
543
926− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
544+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
927
545
928− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Also"},"finish_reason":null}]}
546+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"edits\": "}}]},"finish_reason":null}]}
929
547
930− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
548+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"[{\"new"}}]},"finish_reason":null}]}
931
549
932− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"46"},"finish_reason":null}]}
550+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_string\": \"\\"}}]},"finish_reason":null}]}
933
551
934− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
552+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"t//"}}]},"finish_reason":null}]}
935
553
936− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Both"},"finish_reason":null}]}
554+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" Greeting\\n"}}]},"finish_reason":null}]}
937
555
938− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" fine"},"finish_reason":null}]}
556+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\tfmt.Println"}}]},"finish_reason":null}]}
939
557
940− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
558+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"(\\\"Hello, Crush"}}]},"finish_reason":null}]}
941
559
942− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We'll"},"finish_reason":null}]}
560+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"!\\\")\","}}]},"finish_reason":null}]}
943
561
944− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" output"},"finish_reason":null}]}
562+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" \"old_string"}}]},"finish_reason":null}]}
945
563
946− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
564+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\": \"\\tf"}}]},"finish_reason":null}]}
947
565
948− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
566+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"mt.Println(\\\"Hello"}}]},"finish_reason":null}]}
949
567
950− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
568+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":", World!\\"}}]},"finish_reason":null}]}
951
569
952− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
570+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\")\"}]"}}]},"finish_reason":null}]}
953
571
954− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
572+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":", "}}]},"finish_reason":null}]}
955
573
956− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
574+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": "}}]},"finish_reason":null}]}
957
575
958− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Modify"},"finish_reason":null}]}
576+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/tmp/c"}}]},"finish_reason":null}]}
959
577
960− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Hello"},"finish_reason":null}]}
578+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush-test/Test"}}]},"finish_reason":null}]}
961
579
962− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" World"},"finish_reason":null}]}
580+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"CoderAgent"}}]},"finish_reason":null}]}
963
581
964− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}]}
582+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/glm-"}}]},"finish_reason":null}]}
965
583
966− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Hello"},"finish_reason":null}]}
584+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"5.1"}}]},"finish_reason":null}]}
967
585
968− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Crush"},"finish_reason":null}]}
586+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/multied"}}]},"finish_reason":null}]}
969
587
970− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
588+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"it_tool"}}]},"finish_reason":null}]}
971
589
972− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" comment"},"finish_reason":null}]}
590+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/main.go\"}"}}]},"finish_reason":null}]}
973
591
974− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
592+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
975
593
976− data: {"id":"chatcmpl-671edc9e96964d04b22d6ad4","object":"chat.completion.chunk","created":1781217099,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":177,"completion_tokens":406,"total_tokens":647,"prompt_tokens_details":{"cached_tokens":64},"cost":{"usd":0.000295864,"hypercredits":0.00591728},"remaining":{"hypercredits":0}}}
594+ data: {"id":"chatcmpl-afcaa24dc8fe688fabb51f1e","object":"chat.completion.chunk","created":1781460018,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":62,"completion_tokens":74,"total_tokens":8353,"prompt_tokens_details":{"cached_tokens":8217},"cost":{"usd":0.0004124,"hypercredits":0.008248},"remaining":{"hypercredits":0}}}
977
595
978 data: [DONE]
596 data: [DONE]
979
597
@@ -982,15 +600,15 @@ interactions:
982 - text/event-stream
600 - text/event-stream
983 status: 200 OK
601 status: 200 OK
984 code: 200
602 code: 200
985− duration: 490.219284ms
603+ duration: 491.26775ms
986- id: 3
604- id: 3
987 request:
605 request:
988 proto: HTTP/1.1
606 proto: HTTP/1.1
989 proto_major: 1
607 proto_major: 1
990 proto_minor: 1
608 proto_minor: 1
991− content_length: 35071
609+ content_length: 36710
992 host: ""
610 host: ""
993− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use multiedit to change 'Hello, World!' to 'Hello, Crush!' and add a comment '// Greeting' above the fmt.Println line in main.go\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_3d1eccbfa09a6d92\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<file>\\n 1|package main\\n 2|\\n 3|import \\\"fmt\\\"\\n 4|\\n 5|func main() {\\n 6|\\tfmt.Println(\\\"Hello, World!\\\")\\n 7|}\\n 8|\\n</file>\\n\",\"tool_call_id\":\"call_3d1eccbfa09a6d92\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_a32673400ff8d213\",\"function\":{\"arguments\":\"{\\\"edits\\\": [{\\\"new_string\\\": \\\"Hello, Crush!\\\", \\\"old_string\\\": \\\"Hello, World!\\\"}, {\\\"new_string\\\": \\\"\\\\t// Greeting\\\\n\\\\tfmt.Println(\\\\\\\"Hello, Crush!\\\\\\\")\\\", \\\"old_string\\\": \\\"\\\\tfmt.Println(\\\\\\\"Hello, Crush!\\\\\\\")\\\"}], \\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"multiedit\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<result>\\nApplied 2 edits to file: /tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\n</result>\\n\",\"tool_call_id\":\"call_a32673400ff8d213\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
611+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use multiedit to change 'Hello, World!' to 'Hello, Crush!' and add a comment '// Greeting' above the fmt.Println line in main.go\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_a6cb069feb7d4b31\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<file>\\n 1|package main\\n 2|\\n 3|import \\\"fmt\\\"\\n 4|\\n 5|func main() {\\n 6|\\tfmt.Println(\\\"Hello, World!\\\")\\n 7|}\\n 8|\\n</file>\\n\",\"tool_call_id\":\"call_a6cb069feb7d4b31\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_790e86aa9266dc03\",\"function\":{\"arguments\":\"{\\\"edits\\\": [{\\\"new_string\\\": \\\"\\\\t// Greeting\\\\n\\\\tfmt.Println(\\\\\\\"Hello, Crush!\\\\\\\")\\\", \\\"old_string\\\": \\\"\\\\tfmt.Println(\\\\\\\"Hello, World!\\\\\\\")\\\"}], \\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"multiedit\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<result>\\nApplied 1 edits to file: /tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\n</result>\\n\",\"tool_call_id\":\"call_790e86aa9266dc03\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
994 headers:
612 headers:
995 Accept:
613 Accept:
996 - application/json
614 - application/json
@@ -1007,31 +625,29 @@ interactions:
1007 content_length: -1
625 content_length: -1
1008 uncompressed: true
626 uncompressed: true
1009 body: |+
627 body: |+
1010− data: {"id":"chatcmpl-b282eb5b7dedfe08674c7c0a","object":"chat.completion.chunk","created":1781217101,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
628+ data: {"id":"chatcmpl-2b7c6580cb6dbee3f66ee123","object":"chat.completion.chunk","created":1781460019,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
1011−
1012− data: {"id":"chatcmpl-b282eb5b7dedfe08674c7c0a","object":"chat.completion.chunk","created":1781217101,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_c57c82dd82188176","type":"function","index":0,"function":{"name":"view","arguments":""}}]},"finish_reason":null}]}
1013
629
1014− data: {"id":"chatcmpl-b282eb5b7dedfe08674c7c0a","object":"chat.completion.chunk","created":1781217101,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
630+ data: {"id":"chatcmpl-2b7c6580cb6dbee3f66ee123","object":"chat.completion.chunk","created":1781460019,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_71e05131290b20a0","type":"function","index":0,"function":{"name":"view","arguments":""}}]},"finish_reason":null}]}
1015
631
1016− data: {"id":"chatcmpl-b282eb5b7dedfe08674c7c0a","object":"chat.completion.chunk","created":1781217101,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": \"/tmp/c"}}]},"finish_reason":null}]}
632+ data: {"id":"chatcmpl-2b7c6580cb6dbee3f66ee123","object":"chat.completion.chunk","created":1781460019,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
1017
633
1018− data: {"id":"chatcmpl-b282eb5b7dedfe08674c7c0a","object":"chat.completion.chunk","created":1781217101,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush-test"}}]},"finish_reason":null}]}
634+ data: {"id":"chatcmpl-2b7c6580cb6dbee3f66ee123","object":"chat.completion.chunk","created":1781460019,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": \"/tmp/c"}}]},"finish_reason":null}]}
1019
635
1020− data: {"id":"chatcmpl-b282eb5b7dedfe08674c7c0a","object":"chat.completion.chunk","created":1781217101,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/TestCoder"}}]},"finish_reason":null}]}
636+ data: {"id":"chatcmpl-2b7c6580cb6dbee3f66ee123","object":"chat.completion.chunk","created":1781460019,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush-test/Test"}}]},"finish_reason":null}]}
1021
637
1022− data: {"id":"chatcmpl-b282eb5b7dedfe08674c7c0a","object":"chat.completion.chunk","created":1781217101,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Agent/glm-"}}]},"finish_reason":null}]}
638+ data: {"id":"chatcmpl-2b7c6580cb6dbee3f66ee123","object":"chat.completion.chunk","created":1781460019,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"CoderAgent"}}]},"finish_reason":null}]}
1023
639
1024− data: {"id":"chatcmpl-b282eb5b7dedfe08674c7c0a","object":"chat.completion.chunk","created":1781217101,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"5.1/m"}}]},"finish_reason":null}]}
640+ data: {"id":"chatcmpl-2b7c6580cb6dbee3f66ee123","object":"chat.completion.chunk","created":1781460019,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/glm-"}}]},"finish_reason":null}]}
1025
641
1026− data: {"id":"chatcmpl-b282eb5b7dedfe08674c7c0a","object":"chat.completion.chunk","created":1781217101,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"ultied"}}]},"finish_reason":null}]}
642+ data: {"id":"chatcmpl-2b7c6580cb6dbee3f66ee123","object":"chat.completion.chunk","created":1781460019,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"5.1/m"}}]},"finish_reason":null}]}
1027
643
1028− data: {"id":"chatcmpl-b282eb5b7dedfe08674c7c0a","object":"chat.completion.chunk","created":1781217101,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"it_tool/main"}}]},"finish_reason":null}]}
644+ data: {"id":"chatcmpl-2b7c6580cb6dbee3f66ee123","object":"chat.completion.chunk","created":1781460019,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"ultiedit_tool"}}]},"finish_reason":null}]}
1029
645
1030− data: {"id":"chatcmpl-b282eb5b7dedfe08674c7c0a","object":"chat.completion.chunk","created":1781217101,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".go\"}"}}]},"finish_reason":null}]}
646+ data: {"id":"chatcmpl-2b7c6580cb6dbee3f66ee123","object":"chat.completion.chunk","created":1781460019,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/main.go\"}"}}]},"finish_reason":null}]}
1031
647
1032− data: {"id":"chatcmpl-b282eb5b7dedfe08674c7c0a","object":"chat.completion.chunk","created":1781217101,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
648+ data: {"id":"chatcmpl-2b7c6580cb6dbee3f66ee123","object":"chat.completion.chunk","created":1781460019,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
1033
649
1034− data: {"id":"chatcmpl-b282eb5b7dedfe08674c7c0a","object":"chat.completion.chunk","created":1781217101,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":195,"completion_tokens":29,"total_tokens":8086,"prompt_tokens_details":{"cached_tokens":7862},"cost":{"usd":0.00040060000000000003,"hypercredits":0.008012},"remaining":{"hypercredits":0}}}
650+ data: {"id":"chatcmpl-2b7c6580cb6dbee3f66ee123","object":"chat.completion.chunk","created":1781460019,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":41,"completion_tokens":29,"total_tokens":8422,"prompt_tokens_details":{"cached_tokens":8352},"cost":{"usd":0.000185,"hypercredits":0.0036999999999999997},"remaining":{"hypercredits":0}}}
1035
651
1036 data: [DONE]
652 data: [DONE]
1037
653
@@ -1040,15 +656,15 @@ interactions:
1040 - text/event-stream
656 - text/event-stream
1041 status: 200 OK
657 status: 200 OK
1042 code: 200
658 code: 200
1043− duration: 530.902604ms
659+ duration: 541.981917ms
1044- id: 4
660- id: 4
1045 request:
661 request:
1046 proto: HTTP/1.1
662 proto: HTTP/1.1
1047 proto_major: 1
663 proto_major: 1
1048 proto_minor: 1
664 proto_minor: 1
1049− content_length: 35531
665+ content_length: 37170
1050 host: ""
666 host: ""
1051− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use multiedit to change 'Hello, World!' to 'Hello, Crush!' and add a comment '// Greeting' above the fmt.Println line in main.go\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_3d1eccbfa09a6d92\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<file>\\n 1|package main\\n 2|\\n 3|import \\\"fmt\\\"\\n 4|\\n 5|func main() {\\n 6|\\tfmt.Println(\\\"Hello, World!\\\")\\n 7|}\\n 8|\\n</file>\\n\",\"tool_call_id\":\"call_3d1eccbfa09a6d92\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_a32673400ff8d213\",\"function\":{\"arguments\":\"{\\\"edits\\\": [{\\\"new_string\\\": \\\"Hello, Crush!\\\", \\\"old_string\\\": \\\"Hello, World!\\\"}, {\\\"new_string\\\": \\\"\\\\t// Greeting\\\\n\\\\tfmt.Println(\\\\\\\"Hello, Crush!\\\\\\\")\\\", \\\"old_string\\\": \\\"\\\\tfmt.Println(\\\\\\\"Hello, Crush!\\\\\\\")\\\"}], \\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"multiedit\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<result>\\nApplied 2 edits to file: /tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\n</result>\\n\",\"tool_call_id\":\"call_a32673400ff8d213\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_c57c82dd82188176\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<file>\\n 1|package main\\n 2|\\n 3|import \\\"fmt\\\"\\n 4|\\n 5|func main() {\\n 6|\\t// Greeting\\n 7|\\tfmt.Println(\\\"Hello, Crush!\\\")\\n 8|}\\n 9|\\n</file>\\n\",\"tool_call_id\":\"call_c57c82dd82188176\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
667+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use multiedit to change 'Hello, World!' to 'Hello, Crush!' and add a comment '// Greeting' above the fmt.Println line in main.go\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_a6cb069feb7d4b31\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<file>\\n 1|package main\\n 2|\\n 3|import \\\"fmt\\\"\\n 4|\\n 5|func main() {\\n 6|\\tfmt.Println(\\\"Hello, World!\\\")\\n 7|}\\n 8|\\n</file>\\n\",\"tool_call_id\":\"call_a6cb069feb7d4b31\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_790e86aa9266dc03\",\"function\":{\"arguments\":\"{\\\"edits\\\": [{\\\"new_string\\\": \\\"\\\\t// Greeting\\\\n\\\\tfmt.Println(\\\\\\\"Hello, Crush!\\\\\\\")\\\", \\\"old_string\\\": \\\"\\\\tfmt.Println(\\\\\\\"Hello, World!\\\\\\\")\\\"}], \\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"multiedit\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<result>\\nApplied 1 edits to file: /tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\n</result>\\n\",\"tool_call_id\":\"call_790e86aa9266dc03\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_71e05131290b20a0\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<file>\\n 1|package main\\n 2|\\n 3|import \\\"fmt\\\"\\n 4|\\n 5|func main() {\\n 6|\\t// Greeting\\n 7|\\tfmt.Println(\\\"Hello, Crush!\\\")\\n 8|}\\n 9|\\n</file>\\n\",\"tool_call_id\":\"call_71e05131290b20a0\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
1052 headers:
668 headers:
1053 Accept:
669 Accept:
1054 - application/json
670 - application/json
@@ -1065,33 +681,35 @@ interactions:
1065 content_length: -1
681 content_length: -1
1066 uncompressed: true
682 uncompressed: true
1067 body: |+
683 body: |+
1068− data: {"id":"chatcmpl-f22f42e21cd9a85a144db5bd","object":"chat.completion.chunk","created":1781217102,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
684+ data: {"id":"chatcmpl-9fca6e4d5d13b4bfc422d3da","object":"chat.completion.chunk","created":1781460023,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
685+
686+ data: {"id":"chatcmpl-9fca6e4d5d13b4bfc422d3da","object":"chat.completion.chunk","created":1781460023,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Done"},"finish_reason":null}]}
1069
687
1070− data: {"id":"chatcmpl-f22f42e21cd9a85a144db5bd","object":"chat.completion.chunk","created":1781217102,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Done"},"finish_reason":null}]}
688+ data: {"id":"chatcmpl-9fca6e4d5d13b4bfc422d3da","object":"chat.completion.chunk","created":1781460023,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" —"},"finish_reason":null}]}
1071
689
1072− data: {"id":"chatcmpl-f22f42e21cd9a85a144db5bd","object":"chat.completion.chunk","created":1781217102,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"."},"finish_reason":null}]}
690+ data: {"id":"chatcmpl-9fca6e4d5d13b4bfc422d3da","object":"chat.completion.chunk","created":1781460023,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `main"},"finish_reason":null}]}
1073
691
1074− data: {"id":"chatcmpl-f22f42e21cd9a85a144db5bd","object":"chat.completion.chunk","created":1781217102,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Both changes applied"},"finish_reason":null}]}
692+ data: {"id":"chatcmpl-9fca6e4d5d13b4bfc422d3da","object":"chat.completion.chunk","created":1781460023,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go:"},"finish_reason":null}]}
1075
693
1076− data: {"id":"chatcmpl-f22f42e21cd9a85a144db5bd","object":"chat.completion.chunk","created":1781217102,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":": string"},"finish_reason":null}]}
694+ data: {"id":"chatcmpl-9fca6e4d5d13b4bfc422d3da","object":"chat.completion.chunk","created":1781460023,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"6-"},"finish_reason":null}]}
1077
695
1078− data: {"id":"chatcmpl-f22f42e21cd9a85a144db5bd","object":"chat.completion.chunk","created":1781217102,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" updated to `\"Hello"},"finish_reason":null}]}
696+ data: {"id":"chatcmpl-9fca6e4d5d13b4bfc422d3da","object":"chat.completion.chunk","created":1781460023,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"7` now"},"finish_reason":null}]}
1079
697
1080− data: {"id":"chatcmpl-f22f42e21cd9a85a144db5bd","object":"chat.completion.chunk","created":1781217102,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":", Crush!\"`"},"finish_reason":null}]}
698+ data: {"id":"chatcmpl-9fca6e4d5d13b4bfc422d3da","object":"chat.completion.chunk","created":1781460023,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" has the `//"},"finish_reason":null}]}
1081
699
1082− data: {"id":"chatcmpl-f22f42e21cd9a85a144db5bd","object":"chat.completion.chunk","created":1781217102,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" and `//"},"finish_reason":null}]}
700+ data: {"id":"chatcmpl-9fca6e4d5d13b4bfc422d3da","object":"chat.completion.chunk","created":1781460023,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Greeting` comment"},"finish_reason":null}]}
1083
701
1084− data: {"id":"chatcmpl-f22f42e21cd9a85a144db5bd","object":"chat.completion.chunk","created":1781217102,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Greeting` comment"},"finish_reason":null}]}
702+ data: {"id":"chatcmpl-9fca6e4d5d13b4bfc422d3da","object":"chat.completion.chunk","created":1781460023,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" and prints"},"finish_reason":null}]}
1085
703
1086− data: {"id":"chatcmpl-f22f42e21cd9a85a144db5bd","object":"chat.completion.chunk","created":1781217102,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" added above the"},"finish_reason":null}]}
704+ data: {"id":"chatcmpl-9fca6e4d5d13b4bfc422d3da","object":"chat.completion.chunk","created":1781460023,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
1087
705
1088− data: {"id":"chatcmpl-f22f42e21cd9a85a144db5bd","object":"chat.completion.chunk","created":1781217102,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `fmt.Println`"},"finish_reason":null}]}
706+ data: {"id":"chatcmpl-9fca6e4d5d13b4bfc422d3da","object":"chat.completion.chunk","created":1781460023,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Hello, Crush"},"finish_reason":null}]}
1089
707
1090− data: {"id":"chatcmpl-f22f42e21cd9a85a144db5bd","object":"chat.completion.chunk","created":1781217102,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" line."},"finish_reason":null}]}
708+ data: {"id":"chatcmpl-9fca6e4d5d13b4bfc422d3da","object":"chat.completion.chunk","created":1781460023,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"!`."},"finish_reason":null}]}
1091
709
1092− data: {"id":"chatcmpl-f22f42e21cd9a85a144db5bd","object":"chat.completion.chunk","created":1781217102,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
710+ data: {"id":"chatcmpl-9fca6e4d5d13b4bfc422d3da","object":"chat.completion.chunk","created":1781460023,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
1093
711
1094− data: {"id":"chatcmpl-f22f42e21cd9a85a144db5bd","object":"chat.completion.chunk","created":1781217102,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":71,"completion_tokens":31,"total_tokens":8187,"prompt_tokens_details":{"cached_tokens":8085},"cost":{"usd":0.00023579999999999999,"hypercredits":0.004716},"remaining":{"hypercredits":0}}}
712+ data: {"id":"chatcmpl-9fca6e4d5d13b4bfc422d3da","object":"chat.completion.chunk","created":1781460023,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":1006,"completion_tokens":27,"total_tokens":8519,"prompt_tokens_details":{"cached_tokens":7486},"cost":{"usd":0.0015271999999999998,"hypercredits":0.030543999999999995},"remaining":{"hypercredits":0}}}
1095
713
1096 data: [DONE]
714 data: [DONE]
1097
715
@@ -1100,4 +718,4 @@ interactions:
1100 - text/event-stream
718 - text/event-stream
1101 status: 200 OK
719 status: 200 OK
1102 code: 200
720 code: 200
1103− duration: 524.319871ms
721+ duration: 3.400889833s
internal/agent/testdata/TestCoderAgent/glm-5.1/parallel_tool_calls.yaml+320−254
@@ -6,9 +6,9 @@ interactions:
6 proto: HTTP/1.1
6 proto: HTTP/1.1
7 proto_major: 1
7 proto_major: 1
8 proto_minor: 1
8 proto_minor: 1
9− content_length: 34031
9+ content_length: 35742
10 host: ""
10 host: ""
11− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/parallel_tool_calls\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use glob to find all .go files and use ls to list the current directory, it is very important that you run both tool calls in parallel\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
11+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/parallel_tool_calls\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use glob to find all .go files and use ls to list the current directory, it is very important that you run both tool calls in parallel\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
12 headers:
12 headers:
13 Accept:
13 Accept:
14 - application/json
14 - application/json
@@ -25,23 +25,23 @@ interactions:
25 content_length: -1
25 content_length: -1
26 uncompressed: true
26 uncompressed: true
27 body: |+
27 body: |+
28− data: {"id":"chatcmpl-9960f93373870b33907fd711","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-a2cbde372d8cbf98e4160ed6","object":"chat.completion.chunk","created":1781460033,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
29
29
30− data: {"id":"chatcmpl-9960f93373870b33907fd711","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_15ee2684a36f8075","type":"function","index":0,"function":{"name":"glob","arguments":""}}]},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-a2cbde372d8cbf98e4160ed6","object":"chat.completion.chunk","created":1781460033,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_b14f8b5a8b94d1fe","type":"function","index":0,"function":{"name":"glob","arguments":""}}]},"finish_reason":null}]}
31
31
32− data: {"id":"chatcmpl-9960f93373870b33907fd711","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-a2cbde372d8cbf98e4160ed6","object":"chat.completion.chunk","created":1781460033,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
33
33
34− data: {"id":"chatcmpl-9960f93373870b33907fd711","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"pattern\": \"**"}}]},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-a2cbde372d8cbf98e4160ed6","object":"chat.completion.chunk","created":1781460033,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"pattern\": \"**/*."}}]},"finish_reason":null}]}
35
35
36− data: {"id":"chatcmpl-9960f93373870b33907fd711","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/*.go\"}"}}]},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-a2cbde372d8cbf98e4160ed6","object":"chat.completion.chunk","created":1781460033,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"go\"}"}}]},"finish_reason":null}]}
37
37
38− data: {"id":"chatcmpl-9960f93373870b33907fd711","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_c54329ea0631d212","type":"function","index":1,"function":{"name":"ls","arguments":""}}]},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-a2cbde372d8cbf98e4160ed6","object":"chat.completion.chunk","created":1781460033,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_8fb71f522b695163","type":"function","index":1,"function":{"name":"ls","arguments":""}}]},"finish_reason":null}]}
39
39
40− data: {"id":"chatcmpl-9960f93373870b33907fd711","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"{}"}}]},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-a2cbde372d8cbf98e4160ed6","object":"chat.completion.chunk","created":1781460033,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"{}"}}]},"finish_reason":null}]}
41
41
42− data: {"id":"chatcmpl-9960f93373870b33907fd711","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
42+ data: {"id":"chatcmpl-a2cbde372d8cbf98e4160ed6","object":"chat.completion.chunk","created":1781460033,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
43
43
44− data: {"id":"chatcmpl-9960f93373870b33907fd711","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":697,"completion_tokens":14,"total_tokens":7843,"prompt_tokens_details":{"cached_tokens":7132},"cost":{"usd":0.0010374,"hypercredits":0.020748},"remaining":{"hypercredits":0}}}
44+ data: {"id":"chatcmpl-a2cbde372d8cbf98e4160ed6","object":"chat.completion.chunk","created":1781460033,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":698,"completion_tokens":14,"total_tokens":8198,"prompt_tokens_details":{"cached_tokens":7486},"cost":{"usd":0.0010387999999999999,"hypercredits":0.020775999999999996},"remaining":{"hypercredits":0}}}
45
45
46 data: [DONE]
46 data: [DONE]
47
47
@@ -50,15 +50,15 @@ interactions:
50 - text/event-stream
50 - text/event-stream
51 status: 200 OK
51 status: 200 OK
52 code: 200
52 code: 200
53− duration: 519.493927ms
53+ duration: 467.652417ms
54- id: 1
54- id: 1
55 request:
55 request:
56 proto: HTTP/1.1
56 proto: HTTP/1.1
57 proto_major: 1
57 proto_major: 1
58 proto_minor: 1
58 proto_minor: 1
59− content_length: 34567
59+ content_length: 36278
60 host: ""
60 host: ""
61− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/parallel_tool_calls\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use glob to find all .go files and use ls to list the current directory, it is very important that you run both tool calls in parallel\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_15ee2684a36f8075\",\"function\":{\"arguments\":\"{\\\"pattern\\\": \\\"**/*.go\\\"}\",\"name\":\"glob\"},\"type\":\"function\"},{\"id\":\"call_c54329ea0631d212\",\"function\":{\"arguments\":\"{}\",\"name\":\"ls\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/parallel_tool_calls/main.go\",\"tool_call_id\":\"call_15ee2684a36f8075\",\"role\":\"tool\"},{\"content\":\"\\n- /tmp/crush-test/TestCoderAgent/glm-5.1/parallel_tool_calls/\\n - go.mod\\n - main.go\\n\",\"tool_call_id\":\"call_c54329ea0631d212\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
61+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/parallel_tool_calls\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use glob to find all .go files and use ls to list the current directory, it is very important that you run both tool calls in parallel\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_b14f8b5a8b94d1fe\",\"function\":{\"arguments\":\"{\\\"pattern\\\": \\\"**/*.go\\\"}\",\"name\":\"glob\"},\"type\":\"function\"},{\"id\":\"call_8fb71f522b695163\",\"function\":{\"arguments\":\"{}\",\"name\":\"ls\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/parallel_tool_calls/main.go\",\"tool_call_id\":\"call_b14f8b5a8b94d1fe\",\"role\":\"tool\"},{\"content\":\"\\n- /tmp/crush-test/TestCoderAgent/glm-5.1/parallel_tool_calls/\\n - go.mod\\n - main.go\\n\",\"tool_call_id\":\"call_8fb71f522b695163\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
62 headers:
62 headers:
63 Accept:
63 Accept:
64 - application/json
64 - application/json
@@ -75,31 +75,31 @@ interactions:
75 content_length: -1
75 content_length: -1
76 uncompressed: true
76 uncompressed: true
77 body: |+
77 body: |+
78− data: {"id":"chatcmpl-96c291b63e9bbf4ba3efeed6","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
78+ data: {"id":"chatcmpl-5f11249f32d839a5480436f0","object":"chat.completion.chunk","created":1781460034,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
79
79
80− data: {"id":"chatcmpl-96c291b63e9bbf4ba3efeed6","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"**"},"finish_reason":null}]}
80+ data: {"id":"chatcmpl-5f11249f32d839a5480436f0","object":"chat.completion.chunk","created":1781460034,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}]}
81
81
82− data: {"id":"chatcmpl-96c291b63e9bbf4ba3efeed6","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Glob results"},"finish_reason":null}]}
82+ data: {"id":"chatcmpl-5f11249f32d839a5480436f0","object":"chat.completion.chunk","created":1781460034,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" **Glob**:"},"finish_reason":null}]}
83
83
84− data: {"id":"chatcmpl-96c291b63e9bbf4ba3efeed6","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"**: Found "},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-5f11249f32d839a5480436f0","object":"chat.completion.chunk","created":1781460034,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Found "},"finish_reason":null}]}
85
85
86− data: {"id":"chatcmpl-96c291b63e9bbf4ba3efeed6","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"1 `.go`"},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-5f11249f32d839a5480436f0","object":"chat.completion.chunk","created":1781460034,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"1 `.go`"},"finish_reason":null}]}
87
87
88− data: {"id":"chatcmpl-96c291b63e9bbf4ba3efeed6","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" file — `main"},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-5f11249f32d839a5480436f0","object":"chat.completion.chunk","created":1781460034,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" file —"},"finish_reason":null}]}
89
89
90− data: {"id":"chatcmpl-96c291b63e9bbf4ba3efeed6","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go`\n\n**Directory"},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-5f11249f32d839a5480436f0","object":"chat.completion.chunk","created":1781460034,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `main.go`\n"},"finish_reason":null}]}
91
91
92− data: {"id":"chatcmpl-96c291b63e9bbf4ba3efeed6","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" listing**:"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-5f11249f32d839a5480436f0","object":"chat.completion.chunk","created":1781460034,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"- **LS"},"finish_reason":null}]}
93
93
94− data: {"id":"chatcmpl-96c291b63e9bbf4ba3efeed6","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Contains `go.mod"},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-5f11249f32d839a5480436f0","object":"chat.completion.chunk","created":1781460034,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"**: Directory contains `"},"finish_reason":null}]}
95
95
96− data: {"id":"chatcmpl-96c291b63e9bbf4ba3efeed6","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` and `main"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-5f11249f32d839a5480436f0","object":"chat.completion.chunk","created":1781460034,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"go.mod` and"},"finish_reason":null}]}
97
97
98− data: {"id":"chatcmpl-96c291b63e9bbf4ba3efeed6","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go`"},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-5f11249f32d839a5480436f0","object":"chat.completion.chunk","created":1781460034,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `main.go`"},"finish_reason":null}]}
99
99
100− data: {"id":"chatcmpl-96c291b63e9bbf4ba3efeed6","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
100+ data: {"id":"chatcmpl-5f11249f32d839a5480436f0","object":"chat.completion.chunk","created":1781460034,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
101
101
102− data: {"id":"chatcmpl-96c291b63e9bbf4ba3efeed6","object":"chat.completion.chunk","created":1781217110,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":769,"completion_tokens":31,"total_tokens":7931,"prompt_tokens_details":{"cached_tokens":7131},"cost":{"usd":0.0012129999999999999,"hypercredits":0.024259999999999997},"remaining":{"hypercredits":0}}}
102+ data: {"id":"chatcmpl-5f11249f32d839a5480436f0","object":"chat.completion.chunk","created":1781460034,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":58,"completion_tokens":32,"total_tokens":8287,"prompt_tokens_details":{"cached_tokens":8197},"cost":{"usd":0.000222,"hypercredits":0.0044399999999999995},"remaining":{"hypercredits":0}}}
103
103
104 data: [DONE]
104 data: [DONE]
105
105
@@ -108,7 +108,7 @@ interactions:
108 - text/event-stream
108 - text/event-stream
109 status: 200 OK
109 status: 200 OK
110 code: 200
110 code: 200
111− duration: 476.968126ms
111+ duration: 429.715625ms
112- id: 2
112- id: 2
113 request:
113 request:
114 proto: HTTP/1.1
114 proto: HTTP/1.1
@@ -133,455 +133,521 @@ interactions:
133 content_length: -1
133 content_length: -1
134 uncompressed: true
134 uncompressed: true
135 body: |+
135 body: |+
136− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
137
137
138− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" asks"},"finish_reason":null}]}
138+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
139
139
140− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
140+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
141
141
142− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
142+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" says"},"finish_reason":null}]}
143
143
144− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
145
145
146− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
147
147
148− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
149
149
150− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
151
151
152− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
152+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
153
153
154− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
154+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
155
155
156− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
156+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
157
157
158− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
159
159
160− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
161
161
162− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" use"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
163
163
164− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":\n\n"},"finish_reason":null}]}
165
165
166− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
166+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
167
167
168− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" find"},"finish_reason":null}]}
168+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
169
169
170− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" all"},"finish_reason":null}]}
170+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
171
171
172− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
172+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" find"},"finish_reason":null}]}
173
173
174− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
174+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" all"},"finish_reason":null}]}
175
175
176− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
176+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
177
177
178− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
178+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
179
179
180− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" use"},"finish_reason":null}]}
180+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
181
181
182− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ls"},"finish_reason":null}]}
182+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
183
183
184− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
184+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" use"},"finish_reason":null}]}
185
185
186− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" list"},"finish_reason":null}]}
186+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ls"},"finish_reason":null}]}
187
187
188− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
188+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
189
189
190− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
190+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" list"},"finish_reason":null}]}
191
191
192− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
192+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
193
193
194− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
194+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
195
195
196− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" it"},"finish_reason":null}]}
196+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
197
197
198− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" is"},"finish_reason":null}]}
198+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
199
199
200− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" very"},"finish_reason":null}]}
200+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" it"},"finish_reason":null}]}
201
201
202− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" important"},"finish_reason":null}]}
202+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" is"},"finish_reason":null}]}
203
203
204− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
204+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" very"},"finish_reason":null}]}
205
205
206− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" you"},"finish_reason":null}]}
206+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" important"},"finish_reason":null}]}
207
207
208− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" run"},"finish_reason":null}]}
208+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
209
209
210− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" both"},"finish_reason":null}]}
210+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" you"},"finish_reason":null}]}
211
211
212− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" tool"},"finish_reason":null}]}
212+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" run"},"finish_reason":null}]}
213
213
214− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" calls"},"finish_reason":null}]}
214+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" both"},"finish_reason":null}]}
215
215
216− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
216+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" tool"},"finish_reason":null}]}
217
217
218− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" parallel"},"finish_reason":null}]}
218+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" calls"},"finish_reason":null}]}
219
219
220− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
220+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
221
221
222− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Need"},"finish_reason":null}]}
222+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" parallel"},"finish_reason":null}]}
223
223
224− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
224+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"\n\n"},"finish_reason":null}]}
225
225
226− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
226+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
227
227
228− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
228+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
229
229
230− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
230+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
231
231
232− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
232+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" produce"},"finish_reason":null}]}
233
233
234− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
234+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
235
235
236− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
236+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
237
237
238− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Max"},"finish_reason":null}]}
238+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
239
239
240− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
240+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
241
241
242− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
242+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
243
243
244− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
244+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
245
245
246− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
246+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
247
247
248− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
248+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
249
249
250− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
250+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
251
251
252− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
252+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
253
253
254− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Possible"},"finish_reason":null}]}
254+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
255
255
256− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
256+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
257
257
258− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
258+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Summ"},"finish_reason":null}]}
259
259
260− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Parallel"},"finish_reason":null}]}
260+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ar"},"finish_reason":null}]}
261
261
262− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Glob"},"finish_reason":null}]}
262+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ize"},"finish_reason":null}]}
263
263
264− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
264+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
265
265
266− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
266+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
267
267
268− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Search"},"finish_reason":null}]}
268+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Parallel"},"finish_reason":null}]}
269
269
270− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
270+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
271
271
272− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Directory"},"finish_reason":null}]}
272+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
273
273
274− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Listing"},"finish_reason":null}]}
274+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
275
275
276− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
276+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
277
277
278− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
278+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
279
279
280− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
280+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ls"},"finish_reason":null}]}
281
281
282− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
282+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
283
283
284− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
284+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
285
285
286− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
286+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
287
287
288− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
288+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Keep"},"finish_reason":null}]}
289
289
290− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
290+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
291
291
292− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Parallel"},"finish_reason":null}]}
292+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
293
293
294− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Glob"},"finish_reason":null}]}
294+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
295
295
296− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
296+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
297
297
298− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
298+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
299
299
300− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Search"},"finish_reason":null}]}
300+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Maybe"},"finish_reason":null}]}
301
301
302− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
302+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
303
303
304− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Directory"},"finish_reason":null}]}
304+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Parallel"},"finish_reason":null}]}
305
305
306− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Listing"},"finish_reason":null}]}
306+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
307
307
308− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
308+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
309
309
310− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
310+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
311
311
312− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
312+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
313
313
314− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"44"},"finish_reason":null}]}
314+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
315
315
316− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
316+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" list"},"finish_reason":null}]}
317
317
318− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" inc"},"finish_reason":null}]}
318+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
319
319
320− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" spaces"},"finish_reason":null}]}
320+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
321
321
322− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"?"},"finish_reason":null}]}
322+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
323
323
324− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
324+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
325
325
326− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
326+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
327
327
328− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
328+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
329
329
330− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" P"},"finish_reason":null}]}
330+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
331
331
332− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
332+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Parallel"},"finish_reason":null}]}
333
333
334− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
334+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
335
335
336− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")a"},"finish_reason":null}]}
336+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
337
337
338− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
338+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
339
339
340− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"r"},"finish_reason":null}]}
340+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
341
341
342− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
342+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
343
343
344− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
344+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" list"},"finish_reason":null}]}
345
345
346− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
346+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
347
347
348− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"l"},"finish_reason":null}]}
348+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
349
349
350− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
350+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
351
351
352− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"l"},"finish_reason":null}]}
352+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
353
353
354− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
354+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
355
355
356− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
356+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
357
357
358− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
358+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" P"},"finish_reason":null}]}
359
359
360− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
360+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
361
361
362− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
362+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
363
363
364− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
364+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
365
365
366− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
366+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
367
367
368− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" G"},"finish_reason":null}]}
368+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
369
369
370− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"9"},"finish_reason":null}]}
370+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
371
371
372− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"l"},"finish_reason":null}]}
372+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
373
373
374− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"10"},"finish_reason":null}]}
374+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
375
375
376− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"o"},"finish_reason":null}]}
376+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
377
377
378− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
378+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" l"},"finish_reason":null}]}
379
379
380− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"b"},"finish_reason":null}]}
380+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
381
381
382− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
382+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" l"},"finish_reason":null}]}
383
383
384− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
384+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
385
385
386− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
386+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" e"},"finish_reason":null}]}
387
387
388− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
388+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
389
389
390− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
390+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
391
391
392− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
392+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
393
393
394− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"14"},"finish_reason":null}]}
394+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
395
395
396− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"g"},"finish_reason":null}]}
396+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
397
397
398− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"15"},"finish_reason":null}]}
398+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" g"},"finish_reason":null}]}
399
399
400− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"o"},"finish_reason":null}]}
400+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"9"},"finish_reason":null}]}
401
401
402− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"16"},"finish_reason":null}]}
402+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" l"},"finish_reason":null}]}
403
403
404− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
404+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"10"},"finish_reason":null}]}
405
405
406− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
406+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
407
407
408− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
408+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
409
409
410− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
410+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" b"},"finish_reason":null}]}
411
411
412− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" S"},"finish_reason":null}]}
412+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
413
413
414− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
414+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
415
415
416− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
416+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
417
417
418− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
418+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
419
419
420− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
420+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
421
421
422− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"20"},"finish_reason":null}]}
422+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
423
423
424− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"r"},"finish_reason":null}]}
424+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"14"},"finish_reason":null}]}
425
425
426− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21"},"finish_reason":null}]}
426+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" g"},"finish_reason":null}]}
427
427
428− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"c"},"finish_reason":null}]}
428+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"15"},"finish_reason":null}]}
429
429
430− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"22"},"finish_reason":null}]}
430+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
431
431
432− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"h"},"finish_reason":null}]}
432+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"16"},"finish_reason":null}]}
433
433
434− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
434+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
435
435
436− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
436+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
437
437
438− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
438+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
439
439
440− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
440+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
441
441
442− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
442+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" f"},"finish_reason":null}]}
443
443
444− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
444+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
445
445
446− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"25"},"finish_reason":null}]}
446+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" i"},"finish_reason":null}]}
447
447
448− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"n"},"finish_reason":null}]}
448+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
449
449
450− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"26"},"finish_reason":null}]}
450+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" l"},"finish_reason":null}]}
451
451
452− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"d"},"finish_reason":null}]}
452+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"20"},"finish_reason":null}]}
453
453
454− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
454+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" e"},"finish_reason":null}]}
455
455
456− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
456+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21"},"finish_reason":null}]}
457
457
458− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
458+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" s"},"finish_reason":null}]}
459
459
460− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
460+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"22"},"finish_reason":null}]}
461
461
462− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
462+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
463
463
464− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"D"},"finish_reason":null}]}
464+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
465
465
466− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
466+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
467
467
468− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"i"},"finish_reason":null}]}
468+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
469
469
470− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"30"},"finish_reason":null}]}
470+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
471
471
472− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"r"},"finish_reason":null}]}
472+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
473
473
474− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"31"},"finish_reason":null}]}
474+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" n"},"finish_reason":null}]}
475
475
476− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
476+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"25"},"finish_reason":null}]}
477
477
478− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"32"},"finish_reason":null}]}
478+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" d"},"finish_reason":null}]}
479
479
480− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"c"},"finish_reason":null}]}
480+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"26"},"finish_reason":null}]}
481
481
482− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33"},"finish_reason":null}]}
482+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
483
483
484− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
484+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
485
485
486− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
486+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
487
487
488− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"o"},"finish_reason":null}]}
488+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
489
489
490− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
490+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" l"},"finish_reason":null}]}
491
491
492− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"r"},"finish_reason":null}]}
492+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
493
493
494− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"36"},"finish_reason":null}]}
494+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" i"},"finish_reason":null}]}
495
495
496− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"y"},"finish_reason":null}]}
496+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
497
497
498− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"37"},"finish_reason":null}]}
498+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" s"},"finish_reason":null}]}
499
499
500− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
500+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"30"},"finish_reason":null}]}
501
501
502− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
502+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" t"},"finish_reason":null}]}
503
503
504− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
504+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"31"},"finish_reason":null}]}
505
505
506− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
506+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
507
507
508− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"L"},"finish_reason":null}]}
508+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
509
509
510− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"39"},"finish_reason":null}]}
510+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
511
511
512− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"i"},"finish_reason":null}]}
512+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"32"},"finish_reason":null}]}
513
513
514− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"40"},"finish_reason":null}]}
514+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" c"},"finish_reason":null}]}
515
515
516− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"s"},"finish_reason":null}]}
516+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33"},"finish_reason":null}]}
517
517
518− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"41"},"finish_reason":null}]}
518+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" u"},"finish_reason":null}]}
519
519
520− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
520+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
521
521
522− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"42"},"finish_reason":null}]}
522+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
523
523
524− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"i"},"finish_reason":null}]}
524+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
525
525
526− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"43"},"finish_reason":null}]}
526+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
527
527
528− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"n"},"finish_reason":null}]}
528+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"36"},"finish_reason":null}]}
529
529
530− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"44"},"finish_reason":null}]}
530+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" e"},"finish_reason":null}]}
531
531
532− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"g"},"finish_reason":null}]}
532+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"37"},"finish_reason":null}]}
533
533
534− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"45"},"finish_reason":null}]}
534+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" n"},"finish_reason":null}]}
535
535
536− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
536+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
537
537
538− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
538+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" t"},"finish_reason":null}]}
539
539
540− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
540+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"39"},"finish_reason":null}]}
541
541
542− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"45"},"finish_reason":null}]}
542+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
543
543
544− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
544+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
545
545
546− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
546+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
547
547
548− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
548+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"40"},"finish_reason":null}]}
549
549
550− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
550+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" d"},"finish_reason":null}]}
551
551
552− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
552+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"41"},"finish_reason":null}]}
553
553
554− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
554+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" i"},"finish_reason":null}]}
555
555
556− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
556+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"42"},"finish_reason":null}]}
557
557
558− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Should"},"finish_reason":null}]}
558+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
559
559
560− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
560+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"43"},"finish_reason":null}]}
561
561
562− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" okay"},"finish_reason":null}]}
562+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" e"},"finish_reason":null}]}
563
563
564− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
564+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"44"},"finish_reason":null}]}
565
565
566− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Parallel"},"finish_reason":null}]}
566+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" c"},"finish_reason":null}]}
567
567
568− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Glob"},"finish_reason":null}]}
568+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"45"},"finish_reason":null}]}
569
569
570− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" ."},"finish_reason":null}]}
570+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" t"},"finish_reason":null}]}
571
571
572− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"go"},"finish_reason":null}]}
572+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"46"},"finish_reason":null}]}
573
573
574− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Search"},"finish_reason":null}]}
574+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
575
575
576− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" and"},"finish_reason":null}]}
576+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"47"},"finish_reason":null}]}
577
577
578− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Directory"},"finish_reason":null}]}
578+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
579
579
580− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Listing"},"finish_reason":null}]}
580+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"48"},"finish_reason":null}]}
581
581
582− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
582+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" y"},"finish_reason":null}]}
583
583
584+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"49"},"finish_reason":null}]}
585+
586+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
587+
588+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
589+
590+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
591+
592+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"49"},"finish_reason":null}]}
593+
594+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
595+
596+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
597+
598+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
599+
600+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
601+
602+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
603+
604+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
605+
606+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
607+
608+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
609+
610+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
611+
612+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
613+
614+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
615+
616+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
617+
618+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
619+
620+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Return"},"finish_reason":null}]}
621+
622+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" just"},"finish_reason":null}]}
623+
624+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
625+
626+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
627+
628+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
629+
630+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Parallel"},"finish_reason":null}]}
631+
632+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" glob"},"finish_reason":null}]}
633+
634+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" ."},"finish_reason":null}]}
635+
636+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"go"},"finish_reason":null}]}
637+
638+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
639+
640+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" and"},"finish_reason":null}]}
641+
642+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" list"},"finish_reason":null}]}
643+
644+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" current"},"finish_reason":null}]}
645+
646+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" directory"},"finish_reason":null}]}
647+
648+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
649+
584− data: {"id":"chatcmpl-e974ce379d678da4b4238a06","object":"chat.completion.chunk","created":1781217110,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":174,"completion_tokens":229,"total_tokens":467,"prompt_tokens_details":{"cached_tokens":64},"cost":{"usd":0.000179932,"hypercredits":0.0035986399999999997},"remaining":{"hypercredits":0}}}
650+ data: {"id":"chatcmpl-54567c38ff390676a674987f","object":"chat.completion.chunk","created":1781460034,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":233,"completion_tokens":265,"total_tokens":498,"completion_tokens_details":{"reasoning_tokens":247},"cost":{"usd":0.00038963400000000003,"hypercredits":0.007792680000000001},"remaining":{"hypercredits":0}}}
585
651
586 data: [DONE]
652 data: [DONE]
587
653
@@ -590,4 +656,4 @@ interactions:
590 - text/event-stream
656 - text/event-stream
591 status: 200 OK
657 status: 200 OK
592 code: 200
658 code: 200
593− duration: 610.312217ms
659+ duration: 620.300959ms
internal/agent/testdata/TestCoderAgent/glm-5.1/read_a_file.yaml+131−111
@@ -25,147 +25,157 @@ interactions:
25 content_length: -1
25 content_length: -1
26 uncompressed: true
26 uncompressed: true
27 body: |+
27 body: |+
28− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
29
29
30− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" wants"},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
31
31
32− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
33
33
34− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" asks"},"finish_reason":null}]}
35
35
36− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
37
37
38− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
39
39
40− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
41
41
42− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
43
43
44− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
45
45
46− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Read"},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
47
47
48− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
49
49
50− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" go"},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
51
51
52− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" mod"},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
53
53
54− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
55
55
56− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
56+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":\n\n"},"finish_reason":null}]}
57
57
58− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" should"},"finish_reason":null}]}
58+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Read"},"finish_reason":null}]}
59
59
60− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summarize"},"finish_reason":null}]}
60+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
61
61
62− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
62+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" go"},"finish_reason":null}]}
63
63
64− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" within"},"finish_reason":null}]}
64+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" mod"},"finish_reason":null}]}
65
65
66− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
66+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\n"},"finish_reason":null}]}
67
67
68− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
68+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c"},"finish_reason":null}]}
69
69
70− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"think"},"finish_reason":null}]}
71
71
72− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
72+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\u003e"},"finish_reason":null}]}
73
73
74− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
74+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"\n\n"},"finish_reason":null}]}
75
75
76− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
76+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
77
77
78− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
78+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
79
79
80− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
80+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
81
81
82− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
82+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" produce"},"finish_reason":null}]}
83
83
84− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"/"},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
85
85
86− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"col"},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
87
87
88− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summar"},"finish_reason":null}]}
89
89
90− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"izing"},"finish_reason":null}]}
91
91
92− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Should"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
93
93
94− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
95
95
96− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" maybe"},"finish_reason":null}]}
97
97
98− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
99
99
100− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
100+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Reading"},"finish_reason":null}]}
101
101
102− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
102+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
103
103
104− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
104+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" go"},"finish_reason":null}]}
105
105
106− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".mod"},"finish_reason":null}]}
107
107
108− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
109
109
110− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
111
111
112− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" could"},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Under"},"finish_reason":null}]}
113
113
114− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
115
115
116− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
117
117
118− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Reading"},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
119
119
120− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
121
121
122− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
123
123
124− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Mod"},"finish_reason":null}]}
124+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
125
125
126− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" File"},"finish_reason":null}]}
126+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
127
127
128− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
128+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
129
129
130− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
130+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
131
131
132− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
132+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
133
133
134− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
134+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
135
135
136− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Under"},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
137
137
138− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
138+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
139
139
140− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
140+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
141
141
142− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
142+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" output"},"finish_reason":null}]}
143
143
144− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
145
145
146− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Return"},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Read"},"finish_reason":null}]}
147
147
148− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" as"},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
149
149
150− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" single"},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" go"},"finish_reason":null}]}
151
151
152− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
152+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".mod"},"finish_reason":null}]}
153
153
154− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
154+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
155
155
156− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Reading"},"finish_reason":null}]}
156+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
157
157
158− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
159
159
160− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Go"},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" within"},"finish_reason":null}]}
161
161
162− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Mod"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" guidelines"},"finish_reason":null}]}
163
163
164− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" File"},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
165
165
166− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
166+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Read"},"finish_reason":null}]}
167
167
168+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}]}
169+
170+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" go"},"finish_reason":null}]}
171+
172+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".mod"},"finish_reason":null}]}
173+
174+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" file"},"finish_reason":null}]}
175+
176+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
177+
168− data: {"id":"chatcmpl-76dd1575c576cf51c7757f7a","object":"chat.completion.chunk","created":1781217081,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":149,"completion_tokens":75,"total_tokens":288,"prompt_tokens_details":{"cached_tokens":64},"cost":{"usd":0.0001,"hypercredits":0.002},"remaining":{"hypercredits":0}}}
178+ data: {"id":"chatcmpl-30bd5d5312a6f670447f8020","object":"chat.completion.chunk","created":1781459117,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":208,"completion_tokens":83,"total_tokens":291,"completion_tokens_details":{"reasoning_tokens":69},"cost":{"usd":0.00014038400000000002,"hypercredits":0.0028076800000000003},"remaining":{"hypercredits":0}}}
169
179
170 data: [DONE]
180 data: [DONE]
171
181
@@ -174,15 +184,15 @@ interactions:
174 - text/event-stream
184 - text/event-stream
175 status: 200 OK
185 status: 200 OK
176 code: 200
186 code: 200
177− duration: 494.152671ms
187+ duration: 596.706ms
178- id: 1
188- id: 1
179 request:
189 request:
180 proto: HTTP/1.1
190 proto: HTTP/1.1
181 proto_major: 1
191 proto_major: 1
182 proto_minor: 1
192 proto_minor: 1
183− content_length: 33904
193+ content_length: 35615
184 host: ""
194 host: ""
185− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"Read the go mod\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
195+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"Read the go mod\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
186 headers:
196 headers:
187 Accept:
197 Accept:
188 - application/json
198 - application/json
@@ -199,21 +209,21 @@ interactions:
199 content_length: -1
209 content_length: -1
200 uncompressed: true
210 uncompressed: true
201 body: |+
211 body: |+
202− data: {"id":"chatcmpl-ff1ff34fd38246e09f142350","object":"chat.completion.chunk","created":1781217083,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
212+ data: {"id":"chatcmpl-4cb36be94d45fa40589e099c","object":"chat.completion.chunk","created":1781459246,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
203
213
204− data: {"id":"chatcmpl-ff1ff34fd38246e09f142350","object":"chat.completion.chunk","created":1781217083,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_5e513f597650532f","type":"function","index":0,"function":{"name":"glob","arguments":""}}]},"finish_reason":null}]}
214+ data: {"id":"chatcmpl-4cb36be94d45fa40589e099c","object":"chat.completion.chunk","created":1781459246,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_67bbc7ab3a1721a4","type":"function","index":0,"function":{"name":"glob","arguments":""}}]},"finish_reason":null}]}
205
215
206− data: {"id":"chatcmpl-ff1ff34fd38246e09f142350","object":"chat.completion.chunk","created":1781217083,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"pattern\": "}}]},"finish_reason":null}]}
216+ data: {"id":"chatcmpl-4cb36be94d45fa40589e099c","object":"chat.completion.chunk","created":1781459246,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
207
217
208− data: {"id":"chatcmpl-ff1ff34fd38246e09f142350","object":"chat.completion.chunk","created":1781217083,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"go"}}]},"finish_reason":null}]}
218+ data: {"id":"chatcmpl-4cb36be94d45fa40589e099c","object":"chat.completion.chunk","created":1781459246,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"pattern\": \"go"}}]},"finish_reason":null}]}
209
219
210− data: {"id":"chatcmpl-ff1ff34fd38246e09f142350","object":"chat.completion.chunk","created":1781217083,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".mod"}}]},"finish_reason":null}]}
220+ data: {"id":"chatcmpl-4cb36be94d45fa40589e099c","object":"chat.completion.chunk","created":1781459246,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".mod"}}]},"finish_reason":null}]}
211
221
212− data: {"id":"chatcmpl-ff1ff34fd38246e09f142350","object":"chat.completion.chunk","created":1781217083,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"}"}}]},"finish_reason":null}]}
222+ data: {"id":"chatcmpl-4cb36be94d45fa40589e099c","object":"chat.completion.chunk","created":1781459246,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"}"}}]},"finish_reason":null}]}
213
223
214− data: {"id":"chatcmpl-ff1ff34fd38246e09f142350","object":"chat.completion.chunk","created":1781217083,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
224+ data: {"id":"chatcmpl-4cb36be94d45fa40589e099c","object":"chat.completion.chunk","created":1781459246,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
215
225
216− data: {"id":"chatcmpl-ff1ff34fd38246e09f142350","object":"chat.completion.chunk","created":1781217083,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":672,"completion_tokens":10,"total_tokens":7813,"prompt_tokens_details":{"cached_tokens":7131},"cost":{"usd":0.0009848,"hypercredits":0.019696},"remaining":{"hypercredits":0}}}
226+ data: {"id":"chatcmpl-4cb36be94d45fa40589e099c","object":"chat.completion.chunk","created":1781459246,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":8115,"completion_tokens":10,"total_tokens":8168,"prompt_tokens_details":{"cached_tokens":43},"cost":{"usd":0.011405,"hypercredits":0.2281},"remaining":{"hypercredits":0}}}
217
227
218 data: [DONE]
228 data: [DONE]
219
229
@@ -222,15 +232,15 @@ interactions:
222 - text/event-stream
232 - text/event-stream
223 status: 200 OK
233 status: 200 OK
224 code: 200
234 code: 200
225− duration: 2.494045863s
235+ duration: 2m8.998767667s
226- id: 2
236- id: 2
227 request:
237 request:
228 proto: HTTP/1.1
238 proto: HTTP/1.1
229 proto_major: 1
239 proto_major: 1
230 proto_minor: 1
240 proto_minor: 1
231− content_length: 34181
241+ content_length: 35892
232 host: ""
242 host: ""
233− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"Read the go mod\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_5e513f597650532f\",\"function\":{\"arguments\":\"{\\\"pattern\\\": \\\"go.mod\\\"}\",\"name\":\"glob\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file/go.mod\",\"tool_call_id\":\"call_5e513f597650532f\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
243+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"Read the go mod\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_67bbc7ab3a1721a4\",\"function\":{\"arguments\":\"{\\\"pattern\\\": \\\"go.mod\\\"}\",\"name\":\"glob\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file/go.mod\",\"tool_call_id\":\"call_67bbc7ab3a1721a4\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
234 headers:
244 headers:
235 Accept:
245 Accept:
236 - application/json
246 - application/json
@@ -247,29 +257,33 @@ interactions:
247 content_length: -1
257 content_length: -1
248 uncompressed: true
258 uncompressed: true
249 body: |+
259 body: |+
250− data: {"id":"chatcmpl-ea31551fa1f2fda5b7c1e64a","object":"chat.completion.chunk","created":1781217084,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
260+ data: {"id":"chatcmpl-ca6e2b5b8f45db72f3194dcd","object":"chat.completion.chunk","created":1781459354,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
251
261
252− data: {"id":"chatcmpl-ea31551fa1f2fda5b7c1e64a","object":"chat.completion.chunk","created":1781217084,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_256122d426f91293","type":"function","index":0,"function":{"name":"view","arguments":""}}]},"finish_reason":null}]}
262+ data: {"id":"chatcmpl-ca6e2b5b8f45db72f3194dcd","object":"chat.completion.chunk","created":1781459354,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_542f775eebfbc3fa","type":"function","index":0,"function":{"name":"view","arguments":""}}]},"finish_reason":null}]}
253
263
254− data: {"id":"chatcmpl-ea31551fa1f2fda5b7c1e64a","object":"chat.completion.chunk","created":1781217084,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
264+ data: {"id":"chatcmpl-ca6e2b5b8f45db72f3194dcd","object":"chat.completion.chunk","created":1781459354,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
255
265
256− data: {"id":"chatcmpl-ea31551fa1f2fda5b7c1e64a","object":"chat.completion.chunk","created":1781217084,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": \"/tmp/c"}}]},"finish_reason":null}]}
266+ data: {"id":"chatcmpl-ca6e2b5b8f45db72f3194dcd","object":"chat.completion.chunk","created":1781459354,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": "}}]},"finish_reason":null}]}
257
267
258− data: {"id":"chatcmpl-ea31551fa1f2fda5b7c1e64a","object":"chat.completion.chunk","created":1781217084,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush-test/Test"}}]},"finish_reason":null}]}
268+ data: {"id":"chatcmpl-ca6e2b5b8f45db72f3194dcd","object":"chat.completion.chunk","created":1781459354,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/tmp/c"}}]},"finish_reason":null}]}
259
269
260− data: {"id":"chatcmpl-ea31551fa1f2fda5b7c1e64a","object":"chat.completion.chunk","created":1781217084,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"CoderAgent/g"}}]},"finish_reason":null}]}
270+ data: {"id":"chatcmpl-ca6e2b5b8f45db72f3194dcd","object":"chat.completion.chunk","created":1781459354,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush-test"}}]},"finish_reason":null}]}
261
271
262− data: {"id":"chatcmpl-ea31551fa1f2fda5b7c1e64a","object":"chat.completion.chunk","created":1781217084,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"lm-5."}}]},"finish_reason":null}]}
272+ data: {"id":"chatcmpl-ca6e2b5b8f45db72f3194dcd","object":"chat.completion.chunk","created":1781459354,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/TestCoder"}}]},"finish_reason":null}]}
263
273
264− data: {"id":"chatcmpl-ea31551fa1f2fda5b7c1e64a","object":"chat.completion.chunk","created":1781217084,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"1/read_a"}}]},"finish_reason":null}]}
274+ data: {"id":"chatcmpl-ca6e2b5b8f45db72f3194dcd","object":"chat.completion.chunk","created":1781459354,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Agent/glm-"}}]},"finish_reason":null}]}
265
275
266− data: {"id":"chatcmpl-ea31551fa1f2fda5b7c1e64a","object":"chat.completion.chunk","created":1781217084,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_file/go.mod"}}]},"finish_reason":null}]}
276+ data: {"id":"chatcmpl-ca6e2b5b8f45db72f3194dcd","object":"chat.completion.chunk","created":1781459354,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"5.1/read"}}]},"finish_reason":null}]}
267
277
268− data: {"id":"chatcmpl-ea31551fa1f2fda5b7c1e64a","object":"chat.completion.chunk","created":1781217084,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"}"}}]},"finish_reason":null}]}
278+ data: {"id":"chatcmpl-ca6e2b5b8f45db72f3194dcd","object":"chat.completion.chunk","created":1781459354,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_a_file/go"}}]},"finish_reason":null}]}
269
279
270− data: {"id":"chatcmpl-ea31551fa1f2fda5b7c1e64a","object":"chat.completion.chunk","created":1781217084,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
280+ data: {"id":"chatcmpl-ca6e2b5b8f45db72f3194dcd","object":"chat.completion.chunk","created":1781459354,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".mod\""}}]},"finish_reason":null}]}
271
281
272− data: {"id":"chatcmpl-ea31551fa1f2fda5b7c1e64a","object":"chat.completion.chunk","created":1781217084,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7786,"completion_tokens":27,"total_tokens":7863,"prompt_tokens_details":{"cached_tokens":50},"cost":{"usd":0.0110192,"hypercredits":0.220384},"remaining":{"hypercredits":0}}}
282+ data: {"id":"chatcmpl-ca6e2b5b8f45db72f3194dcd","object":"chat.completion.chunk","created":1781459354,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
283+
284+ data: {"id":"chatcmpl-ca6e2b5b8f45db72f3194dcd","object":"chat.completion.chunk","created":1781459354,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
285+
286+ data: {"id":"chatcmpl-ca6e2b5b8f45db72f3194dcd","object":"chat.completion.chunk","created":1781459354,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":8148,"completion_tokens":27,"total_tokens":8218,"prompt_tokens_details":{"cached_tokens":43},"cost":{"usd":0.011526,"hypercredits":0.23051999999999997},"remaining":{"hypercredits":0}}}
273
287
274 data: [DONE]
288 data: [DONE]
275
289
@@ -278,15 +292,15 @@ interactions:
278 - text/event-stream
292 - text/event-stream
279 status: 200 OK
293 status: 200 OK
280 code: 200
294 code: 200
281− duration: 907.682592ms
295+ duration: 1m48.264938625s
282- id: 3
296- id: 3
283 request:
297 request:
284 proto: HTTP/1.1
298 proto: HTTP/1.1
285 proto_major: 1
299 proto_major: 1
286 proto_minor: 1
300 proto_minor: 1
287− content_length: 34544
301+ content_length: 36255
288 host: ""
302 host: ""
289− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"Read the go mod\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_5e513f597650532f\",\"function\":{\"arguments\":\"{\\\"pattern\\\": \\\"go.mod\\\"}\",\"name\":\"glob\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file/go.mod\",\"tool_call_id\":\"call_5e513f597650532f\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_256122d426f91293\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file/go.mod\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<file>\\n 1|module example.com/testproject\\n 2|\\n 3|go 1.23\\n 4|\\n</file>\\n\",\"tool_call_id\":\"call_256122d426f91293\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
303+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"Read the go mod\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_67bbc7ab3a1721a4\",\"function\":{\"arguments\":\"{\\\"pattern\\\": \\\"go.mod\\\"}\",\"name\":\"glob\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file/go.mod\",\"tool_call_id\":\"call_67bbc7ab3a1721a4\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_542f775eebfbc3fa\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file/go.mod\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<file>\\n 1|module example.com/testproject\\n 2|\\n 3|go 1.23\\n 4|\\n</file>\\n\",\"tool_call_id\":\"call_542f775eebfbc3fa\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
290 headers:
304 headers:
291 Accept:
305 Accept:
292 - application/json
306 - application/json
@@ -303,25 +317,31 @@ interactions:
303 content_length: -1
317 content_length: -1
304 uncompressed: true
318 uncompressed: true
305 body: |+
319 body: |+
306− data: {"id":"chatcmpl-ccab26c19fb2b244f4e7e00a","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
320+ data: {"id":"chatcmpl-294b65f34d8724feed03ec36","object":"chat.completion.chunk","created":1781459477,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
321+
322+ data: {"id":"chatcmpl-294b65f34d8724feed03ec36","object":"chat.completion.chunk","created":1781459477,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"The"},"finish_reason":null}]}
323+
324+ data: {"id":"chatcmpl-294b65f34d8724feed03ec36","object":"chat.completion.chunk","created":1781459477,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
325+
326+ data: {"id":"chatcmpl-294b65f34d8724feed03ec36","object":"chat.completion.chunk","created":1781459477,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"go.mod` defines"},"finish_reason":null}]}
307
327
308− data: {"id":"chatcmpl-ccab26c19fb2b244f4e7e00a","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Module"},"finish_reason":null}]}
328+ data: {"id":"chatcmpl-294b65f34d8724feed03ec36","object":"chat.completion.chunk","created":1781459477,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":\n\n- **Module"},"finish_reason":null}]}
309
329
310− data: {"id":"chatcmpl-ccab26c19fb2b244f4e7e00a","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
330+ data: {"id":"chatcmpl-294b65f34d8724feed03ec36","object":"chat.completion.chunk","created":1781459477,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"**: `example"},"finish_reason":null}]}
311
331
312− data: {"id":"chatcmpl-ccab26c19fb2b244f4e7e00a","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"example.com/test"},"finish_reason":null}]}
332+ data: {"id":"chatcmpl-294b65f34d8724feed03ec36","object":"chat.completion.chunk","created":1781459477,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".com/test"},"finish_reason":null}]}
313
333
314− data: {"id":"chatcmpl-ccab26c19fb2b244f4e7e00a","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"project`, Go"},"finish_reason":null}]}
334+ data: {"id":"chatcmpl-294b65f34d8724feed03ec36","object":"chat.completion.chunk","created":1781459477,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"project`\n- **"},"finish_reason":null}]}
315
335
316− data: {"id":"chatcmpl-ccab26c19fb2b244f4e7e00a","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" 1.23"},"finish_reason":null}]}
336+ data: {"id":"chatcmpl-294b65f34d8724feed03ec36","object":"chat.completion.chunk","created":1781459477,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Go version**: "},"finish_reason":null}]}
317
337
318− data: {"id":"chatcmpl-ccab26c19fb2b244f4e7e00a","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":","},"finish_reason":null}]}
338+ data: {"id":"chatcmpl-294b65f34d8724feed03ec36","object":"chat.completion.chunk","created":1781459477,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"1.23\n"},"finish_reason":null}]}
319
339
320− data: {"id":"chatcmpl-ccab26c19fb2b244f4e7e00a","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" no dependencies."},"finish_reason":null}]}
340+ data: {"id":"chatcmpl-294b65f34d8724feed03ec36","object":"chat.completion.chunk","created":1781459477,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"- No dependencies"},"finish_reason":null}]}
321
341
322− data: {"id":"chatcmpl-ccab26c19fb2b244f4e7e00a","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
342+ data: {"id":"chatcmpl-294b65f34d8724feed03ec36","object":"chat.completion.chunk","created":1781459477,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
323
343
324− data: {"id":"chatcmpl-ccab26c19fb2b244f4e7e00a","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":40,"completion_tokens":16,"total_tokens":7918,"prompt_tokens_details":{"cached_tokens":7862},"cost":{"usd":0.0001264,"hypercredits":0.002528},"remaining":{"hypercredits":0}}}
344+ data: {"id":"chatcmpl-294b65f34d8724feed03ec36","object":"chat.completion.chunk","created":1781459477,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":8214,"completion_tokens":30,"total_tokens":8287,"prompt_tokens_details":{"cached_tokens":43},"cost":{"usd":0.011631599999999999,"hypercredits":0.23263199999999998},"remaining":{"hypercredits":0}}}
325
345
326 data: [DONE]
346 data: [DONE]
327
347
@@ -330,4 +350,4 @@ interactions:
330 - text/event-stream
350 - text/event-stream
331 status: 200 OK
351 status: 200 OK
332 code: 200
352 code: 200
333− duration: 554.592745ms
353+ duration: 2m3.067505667s
internal/agent/testdata/TestCoderAgent/glm-5.1/simple_test.yaml+86−70
@@ -25,119 +25,139 @@ interactions:
25 content_length: -1
25 content_length: -1
26 uncompressed: true
26 uncompressed: true
27 body: |+
27 body: |+
28− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
29
29
30− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
31
31
32− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" wants"},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
33
33
34− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" wants"},"finish_reason":null}]}
35
35
36− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
37
37
38− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
39
39
40− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
41
41
42− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
43
43
44− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
45
45
46− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
47
47
48− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
49
49
50− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
51
51
52− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" According"},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
53
53
54− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
55
55
56− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" rules"},"finish_reason":null}]}
56+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" must"},"finish_reason":null}]}
57
57
58− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
58+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
59
59
60− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
60+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
61
61
62− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
62+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
63
63
64− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
64+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
65
65
66− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
66+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
67
67
68− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
68+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"),"},"finish_reason":null}]}
69
69
70− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"),"},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" max"},"finish_reason":null}]}
71
71
72− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
72+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
73
73
74− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
74+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
75
75
76− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
76+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
77
77
78− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
78+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
79
79
80− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
80+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
81
81
82− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
82+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
83
83
84− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
85
85
86− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
87
87
88− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
89
89
90− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
91
91
92− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" colon"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
93
93
94− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
95
95
96− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
97
97
98− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" should"},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
99
99
100− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
100+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" just"},"finish_reason":null}]}
101
101
102− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
102+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
103
103
104− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summary"},"finish_reason":null}]}
104+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Greeting"},"finish_reason":null}]}
105
105
106− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
107
107
108− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" maybe"},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Or"},"finish_reason":null}]}
109
109
110− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
111
111
112− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Greeting"},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
113
113
114− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
115
115
116− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Should"},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Maybe"},"finish_reason":null}]}
117
117
118− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
119
119
120− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Simple"},"finish_reason":null}]}
121
121
122− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Greeting"},"finish_reason":null}]}
123
123
124− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
124+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
125
125
126− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
126+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Keep"},"finish_reason":null}]}
127
127
128− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" output"},"finish_reason":null}]}
128+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
129
129
130− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
130+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
131
131
132− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Greeting"},"finish_reason":null}]}
132+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
133
133
134− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
134+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
135
135
136− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Greeting"},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
137
137
138− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
138+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
139
139
140− data: {"id":"chatcmpl-3e6fe56c2de1612c5c8b91bc","object":"chat.completion.chunk","created":1781217080,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":146,"completion_tokens":61,"total_tokens":271,"prompt_tokens_details":{"cached_tokens":64},"cost":{"usd":0.0001,"hypercredits":0.002},"remaining":{"hypercredits":0}}}
140+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
141+
142+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
143+
144+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" answer"},"finish_reason":null}]}
145+
146+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
147+
148+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Simple"},"finish_reason":null}]}
149+
150+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Greeting"},"finish_reason":null}]}
151+
152+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
153+
154+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Simple"},"finish_reason":null}]}
155+
156+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Greeting"},"finish_reason":null}]}
157+
158+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
159+
160+ data: {"id":"chatcmpl-3a7ec3b016717d41168965d0","object":"chat.completion.chunk","created":1781459008,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":205,"completion_tokens":74,"total_tokens":279,"completion_tokens_details":{"reasoning_tokens":63},"cost":{"usd":0.00012964999999999998,"hypercredits":0.0025929999999999994},"remaining":{"hypercredits":0}}}
141
161
142 data: [DONE]
162 data: [DONE]
143
163
@@ -146,15 +166,15 @@ interactions:
146 - text/event-stream
166 - text/event-stream
147 status: 200 OK
167 status: 200 OK
148 code: 200
168 code: 200
149− duration: 852.909234ms
169+ duration: 928.417708ms
150- id: 1
170- id: 1
151 request:
171 request:
152 proto: HTTP/1.1
172 proto: HTTP/1.1
153 proto_major: 1
173 proto_major: 1
154 proto_minor: 1
174 proto_minor: 1
155− content_length: 33894
175+ content_length: 35605
156 host: ""
176 host: ""
157− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/simple_test\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"Hello\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
177+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/simple_test\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"Hello\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
158 headers:
178 headers:
159 Accept:
179 Accept:
160 - application/json
180 - application/json
@@ -171,19 +191,15 @@ interactions:
171 content_length: -1
191 content_length: -1
172 uncompressed: true
192 uncompressed: true
173 body: |+
193 body: |+
174− data: {"id":"chatcmpl-39ebd519f76ddc82aa56ce91","object":"chat.completion.chunk","created":1781217080,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
194+ data: {"id":"chatcmpl-6bc81966146160a6d27382d9","object":"chat.completion.chunk","created":1781459117,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
175−
176− data: {"id":"chatcmpl-39ebd519f76ddc82aa56ce91","object":"chat.completion.chunk","created":1781217080,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}
177−
178− data: {"id":"chatcmpl-39ebd519f76ddc82aa56ce91","object":"chat.completion.chunk","created":1781217080,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"! How"},"finish_reason":null}]}
179
195
180− data: {"id":"chatcmpl-39ebd519f76ddc82aa56ce91","object":"chat.completion.chunk","created":1781217080,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" can I help you"},"finish_reason":null}]}
196+ data: {"id":"chatcmpl-6bc81966146160a6d27382d9","object":"chat.completion.chunk","created":1781459117,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}
181
197
182− data: {"id":"chatcmpl-39ebd519f76ddc82aa56ce91","object":"chat.completion.chunk","created":1781217080,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" today?"},"finish_reason":null}]}
198+ data: {"id":"chatcmpl-6bc81966146160a6d27382d9","object":"chat.completion.chunk","created":1781459117,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}
183
199
184− data: {"id":"chatcmpl-39ebd519f76ddc82aa56ce91","object":"chat.completion.chunk","created":1781217080,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
200+ data: {"id":"chatcmpl-6bc81966146160a6d27382d9","object":"chat.completion.chunk","created":1781459117,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
185
201
186− data: {"id":"chatcmpl-39ebd519f76ddc82aa56ce91","object":"chat.completion.chunk","created":1781217080,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7749,"completion_tokens":9,"total_tokens":7808,"prompt_tokens_details":{"cached_tokens":50},"cost":{"usd":0.010888199999999999,"hypercredits":0.21776399999999996},"remaining":{"hypercredits":0}}}
202+ data: {"id":"chatcmpl-6bc81966146160a6d27382d9","object":"chat.completion.chunk","created":1781459117,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":8111,"completion_tokens":2,"total_tokens":8156,"prompt_tokens_details":{"cached_tokens":43},"cost":{"usd":0.0113642,"hypercredits":0.22728399999999999},"remaining":{"hypercredits":0}}}
187
203
188 data: [DONE]
204 data: [DONE]
189
205
@@ -192,4 +208,4 @@ interactions:
192 - text/event-stream
208 - text/event-stream
193 status: 200 OK
209 status: 200 OK
194 code: 200
210 code: 200
195− duration: 979.495375ms
211+ duration: 1m49.574747417s
internal/agent/testdata/TestCoderAgent/glm-5.1/sourcegraph_tool.yaml+538−108
@@ -25,57 +25,479 @@ interactions:
25 content_length: -1
25 content_length: -1
26 uncompressed: true
26 uncompressed: true
27 body: |+
27 body: |+
28− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
29
29
30− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
31
31
32− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need to generate a short title summarizing the user's message. The user"},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
33
33
34− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" says: \"Generate a concise title for the following content:\n\nuse"},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
35
35
36− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" sourcegraph to search for 'func main' in Go repositories\". Title should"},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
37
37
38− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be in same language (English),"},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
39
39
40− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under 50 characters, one line, no quotes or"},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
41
41
42− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" colons.\n\nPossible title: \"Using Source"},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
43
43
44− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"graph to Find func main in"},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
45
45
46− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go Repos\". Count characters: let's count.\n\n"},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
47
47
48− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"Using Sourcegraph to Find func main in Go Repos\"\n\nCharacters"},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
49
49
50− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count including spaces: Let's count"},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
51
51
52− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":": Using(6)"},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
53
53
54− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" + space1=7"},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":\n\n"},"finish_reason":null}]}
55
55
56− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":", Sourcegraph(11) =\u003e total 18, space"},"finish_reason":null}]}
56+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
57
57
58− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"=19, to(2)="},"finish_reason":null}]}
58+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" source"},"finish_reason":null}]}
59
59
60− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21, space=22, Find(4)="},"finish_reason":null}]}
60+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"graph"},"finish_reason":null}]}
61
61
62− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"26, space=27, func(4)=31, space=32, main(4)=36"},"finish_reason":null}]}
62+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
63
63
64− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":", space=37, in(2)=39, space=40, Go(2)=42,"},"finish_reason":null}]}
64+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" search"},"finish_reason":null}]}
65
65
66− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space=43, Repos(5)=48. That's 48"},"finish_reason":null}]}
66+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
67
67
68− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters, within limit (\u003c50). No quotes"},"finish_reason":null}]}
68+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
69
69
70− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or colon. Good.\n\nReturn that as title"},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"func"},"finish_reason":null}]}
71
71
72− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
72+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
73
73
74− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Using Sourcegraph to Find func main in Go Repos"},"finish_reason":null}]}
74+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
75
75
76− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
76+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
77
77
78− data: {"id":"chatcmpl-4819bf28abef2ac06b8add26","object":"chat.completion.chunk","created":1781217103,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":89,"completion_tokens":241,"total_tokens":458,"prompt_tokens_details":{"cached_tokens":128},"completion_tokens_details":{"reasoning_tokens":220},"cost":{"usd":0.000316236,"hypercredits":0.00632472},"remaining":{"hypercredits":0}}}
78+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
79+
80+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" repositories"},"finish_reason":null}]}
81+
82+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"\n\n"},"finish_reason":null}]}
83+
84+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
85+
86+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
87+
88+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
89+
90+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
91+
92+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
93+
94+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
95+
96+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
97+
98+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
99+
100+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
101+
102+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
103+
104+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
105+
106+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
107+
108+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
109+
110+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
111+
112+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Summ"},"finish_reason":null}]}
113+
114+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ar"},"finish_reason":null}]}
115+
116+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ize"},"finish_reason":null}]}
117+
118+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
119+
120+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
121+
122+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Search"},"finish_reason":null}]}
123+
124+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
125+
126+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" func"},"finish_reason":null}]}
127+
128+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
129+
130+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
131+
132+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
133+
134+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" repos"},"finish_reason":null}]}
135+
136+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
137+
138+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Source"},"finish_reason":null}]}
139+
140+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"graph"},"finish_reason":null}]}
141+
142+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
143+
144+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Keep"},"finish_reason":null}]}
145+
146+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
147+
148+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
149+
150+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
151+
152+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
153+
154+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
155+
156+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That"},"finish_reason":null}]}
157+
158+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" is"},"finish_reason":null}]}
159+
160+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
161+
162+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"45"},"finish_reason":null}]}
163+
164+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
165+
166+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" maybe"},"finish_reason":null}]}
167+
168+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
169+
170+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
171+
172+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
173+
174+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
175+
176+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
177+
178+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Search"},"finish_reason":null}]}
179+
180+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
181+
182+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" func"},"finish_reason":null}]}
183+
184+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
185+
186+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
187+
188+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
189+
190+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" repos"},"finish_reason":null}]}
191+
192+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
193+
194+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Source"},"finish_reason":null}]}
195+
196+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"graph"},"finish_reason":null}]}
197+
198+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
199+
200+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
201+
202+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
203+
204+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
205+
206+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" S"},"finish_reason":null}]}
207+
208+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
209+
210+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
211+
212+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
213+
214+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" e"},"finish_reason":null}]}
215+
216+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
217+
218+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
219+
220+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
221+
222+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
223+
224+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
225+
226+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" c"},"finish_reason":null}]}
227+
228+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
229+
230+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" h"},"finish_reason":null}]}
231+
232+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
233+
234+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
235+
236+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
237+
238+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
239+
240+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
241+
242+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" f"},"finish_reason":null}]}
243+
244+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
245+
246+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
247+
248+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"9"},"finish_reason":null}]}
249+
250+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
251+
252+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"10"},"finish_reason":null}]}
253+
254+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
255+
256+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
257+
258+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
259+
260+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
261+
262+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" f"},"finish_reason":null}]}
263+
264+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
265+
266+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" u"},"finish_reason":null}]}
267+
268+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
269+
270+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" n"},"finish_reason":null}]}
271+
272+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"14"},"finish_reason":null}]}
273+
274+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" c"},"finish_reason":null}]}
275+
276+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"15"},"finish_reason":null}]}
277+
278+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
279+
280+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
281+
282+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"16"},"finish_reason":null}]}
283+
284+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
285+
286+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" m"},"finish_reason":null}]}
287+
288+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
289+
290+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
291+
292+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
293+
294+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" i"},"finish_reason":null}]}
295+
296+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
297+
298+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" n"},"finish_reason":null}]}
299+
300+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"20"},"finish_reason":null}]}
301+
302+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
303+
304+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
305+
306+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21"},"finish_reason":null}]}
307+
308+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
309+
310+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" i"},"finish_reason":null}]}
311+
312+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"22"},"finish_reason":null}]}
313+
314+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" n"},"finish_reason":null}]}
315+
316+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
317+
318+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
319+
320+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
321+
322+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
323+
324+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
325+
326+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" G"},"finish_reason":null}]}
327+
328+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"25"},"finish_reason":null}]}
329+
330+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
331+
332+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"26"},"finish_reason":null}]}
333+
334+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
335+
336+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
337+
338+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
339+
340+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
341+
342+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
343+
344+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
345+
346+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" e"},"finish_reason":null}]}
347+
348+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
349+
350+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" p"},"finish_reason":null}]}
351+
352+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"30"},"finish_reason":null}]}
353+
354+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
355+
356+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"31"},"finish_reason":null}]}
357+
358+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" s"},"finish_reason":null}]}
359+
360+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"32"},"finish_reason":null}]}
361+
362+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
363+
364+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
365+
366+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33"},"finish_reason":null}]}
367+
368+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
369+
370+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" w"},"finish_reason":null}]}
371+
372+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
373+
374+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" i"},"finish_reason":null}]}
375+
376+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
377+
378+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" t"},"finish_reason":null}]}
379+
380+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"36"},"finish_reason":null}]}
381+
382+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" h"},"finish_reason":null}]}
383+
384+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"37"},"finish_reason":null}]}
385+
386+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
387+
388+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
389+
390+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
391+
392+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
393+
394+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" S"},"finish_reason":null}]}
395+
396+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"39"},"finish_reason":null}]}
397+
398+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
399+
400+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"40"},"finish_reason":null}]}
401+
402+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" u"},"finish_reason":null}]}
403+
404+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"41"},"finish_reason":null}]}
405+
406+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
407+
408+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"42"},"finish_reason":null}]}
409+
410+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" c"},"finish_reason":null}]}
411+
412+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"43"},"finish_reason":null}]}
413+
414+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" e"},"finish_reason":null}]}
415+
416+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"44"},"finish_reason":null}]}
417+
418+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" g"},"finish_reason":null}]}
419+
420+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"45"},"finish_reason":null}]}
421+
422+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
423+
424+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"46"},"finish_reason":null}]}
425+
426+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
427+
428+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"47"},"finish_reason":null}]}
429+
430+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" p"},"finish_reason":null}]}
431+
432+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"48"},"finish_reason":null}]}
433+
434+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" h"},"finish_reason":null}]}
435+
436+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"49"},"finish_reason":null}]}
437+
438+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
439+
440+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
441+
442+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
443+
444+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"49"},"finish_reason":null}]}
445+
446+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
447+
448+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
449+
450+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" okay"},"finish_reason":null}]}
451+
452+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
453+
454+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
455+
456+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
457+
458+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
459+
460+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
461+
462+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
463+
464+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
465+
466+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" One"},"finish_reason":null}]}
467+
468+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
469+
470+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
471+
472+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Return"},"finish_reason":null}]}
473+
474+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
475+
476+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
477+
478+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Search"},"finish_reason":null}]}
479+
480+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]}
481+
482+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" func"},"finish_reason":null}]}
483+
484+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" main"},"finish_reason":null}]}
485+
486+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
487+
488+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Go"},"finish_reason":null}]}
489+
490+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" repos"},"finish_reason":null}]}
491+
492+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
493+
494+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Source"},"finish_reason":null}]}
495+
496+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"graph"},"finish_reason":null}]}
497+
498+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
499+
500+ data: {"id":"chatcmpl-387d79b6508de66061378111","object":"chat.completion.chunk","created":1781460024,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":217,"completion_tokens":244,"total_tokens":461,"completion_tokens_details":{"reasoning_tokens":225},"cost":{"usd":0.00035754600000000004,"hypercredits":0.007150920000000001},"remaining":{"hypercredits":0}}}
79
501
80 data: [DONE]
502 data: [DONE]
81
503
@@ -84,15 +506,15 @@ interactions:
84 - text/event-stream
506 - text/event-stream
85 status: 200 OK
507 status: 200 OK
86 code: 200
508 code: 200
87− duration: 611.399851ms
509+ duration: 414.591542ms
88- id: 1
510- id: 1
89 request:
511 request:
90 proto: HTTP/1.1
512 proto: HTTP/1.1
91 proto_major: 1
513 proto_major: 1
92 proto_minor: 1
514 proto_minor: 1
93− content_length: 33954
515+ content_length: 35665
94 host: ""
516 host: ""
95− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/sourcegraph_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use sourcegraph to search for 'func main' in Go repositories\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
517+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/sourcegraph_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use sourcegraph to search for 'func main' in Go repositories\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
96 headers:
518 headers:
97 Accept:
519 Accept:
98 - application/json
520 - application/json
@@ -109,25 +531,25 @@ interactions:
109 content_length: -1
531 content_length: -1
110 uncompressed: true
532 uncompressed: true
111 body: |+
533 body: |+
112− data: {"id":"chatcmpl-f592c59ca3fd25b712224d72","object":"chat.completion.chunk","created":1781217103,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
534+ data: {"id":"chatcmpl-83f39a18ceccd8ea021442f9","object":"chat.completion.chunk","created":1781460027,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
113
535
114− data: {"id":"chatcmpl-f592c59ca3fd25b712224d72","object":"chat.completion.chunk","created":1781217103,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_468615943d926183","type":"function","index":0,"function":{"name":"sourcegraph","arguments":""}}]},"finish_reason":null}]}
536+ data: {"id":"chatcmpl-83f39a18ceccd8ea021442f9","object":"chat.completion.chunk","created":1781460027,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_fd4080bc067eef39","type":"function","index":0,"function":{"name":"sourcegraph","arguments":""}}]},"finish_reason":null}]}
115
537
116− data: {"id":"chatcmpl-f592c59ca3fd25b712224d72","object":"chat.completion.chunk","created":1781217103,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
538+ data: {"id":"chatcmpl-83f39a18ceccd8ea021442f9","object":"chat.completion.chunk","created":1781460027,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
117
539
118− data: {"id":"chatcmpl-f592c59ca3fd25b712224d72","object":"chat.completion.chunk","created":1781217103,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"count\": 20"}}]},"finish_reason":null}]}
540+ data: {"id":"chatcmpl-83f39a18ceccd8ea021442f9","object":"chat.completion.chunk","created":1781460027,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"count\": 20"}}]},"finish_reason":null}]}
119
541
120− data: {"id":"chatcmpl-f592c59ca3fd25b712224d72","object":"chat.completion.chunk","created":1781217103,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":", \"query\": "}}]},"finish_reason":null}]}
542+ data: {"id":"chatcmpl-83f39a18ceccd8ea021442f9","object":"chat.completion.chunk","created":1781460027,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":", \"query\": "}}]},"finish_reason":null}]}
121
543
122− data: {"id":"chatcmpl-f592c59ca3fd25b712224d72","object":"chat.completion.chunk","created":1781217103,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"func main lang"}}]},"finish_reason":null}]}
544+ data: {"id":"chatcmpl-83f39a18ceccd8ea021442f9","object":"chat.completion.chunk","created":1781460027,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"func main"}}]},"finish_reason":null}]}
123
545
124− data: {"id":"chatcmpl-f592c59ca3fd25b712224d72","object":"chat.completion.chunk","created":1781217103,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":":go"}}]},"finish_reason":null}]}
546+ data: {"id":"chatcmpl-83f39a18ceccd8ea021442f9","object":"chat.completion.chunk","created":1781460027,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" lang:go"}}]},"finish_reason":null}]}
125
547
126− data: {"id":"chatcmpl-f592c59ca3fd25b712224d72","object":"chat.completion.chunk","created":1781217103,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"}"}}]},"finish_reason":null}]}
548+ data: {"id":"chatcmpl-83f39a18ceccd8ea021442f9","object":"chat.completion.chunk","created":1781460027,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"}"}}]},"finish_reason":null}]}
127
549
128− data: {"id":"chatcmpl-f592c59ca3fd25b712224d72","object":"chat.completion.chunk","created":1781217103,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
550+ data: {"id":"chatcmpl-83f39a18ceccd8ea021442f9","object":"chat.completion.chunk","created":1781460027,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
129
551
130− data: {"id":"chatcmpl-f592c59ca3fd25b712224d72","object":"chat.completion.chunk","created":1781217103,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":681,"completion_tokens":20,"total_tokens":7832,"prompt_tokens_details":{"cached_tokens":7131},"cost":{"usd":0.0010414,"hypercredits":0.020828},"remaining":{"hypercredits":0}}}
552+ data: {"id":"chatcmpl-83f39a18ceccd8ea021442f9","object":"chat.completion.chunk","created":1781460027,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":681,"completion_tokens":20,"total_tokens":8187,"prompt_tokens_details":{"cached_tokens":7486},"cost":{"usd":0.0010414,"hypercredits":0.020828},"remaining":{"hypercredits":0}}}
131
553
132 data: [DONE]
554 data: [DONE]
133
555
@@ -136,7 +558,7 @@ interactions:
136 - text/event-stream
558 - text/event-stream
137 status: 200 OK
559 status: 200 OK
138 code: 200
560 code: 200
139− duration: 609.628875ms
561+ duration: 3.733430667s
140- id: 2
562- id: 2
141 request:
563 request:
142 proto: HTTP/1.1
564 proto: HTTP/1.1
@@ -158,21 +580,21 @@ interactions:
158 proto_minor: 0
580 proto_minor: 0
159 content_length: -1
581 content_length: -1
160 uncompressed: true
582 uncompressed: true
161− body: '{"data":{"search":{"results":{"matchCount":30,"limitHit":true,"resultCount":30,"approximateResultCount":"30+","missing":[],"timedout":[],"indexUnavailable":false,"results":[{"__typename":"FileMatch","repository":{"name":"github.com/DQNEO/minigo"},"file":{"path":"t/sources/main.go","url":"/r/github.com/DQNEO/minigo/-/blob/t/sources/main.go","content":"package main\n\nvar var2 int = 2\n\nfunc main() {\n\tfmt.Printf(\"%s\\n\", const1)\n\tfmt.Printf(\"%d\\n\", var2)\n\tfmt.Printf(\"%d\\n\", const3)\n\tfunc4()\n\tfunc5() // mutuall dependent\n}\n\nfunc func5sub() {\n\tfmt.Printf(\"5\\n\")\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":4,"offsetAndLengths":[[0,9]]},{"preview":"func func5sub() {","lineNumber":12,"offsetAndLengths":[[0,4],[5,4]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]},{"preview":"\tfunc4()","lineNumber":8,"offsetAndLengths":[[1,4]]},{"preview":"\tfunc5() // mutuall dependent","lineNumber":9,"offsetAndLengths":[[1,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/DQNEO/minigo"},"file":{"path":"t/funcref/funcref.go","url":"/r/github.com/DQNEO/minigo/-/blob/t/funcref/funcref.go","content":"package main\n\nfunc sum(a int, b int) int {\n\tfmt.Printf(\"%d\\n\", sum)\n\treturn a + b\n}\n\nfunc main() {\n\tfmt.Printf(\"%d\\n\", sum)\n\ts := sum(1, 2)\n\tfmt.Printf(\"%d\\n\", s)\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":7,"offsetAndLengths":[[0,9]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]},{"preview":"func sum(a int, b int) int {","lineNumber":2,"offsetAndLengths":[[0,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/charmbracelet/huh"},"file":{"path":"examples/dynamic/dynamic-increment/main.go","url":"/r/github.com/charmbracelet/huh/-/blob/examples/dynamic/dynamic-increment/main.go","content":"package main\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"charm.land/huh/v2\"\n)\n\nfunc main() {\n\tcount := 0\n\tgo func() {\n\t\tfor {\n\t\t\tcount++\n\t\t\ttime.Sleep(1 * time.Second)\n\t\t}\n\t}()\n\n\tdescriptionFunc := func() string {\n\t\treturn fmt.Sprintf(\"The count is: %d\", count)\n\t}\n\n\thuh.NewForm(huh.NewGroup(\n\t\thuh.NewInput().\n\t\t\tTitle(\"Fill in the input\").\n\t\t\tDescriptionFunc(descriptionFunc, \u0026count),\n\t\thuh.NewInput().\n\t\t\tTitle(\"Fill in the input\").\n\t\t\tDescriptionFunc(descriptionFunc, \u0026count),\n\t)).Run()\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":9,"offsetAndLengths":[[0,9]]},{"preview":"\tgo func() {","lineNumber":11,"offsetAndLengths":[[4,4]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]},{"preview":"\tdescriptionFunc := func() string {","lineNumber":18,"offsetAndLengths":[[12,4],[20,4]]},{"preview":"\t\t\tDescriptionFunc(descriptionFunc, \u0026count),","lineNumber":25,"offsetAndLengths":[[14,4],[30,4]]},{"preview":"\t\t\tDescriptionFunc(descriptionFunc, \u0026count),","lineNumber":28,"offsetAndLengths":[[14,4],[30,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/mudler/LocalAI"},"file":{"path":"backend/go/qwen3-tts-cpp/main.go","url":"/r/github.com/mudler/LocalAI/-/blob/backend/go/qwen3-tts-cpp/main.go","content":"package main\n\n// Note: this is started internally by LocalAI and a server is allocated for each model\nimport (\n\t\"flag\"\n\t\"os\"\n\n\t\"github.com/ebitengine/purego\"\n\tgrpc \"github.com/mudler/LocalAI/pkg/grpc\"\n)\n\nvar (\n\taddr = flag.String(\"addr\", \"localhost:50051\", \"the address to connect to\")\n)\n\ntype LibFuncs struct {\n\tFuncPtr any\n\tName string\n}\n\nfunc main() {\n\t// Get library name from environment variable, default to fallback\n\tlibName := os.Getenv(\"QWEN3TTS_LIBRARY\")\n\tif libName == \"\" {\n\t\tlibName = \"./libgoqwen3ttscpp-fallback.so\"\n\t}\n\n\tgosd, err := purego.Dlopen(libName, purego.RTLD_NOW|purego.RTLD_GLOBAL)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tlibFuncs := []LibFuncs{\n\t\t{\u0026CppLoadModel, \"load_model\"},\n\t\t{\u0026CppSynthesize, \"synthesize\"},\n\t}\n\n\tfor _, lf := range libFuncs {\n\t\tpurego.RegisterLibFunc(lf.FuncPtr, gosd, lf.Name)\n\t}\n\n\tflag.Parse()\n\n\tif err := grpc.StartServer(*addr, \u0026Qwen3TtsCpp{}); err != nil {\n\t\tpanic(err)\n\t}\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":20,"offsetAndLengths":[[0,9]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]},{"preview":"type LibFuncs struct {","lineNumber":15,"offsetAndLengths":[[8,4]]},{"preview":"\tFuncPtr any","lineNumber":16,"offsetAndLengths":[[1,4]]},{"preview":"\tlibFuncs := []LibFuncs{","lineNumber":32,"offsetAndLengths":[[4,4],[18,4]]},{"preview":"\tfor _, lf := range libFuncs {","lineNumber":37,"offsetAndLengths":[[23,4]]},{"preview":"\t\tpurego.RegisterLibFunc(lf.FuncPtr, gosd, lf.Name)","lineNumber":38,"offsetAndLengths":[[20,4],[28,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/mudler/LocalAI"},"file":{"path":"backend/go/acestep-cpp/main.go","url":"/r/github.com/mudler/LocalAI/-/blob/backend/go/acestep-cpp/main.go","content":"package main\n\n// Note: this is started internally by LocalAI and a server is allocated for each model\nimport (\n\t\"flag\"\n\t\"os\"\n\n\t\"github.com/ebitengine/purego\"\n\tgrpc \"github.com/mudler/LocalAI/pkg/grpc\"\n)\n\nvar (\n\taddr = flag.String(\"addr\", \"localhost:50051\", \"the address to connect to\")\n)\n\ntype LibFuncs struct {\n\tFuncPtr any\n\tName string\n}\n\nfunc main() {\n\t// Get library name from environment variable, default to fallback\n\tlibName := os.Getenv(\"ACESTEP_LIBRARY\")\n\tif libName == \"\" {\n\t\tlibName = \"./libgoacestepcpp-fallback.so\"\n\t}\n\n\tgosd, err := purego.Dlopen(libName, purego.RTLD_NOW|purego.RTLD_GLOBAL)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tlibFuncs := []LibFuncs{\n\t\t{\u0026CppLoadModel, \"load_model\"},\n\t\t{\u0026CppGenerateMusic, \"generate_music\"},\n\t}\n\n\tfor _, lf := range libFuncs {\n\t\tpurego.RegisterLibFunc(lf.FuncPtr, gosd, lf.Name)\n\t}\n\n\tflag.Parse()\n\n\tif err := grpc.StartServer(*addr, \u0026AceStepCpp{}); err != nil {\n\t\tpanic(err)\n\t}\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":20,"offsetAndLengths":[[0,9]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]},{"preview":"type LibFuncs struct {","lineNumber":15,"offsetAndLengths":[[8,4]]}]}]}}}}'
583+ body: '{"data":{"search":{"results":{"matchCount":30,"limitHit":true,"resultCount":30,"approximateResultCount":"30+","missing":[],"timedout":[],"indexUnavailable":false,"results":[{"__typename":"FileMatch","repository":{"name":"github.com/callicoder/golang-tutorials"},"file":{"path":"06-functions/01-function-declaration/main.go","url":"/r/github.com/callicoder/golang-tutorials/-/blob/06-functions/01-function-declaration/main.go","content":"package main\n\nimport \"fmt\"\n\nfunc avg(x float64, y float64) float64 {\n\treturn (x + y) / 2\n}\n\nfunc main() {\n\tx := 5.75\n\ty := 6.25\n\n\tresult := avg(x, y)\n\n\tfmt.Printf(\"Average of %.2f and %.2f = %.2f\\n\", x, y, result)\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":8,"offsetAndLengths":[[0,9]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]},{"preview":"func avg(x float64, y float64) float64 {","lineNumber":4,"offsetAndLengths":[[0,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/juanfont/headscale"},"file":{"path":"cmd/hi/main.go","url":"/r/github.com/juanfont/headscale/-/blob/cmd/hi/main.go","content":"package main\n\nimport (\n\t\"context\"\n\t\"os\"\n\n\t\"github.com/creachadair/command\"\n\t\"github.com/creachadair/flax\"\n)\n\nvar runConfig RunConfig\n\nfunc main() {\n\troot := command.C{\n\t\tName: \"hi\",\n\t\tHelp: \"Headscale Integration test runner\",\n\t\tCommands: []*command.C{\n\t\t\t{\n\t\t\t\tName: \"run\",\n\t\t\t\tHelp: \"Run integration tests\",\n\t\t\t\tUsage: \"run [test-pattern] [flags]\",\n\t\t\t\tSetFlags: command.Flags(flax.MustBind, \u0026runConfig),\n\t\t\t\tRun: runIntegrationTest,\n\t\t\t},\n\t\t\t{\n\t\t\t\tName: \"doctor\",\n\t\t\t\tHelp: \"Check system requirements for running integration tests\",\n\t\t\t\tRun: func(env *command.Env) error {\n\t\t\t\t\treturn runDoctorCheck(env.Context())\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tName: \"list-versions\",\n\t\t\t\tHelp: \"Print Tailscale versions used by integration tests\",\n\t\t\t\tUsage: \"list-versions [flags]\",\n\t\t\t\tSetFlags: command.Flags(flax.MustBind, \u0026listVersionsConfig),\n\t\t\t\tRun: listVersions,\n\t\t\t},\n\t\t\t{\n\t\t\t\tName: \"clean\",\n\t\t\t\tHelp: \"Clean Docker resources\",\n\t\t\t\tCommands: []*command.C{\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"networks\",\n\t\t\t\t\t\tHelp: \"Prune unused Docker networks\",\n\t\t\t\t\t\tRun: func(env *command.Env) error {\n\t\t\t\t\t\t\treturn pruneDockerNetworks(env.Context())\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"images\",\n\t\t\t\t\t\tHelp: \"Clean old test images\",\n\t\t\t\t\t\tRun: func(env *command.Env) error {\n\t\t\t\t\t\t\treturn cleanOldImages(env.Context())\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"containers\",\n\t\t\t\t\t\tHelp: \"Kill all test containers\",\n\t\t\t\t\t\tRun: func(env *command.Env) error {\n\t\t\t\t\t\t\treturn killTestContainers(env.Context())\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"cache\",\n\t\t\t\t\t\tHelp: \"Clean Go module cache volume\",\n\t\t\t\t\t\tRun: func(env *command.Env) error {\n\t\t\t\t\t\t\treturn cleanCacheVolume(env.Context())\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tName: \"all\",\n\t\t\t\t\t\tHelp: \"Run all cleanup operations\",\n\t\t\t\t\t\tRun: func(env *command.Env) error {\n\t\t\t\t\t\t\treturn cleanAll(env.Context())\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tcommand.HelpCommand(nil),\n\t\t},\n\t}\n\n\tenv := root.NewEnv(nil).MergeFlags(true)\n\tcommand.RunOrFail(env, os.Args[1:])\n}\n\nfunc cleanAll(ctx context.Context) error {\n\terr := killTestContainers(ctx)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = pruneDockerNetworks(ctx)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = cleanOldImages(ctx)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn cleanCacheVolume(ctx)\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":12,"offsetAndLengths":[[0,9]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]},{"preview":"\t\t\t\tRun: func(env *command.Env) error {","lineNumber":27,"offsetAndLengths":[[9,4]]},{"preview":"\t\t\t\t\t\tRun: func(env *command.Env) error {","lineNumber":45,"offsetAndLengths":[[11,4]]},{"preview":"\t\t\t\t\t\tRun: func(env *command.Env) error {","lineNumber":52,"offsetAndLengths":[[11,4]]},{"preview":"\t\t\t\t\t\tRun: func(env *command.Env) error {","lineNumber":59,"offsetAndLengths":[[11,4]]},{"preview":"\t\t\t\t\t\tRun: func(env *command.Env) error {","lineNumber":66,"offsetAndLengths":[[11,4]]},{"preview":"\t\t\t\t\t\tRun: func(env *command.Env) error {","lineNumber":73,"offsetAndLengths":[[11,4]]},{"preview":"func cleanAll(ctx context.Context) error {","lineNumber":87,"offsetAndLengths":[[0,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/ScottAI/book"},"file":{"path":"ch04/4.1/clo2/main.go","url":"/r/github.com/ScottAI/book/-/blob/ch04/4.1/clo2/main.go","content":"package main\n\nimport \"fmt\"\n\nfunc main() {\n\t//方式一\n\tvar funcList []func()\n\tfor i:=0;i\u003c3;i++{\n\t\tfuncList = append(funcList,func(){\n\t\t\tfmt.Println(i)\n\t\t})\n\t}\n\tfor _,f := range funcList{\n\t\tf()\n\t}\n\t//方式二\n\tvar funcList2 []func()\n\tfor i:=0;i\u003c3;i++{\n\t\tj := i\n\t\tfuncList2 = append(funcList2,func(){\n\t\t\tfmt.Println(j)\n\t\t})\n\t}\n\tfor _,f := range funcList2{\n\t\tf()\n\t}\n\t//方式三\n\tvar funcList3 []func(int)\n\tfor i:=0;i\u003c3;i++{\n\t\tfuncList3 = append(funcList3,func(i int){\n\t\t\tfmt.Println(i)\n\t\t})\n\t}\n\tfor i,f := range funcList3{\n\t\tf(i)\n\t}\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":4,"offsetAndLengths":[[0,9]]},{"preview":"\tvar funcList []func()","lineNumber":6,"offsetAndLengths":[[5,4],[16,4]]},{"preview":"\t\tfuncList = append(funcList,func(){","lineNumber":8,"offsetAndLengths":[[2,4],[20,4],[29,4]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]},{"preview":"\t\tfuncList2 = append(funcList2,func(){","lineNumber":19,"offsetAndLengths":[[2,4],[21,4],[31,4]]},{"preview":"\tvar funcList3 []func(int)","lineNumber":27,"offsetAndLengths":[[5,4],[17,4]]},{"preview":"\t\tfuncList3 = append(funcList3,func(i int){","lineNumber":29,"offsetAndLengths":[[2,4],[21,4],[31,4]]},{"preview":"\tvar funcList2 []func()","lineNumber":16,"offsetAndLengths":[[5,4],[17,4]]},{"preview":"\tfor _,f := range funcList{","lineNumber":12,"offsetAndLengths":[[18,4]]}]}]}}}}'
162 headers:
584 headers:
163 Content-Type:
585 Content-Type:
164 - application/json
586 - application/json
165 status: 200 OK
587 status: 200 OK
166 code: 200
588 code: 200
167− duration: 1.822095296s
589+ duration: 1.731318333s
168- id: 3
590- id: 3
169 request:
591 request:
170 proto: HTTP/1.1
592 proto: HTTP/1.1
171 proto_major: 1
593 proto_major: 1
172 proto_minor: 1
594 proto_minor: 1
173− content_length: 44937
595+ content_length: 46816
174 host: ""
596 host: ""
175− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/sourcegraph_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use sourcegraph to search for 'func main' in Go repositories\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_468615943d926183\",\"function\":{\"arguments\":\"{\\\"count\\\": 20, \\\"query\\\": \\\"func main lang:go\\\"}\",\"name\":\"sourcegraph\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"# Sourcegraph Search Results\\n\\nFound 30 matches across 30 results\\n(Result limit reached, try a more specific query)\\n\\n## Result 1: github.com/DQNEO/minigo/t/sources/main.go\\n\\nURL: /r/github.com/DQNEO/minigo/-/blob/t/sources/main.go\\n\\n```\\n1| package main\\n2| \\n3| var var2 int = 2\\n4| func main() {\\n5| func main() {\\n6| \\tfmt.Printf(\\\"%s\\\\n\\\", const1)\\n7| \\tfmt.Printf(\\\"%d\\\\n\\\", var2)\\n8| \\tfmt.Printf(\\\"%d\\\\n\\\", const3)\\n9| \\tfunc4()\\n10| \\tfunc5() // mutuall dependent\\n11| }\\n12| \\n13| func func5sub() {\\n14| \\tfmt.Printf(\\\"5\\\\n\\\")\\n```\\n\\n```\\n2| \\n3| var var2 int = 2\\n4| \\n5| func main() {\\n6| \\tfmt.Printf(\\\"%s\\\\n\\\", const1)\\n7| \\tfmt.Printf(\\\"%d\\\\n\\\", var2)\\n8| \\tfmt.Printf(\\\"%d\\\\n\\\", const3)\\n9| \\tfunc4()\\n10| \\tfunc5() // mutuall dependent\\n11| }\\n12| func func5sub() {\\n13| func func5sub() {\\n14| \\tfmt.Printf(\\\"5\\\\n\\\")\\n15| }\\n16| \\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| var var2 int = 2\\n4| \\n5| func main() {\\n6| \\tfmt.Printf(\\\"%s\\\\n\\\", const1)\\n7| \\tfmt.Printf(\\\"%d\\\\n\\\", var2)\\n8| \\tfmt.Printf(\\\"%d\\\\n\\\", const3)\\n9| \\tfunc4()\\n10| \\tfunc5() // mutuall dependent\\n```\\n\\n```\\n1| package main\\n2| \\n3| var var2 int = 2\\n4| \\n5| func main() {\\n6| \\tfmt.Printf(\\\"%s\\\\n\\\", const1)\\n7| \\tfmt.Printf(\\\"%d\\\\n\\\", var2)\\n8| \\tfunc4()\\n9| \\tfunc4()\\n10| \\tfunc5() // mutuall dependent\\n11| }\\n12| \\n13| func func5sub() {\\n14| \\tfmt.Printf(\\\"5\\\\n\\\")\\n15| }\\n16| \\n```\\n\\n```\\n1| package main\\n2| \\n3| var var2 int = 2\\n4| \\n5| func main() {\\n6| \\tfmt.Printf(\\\"%s\\\\n\\\", const1)\\n7| \\tfmt.Printf(\\\"%d\\\\n\\\", var2)\\n8| \\tfmt.Printf(\\\"%d\\\\n\\\", const3)\\n9| \\tfunc5() // mutuall dependent\\n10| \\tfunc5() // mutuall dependent\\n11| }\\n12| \\n13| func func5sub() {\\n14| \\tfmt.Printf(\\\"5\\\\n\\\")\\n15| }\\n16| \\n```\\n\\n## Result 2: github.com/DQNEO/minigo/t/funcref/funcref.go\\n\\nURL: /r/github.com/DQNEO/minigo/-/blob/t/funcref/funcref.go\\n\\n```\\n1| package main\\n2| \\n3| func sum(a int, b int) int {\\n4| \\tfmt.Printf(\\\"%d\\\\n\\\", sum)\\n5| \\treturn a + b\\n6| }\\n7| func main() {\\n8| func main() {\\n9| \\tfmt.Printf(\\\"%d\\\\n\\\", sum)\\n10| \\ts := sum(1, 2)\\n11| \\tfmt.Printf(\\\"%d\\\\n\\\", s)\\n12| }\\n13| \\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| func sum(a int, b int) int {\\n4| \\tfmt.Printf(\\\"%d\\\\n\\\", sum)\\n5| \\treturn a + b\\n6| }\\n7| \\n8| func main() {\\n9| \\tfmt.Printf(\\\"%d\\\\n\\\", sum)\\n10| \\ts := sum(1, 2)\\n```\\n\\n```\\n1| package main\\n2| func sum(a int, b int) int {\\n3| func sum(a int, b int) int {\\n4| \\tfmt.Printf(\\\"%d\\\\n\\\", sum)\\n5| \\treturn a + b\\n6| }\\n7| \\n8| func main() {\\n9| \\tfmt.Printf(\\\"%d\\\\n\\\", sum)\\n10| \\ts := sum(1, 2)\\n11| \\tfmt.Printf(\\\"%d\\\\n\\\", s)\\n12| }\\n```\\n\\n## Result 3: github.com/charmbracelet/huh/examples/dynamic/dynamic-increment/main.go\\n\\nURL: /r/github.com/charmbracelet/huh/-/blob/examples/dynamic/dynamic-increment/main.go\\n\\n```\\n1| package main\\n2| \\n3| import (\\n4| \\t\\\"fmt\\\"\\n5| \\t\\\"time\\\"\\n6| \\n7| \\t\\\"charm.land/huh/v2\\\"\\n8| )\\n9| func main() {\\n10| func main() {\\n11| \\tcount := 0\\n12| \\tgo func() {\\n13| \\t\\tfor {\\n14| \\t\\t\\tcount++\\n15| \\t\\t\\ttime.Sleep(1 * time.Second)\\n16| \\t\\t}\\n17| \\t}()\\n18| \\n19| \\tdescriptionFunc := func() string {\\n```\\n\\n```\\n1| package main\\n2| \\n3| import (\\n4| \\t\\\"fmt\\\"\\n5| \\t\\\"time\\\"\\n6| \\n7| \\t\\\"charm.land/huh/v2\\\"\\n8| )\\n9| \\n10| func main() {\\n11| \\tgo func() {\\n12| \\tgo func() {\\n13| \\t\\tfor {\\n14| \\t\\t\\tcount++\\n15| \\t\\t\\ttime.Sleep(1 * time.Second)\\n16| \\t\\t}\\n17| \\t}()\\n18| \\n19| \\tdescriptionFunc := func() string {\\n20| \\t\\treturn fmt.Sprintf(\\\"The count is: %d\\\", count)\\n21| \\t}\\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| import (\\n4| \\t\\\"fmt\\\"\\n5| \\t\\\"time\\\"\\n6| \\n7| \\t\\\"charm.land/huh/v2\\\"\\n8| )\\n9| \\n10| func main() {\\n```\\n\\n```\\n8| )\\n9| \\n10| func main() {\\n11| \\tcount := 0\\n12| \\tgo func() {\\n13| \\t\\tfor {\\n14| \\t\\t\\tcount++\\n15| \\t\\t\\ttime.Sleep(1 * time.Second)\\n16| \\t\\t}\\n17| \\t}()\\n18| \\tdescriptionFunc := func() string {\\n19| \\tdescriptionFunc := func() string {\\n20| \\t\\treturn fmt.Sprintf(\\\"The count is: %d\\\", count)\\n21| \\t}\\n22| \\n23| \\thuh.NewForm(huh.NewGroup(\\n24| \\t\\thuh.NewInput().\\n25| \\t\\t\\tTitle(\\\"Fill in the input\\\").\\n26| \\t\\t\\tDescriptionFunc(descriptionFunc, &count),\\n27| \\t\\thuh.NewInput().\\n28| \\t\\t\\tTitle(\\\"Fill in the input\\\").\\n```\\n\\n```\\n15| \\t\\t\\ttime.Sleep(1 * time.Second)\\n16| \\t\\t}\\n17| \\t}()\\n18| \\n19| \\tdescriptionFunc := func() string {\\n20| \\t\\treturn fmt.Sprintf(\\\"The count is: %d\\\", count)\\n21| \\t}\\n22| \\n23| \\thuh.NewForm(huh.NewGroup(\\n24| \\t\\thuh.NewInput().\\n25| \\t\\t\\tDescriptionFunc(descriptionFunc, &count),\\n26| \\t\\t\\tDescriptionFunc(descriptionFunc, &count),\\n27| \\t\\thuh.NewInput().\\n28| \\t\\t\\tTitle(\\\"Fill in the input\\\").\\n29| \\t\\t\\tDescriptionFunc(descriptionFunc, &count),\\n30| \\t)).Run()\\n31| }\\n32| \\n```\\n\\n```\\n18| \\n19| \\tdescriptionFunc := func() string {\\n20| \\t\\treturn fmt.Sprintf(\\\"The count is: %d\\\", count)\\n21| \\t}\\n22| \\n23| \\thuh.NewForm(huh.NewGroup(\\n24| \\t\\thuh.NewInput().\\n25| \\t\\t\\tTitle(\\\"Fill in the input\\\").\\n26| \\t\\t\\tDescriptionFunc(descriptionFunc, &count),\\n27| \\t\\thuh.NewInput().\\n28| \\t\\t\\tDescriptionFunc(descriptionFunc, &count),\\n29| \\t\\t\\tDescriptionFunc(descriptionFunc, &count),\\n30| \\t)).Run()\\n31| }\\n32| \\n```\\n\\n## Result 4: github.com/mudler/LocalAI/backend/go/qwen3-tts-cpp/main.go\\n\\nURL: /r/github.com/mudler/LocalAI/-/blob/backend/go/qwen3-tts-cpp/main.go\\n\\n```\\n10| )\\n11| \\n12| var (\\n13| \\taddr = flag.String(\\\"addr\\\", \\\"localhost:50051\\\", \\\"the address to connect to\\\")\\n14| )\\n15| \\n16| type LibFuncs struct {\\n17| \\tFuncPtr any\\n18| \\tName string\\n19| }\\n20| func main() {\\n21| func main() {\\n22| \\t// Get library name from environment variable, default to fallback\\n23| \\tlibName := os.Getenv(\\\"QWEN3TTS_LIBRARY\\\")\\n24| \\tif libName == \\\"\\\" {\\n25| \\t\\tlibName = \\\"./libgoqwen3ttscpp-fallback.so\\\"\\n26| \\t}\\n27| \\n28| \\tgosd, err := purego.Dlopen(libName, purego.RTLD_NOW|purego.RTLD_GLOBAL)\\n29| \\tif err != nil {\\n30| \\t\\tpanic(err)\\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| // Note: this is started internally by LocalAI and a server is allocated for each model\\n4| import (\\n5| \\t\\\"flag\\\"\\n6| \\t\\\"os\\\"\\n7| \\n8| \\t\\\"github.com/ebitengine/purego\\\"\\n9| \\tgrpc \\\"github.com/mudler/LocalAI/pkg/grpc\\\"\\n10| )\\n```\\n\\n```\\n5| \\t\\\"flag\\\"\\n6| \\t\\\"os\\\"\\n7| \\n8| \\t\\\"github.com/ebitengine/purego\\\"\\n9| \\tgrpc \\\"github.com/mudler/LocalAI/pkg/grpc\\\"\\n10| )\\n11| \\n12| var (\\n13| \\taddr = flag.String(\\\"addr\\\", \\\"localhost:50051\\\", \\\"the address to connect to\\\")\\n14| )\\n15| type LibFuncs struct {\\n16| type LibFuncs struct {\\n17| \\tFuncPtr any\\n18| \\tName string\\n19| }\\n20| \\n21| func main() {\\n22| \\t// Get library name from environment variable, default to fallback\\n23| \\tlibName := os.Getenv(\\\"QWEN3TTS_LIBRARY\\\")\\n24| \\tif libName == \\\"\\\" {\\n25| \\t\\tlibName = \\\"./libgoqwen3ttscpp-fallback.so\\\"\\n```\\n\\n```\\n6| \\t\\\"os\\\"\\n7| \\n8| \\t\\\"github.com/ebitengine/purego\\\"\\n9| \\tgrpc \\\"github.com/mudler/LocalAI/pkg/grpc\\\"\\n10| )\\n11| \\n12| var (\\n13| \\taddr = flag.String(\\\"addr\\\", \\\"localhost:50051\\\", \\\"the address to connect to\\\")\\n14| )\\n15| \\n16| \\tFuncPtr any\\n17| \\tFuncPtr any\\n18| \\tName string\\n19| }\\n20| \\n21| func main() {\\n22| \\t// Get library name from environment variable, default to fallback\\n23| \\tlibName := os.Getenv(\\\"QWEN3TTS_LIBRARY\\\")\\n24| \\tif libName == \\\"\\\" {\\n25| \\t\\tlibName = \\\"./libgoqwen3ttscpp-fallback.so\\\"\\n26| \\t}\\n```\\n\\n```\\n22| \\t// Get library name from environment variable, default to fallback\\n23| \\tlibName := os.Getenv(\\\"QWEN3TTS_LIBRARY\\\")\\n24| \\tif libName == \\\"\\\" {\\n25| \\t\\tlibName = \\\"./libgoqwen3ttscpp-fallback.so\\\"\\n26| \\t}\\n27| \\n28| \\tgosd, err := purego.Dlopen(libName, purego.RTLD_NOW|purego.RTLD_GLOBAL)\\n29| \\tif err != nil {\\n30| \\t\\tpanic(err)\\n31| \\t}\\n32| \\tlibFuncs := []LibFuncs{\\n33| \\tlibFuncs := []LibFuncs{\\n34| \\t\\t{&CppLoadModel, \\\"load_model\\\"},\\n35| \\t\\t{&CppSynthesize, \\\"synthesize\\\"},\\n36| \\t}\\n37| \\n38| \\tfor _, lf := range libFuncs {\\n39| \\t\\tpurego.RegisterLibFunc(lf.FuncPtr, gosd, lf.Name)\\n40| \\t}\\n41| \\n42| \\tflag.Parse()\\n```\\n\\n```\\n27| \\n28| \\tgosd, err := purego.Dlopen(libName, purego.RTLD_NOW|purego.RTLD_GLOBAL)\\n29| \\tif err != nil {\\n30| \\t\\tpanic(err)\\n31| \\t}\\n32| \\n33| \\tlibFuncs := []LibFuncs{\\n34| \\t\\t{&CppLoadModel, \\\"load_model\\\"},\\n35| \\t\\t{&CppSynthesize, \\\"synthesize\\\"},\\n36| \\t}\\n37| \\tfor _, lf := range libFuncs {\\n38| \\tfor _, lf := range libFuncs {\\n39| \\t\\tpurego.RegisterLibFunc(lf.FuncPtr, gosd, lf.Name)\\n40| \\t}\\n41| \\n42| \\tflag.Parse()\\n43| \\n44| \\tif err := grpc.StartServer(*addr, &Qwen3TtsCpp{}); err != nil {\\n45| \\t\\tpanic(err)\\n46| \\t}\\n47| }\\n```\\n\\n```\\n28| \\tgosd, err := purego.Dlopen(libName, purego.RTLD_NOW|purego.RTLD_GLOBAL)\\n29| \\tif err != nil {\\n30| \\t\\tpanic(err)\\n31| \\t}\\n32| \\n33| \\tlibFuncs := []LibFuncs{\\n34| \\t\\t{&CppLoadModel, \\\"load_model\\\"},\\n35| \\t\\t{&CppSynthesize, \\\"synthesize\\\"},\\n36| \\t}\\n37| \\n38| \\t\\tpurego.RegisterLibFunc(lf.FuncPtr, gosd, lf.Name)\\n39| \\t\\tpurego.RegisterLibFunc(lf.FuncPtr, gosd, lf.Name)\\n40| \\t}\\n41| \\n42| \\tflag.Parse()\\n43| \\n44| \\tif err := grpc.StartServer(*addr, &Qwen3TtsCpp{}); err != nil {\\n45| \\t\\tpanic(err)\\n46| \\t}\\n47| }\\n48| \\n```\\n\\n## Result 5: github.com/mudler/LocalAI/backend/go/acestep-cpp/main.go\\n\\nURL: /r/github.com/mudler/LocalAI/-/blob/backend/go/acestep-cpp/main.go\\n\\n```\\n10| )\\n11| \\n12| var (\\n13| \\taddr = flag.String(\\\"addr\\\", \\\"localhost:50051\\\", \\\"the address to connect to\\\")\\n14| )\\n15| \\n16| type LibFuncs struct {\\n17| \\tFuncPtr any\\n18| \\tName string\\n19| }\\n20| func main() {\\n21| func main() {\\n22| \\t// Get library name from environment variable, default to fallback\\n23| \\tlibName := os.Getenv(\\\"ACESTEP_LIBRARY\\\")\\n24| \\tif libName == \\\"\\\" {\\n25| \\t\\tlibName = \\\"./libgoacestepcpp-fallback.so\\\"\\n26| \\t}\\n27| \\n28| \\tgosd, err := purego.Dlopen(libName, purego.RTLD_NOW|purego.RTLD_GLOBAL)\\n29| \\tif err != nil {\\n30| \\t\\tpanic(err)\\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| // Note: this is started internally by LocalAI and a server is allocated for each model\\n4| import (\\n5| \\t\\\"flag\\\"\\n6| \\t\\\"os\\\"\\n7| \\n8| \\t\\\"github.com/ebitengine/purego\\\"\\n9| \\tgrpc \\\"github.com/mudler/LocalAI/pkg/grpc\\\"\\n10| )\\n```\\n\\n```\\n5| \\t\\\"flag\\\"\\n6| \\t\\\"os\\\"\\n7| \\n8| \\t\\\"github.com/ebitengine/purego\\\"\\n9| \\tgrpc \\\"github.com/mudler/LocalAI/pkg/grpc\\\"\\n10| )\\n11| \\n12| var (\\n13| \\taddr = flag.String(\\\"addr\\\", \\\"localhost:50051\\\", \\\"the address to connect to\\\")\\n14| )\\n15| type LibFuncs struct {\\n16| type LibFuncs struct {\\n17| \\tFuncPtr any\\n18| \\tName string\\n19| }\\n20| \\n21| func main() {\\n22| \\t// Get library name from environment variable, default to fallback\\n23| \\tlibName := os.Getenv(\\\"ACESTEP_LIBRARY\\\")\\n24| \\tif libName == \\\"\\\" {\\n25| \\t\\tlibName = \\\"./libgoacestepcpp-fallback.so\\\"\\n```\\n\\n\",\"tool_call_id\":\"call_468615943d926183\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
597+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/sourcegraph_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use sourcegraph to search for 'func main' in Go repositories\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_fd4080bc067eef39\",\"function\":{\"arguments\":\"{\\\"count\\\": 20, \\\"query\\\": \\\"func main lang:go\\\"}\",\"name\":\"sourcegraph\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"# Sourcegraph Search Results\\n\\nFound 30 matches across 30 results\\n(Result limit reached, try a more specific query)\\n\\n## Result 1: github.com/callicoder/golang-tutorials/06-functions/01-function-declaration/main.go\\n\\nURL: /r/github.com/callicoder/golang-tutorials/-/blob/06-functions/01-function-declaration/main.go\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func avg(x float64, y float64) float64 {\\n6| \\treturn (x + y) / 2\\n7| }\\n8| func main() {\\n9| func main() {\\n10| \\tx := 5.75\\n11| \\ty := 6.25\\n12| \\n13| \\tresult := avg(x, y)\\n14| \\n15| \\tfmt.Printf(\\\"Average of %.2f and %.2f = %.2f\\\\n\\\", x, y, result)\\n16| }\\n17| \\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func avg(x float64, y float64) float64 {\\n6| \\treturn (x + y) / 2\\n7| }\\n8| \\n9| func main() {\\n10| \\tx := 5.75\\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| func avg(x float64, y float64) float64 {\\n5| func avg(x float64, y float64) float64 {\\n6| \\treturn (x + y) / 2\\n7| }\\n8| \\n9| func main() {\\n10| \\tx := 5.75\\n11| \\ty := 6.25\\n12| \\n13| \\tresult := avg(x, y)\\n14| \\n```\\n\\n## Result 2: github.com/juanfont/headscale/cmd/hi/main.go\\n\\nURL: /r/github.com/juanfont/headscale/-/blob/cmd/hi/main.go\\n\\n```\\n2| \\n3| import (\\n4| \\t\\\"context\\\"\\n5| \\t\\\"os\\\"\\n6| \\n7| \\t\\\"github.com/creachadair/command\\\"\\n8| \\t\\\"github.com/creachadair/flax\\\"\\n9| )\\n10| \\n11| var runConfig RunConfig\\n12| func main() {\\n13| func main() {\\n14| \\troot := command.C{\\n15| \\t\\tName: \\\"hi\\\",\\n16| \\t\\tHelp: \\\"Headscale Integration test runner\\\",\\n17| \\t\\tCommands: []*command.C{\\n18| \\t\\t\\t{\\n19| \\t\\t\\t\\tName: \\\"run\\\",\\n20| \\t\\t\\t\\tHelp: \\\"Run integration tests\\\",\\n21| \\t\\t\\t\\tUsage: \\\"run [test-pattern] [flags]\\\",\\n22| \\t\\t\\t\\tSetFlags: command.Flags(flax.MustBind, &runConfig),\\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| import (\\n4| \\t\\\"context\\\"\\n5| \\t\\\"os\\\"\\n6| \\n7| \\t\\\"github.com/creachadair/command\\\"\\n8| \\t\\\"github.com/creachadair/flax\\\"\\n9| )\\n10| \\n```\\n\\n```\\n17| \\t\\tCommands: []*command.C{\\n18| \\t\\t\\t{\\n19| \\t\\t\\t\\tName: \\\"run\\\",\\n20| \\t\\t\\t\\tHelp: \\\"Run integration tests\\\",\\n21| \\t\\t\\t\\tUsage: \\\"run [test-pattern] [flags]\\\",\\n22| \\t\\t\\t\\tSetFlags: command.Flags(flax.MustBind, &runConfig),\\n23| \\t\\t\\t\\tRun: runIntegrationTest,\\n24| \\t\\t\\t},\\n25| \\t\\t\\t{\\n26| \\t\\t\\t\\tName: \\\"doctor\\\",\\n27| \\t\\t\\t\\tRun: func(env *command.Env) error {\\n28| \\t\\t\\t\\tRun: func(env *command.Env) error {\\n29| \\t\\t\\t\\t\\treturn runDoctorCheck(env.Context())\\n30| \\t\\t\\t\\t},\\n31| \\t\\t\\t},\\n32| \\t\\t\\t{\\n33| \\t\\t\\t\\tName: \\\"list-versions\\\",\\n34| \\t\\t\\t\\tHelp: \\\"Print Tailscale versions used by integration tests\\\",\\n35| \\t\\t\\t\\tUsage: \\\"list-versions [flags]\\\",\\n36| \\t\\t\\t\\tSetFlags: command.Flags(flax.MustBind, &listVersionsConfig),\\n37| \\t\\t\\t\\tRun: listVersions,\\n```\\n\\n```\\n35| \\t\\t\\t\\tUsage: \\\"list-versions [flags]\\\",\\n36| \\t\\t\\t\\tSetFlags: command.Flags(flax.MustBind, &listVersionsConfig),\\n37| \\t\\t\\t\\tRun: listVersions,\\n38| \\t\\t\\t},\\n39| \\t\\t\\t{\\n40| \\t\\t\\t\\tName: \\\"clean\\\",\\n41| \\t\\t\\t\\tHelp: \\\"Clean Docker resources\\\",\\n42| \\t\\t\\t\\tCommands: []*command.C{\\n43| \\t\\t\\t\\t\\t{\\n44| \\t\\t\\t\\t\\t\\tName: \\\"networks\\\",\\n45| \\t\\t\\t\\t\\t\\tRun: func(env *command.Env) error {\\n46| \\t\\t\\t\\t\\t\\tRun: func(env *command.Env) error {\\n47| \\t\\t\\t\\t\\t\\t\\treturn pruneDockerNetworks(env.Context())\\n48| \\t\\t\\t\\t\\t\\t},\\n49| \\t\\t\\t\\t\\t},\\n50| \\t\\t\\t\\t\\t{\\n51| \\t\\t\\t\\t\\t\\tName: \\\"images\\\",\\n52| \\t\\t\\t\\t\\t\\tHelp: \\\"Clean old test images\\\",\\n53| \\t\\t\\t\\t\\t\\tRun: func(env *command.Env) error {\\n54| \\t\\t\\t\\t\\t\\t\\treturn cleanOldImages(env.Context())\\n55| \\t\\t\\t\\t\\t\\t},\\n```\\n\\n```\\n42| \\t\\t\\t\\tCommands: []*command.C{\\n43| \\t\\t\\t\\t\\t{\\n44| \\t\\t\\t\\t\\t\\tName: \\\"networks\\\",\\n45| \\t\\t\\t\\t\\t\\tHelp: \\\"Prune unused Docker networks\\\",\\n46| \\t\\t\\t\\t\\t\\tRun: func(env *command.Env) error {\\n47| \\t\\t\\t\\t\\t\\t\\treturn pruneDockerNetworks(env.Context())\\n48| \\t\\t\\t\\t\\t\\t},\\n49| \\t\\t\\t\\t\\t},\\n50| \\t\\t\\t\\t\\t{\\n51| \\t\\t\\t\\t\\t\\tName: \\\"images\\\",\\n52| \\t\\t\\t\\t\\t\\tRun: func(env *command.Env) error {\\n53| \\t\\t\\t\\t\\t\\tRun: func(env *command.Env) error {\\n54| \\t\\t\\t\\t\\t\\t\\treturn cleanOldImages(env.Context())\\n55| \\t\\t\\t\\t\\t\\t},\\n56| \\t\\t\\t\\t\\t},\\n57| \\t\\t\\t\\t\\t{\\n58| \\t\\t\\t\\t\\t\\tName: \\\"containers\\\",\\n59| \\t\\t\\t\\t\\t\\tHelp: \\\"Kill all test containers\\\",\\n60| \\t\\t\\t\\t\\t\\tRun: func(env *command.Env) error {\\n61| \\t\\t\\t\\t\\t\\t\\treturn killTestContainers(env.Context())\\n62| \\t\\t\\t\\t\\t\\t},\\n```\\n\\n```\\n49| \\t\\t\\t\\t\\t},\\n50| \\t\\t\\t\\t\\t{\\n51| \\t\\t\\t\\t\\t\\tName: \\\"images\\\",\\n52| \\t\\t\\t\\t\\t\\tHelp: \\\"Clean old test images\\\",\\n53| \\t\\t\\t\\t\\t\\tRun: func(env *command.Env) error {\\n54| \\t\\t\\t\\t\\t\\t\\treturn cleanOldImages(env.Context())\\n55| \\t\\t\\t\\t\\t\\t},\\n56| \\t\\t\\t\\t\\t},\\n57| \\t\\t\\t\\t\\t{\\n58| \\t\\t\\t\\t\\t\\tName: \\\"containers\\\",\\n59| \\t\\t\\t\\t\\t\\tRun: func(env *command.Env) error {\\n60| \\t\\t\\t\\t\\t\\tRun: func(env *command.Env) error {\\n61| \\t\\t\\t\\t\\t\\t\\treturn killTestContainers(env.Context())\\n62| \\t\\t\\t\\t\\t\\t},\\n63| \\t\\t\\t\\t\\t},\\n64| \\t\\t\\t\\t\\t{\\n65| \\t\\t\\t\\t\\t\\tName: \\\"cache\\\",\\n66| \\t\\t\\t\\t\\t\\tHelp: \\\"Clean Go module cache volume\\\",\\n67| \\t\\t\\t\\t\\t\\tRun: func(env *command.Env) error {\\n68| \\t\\t\\t\\t\\t\\t\\treturn cleanCacheVolume(env.Context())\\n69| \\t\\t\\t\\t\\t\\t},\\n```\\n\\n```\\n56| \\t\\t\\t\\t\\t},\\n57| \\t\\t\\t\\t\\t{\\n58| \\t\\t\\t\\t\\t\\tName: \\\"containers\\\",\\n59| \\t\\t\\t\\t\\t\\tHelp: \\\"Kill all test containers\\\",\\n60| \\t\\t\\t\\t\\t\\tRun: func(env *command.Env) error {\\n61| \\t\\t\\t\\t\\t\\t\\treturn killTestContainers(env.Context())\\n62| \\t\\t\\t\\t\\t\\t},\\n63| \\t\\t\\t\\t\\t},\\n64| \\t\\t\\t\\t\\t{\\n65| \\t\\t\\t\\t\\t\\tName: \\\"cache\\\",\\n66| \\t\\t\\t\\t\\t\\tRun: func(env *command.Env) error {\\n67| \\t\\t\\t\\t\\t\\tRun: func(env *command.Env) error {\\n68| \\t\\t\\t\\t\\t\\t\\treturn cleanCacheVolume(env.Context())\\n69| \\t\\t\\t\\t\\t\\t},\\n70| \\t\\t\\t\\t\\t},\\n71| \\t\\t\\t\\t\\t{\\n72| \\t\\t\\t\\t\\t\\tName: \\\"all\\\",\\n73| \\t\\t\\t\\t\\t\\tHelp: \\\"Run all cleanup operations\\\",\\n74| \\t\\t\\t\\t\\t\\tRun: func(env *command.Env) error {\\n75| \\t\\t\\t\\t\\t\\t\\treturn cleanAll(env.Context())\\n76| \\t\\t\\t\\t\\t\\t},\\n```\\n\\n```\\n63| \\t\\t\\t\\t\\t},\\n64| \\t\\t\\t\\t\\t{\\n65| \\t\\t\\t\\t\\t\\tName: \\\"cache\\\",\\n66| \\t\\t\\t\\t\\t\\tHelp: \\\"Clean Go module cache volume\\\",\\n67| \\t\\t\\t\\t\\t\\tRun: func(env *command.Env) error {\\n68| \\t\\t\\t\\t\\t\\t\\treturn cleanCacheVolume(env.Context())\\n69| \\t\\t\\t\\t\\t\\t},\\n70| \\t\\t\\t\\t\\t},\\n71| \\t\\t\\t\\t\\t{\\n72| \\t\\t\\t\\t\\t\\tName: \\\"all\\\",\\n73| \\t\\t\\t\\t\\t\\tRun: func(env *command.Env) error {\\n74| \\t\\t\\t\\t\\t\\tRun: func(env *command.Env) error {\\n75| \\t\\t\\t\\t\\t\\t\\treturn cleanAll(env.Context())\\n76| \\t\\t\\t\\t\\t\\t},\\n77| \\t\\t\\t\\t\\t},\\n78| \\t\\t\\t\\t},\\n79| \\t\\t\\t},\\n80| \\t\\t\\tcommand.HelpCommand(nil),\\n81| \\t\\t},\\n82| \\t}\\n83| \\n```\\n\\n```\\n77| \\t\\t\\t\\t\\t},\\n78| \\t\\t\\t\\t},\\n79| \\t\\t\\t},\\n80| \\t\\t\\tcommand.HelpCommand(nil),\\n81| \\t\\t},\\n82| \\t}\\n83| \\n84| \\tenv := root.NewEnv(nil).MergeFlags(true)\\n85| \\tcommand.RunOrFail(env, os.Args[1:])\\n86| }\\n87| func cleanAll(ctx context.Context) error {\\n88| func cleanAll(ctx context.Context) error {\\n89| \\terr := killTestContainers(ctx)\\n90| \\tif err != nil {\\n91| \\t\\treturn err\\n92| \\t}\\n93| \\n94| \\terr = pruneDockerNetworks(ctx)\\n95| \\tif err != nil {\\n96| \\t\\treturn err\\n97| \\t}\\n```\\n\\n## Result 3: github.com/ScottAI/book/ch04/4.1/clo2/main.go\\n\\nURL: /r/github.com/ScottAI/book/-/blob/ch04/4.1/clo2/main.go\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| func main() {\\n5| func main() {\\n6| \\t//方式一\\n7| \\tvar funcList []func()\\n8| \\tfor i:=0;i<3;i++{\\n9| \\t\\tfuncList = append(funcList,func(){\\n10| \\t\\t\\tfmt.Println(i)\\n11| \\t\\t})\\n12| \\t}\\n13| \\tfor _,f := range funcList{\\n14| \\t\\tf()\\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func main() {\\n6| \\tvar funcList []func()\\n7| \\tvar funcList []func()\\n8| \\tfor i:=0;i<3;i++{\\n9| \\t\\tfuncList = append(funcList,func(){\\n10| \\t\\t\\tfmt.Println(i)\\n11| \\t\\t})\\n12| \\t}\\n13| \\tfor _,f := range funcList{\\n14| \\t\\tf()\\n15| \\t}\\n16| \\t//方式二\\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func main() {\\n6| \\t//方式一\\n7| \\tvar funcList []func()\\n8| \\t\\tfuncList = append(funcList,func(){\\n9| \\t\\tfuncList = append(funcList,func(){\\n10| \\t\\t\\tfmt.Println(i)\\n11| \\t\\t})\\n12| \\t}\\n13| \\tfor _,f := range funcList{\\n14| \\t\\tf()\\n15| \\t}\\n16| \\t//方式二\\n17| \\tvar funcList2 []func()\\n18| \\tfor i:=0;i<3;i++{\\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func main() {\\n6| \\t//方式一\\n7| \\tvar funcList []func()\\n8| \\tfor i:=0;i<3;i++{\\n9| \\t\\tfuncList = append(funcList,func(){\\n10| \\t\\t\\tfmt.Println(i)\\n```\\n\\n```\\n9| \\t\\tfuncList = append(funcList,func(){\\n10| \\t\\t\\tfmt.Println(i)\\n11| \\t\\t})\\n12| \\t}\\n13| \\tfor _,f := range funcList{\\n14| \\t\\tf()\\n15| \\t}\\n16| \\t//方式二\\n17| \\tvar funcList2 []func()\\n18| \\tfor i:=0;i<3;i++{\\n19| \\t\\tfuncList2 = append(funcList2,func(){\\n20| \\t\\tfuncList2 = append(funcList2,func(){\\n21| \\t\\t\\tfmt.Println(j)\\n22| \\t\\t})\\n23| \\t}\\n24| \\tfor _,f := range funcList2{\\n25| \\t\\tf()\\n26| \\t}\\n27| \\t//方式三\\n28| \\tvar funcList3 []func(int)\\n29| \\tfor i:=0;i<3;i++{\\n```\\n\\n```\\n17| \\tvar funcList2 []func()\\n18| \\tfor i:=0;i<3;i++{\\n19| \\t\\tj := i\\n20| \\t\\tfuncList2 = append(funcList2,func(){\\n21| \\t\\t\\tfmt.Println(j)\\n22| \\t\\t})\\n23| \\t}\\n24| \\tfor _,f := range funcList2{\\n25| \\t\\tf()\\n26| \\t}\\n27| \\tvar funcList3 []func(int)\\n28| \\tvar funcList3 []func(int)\\n29| \\tfor i:=0;i<3;i++{\\n30| \\t\\tfuncList3 = append(funcList3,func(i int){\\n31| \\t\\t\\tfmt.Println(i)\\n32| \\t\\t})\\n33| \\t}\\n34| \\tfor i,f := range funcList3{\\n35| \\t\\tf(i)\\n36| \\t}\\n37| }\\n```\\n\\n```\\n19| \\t\\tj := i\\n20| \\t\\tfuncList2 = append(funcList2,func(){\\n21| \\t\\t\\tfmt.Println(j)\\n22| \\t\\t})\\n23| \\t}\\n24| \\tfor _,f := range funcList2{\\n25| \\t\\tf()\\n26| \\t}\\n27| \\t//方式三\\n28| \\tvar funcList3 []func(int)\\n29| \\t\\tfuncList3 = append(funcList3,func(i int){\\n30| \\t\\tfuncList3 = append(funcList3,func(i int){\\n31| \\t\\t\\tfmt.Println(i)\\n32| \\t\\t})\\n33| \\t}\\n34| \\tfor i,f := range funcList3{\\n35| \\t\\tf(i)\\n36| \\t}\\n37| }\\n38| \\n```\\n\\n```\\n6| \\t//方式一\\n7| \\tvar funcList []func()\\n8| \\tfor i:=0;i<3;i++{\\n9| \\t\\tfuncList = append(funcList,func(){\\n10| \\t\\t\\tfmt.Println(i)\\n11| \\t\\t})\\n12| \\t}\\n13| \\tfor _,f := range funcList{\\n14| \\t\\tf()\\n15| \\t}\\n16| \\tvar funcList2 []func()\\n17| \\tvar funcList2 []func()\\n18| \\tfor i:=0;i<3;i++{\\n19| \\t\\tj := i\\n20| \\t\\tfuncList2 = append(funcList2,func(){\\n21| \\t\\t\\tfmt.Println(j)\\n22| \\t\\t})\\n23| \\t}\\n24| \\tfor _,f := range funcList2{\\n25| \\t\\tf()\\n26| \\t}\\n```\\n\\n```\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func main() {\\n6| \\t//方式一\\n7| \\tvar funcList []func()\\n8| \\tfor i:=0;i<3;i++{\\n9| \\t\\tfuncList = append(funcList,func(){\\n10| \\t\\t\\tfmt.Println(i)\\n11| \\t\\t})\\n12| \\tfor _,f := range funcList{\\n13| \\tfor _,f := range funcList{\\n14| \\t\\tf()\\n15| \\t}\\n16| \\t//方式二\\n17| \\tvar funcList2 []func()\\n18| \\tfor i:=0;i<3;i++{\\n19| \\t\\tj := i\\n20| \\t\\tfuncList2 = append(funcList2,func(){\\n21| \\t\\t\\tfmt.Println(j)\\n22| \\t\\t})\\n```\\n\\n\",\"tool_call_id\":\"call_fd4080bc067eef39\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
176 headers:
598 headers:
177 Accept:
599 Accept:
178 - application/json
600 - application/json
@@ -189,131 +611,139 @@ interactions:
189 content_length: -1
611 content_length: -1
190 uncompressed: true
612 uncompressed: true
191 body: |+
613 body: |+
192− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
614+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
615+
616+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Found"},"finish_reason":null}]}
617+
618+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}]}
619+
620+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"30 matches across "},"finish_reason":null}]}
621+
622+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"30 repositories. Here"},"finish_reason":null}]}
193
623
194− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Found"},"finish_reason":null}]}
624+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" are some highlights"},"finish_reason":null}]}
195
625
196− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}]}
626+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":\n\n| #"},"finish_reason":null}]}
197
627
198− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"30 matches across "},"finish_reason":null}]}
628+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" | Repository"},"finish_reason":null}]}
199
629
200− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"30 repositories. Here"},"finish_reason":null}]}
630+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" | File | Context"},"finish_reason":null}]}
201
631
202− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" are some notable results"},"finish_reason":null}]}
632+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |\n|---|"},"finish_reason":null}]}
203
633
204− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":\n\n| #"},"finish_reason":null}]}
634+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-----------|------|"},"finish_reason":null}]}
205
635
206− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" | Repository"},"finish_reason":null}]}
636+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"---------|\n| "},"finish_reason":null}]}
207
637
208− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" | File |\n"},"finish_reason":null}]}
638+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"1 | `github"},"finish_reason":null}]}
209
639
210− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|---|-----------"},"finish_reason":null}]}
640+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".com/callicoder"},"finish_reason":null}]}
211
641
212− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|------"},"finish_reason":null}]}
642+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/golang-tutorials"},"finish_reason":null}]}
213
643
214− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|\n| "},"finish_reason":null}]}
644+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` | `06"},"finish_reason":null}]}
215
645
216− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"1 | `github"},"finish_reason":null}]}
646+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-functions/01-function"},"finish_reason":null}]}
217
647
218− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".com/DQNE"},"finish_reason":null}]}
648+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-declaration/main.go"},"finish_reason":null}]}
219
649
220− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"O/minigo`"},"finish_reason":null}]}
650+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` | Simple function"},"finish_reason":null}]}
221
651
222− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" | `t/sources"},"finish_reason":null}]}
652+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" averaging example"},"finish_reason":null}]}
223
653
224− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/main.go` |\n"},"finish_reason":null}]}
654+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |\n| 2"},"finish_reason":null}]}
225
655
226− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"| 2 |"},"finish_reason":null}]}
656+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" | `github.com"},"finish_reason":null}]}
227
657
228− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `github.com/D"},"finish_reason":null}]}
658+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/juanfont/head"},"finish_reason":null}]}
229
659
230− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"QNEO/min"},"finish_reason":null}]}
660+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"scale` | `"},"finish_reason":null}]}
231
661
232− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"igo` | `"},"finish_reason":null}]}
662+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"cmd/hi/main"},"finish_reason":null}]}
233
663
234− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"t/funcre"},"finish_reason":null}]}
664+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go` | Integration"},"finish_reason":null}]}
235
665
236− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"f/funcre"},"finish_reason":null}]}
666+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" test runner CLI"},"finish_reason":null}]}
237
667
238− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"f.go` |\n"},"finish_reason":null}]}
668+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" using `command`"},"finish_reason":null}]}
239
669
240− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"| 3 |"},"finish_reason":null}]}
670+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" package |\n| "},"finish_reason":null}]}
241
671
242− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `github.com/"},"finish_reason":null}]}
672+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"3 | `github"},"finish_reason":null}]}
243
673
244− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"charmbracelet/h"},"finish_reason":null}]}
674+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".com/ScottAI"},"finish_reason":null}]}
245
675
246− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"uh` | `"},"finish_reason":null}]}
676+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/book` | `"},"finish_reason":null}]}
247
677
248− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"examples/dynamic/d"},"finish_reason":null}]}
678+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ch04/4"},"finish_reason":null}]}
249
679
250− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ynamic-increment/main"},"finish_reason":null}]}
680+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".1/clo"},"finish_reason":null}]}
251
681
252− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go` |\n|"},"finish_reason":null}]}
682+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"2/main.go`"},"finish_reason":null}]}
253
683
254− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" 4 | `"},"finish_reason":null}]}
684+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" | Closure patterns"},"finish_reason":null}]}
255
685
256− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"github.com/mud"},"finish_reason":null}]}
686+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" in Go |\n\n"},"finish_reason":null}]}
257
687
258− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ler/LocalAI"},"finish_reason":null}]}
688+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"The search returned "},"finish_reason":null}]}
259
689
260− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` | `backend"},"finish_reason":null}]}
690+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"30 results ("},"finish_reason":null}]}
261
691
262− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/go/qwen3"},"finish_reason":null}]}
692+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"the"},"finish_reason":null}]}
263
693
264− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-tts-cpp"},"finish_reason":null}]}
694+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" max"},"finish_reason":null}]}
265
695
266− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/main.go` |\n"},"finish_reason":null}]}
696+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"). To narrow"},"finish_reason":null}]}
267
697
268− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"| 5 |"},"finish_reason":null}]}
698+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" down, you could"},"finish_reason":null}]}
269
699
270− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `github.com/m"},"finish_reason":null}]}
700+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" add filters"},"finish_reason":null}]}
271
701
272− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"udler/Local"},"finish_reason":null}]}
702+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" like:\n"},"finish_reason":null}]}
273
703
274− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"AI` | `"},"finish_reason":null}]}
704+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"- `func"},"finish_reason":null}]}
275
705
276− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"backend/go/ace"},"finish_reason":null}]}
706+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" main lang"},"finish_reason":null}]}
277
707
278− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"step-cpp/main"},"finish_reason":null}]}
708+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":go"},"finish_reason":null}]}
279
709
280− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go` |\n\nThe"},"finish_reason":null}]}
710+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" repo:github.com"},"finish_reason":null}]}
281
711
282− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" search returned 30"},"finish_reason":null}]}
712+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/someorg"},"finish_reason":null}]}
283
713
284− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" results"},"finish_reason":null}]}
714+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` —"},"finish_reason":null}]}
285
715
286− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" ("},"finish_reason":null}]}
716+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" limit"},"finish_reason":null}]}
287
717
288− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"the max"},"finish_reason":null}]}
718+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" to a"},"finish_reason":null}]}
289
719
290− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"). To"},"finish_reason":null}]}
720+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" specific repo\n-"},"finish_reason":null}]}
291
721
292− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" narrow results"},"finish_reason":null}]}
722+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `func main lang"},"finish_reason":null}]}
293
723
294− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":", you can"},"finish_reason":null}]}
724+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":go file:"},"finish_reason":null}]}
295
725
296− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" add filters"},"finish_reason":null}]}
726+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"cmd/` —"},"finish_reason":null}]}
297
727
298− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" like `repo:`"},"finish_reason":null}]}
728+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" only files"},"finish_reason":null}]}
299
729
300− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" or `"},"finish_reason":null}]}
730+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" under"},"finish_reason":null}]}
301
731
302− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"file:` —"},"finish_reason":null}]}
732+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `cmd/`\n"},"finish_reason":null}]}
303
733
304− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" e.g.,"},"finish_reason":null}]}
734+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"- `func main"},"finish_reason":null}]}
305
735
306− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `func main lang"},"finish_reason":null}]}
736+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" lang:go -"},"finish_reason":null}]}
307
737
308− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":go"},"finish_reason":null}]}
738+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"test"},"finish_reason":null}]}
309
739
310− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" repo:charm"},"finish_reason":null}]}
740+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` — exclude"},"finish_reason":null}]}
311
741
312− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"bracelet`."},"finish_reason":null}]}
742+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" test files"},"finish_reason":null}]}
313
743
314− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
744+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
315
745
316− data: {"id":"chatcmpl-f232a280dde0afcdd49ea590","object":"chat.completion.chunk","created":1781217105,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":4315,"completion_tokens":204,"total_tokens":11650,"prompt_tokens_details":{"cached_tokens":7131},"cost":{"usd":0.0069386000000000005,"hypercredits":0.138772},"remaining":{"hypercredits":0}}}
746+ data: {"id":"chatcmpl-60939a69ff5a943cc63964e4","object":"chat.completion.chunk","created":1781460030,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":11483,"completion_tokens":205,"total_tokens":11731,"prompt_tokens_details":{"cached_tokens":43},"cost":{"usd":0.0169782,"hypercredits":0.339564},"remaining":{"hypercredits":0}}}
317
747
318 data: [DONE]
748 data: [DONE]
319
749
@@ -322,4 +752,4 @@ interactions:
322 - text/event-stream
752 - text/event-stream
323 status: 200 OK
753 status: 200 OK
324 code: 200
754 code: 200
325− duration: 791.636348ms
755+ duration: 1.128842584s
internal/agent/testdata/TestCoderAgent/glm-5.1/update_a_file.yaml+561−61
@@ -6,9 +6,9 @@ interactions:
6 proto: HTTP/1.1
6 proto: HTTP/1.1
7 proto_major: 1
7 proto_major: 1
8 proto_minor: 1
8 proto_minor: 1
9− content_length: 33960
9+ content_length: 828
10 host: ""
10 host: ""
11− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"update the main.go file by changing the print to say hello from crush\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
11+ body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nupdate the main.go file by changing the print to say hello from crush\n <think>\n\n</think>","role":"user"}],"model":"gpt-oss-120b","max_completion_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
12 headers:
12 headers:
13 Accept:
13 Accept:
14 - application/json
14 - application/json
@@ -25,27 +25,515 @@ interactions:
25 content_length: -1
25 content_length: -1
26 uncompressed: true
26 uncompressed: true
27 body: |+
27 body: |+
28− data: {"id":"chatcmpl-beefec61ebca8e35550e44d3","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
29+
30+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"User"},"finish_reason":null}]}
31+
32+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" wants"},"finish_reason":null}]}
33+
34+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
35+
36+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
37+
38+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
39+
40+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
41+
42+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
43+
44+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
45+
46+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
47+
48+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
49+
50+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"update"},"finish_reason":null}]}
51+
52+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
53+
54+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
55+
56+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
57+
58+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
59+
60+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" by"},"finish_reason":null}]}
61+
62+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" changing"},"finish_reason":null}]}
63+
64+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
65+
66+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" print"},"finish_reason":null}]}
67+
68+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
69+
70+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" say"},"finish_reason":null}]}
71+
72+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" hello"},"finish_reason":null}]}
73+
74+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
75+
76+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" crush"},"finish_reason":null}]}
77+
78+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
79+
80+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
81+
82+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" should"},"finish_reason":null}]}
83+
84+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
85+
86+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
87+
88+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
89+
90+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
91+
92+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
93+
94+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
95+
96+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
97+
98+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
99+
100+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
101+
102+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
103+
104+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Should"},"finish_reason":null}]}
105+
106+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summarize"},"finish_reason":null}]}
107+
108+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
109+
110+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Something"},"finish_reason":null}]}
111+
112+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" like"},"finish_reason":null}]}
113+
114+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
115+
116+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Update"},"finish_reason":null}]}
117+
118+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
119+
120+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
121+
122+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
123+
124+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" print"},"finish_reason":null}]}
125+
126+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
127+
128+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
129+
130+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
131+
132+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" crush"},"finish_reason":null}]}
133+
134+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
135+
136+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
137+
138+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
139+
140+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
141+
142+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
143+
144+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Update"},"finish_reason":null}]}
145+
146+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
147+
148+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
149+
150+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
151+
152+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" print"},"finish_reason":null}]}
153+
154+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
155+
156+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
157+
158+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" crush"},"finish_reason":null}]}
159+
160+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
161+
162+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
163+
164+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
165+
166+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"39"},"finish_reason":null}]}
167+
168+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"?"},"finish_reason":null}]}
169+
170+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
171+
172+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
173+
174+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
175+
176+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Update"},"finish_reason":null}]}
177+
178+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
179+
180+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
181+
182+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
183+
184+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
185+
186+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
187+
188+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
189+
190+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
191+
192+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
193+
194+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
195+
196+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
197+
198+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
199+
200+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
201+
202+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
203+
204+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
205+
206+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
207+
208+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
209+
210+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
211+
212+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
213+
214+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" print"},"finish_reason":null}]}
215+
216+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
217+
218+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
219+
220+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
221+
222+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
223+
224+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
225+
226+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
227+
228+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
229+
230+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
231+
232+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
233+
234+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
235+
236+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
237+
238+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
239+
240+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
241+
242+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
243+
244+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
245+
246+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
247+
248+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
249+
250+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" crush"},"finish_reason":null}]}
251+
252+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
253+
254+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
255+
256+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
257+
258+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
259+
260+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" total"},"finish_reason":null}]}
261+
262+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" letters"},"finish_reason":null}]}
263+
264+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"+"},"finish_reason":null}]}
265+
266+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"spaces"},"finish_reason":null}]}
267+
268+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
269+
270+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
271+
272+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
273+
274+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"+"},"finish_reason":null}]}
275+
276+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
277+
278+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"+"},"finish_reason":null}]}
29
279
30− data: {"id":"chatcmpl-beefec61ebca8e35550e44d3","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_7abd9b53c0447ae3","type":"function","index":0,"function":{"name":"view","arguments":""}}]},"finish_reason":null}]}
280+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
31
281
32− data: {"id":"chatcmpl-beefec61ebca8e35550e44d3","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"file_path\": "}}]},"finish_reason":null}]}
282+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"+"},"finish_reason":null}]}
33
283
34− data: {"id":"chatcmpl-beefec61ebca8e35550e44d3","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/tmp/crush"}}]},"finish_reason":null}]}
284+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
35
285
36− data: {"id":"chatcmpl-beefec61ebca8e35550e44d3","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-test/TestCoderAgent"}}]},"finish_reason":null}]}
286+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"+"},"finish_reason":null}]}
37
287
38− data: {"id":"chatcmpl-beefec61ebca8e35550e44d3","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/glm-5"}}]},"finish_reason":null}]}
288+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
39
289
40− data: {"id":"chatcmpl-beefec61ebca8e35550e44d3","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".1/update"}}]},"finish_reason":null}]}
290+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"+"},"finish_reason":null}]}
41
291
42− data: {"id":"chatcmpl-beefec61ebca8e35550e44d3","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_a_file/main.go"}}]},"finish_reason":null}]}
292+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
43
293
44− data: {"id":"chatcmpl-beefec61ebca8e35550e44d3","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"}"}}]},"finish_reason":null}]}
294+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"+"},"finish_reason":null}]}
45
295
46− data: {"id":"chatcmpl-beefec61ebca8e35550e44d3","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
296+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
47
297
48− data: {"id":"chatcmpl-beefec61ebca8e35550e44d3","object":"chat.completion.chunk","created":1781217085,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":682,"completion_tokens":27,"total_tokens":7840,"prompt_tokens_details":{"cached_tokens":7131},"cost":{"usd":0.0010736,"hypercredits":0.021472},"remaining":{"hypercredits":0}}}
298+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"+"},"finish_reason":null}]}
299+
300+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
301+
302+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"+"},"finish_reason":null}]}
303+
304+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
305+
306+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"+"},"finish_reason":null}]}
307+
308+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
309+
310+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"+"},"finish_reason":null}]}
311+
312+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
313+
314+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"+"},"finish_reason":null}]}
315+
316+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
317+
318+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"+"},"finish_reason":null}]}
319+
320+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
321+
322+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
323+
324+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
325+
326+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"40"},"finish_reason":null}]}
327+
328+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"?"},"finish_reason":null}]}
329+
330+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Actually"},"finish_reason":null}]}
331+
332+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" compute"},"finish_reason":null}]}
333+
334+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
335+
336+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
337+
338+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Update"},"finish_reason":null}]}
339+
340+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
341+
342+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
343+
344+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
345+
346+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
347+
348+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" then"},"finish_reason":null}]}
349+
350+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
351+
352+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
353+
354+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
355+
356+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
357+
358+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
359+
360+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
361+
362+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
363+
364+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"main"},"finish_reason":null}]}
365+
366+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
367+
368+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"("},"finish_reason":null}]}
369+
370+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
371+
372+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
373+
374+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"14"},"finish_reason":null}]}
375+
376+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
377+
378+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
379+
380+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
381+
382+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"15"},"finish_reason":null}]}
383+
384+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
385+
386+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
387+
388+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"to"},"finish_reason":null}]}
389+
390+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"("},"finish_reason":null}]}
391+
392+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
393+
394+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
395+
396+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
397+
398+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
399+
400+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
401+
402+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
403+
404+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
405+
406+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
407+
408+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
409+
410+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"print"},"finish_reason":null}]}
411+
412+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"("},"finish_reason":null}]}
413+
414+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
415+
416+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
417+
418+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
419+
420+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
421+
422+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
423+
424+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
425+
426+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
427+
428+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
429+
430+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
431+
432+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
433+
434+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"("},"finish_reason":null}]}
435+
436+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
437+
438+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
439+
440+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
441+
442+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
443+
444+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
445+
446+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
447+
448+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"30"},"finish_reason":null}]}
449+
450+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
451+
452+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
453+
454+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"from"},"finish_reason":null}]}
455+
456+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"("},"finish_reason":null}]}
457+
458+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
459+
460+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
461+
462+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
463+
464+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
465+
466+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
467+
468+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
469+
470+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
471+
472+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
473+
474+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
475+
476+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"cr"},"finish_reason":null}]}
477+
478+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ush"},"finish_reason":null}]}
479+
480+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"("},"finish_reason":null}]}
481+
482+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
483+
484+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
485+
486+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"40"},"finish_reason":null}]}
487+
488+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
489+
490+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
491+
492+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
493+
494+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"40"},"finish_reason":null}]}
495+
496+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
497+
498+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
499+
500+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" within"},"finish_reason":null}]}
501+
502+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" limit"},"finish_reason":null}]}
503+
504+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
505+
506+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
507+
508+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
509+
510+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
511+
512+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
513+
514+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
515+
516+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
517+
518+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Update"},"finish_reason":null}]}
519+
520+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" main"},"finish_reason":null}]}
521+
522+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
523+
524+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}]}
525+
526+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" print"},"finish_reason":null}]}
527+
528+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Hello"},"finish_reason":null}]}
529+
530+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" from"},"finish_reason":null}]}
531+
532+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" crush"},"finish_reason":null}]}
533+
534+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
535+
536+ data: {"id":"chatcmpl-426d89f203ec868303e1b83e","object":"chat.completion.chunk","created":1781459478,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":218,"completion_tokens":262,"total_tokens":480,"completion_tokens_details":{"reasoning_tokens":245},"cost":{"usd":0.00038356400000000003,"hypercredits":0.00767128},"remaining":{"hypercredits":0}}}
49
537
50 data: [DONE]
538 data: [DONE]
51
539
@@ -54,15 +542,15 @@ interactions:
54 - text/event-stream
542 - text/event-stream
55 status: 200 OK
543 status: 200 OK
56 code: 200
544 code: 200
57− duration: 539.485036ms
545+ duration: 561.885667ms
58- id: 1
546- id: 1
59 request:
547 request:
60 proto: HTTP/1.1
548 proto: HTTP/1.1
61 proto_major: 1
549 proto_major: 1
62 proto_minor: 1
550 proto_minor: 1
63− content_length: 828
551+ content_length: 35671
64 host: ""
552 host: ""
65− body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nupdate the main.go file by changing the print to say hello from crush\n <think>\n\n</think>","role":"user"}],"model":"gpt-oss-120b","max_completion_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
553+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"update the main.go file by changing the print to say hello from crush\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
66 headers:
554 headers:
67 Accept:
555 Accept:
68 - application/json
556 - application/json
@@ -79,29 +567,31 @@ interactions:
79 content_length: -1
567 content_length: -1
80 uncompressed: true
568 uncompressed: true
81 body: |+
569 body: |+
82− data: {"id":"chatcmpl-ae710f006f69d95a08f315d1","object":"chat.completion.chunk","created":1781217086,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
570+ data: {"id":"chatcmpl-e3a52f289865d7409914c8e4","object":"chat.completion.chunk","created":1781459606,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
571+
572+ data: {"id":"chatcmpl-e3a52f289865d7409914c8e4","object":"chat.completion.chunk","created":1781459606,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_8def74a4017a5acd","type":"function","index":0,"function":{"name":"view","arguments":""}}]},"finish_reason":null}]}
83
573
84− data: {"id":"chatcmpl-ae710f006f69d95a08f315d1","object":"chat.completion.chunk","created":1781217086,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
574+ data: {"id":"chatcmpl-e3a52f289865d7409914c8e4","object":"chat.completion.chunk","created":1781459606,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
85
575
86− data: {"id":"chatcmpl-ae710f006f69d95a08f315d1","object":"chat.completion.chunk","created":1781217086,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user wants a concise title for the content. The content is: \""},"finish_reason":null}]}
576+ data: {"id":"chatcmpl-e3a52f289865d7409914c8e4","object":"chat.completion.chunk","created":1781459606,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": \"/tmp"}}]},"finish_reason":null}]}
87
577
88− data: {"id":"chatcmpl-ae710f006f69d95a08f315d1","object":"chat.completion.chunk","created":1781217086,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"update the main.go file by changing the print to say hello from crush\". Title"},"finish_reason":null}]}
578+ data: {"id":"chatcmpl-e3a52f289865d7409914c8e4","object":"chat.completion.chunk","created":1781459606,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/crush"}}]},"finish_reason":null}]}
89
579
90− data: {"id":"chatcmpl-ae710f006f69d95a08f315d1","object":"chat.completion.chunk","created":1781217086,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" should be short, \u003c= "},"finish_reason":null}]}
580+ data: {"id":"chatcmpl-e3a52f289865d7409914c8e4","object":"chat.completion.chunk","created":1781459606,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-test/Test"}}]},"finish_reason":null}]}
91
581
92− data: {"id":"chatcmpl-ae710f006f69d95a08f315d1","object":"chat.completion.chunk","created":1781217086,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50 chars, in same language (English"},"finish_reason":null}]}
582+ data: {"id":"chatcmpl-e3a52f289865d7409914c8e4","object":"chat.completion.chunk","created":1781459606,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"CoderAgent"}}]},"finish_reason":null}]}
93
583
94− data: {"id":"chatcmpl-ae710f006f69d95a08f315d1","object":"chat.completion.chunk","created":1781217086,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"). Summarize: \"Update main.go to print hello from crush"},"finish_reason":null}]}
584+ data: {"id":"chatcmpl-e3a52f289865d7409914c8e4","object":"chat.completion.chunk","created":1781459606,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/glm-"}}]},"finish_reason":null}]}
95
585
96− data: {"id":"chatcmpl-ae710f006f69d95a08f315d1","object":"chat.completion.chunk","created":1781217086,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\". That's under 50 chars. No quotes"},"finish_reason":null}]}
586+ data: {"id":"chatcmpl-e3a52f289865d7409914c8e4","object":"chat.completion.chunk","created":1781459606,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"5.1/update"}}]},"finish_reason":null}]}
97
587
98− data: {"id":"chatcmpl-ae710f006f69d95a08f315d1","object":"chat.completion.chunk","created":1781217086,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":". One line."},"finish_reason":null}]}
588+ data: {"id":"chatcmpl-e3a52f289865d7409914c8e4","object":"chat.completion.chunk","created":1781459606,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_a_file"}}]},"finish_reason":null}]}
99
589
100− data: {"id":"chatcmpl-ae710f006f69d95a08f315d1","object":"chat.completion.chunk","created":1781217086,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Update main.go to print hello from crush"},"finish_reason":null}]}
590+ data: {"id":"chatcmpl-e3a52f289865d7409914c8e4","object":"chat.completion.chunk","created":1781459606,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/main.go\"}"}}]},"finish_reason":null}]}
101
591
102− data: {"id":"chatcmpl-ae710f006f69d95a08f315d1","object":"chat.completion.chunk","created":1781217086,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
592+ data: {"id":"chatcmpl-e3a52f289865d7409914c8e4","object":"chat.completion.chunk","created":1781459606,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
103
593
104− data: {"id":"chatcmpl-ae710f006f69d95a08f315d1","object":"chat.completion.chunk","created":1781217086,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":218,"completion_tokens":90,"total_tokens":308,"completion_tokens_details":{"reasoning_tokens":72},"cost":{"usd":0.000143992,"hypercredits":0.0028798400000000003},"remaining":{"hypercredits":0}}}
594+ data: {"id":"chatcmpl-e3a52f289865d7409914c8e4","object":"chat.completion.chunk","created":1781459606,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":8125,"completion_tokens":27,"total_tokens":8195,"prompt_tokens_details":{"cached_tokens":43},"cost":{"usd":0.0114938,"hypercredits":0.229876},"remaining":{"hypercredits":0}}}
105
595
106 data: [DONE]
596 data: [DONE]
107
597
@@ -110,15 +600,15 @@ interactions:
110 - text/event-stream
600 - text/event-stream
111 status: 200 OK
601 status: 200 OK
112 code: 200
602 code: 200
113− duration: 1.034942576s
603+ duration: 2m7.810398542s
114- id: 2
604- id: 2
115 request:
605 request:
116 proto: HTTP/1.1
606 proto: HTTP/1.1
117 proto_major: 1
607 proto_major: 1
118 proto_minor: 1
608 proto_minor: 1
119− content_length: 34397
609+ content_length: 36108
120 host: ""
610 host: ""
121− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"update the main.go file by changing the print to say hello from crush\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_7abd9b53c0447ae3\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<file>\\n 1|package main\\n 2|\\n 3|import \\\"fmt\\\"\\n 4|\\n 5|func main() {\\n 6|\\tfmt.Println(\\\"Hello, World!\\\")\\n 7|}\\n 8|\\n</file>\\n\",\"tool_call_id\":\"call_7abd9b53c0447ae3\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
611+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"update the main.go file by changing the print to say hello from crush\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_8def74a4017a5acd\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<file>\\n 1|package main\\n 2|\\n 3|import \\\"fmt\\\"\\n 4|\\n 5|func main() {\\n 6|\\tfmt.Println(\\\"Hello, World!\\\")\\n 7|}\\n 8|\\n</file>\\n\",\"tool_call_id\":\"call_8def74a4017a5acd\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
122 headers:
612 headers:
123 Accept:
613 Accept:
124 - application/json
614 - application/json
@@ -135,41 +625,49 @@ interactions:
135 content_length: -1
625 content_length: -1
136 uncompressed: true
626 uncompressed: true
137 body: |+
627 body: |+
138− data: {"id":"chatcmpl-e91713172558d0cbc7c1367f","object":"chat.completion.chunk","created":1781217086,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
628+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
629+
630+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_d43c634cf92ac885","type":"function","index":0,"function":{"name":"edit","arguments":""}}]},"finish_reason":null}]}
631+
632+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
139
633
140− data: {"id":"chatcmpl-e91713172558d0cbc7c1367f","object":"chat.completion.chunk","created":1781217086,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_9f03a0e52a1ea45d","type":"function","index":0,"function":{"name":"edit","arguments":""}}]},"finish_reason":null}]}
634+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": \"/tmp"}}]},"finish_reason":null}]}
141
635
142− data: {"id":"chatcmpl-e91713172558d0cbc7c1367f","object":"chat.completion.chunk","created":1781217086,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
636+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/crush"}}]},"finish_reason":null}]}
143
637
144− data: {"id":"chatcmpl-e91713172558d0cbc7c1367f","object":"chat.completion.chunk","created":1781217086,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": \"/tmp/c"}}]},"finish_reason":null}]}
638+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-test/Test"}}]},"finish_reason":null}]}
145
639
146− data: {"id":"chatcmpl-e91713172558d0cbc7c1367f","object":"chat.completion.chunk","created":1781217086,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush-test/TestCoder"}}]},"finish_reason":null}]}
640+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"CoderAgent"}}]},"finish_reason":null}]}
147
641
148− data: {"id":"chatcmpl-e91713172558d0cbc7c1367f","object":"chat.completion.chunk","created":1781217086,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Agent/glm-"}}]},"finish_reason":null}]}
642+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/glm-"}}]},"finish_reason":null}]}
149
643
150− data: {"id":"chatcmpl-e91713172558d0cbc7c1367f","object":"chat.completion.chunk","created":1781217086,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"5.1/update"}}]},"finish_reason":null}]}
644+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"5.1/update"}}]},"finish_reason":null}]}
151
645
152− data: {"id":"chatcmpl-e91713172558d0cbc7c1367f","object":"chat.completion.chunk","created":1781217086,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_a_file/main.go"}}]},"finish_reason":null}]}
646+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_a_file"}}]},"finish_reason":null}]}
153
647
154− data: {"id":"chatcmpl-e91713172558d0cbc7c1367f","object":"chat.completion.chunk","created":1781217086,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\", "}}]},"finish_reason":null}]}
648+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/main.go\""}}]},"finish_reason":null}]}
155
649
156− data: {"id":"chatcmpl-e91713172558d0cbc7c1367f","object":"chat.completion.chunk","created":1781217086,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"new_string\": \"\\tfmt"}}]},"finish_reason":null}]}
650+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":", "}}]},"finish_reason":null}]}
157
651
158− data: {"id":"chatcmpl-e91713172558d0cbc7c1367f","object":"chat.completion.chunk","created":1781217086,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".Println(\\\"hello"}}]},"finish_reason":null}]}
652+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"new_string\": \"\\tfmt"}}]},"finish_reason":null}]}
159
653
160− data: {"id":"chatcmpl-e91713172558d0cbc7c1367f","object":"chat.completion.chunk","created":1781217086,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" from crush\\\")\""}}]},"finish_reason":null}]}
654+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".Println(\\\"Hello from"}}]},"finish_reason":null}]}
161
655
162− data: {"id":"chatcmpl-e91713172558d0cbc7c1367f","object":"chat.completion.chunk","created":1781217086,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":", \"old_string\": "}}]},"finish_reason":null}]}
656+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" crush"}}]},"finish_reason":null}]}
163
657
164− data: {"id":"chatcmpl-e91713172558d0cbc7c1367f","object":"chat.completion.chunk","created":1781217086,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"\\tfmt.Println(\\\""}}]},"finish_reason":null}]}
658+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"!\\\")\", "}}]},"finish_reason":null}]}
165
659
166− data: {"id":"chatcmpl-e91713172558d0cbc7c1367f","object":"chat.completion.chunk","created":1781217086,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Hello, World!\\\")"}}]},"finish_reason":null}]}
660+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"old_string\": \"\\tfmt"}}]},"finish_reason":null}]}
167
661
168− data: {"id":"chatcmpl-e91713172558d0cbc7c1367f","object":"chat.completion.chunk","created":1781217086,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"}"}}]},"finish_reason":null}]}
662+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".Println(\\\"Hello,"}}]},"finish_reason":null}]}
169
663
170− data: {"id":"chatcmpl-e91713172558d0cbc7c1367f","object":"chat.completion.chunk","created":1781217086,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
664+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" World!\\\")\""}}]},"finish_reason":null}]}
171
665
172− data: {"id":"chatcmpl-e91713172558d0cbc7c1367f","object":"chat.completion.chunk","created":1781217086,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":62,"completion_tokens":53,"total_tokens":7954,"prompt_tokens_details":{"cached_tokens":7839},"cost":{"usd":0.00032,"hypercredits":0.0064},"remaining":{"hypercredits":0}}}
666+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
667+
668+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
669+
670+ data: {"id":"chatcmpl-2f74c3fb9e7729cdbb783c39","object":"chat.completion.chunk","created":1781459697,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":8213,"completion_tokens":53,"total_tokens":8309,"prompt_tokens_details":{"cached_tokens":43},"cost":{"usd":0.011731399999999998,"hypercredits":0.23462799999999995},"remaining":{"hypercredits":0}}}
173
671
174 data: [DONE]
672 data: [DONE]
175
673
@@ -178,15 +676,15 @@ interactions:
178 - text/event-stream
676 - text/event-stream
179 status: 200 OK
677 status: 200 OK
180 code: 200
678 code: 200
181− duration: 536.172166ms
679+ duration: 1m30.732961083s
182- id: 3
680- id: 3
183 request:
681 request:
184 proto: HTTP/1.1
682 proto: HTTP/1.1
185 proto_major: 1
683 proto_major: 1
186 proto_minor: 1
684 proto_minor: 1
187− content_length: 34903
685+ content_length: 36615
188 host: ""
686 host: ""
189− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"update the main.go file by changing the print to say hello from crush\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_7abd9b53c0447ae3\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<file>\\n 1|package main\\n 2|\\n 3|import \\\"fmt\\\"\\n 4|\\n 5|func main() {\\n 6|\\tfmt.Println(\\\"Hello, World!\\\")\\n 7|}\\n 8|\\n</file>\\n\",\"tool_call_id\":\"call_7abd9b53c0447ae3\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_9f03a0e52a1ea45d\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\\\", \\\"new_string\\\": \\\"\\\\tfmt.Println(\\\\\\\"hello from crush\\\\\\\")\\\", \\\"old_string\\\": \\\"\\\\tfmt.Println(\\\\\\\"Hello, World!\\\\\\\")\\\"}\",\"name\":\"edit\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<result>\\nContent replaced in file: /tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\\n</result>\\n\",\"tool_call_id\":\"call_9f03a0e52a1ea45d\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
687+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"update the main.go file by changing the print to say hello from crush\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_8def74a4017a5acd\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<file>\\n 1|package main\\n 2|\\n 3|import \\\"fmt\\\"\\n 4|\\n 5|func main() {\\n 6|\\tfmt.Println(\\\"Hello, World!\\\")\\n 7|}\\n 8|\\n</file>\\n\",\"tool_call_id\":\"call_8def74a4017a5acd\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_d43c634cf92ac885\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\\\", \\\"new_string\\\": \\\"\\\\tfmt.Println(\\\\\\\"Hello from crush!\\\\\\\")\\\", \\\"old_string\\\": \\\"\\\\tfmt.Println(\\\\\\\"Hello, World!\\\\\\\")\\\"}\",\"name\":\"edit\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<result>\\nContent replaced in file: /tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\\n</result>\\n\",\"tool_call_id\":\"call_d43c634cf92ac885\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
190 headers:
688 headers:
191 Accept:
689 Accept:
192 - application/json
690 - application/json
@@ -203,21 +701,23 @@ interactions:
203 content_length: -1
701 content_length: -1
204 uncompressed: true
702 uncompressed: true
205 body: |+
703 body: |+
206− data: {"id":"chatcmpl-84d16679bfc2d116a61e7d1d","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
704+ data: {"id":"chatcmpl-e17d7ef4fe31e7b20b59f561","object":"chat.completion.chunk","created":1781459792,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
705+
706+ data: {"id":"chatcmpl-e17d7ef4fe31e7b20b59f561","object":"chat.completion.chunk","created":1781459792,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Updated"},"finish_reason":null}]}
207
707
208− data: {"id":"chatcmpl-84d16679bfc2d116a61e7d1d","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Updated"},"finish_reason":null}]}
708+ data: {"id":"chatcmpl-e17d7ef4fe31e7b20b59f561","object":"chat.completion.chunk","created":1781459792,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `main.go:"},"finish_reason":null}]}
209
709
210− data: {"id":"chatcmpl-84d16679bfc2d116a61e7d1d","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `main.go:"},"finish_reason":null}]}
710+ data: {"id":"chatcmpl-e17d7ef4fe31e7b20b59f561","object":"chat.completion.chunk","created":1781459792,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"6` to"},"finish_reason":null}]}
211
711
212− data: {"id":"chatcmpl-84d16679bfc2d116a61e7d1d","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"6` — now"},"finish_reason":null}]}
712+ data: {"id":"chatcmpl-e17d7ef4fe31e7b20b59f561","object":"chat.completion.chunk","created":1781459792,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" print \""},"finish_reason":null}]}
213
713
214− data: {"id":"chatcmpl-84d16679bfc2d116a61e7d1d","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" prints `"},"finish_reason":null}]}
714+ data: {"id":"chatcmpl-e17d7ef4fe31e7b20b59f561","object":"chat.completion.chunk","created":1781459792,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Hello from crush"},"finish_reason":null}]}
215
715
216− data: {"id":"chatcmpl-84d16679bfc2d116a61e7d1d","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"hello from crush`."},"finish_reason":null}]}
716+ data: {"id":"chatcmpl-e17d7ef4fe31e7b20b59f561","object":"chat.completion.chunk","created":1781459792,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"!\""},"finish_reason":null}]}
217
717
218− data: {"id":"chatcmpl-84d16679bfc2d116a61e7d1d","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
718+ data: {"id":"chatcmpl-e17d7ef4fe31e7b20b59f561","object":"chat.completion.chunk","created":1781459792,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
219
719
220− data: {"id":"chatcmpl-84d16679bfc2d116a61e7d1d","object":"chat.completion.chunk","created":1781217087,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":37,"completion_tokens":15,"total_tokens":8005,"prompt_tokens_details":{"cached_tokens":7953},"cost":{"usd":0.0001178,"hypercredits":0.002356},"remaining":{"hypercredits":0}}}
720+ data: {"id":"chatcmpl-e17d7ef4fe31e7b20b59f561","object":"chat.completion.chunk","created":1781459792,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":8302,"completion_tokens":14,"total_tokens":8359,"prompt_tokens_details":{"cached_tokens":43},"cost":{"usd":0.0116844,"hypercredits":0.23368799999999998},"remaining":{"hypercredits":0}}}
221
721
222 data: [DONE]
722 data: [DONE]
223
723
@@ -226,4 +726,4 @@ interactions:
226 - text/event-stream
726 - text/event-stream
227 status: 200 OK
727 status: 200 OK
228 code: 200
728 code: 200
229− duration: 557.726396ms
729+ duration: 1m34.52728375s
internal/agent/testdata/TestCoderAgent/glm-5.1/write_tool.yaml+232−234
@@ -6,9 +6,9 @@ interactions:
6 proto: HTTP/1.1
6 proto: HTTP/1.1
7 proto_major: 1
7 proto_major: 1
8 proto_minor: 1
8 proto_minor: 1
9− content_length: 33997
9+ content_length: 35708
10 host: ""
10 host: ""
11− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/write_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use write to create a new file called config.json with content '{\\\"name\\\": \\\"test\\\", \\\"version\\\": \\\"1.0.0\\\"}'\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
11+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/write_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use write to create a new file called config.json with content '{\\\"name\\\": \\\"test\\\", \\\"version\\\": \\\"1.0.0\\\"}'\",\"role\":\"user\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
12 headers:
12 headers:
13 Accept:
13 Accept:
14 - application/json
14 - application/json
@@ -25,37 +25,37 @@ interactions:
25 content_length: -1
25 content_length: -1
26 uncompressed: true
26 uncompressed: true
27 body: |+
27 body: |+
28− data: {"id":"chatcmpl-152e21e99e39d4cd09b02927","object":"chat.completion.chunk","created":1781217107,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-ed5f438378472db484ddf155","object":"chat.completion.chunk","created":1781460032,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
29
29
30− data: {"id":"chatcmpl-152e21e99e39d4cd09b02927","object":"chat.completion.chunk","created":1781217107,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_a50be13f151171a1","type":"function","index":0,"function":{"name":"write","arguments":""}}]},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-ed5f438378472db484ddf155","object":"chat.completion.chunk","created":1781460032,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_c6ee23d255a24aaa","type":"function","index":0,"function":{"name":"write","arguments":""}}]},"finish_reason":null}]}
31
31
32− data: {"id":"chatcmpl-152e21e99e39d4cd09b02927","object":"chat.completion.chunk","created":1781217107,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"content\": "}}]},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-ed5f438378472db484ddf155","object":"chat.completion.chunk","created":1781460032,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"content\": "}}]},"finish_reason":null}]}
33
33
34− data: {"id":"chatcmpl-152e21e99e39d4cd09b02927","object":"chat.completion.chunk","created":1781217107,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"{\\\"name\\\":"}}]},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-ed5f438378472db484ddf155","object":"chat.completion.chunk","created":1781460032,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"{\\\"name\\\":"}}]},"finish_reason":null}]}
35
35
36− data: {"id":"chatcmpl-152e21e99e39d4cd09b02927","object":"chat.completion.chunk","created":1781217107,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" \\\"test\\\", \\\""}}]},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-ed5f438378472db484ddf155","object":"chat.completion.chunk","created":1781460032,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" \\\"test\\\", \\\""}}]},"finish_reason":null}]}
37
37
38− data: {"id":"chatcmpl-152e21e99e39d4cd09b02927","object":"chat.completion.chunk","created":1781217107,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"version\\\": \\\"1"}}]},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-ed5f438378472db484ddf155","object":"chat.completion.chunk","created":1781460032,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"version\\\": \\\"1"}}]},"finish_reason":null}]}
39
39
40− data: {"id":"chatcmpl-152e21e99e39d4cd09b02927","object":"chat.completion.chunk","created":1781217107,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".0.0"}}]},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-ed5f438378472db484ddf155","object":"chat.completion.chunk","created":1781460032,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".0.0"}}]},"finish_reason":null}]}
41
41
42− data: {"id":"chatcmpl-152e21e99e39d4cd09b02927","object":"chat.completion.chunk","created":1781217107,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\\"}\", "}}]},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-ed5f438378472db484ddf155","object":"chat.completion.chunk","created":1781460032,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\\"}\", "}}]},"finish_reason":null}]}
43
43
44− data: {"id":"chatcmpl-152e21e99e39d4cd09b02927","object":"chat.completion.chunk","created":1781217107,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": \"/tmp"}}]},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-ed5f438378472db484ddf155","object":"chat.completion.chunk","created":1781460032,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": \"/tmp"}}]},"finish_reason":null}]}
45
45
46− data: {"id":"chatcmpl-152e21e99e39d4cd09b02927","object":"chat.completion.chunk","created":1781217107,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/crush-test/Test"}}]},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-ed5f438378472db484ddf155","object":"chat.completion.chunk","created":1781460032,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/crush-test/Test"}}]},"finish_reason":null}]}
47
47
48− data: {"id":"chatcmpl-152e21e99e39d4cd09b02927","object":"chat.completion.chunk","created":1781217107,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"CoderAgent/glm"}}]},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-ed5f438378472db484ddf155","object":"chat.completion.chunk","created":1781460032,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"CoderAgent/glm"}}]},"finish_reason":null}]}
49
49
50− data: {"id":"chatcmpl-152e21e99e39d4cd09b02927","object":"chat.completion.chunk","created":1781217107,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-5.1"}}]},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-ed5f438378472db484ddf155","object":"chat.completion.chunk","created":1781460032,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-5.1"}}]},"finish_reason":null}]}
51
51
52− data: {"id":"chatcmpl-152e21e99e39d4cd09b02927","object":"chat.completion.chunk","created":1781217107,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/write_tool/config.json"}}]},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-ed5f438378472db484ddf155","object":"chat.completion.chunk","created":1781460032,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/write_tool/config.json"}}]},"finish_reason":null}]}
53
53
54− data: {"id":"chatcmpl-152e21e99e39d4cd09b02927","object":"chat.completion.chunk","created":1781217107,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"}"}}]},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-ed5f438378472db484ddf155","object":"chat.completion.chunk","created":1781460032,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"}"}}]},"finish_reason":null}]}
55
55
56− data: {"id":"chatcmpl-152e21e99e39d4cd09b02927","object":"chat.completion.chunk","created":1781217107,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
56+ data: {"id":"chatcmpl-ed5f438378472db484ddf155","object":"chat.completion.chunk","created":1781460032,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
57
57
58− data: {"id":"chatcmpl-152e21e99e39d4cd09b02927","object":"chat.completion.chunk","created":1781217107,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":696,"completion_tokens":47,"total_tokens":7874,"prompt_tokens_details":{"cached_tokens":7131},"cost":{"usd":0.0011811999999999999,"hypercredits":0.023623999999999996},"remaining":{"hypercredits":0}}}
58+ data: {"id":"chatcmpl-ed5f438378472db484ddf155","object":"chat.completion.chunk","created":1781460032,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":696,"completion_tokens":47,"total_tokens":8229,"prompt_tokens_details":{"cached_tokens":7486},"cost":{"usd":0.0011811999999999999,"hypercredits":0.023623999999999996},"remaining":{"hypercredits":0}}}
59
59
60 data: [DONE]
60 data: [DONE]
61
61
@@ -64,15 +64,15 @@ interactions:
64 - text/event-stream
64 - text/event-stream
65 status: 200 OK
65 status: 200 OK
66 code: 200
66 code: 200
67− duration: 605.446395ms
67+ duration: 487.714042ms
68- id: 1
68- id: 1
69 request:
69 request:
70 proto: HTTP/1.1
70 proto: HTTP/1.1
71 proto_major: 1
71 proto_major: 1
72 proto_minor: 1
72 proto_minor: 1
73− content_length: 34463
73+ content_length: 868
74 host: ""
74 host: ""
75− body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/write_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use write to create a new file called config.json with content '{\\\"name\\\": \\\"test\\\", \\\"version\\\": \\\"1.0.0\\\"}'\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_a50be13f151171a1\",\"function\":{\"arguments\":\"{\\\"content\\\": \\\"{\\\\\\\"name\\\\\\\": \\\\\\\"test\\\\\\\", \\\\\\\"version\\\\\\\": \\\\\\\"1.0.0\\\\\\\"}\\\", \\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/write_tool/config.json\\\"}\",\"name\":\"write\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<result>\\nFile successfully written: /tmp/crush-test/TestCoderAgent/glm-5.1/write_tool/config.json\\n</result>\",\"tool_call_id\":\"call_a50be13f151171a1\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond git context\\n - Draft concise (1-2 sentences) message focusing on \\\"why\\\" not \\\"what\\\"\\n - Use clear language, accurate reflection (\\\"add\\\"=new feature, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix)\\n - Avoid generic messages, review draft\\n\\n4. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n6. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\nUse gh command for ALL GitHub tasks. When user asks to create PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n3. Commit changes if needed\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Clear, concise language\\n - Accurate reflection of changes and purpose\\n - Avoid generic summaries\\n - Review draft\\n\\n6. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n ## Summary\\n\\n &lt;1-3 bullet points>\\n\\n ## Test plan\\n\\n [Checklist of TODOs...]\\n\\n\\n \U0001F498 Generated with Crush\\n\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
75+ body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse write to create a new file called config.json with content ''{\"name\": \"test\", \"version\": \"1.0.0\"}''\n <think>\n\n</think>","role":"user"}],"model":"gpt-oss-120b","max_completion_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
76 headers:
76 headers:
77 Accept:
77 Accept:
78 - application/json
78 - application/json
@@ -89,397 +89,395 @@ interactions:
89 content_length: -1
89 content_length: -1
90 uncompressed: true
90 uncompressed: true
91 body: |+
91 body: |+
92− data: {"id":"chatcmpl-6154342b28329ef100f36fc4","object":"chat.completion.chunk","created":1781217108,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
93
93
94− data: {"id":"chatcmpl-6154342b28329ef100f36fc4","object":"chat.completion.chunk","created":1781217108,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Created"},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
95
95
96− data: {"id":"chatcmpl-6154342b28329ef100f36fc4","object":"chat.completion.chunk","created":1781217108,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `config.json`."},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
97
97
98− data: {"id":"chatcmpl-6154342b28329ef100f36fc4","object":"chat.completion.chunk","created":1781217108,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
98+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
99
99
100− data: {"id":"chatcmpl-6154342b28329ef100f36fc4","object":"chat.completion.chunk","created":1781217108,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":777,"completion_tokens":5,"total_tokens":7913,"prompt_tokens_details":{"cached_tokens":7131},"cost":{"usd":0.0011098,"hypercredits":0.022195999999999997},"remaining":{"hypercredits":0}}}
100+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" produce"},"finish_reason":null}]}
101
101
102− data: [DONE]
102+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
103
103
104− headers:
104+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
105− Content-Type:
106− - text/event-stream
107− status: 200 OK
108− code: 200
109− duration: 503.125216ms
110−- id: 2
111− request:
112− proto: HTTP/1.1
113− proto_major: 1
114− proto_minor: 1
115− content_length: 868
116− host: ""
117− body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse write to create a new file called config.json with content ''{\"name\": \"test\", \"version\": \"1.0.0\"}''\n <think>\n\n</think>","role":"user"}],"model":"gpt-oss-120b","max_completion_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
118− headers:
119− Accept:
120− - application/json
121− Content-Type:
122− - application/json
123− User-Agent:
124− - Charm-Crush/devel (https://charm.land/crush)
125− url: https://hyper.charm.land/v1/chat/completions
126− method: POST
127− response:
128− proto: HTTP/2.0
129− proto_major: 2
130− proto_minor: 0
131− content_length: -1
132− uncompressed: true
133− body: |+
134− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
135−
136− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
137
105
138− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
139
107
140− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" produce"},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
141
109
142− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
143
111
144− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
145
113
146− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
147
115
148− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summar"},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
149
117
150− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"izing"},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"),"},"finish_reason":null}]}
151
119
152− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" max"},"finish_reason":null}]}
153
121
154− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user's"},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
155
123
156− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" request"},"finish_reason":null}]}
124+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
157
125
158− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
126+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
159
127
160− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Length"},"finish_reason":null}]}
128+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
161
129
162− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
130+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summarize"},"finish_reason":null}]}
163
131
164− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
132+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
165
133
166− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
134+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" message"},"finish_reason":null}]}
167
135
168− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
169
137
170− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
138+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" The"},"finish_reason":null}]}
171
139
172− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
140+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
173
141
174− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
142+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
175
143
176− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
177
145
178− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
179
147
180− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" write"},"finish_reason":null}]}
181
149
182− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
183
151
184− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
152+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" create"},"finish_reason":null}]}
185
153
186− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
154+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
187
155
188− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" output"},"finish_reason":null}]}
156+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" new"},"finish_reason":null}]}
189
157
190− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
191
159
192− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Should"},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" called"},"finish_reason":null}]}
193
161
194− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" config"},"finish_reason":null}]}
195
163
196− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".json"},"finish_reason":null}]}
197
165
198− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
166+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
199
167
200− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
168+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
201
169
202− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Summ"},"finish_reason":null}]}
170+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '{\""},"finish_reason":null}]}
203
171
204− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ar"},"finish_reason":null}]}
172+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"name"},"finish_reason":null}]}
205
173
206− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ize"},"finish_reason":null}]}
174+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\":"},"finish_reason":null}]}
207
175
208− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
176+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
209
177
210− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
178+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"test"},"finish_reason":null}]}
211
179
212− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Create"},"finish_reason":null}]}
180+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\","},"finish_reason":null}]}
213
181
214− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" config"},"finish_reason":null}]}
182+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
215
183
216− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".json"},"finish_reason":null}]}
184+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"version"},"finish_reason":null}]}
217
185
218− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
186+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\":"},"finish_reason":null}]}
219
187
220− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" JSON"},"finish_reason":null}]}
188+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
221
189
222− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
190+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
223
191
224− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
192+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
225
193
226− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
194+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"0"},"finish_reason":null}]}
227
195
228− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
196+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
229
197
230− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
198+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"0"},"finish_reason":null}]}
231
199
232− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
200+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"}"},"finish_reason":null}]}
233
201
234− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
202+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
235
203
236− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
204+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
237
205
238− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
206+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
239
207
240− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
208+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" could"},"finish_reason":null}]}
241
209
242− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
210+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
243
211
244− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" propose"},"finish_reason":null}]}
212+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
245
213
246− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
214+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Create"},"finish_reason":null}]}
247
215
248− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Create"},"finish_reason":null}]}
216+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" config"},"finish_reason":null}]}
249
217
250− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" config"},"finish_reason":null}]}
218+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".json"},"finish_reason":null}]}
251
219
252− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".json"},"finish_reason":null}]}
220+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
253
221
254− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
222+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" test"},"finish_reason":null}]}
255
223
256− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" test"},"finish_reason":null}]}
224+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" data"},"finish_reason":null}]}
257
225
258− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" JSON"},"finish_reason":null}]}
226+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
259
227
260− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
228+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
261
229
262− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
230+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
263
231
264− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
232+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
265
233
266− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
234+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
267
235
268− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
236+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Create"},"finish_reason":null}]}
269
237
270− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
238+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" config"},"finish_reason":null}]}
271
239
272− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Create"},"finish_reason":null}]}
240+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".json"},"finish_reason":null}]}
273
241
274− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" config"},"finish_reason":null}]}
242+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
275
243
276− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".json"},"finish_reason":null}]}
244+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" test"},"finish_reason":null}]}
277
245
278− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
246+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" data"},"finish_reason":null}]}
279
247
280− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" test"},"finish_reason":null}]}
248+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
281
249
282− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" JSON"},"finish_reason":null}]}
250+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" length"},"finish_reason":null}]}
283
251
284− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
252+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
285
253
286− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
254+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" let's"},"finish_reason":null}]}
287
255
288− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" length"},"finish_reason":null}]}
256+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
289
257
290− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
258+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
291
259
292− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" let's"},"finish_reason":null}]}
260+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" C"},"finish_reason":null}]}
293
261
294− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
262+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
295
263
296− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
264+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
297
265
298− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Create"},"finish_reason":null}]}
266+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
299
267
300− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
268+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"r"},"finish_reason":null}]}
301
269
302− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
270+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
303
271
304− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
272+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
305
273
306− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" +"},"finish_reason":null}]}
274+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
307
275
308− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
276+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
309
277
310− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
278+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
311
279
312− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
280+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
313
281
314− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" =\u003e"},"finish_reason":null}]}
282+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
315
283
316− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
284+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
317
285
318− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
286+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
319
287
320− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" config"},"finish_reason":null}]}
288+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
321
289
322− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".json"},"finish_reason":null}]}
290+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
323
291
324− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
292+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" c"},"finish_reason":null}]}
325
293
326− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
294+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
327
295
328− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
296+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"o"},"finish_reason":null}]}
329
297
330− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" =\u003e"},"finish_reason":null}]}
298+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"9"},"finish_reason":null}]}
331
299
332− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" total"},"finish_reason":null}]}
300+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"n"},"finish_reason":null}]}
333
301
334− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
302+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"10"},"finish_reason":null}]}
335
303
336− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
304+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"f"},"finish_reason":null}]}
337
305
338− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
306+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
339
307
340− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
308+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"i"},"finish_reason":null}]}
341
309
342− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
310+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
343
311
344− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
312+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"g"},"finish_reason":null}]}
345
313
346− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" =\u003e"},"finish_reason":null}]}
314+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
347
315
348− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
316+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
349
317
350− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
318+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"14"},"finish_reason":null}]}
351
319
352− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
320+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"j"},"finish_reason":null}]}
353
321
354− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
322+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"15"},"finish_reason":null}]}
355
323
356− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
324+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"s"},"finish_reason":null}]}
357
325
358− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
326+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"16"},"finish_reason":null}]}
359
327
360− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" =\u003e"},"finish_reason":null}]}
328+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"o"},"finish_reason":null}]}
361
329
362− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
330+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
363
331
364− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
332+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"n"},"finish_reason":null}]}
365
333
366− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
334+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
367
335
368− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
336+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
369
337
370− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
338+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
371
339
372− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" =\u003e"},"finish_reason":null}]}
340+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"w"},"finish_reason":null}]}
373
341
374− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
342+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"20"},"finish_reason":null}]}
375
343
376− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
344+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"i"},"finish_reason":null}]}
377
345
378− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" test"},"finish_reason":null}]}
346+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21"},"finish_reason":null}]}
379
347
380− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
348+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
381
349
382− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
350+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"22"},"finish_reason":null}]}
383
351
384− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
352+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"h"},"finish_reason":null}]}
385
353
386− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" =\u003e"},"finish_reason":null}]}
354+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
387
355
388− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
356+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
389
357
390− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
358+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
391
359
392− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
360+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
393
361
394− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
362+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"25"},"finish_reason":null}]}
395
363
396− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
364+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
397
365
398− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" =\u003e"},"finish_reason":null}]}
366+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"26"},"finish_reason":null}]}
399
367
400− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
368+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"s"},"finish_reason":null}]}
401
369
402− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
370+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
403
371
404− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" JSON"},"finish_reason":null}]}
372+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
405
373
406− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
374+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
407
375
408− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
376+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
409
377
410− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
378+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
411
379
412− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" =\u003e"},"finish_reason":null}]}
380+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"d"},"finish_reason":null}]}
413
381
414− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33"},"finish_reason":null}]}
382+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"30"},"finish_reason":null}]}
415
383
416− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
384+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
417
385
418− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
386+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"31"},"finish_reason":null}]}
419
387
420− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
388+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
421
389
422− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
390+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"32"},"finish_reason":null}]}
423
391
424− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" =\u003e"},"finish_reason":null}]}
392+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
425
393
426− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
394+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33"},"finish_reason":null}]}
427
395
428− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
396+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" =\u003e"},"finish_reason":null}]}
429
397
430− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
398+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
431
399
432− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
400+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33"},"finish_reason":null}]}
433
401
434− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
402+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
435
403
436− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
404+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
437
405
438− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" =\u003e"},"finish_reason":null}]}
406+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
439
407
440− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"41"},"finish_reason":null}]}
408+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
441
409
442− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
410+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Return"},"finish_reason":null}]}
443
411
444− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Under"},"finish_reason":null}]}
412+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" just"},"finish_reason":null}]}
445
413
446− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
414+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
447
415
448− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
416+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
449
417
450− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
418+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
451
419
452− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
420+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Create"},"finish_reason":null}]}
453
421
454− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
422+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" config"},"finish_reason":null}]}
455
423
456− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
424+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".json"},"finish_reason":null}]}
457
425
458− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" colon"},"finish_reason":null}]}
426+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
459
427
460− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
428+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" test"},"finish_reason":null}]}
461
429
462− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
430+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" data"},"finish_reason":null}]}
463
431
464− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
432+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
465
433
466− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Create"},"finish_reason":null}]}
434+ data: {"id":"chatcmpl-b4ece698007c85346d5be7ad","object":"chat.completion.chunk","created":1781460032,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":232,"completion_tokens":179,"total_tokens":411,"completion_tokens_details":{"reasoning_tokens":164},"cost":{"usd":0.00027453600000000003,"hypercredits":0.00549072},"remaining":{"hypercredits":0}}}
467
435
468− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" config"},"finish_reason":null}]}
436+ data: [DONE]
469
437
470− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".json"},"finish_reason":null}]}
438+ headers:
439+ Content-Type:
440+ - text/event-stream
441+ status: 200 OK
442+ code: 200
443+ duration: 442.190875ms
444+- id: 2
445+ request:
446+ proto: HTTP/1.1
447+ proto_major: 1
448+ proto_minor: 1
449+ content_length: 36174
450+ host: ""
451+ body: "{\"messages\":[{\"content\":\"You are Crush, a powerful AI Assistant that runs in the CLI.\\n\\n<critical_rules>\\nThese rules override everything else. Follow them strictly:\\n\\n1. **READ THE RELEVANT CONTEXT BEFORE EDITING**: Never edit a file you haven't already read the relevant context for in this conversation. Once read, you don't need to re-read unless it changed. Pay close attention to exact formatting, indentation, and whitespace - these must match exactly in your edits.\\n2. **BE AUTONOMOUS**: Don't ask questions - search, read, think, decide, act. Break complex tasks into steps and complete them all. Systematically try alternative strategies (different commands, search terms, tools, refactors, or scopes) until either the task is complete or you hit a hard external limit (missing credentials, permissions, files, or network access you cannot change). Only stop for actual blocking errors, not perceived difficulty.\\n3. **TEST AFTER CHANGES**: Run tests immediately after each modification.\\n4. **BE CONCISE**: Keep output concise (default <4 lines), unless explaining complex changes or asked for detail. Conciseness applies to output only, not to thoroughness of work.\\n5. **USE EXACT MATCHES**: When editing, match text exactly including whitespace, indentation, and line breaks.\\n6. **NEVER COMMIT**: Unless user explicitly says \\\"commit\\\". When committing, follow the `<git_commits>` format from the bash tool description exactly, including any configured attribution lines.\\n7. **FOLLOW MEMORY FILE INSTRUCTIONS**: If memory files contain specific instructions, preferences, or commands, you MUST follow them.\\n8. **NEVER ADD COMMENTS**: Only add comments if the user asked you to do so. Focus on *why* not *what*. NEVER communicate with the user through code comments.\\n9. **SECURITY FIRST**: Only assist with defensive security tasks. Refuse to create, modify, or improve code that may be used maliciously.\\n10. **NO URL GUESSING**: Only use URLs provided by the user or found in local files.\\n11. **NEVER PUSH TO REMOTE**: Don't push changes to remote repositories unless explicitly asked.\\n12. **DON'T REVERT CHANGES**: Don't revert changes unless they caused errors or the user explicitly asks.\\n13. **TOOL CONSTRAINTS**: Only use documented tools. Never attempt 'apply_patch' or 'apply_diff' - they don't exist. Use 'edit' or 'multiedit' instead.\\n14. **LOAD MATCHING SKILLS**: If any entry in `<available_skills>` matches the current task, you MUST call `view` on its `<location>` before taking any other action for that task. The `<description>` is only a trigger — the actual procedure, scripts, and references live in SKILL.md. Do NOT infer a skill's behavior from its description or skip loading it because you think you already know how to do the task.\\n15. **LIMIT FILE READS**: Avoid reading entire files, as they can be very large. Read only the sections you need using 'offset' and 'limit' parameters.\\n</critical_rules>\\n\\n<communication_style>\\nKeep responses minimal:\\n- ALWAYS think and respond in the same spoken language the prompt was written in.\\n- Under 4 lines of text (tool use doesn't count)\\n- Conciseness is about **text only**: always fully implement the requested feature, tests, and wiring even if that requires many tool calls.\\n- No preamble (\\\"Here's...\\\", \\\"I'll...\\\")\\n- No postamble (\\\"Let me know...\\\", \\\"Hope this helps...\\\")\\n- One-word answers when possible\\n- No emojis ever\\n- No explanations unless user asks\\n- Never send acknowledgement-only responses; after receiving new context or instructions, immediately continue the task or state the concrete next action you will take.\\n- Use rich Markdown formatting (headings, bullet lists, tables, code fences) for any multi-sentence or explanatory answer; only use plain unformatted text if the user explicitly asks.\\n\\nExamples:\\nuser: what is 2+2?\\nassistant: 4\\n\\nuser: list files in src/\\nassistant: [uses ls tool]\\nfoo.c, bar.c, baz.c\\n\\nuser: which file has the foo implementation?\\nassistant: src/foo.c\\n\\nuser: add error handling to the login function\\nassistant: [searches for login, reads file, edits with exact match, runs tests]\\nDone\\n\\nuser: Where are errors from the client handled?\\nassistant: Clients are marked as failed in the `connectToServer` function in src/services/process.go:712.\\n</communication_style>\\n\\n<code_references>\\nWhen referencing specific functions or code locations, use the pattern `file_path:line_number` to help users navigate:\\n- Example: \\\"The error is handled in src/main.go:45\\\"\\n- Example: \\\"See the implementation in pkg/utils/helper.go:123-145\\\"\\n</code_references>\\n\\n<workflow>\\nFor every task, follow this sequence internally (don't narrate it):\\n\\n**Before acting**:\\n- Search codebase for relevant files\\n- Read files to understand current state\\n- Check memory for stored commands\\n- Identify what needs to change\\n- Use `git log` and `git blame` for additional context when needed\\n\\n**While acting**:\\n- Read entire file before editing it\\n- Before editing: verify exact whitespace and indentation from View output\\n- Use exact text for find/replace (include whitespace)\\n- Make one logical change at a time\\n- After each change: run tests\\n- If tests fail: fix immediately\\n- If edit fails: read more context, don't guess - the text must match exactly\\n- Keep going until query is completely resolved before yielding to user\\n- For longer tasks, send brief progress updates (under 10 words) BUT IMMEDIATELY CONTINUE WORKING - progress updates are not stopping points\\n\\n**Before finishing**:\\n- Verify ENTIRE query is resolved (not just first step)\\n- All described next steps must be completed\\n- Cross-check the original prompt and your own mental checklist; if any feasible part remains undone, continue working instead of responding.\\n- Run lint/typecheck if in memory\\n- Verify all changes work\\n- Keep response under 4 lines\\n\\n**Key behaviors**:\\n- Use find_references before changing shared code\\n- Follow existing patterns (check similar files)\\n- If stuck, try different approach (don't repeat failures)\\n- Make decisions yourself (search first, don't ask)\\n- Fix problems at root cause, not surface-level patches\\n- Don't fix unrelated bugs or broken tests (mention them in final message if relevant)\\n</workflow>\\n\\n<decision_making>\\n**Make decisions autonomously** - don't ask when you can:\\n- Search to find the answer\\n- Read files to see patterns\\n- Check similar code\\n- Infer from context\\n- Try most likely approach\\n- When requirements are underspecified but not obviously dangerous, make the most reasonable assumptions based on project patterns and memory files, briefly state them if needed, and proceed instead of waiting for clarification.\\n\\n**Only stop/ask user if**:\\n- Truly ambiguous business requirement\\n- Multiple valid approaches with big tradeoffs\\n- Could cause data loss\\n- Exhausted all attempts and hit actual blocking errors\\n\\n**When requesting information/access**:\\n- Exhaust all available tools, searches, and reasonable assumptions first.\\n- Never say \\\"Need more info\\\" without detail.\\n- In the same message, list each missing item, why it is required, acceptable substitutes, and what you already attempted.\\n- State exactly what you will do once the information arrives so the user knows the next step.\\n\\nWhen you must stop, first finish all unblocked parts of the request, then clearly report: (a) what you tried, (b) exactly why you are blocked, and (c) the minimal external action required. Don't stop just because one path failed—exhaust multiple plausible approaches first.\\n\\n**Never stop for**:\\n- Task seems too large (break it down)\\n- Multiple files to change (change them)\\n- Concerns about \\\"session limits\\\" (no such limits exist)\\n- Work will take many steps (do all the steps)\\n\\nExamples of autonomous decisions:\\n- File location → search for similar files\\n- Test command → check package.json/memory\\n- Code style → read existing code\\n- Library choice → check what's used\\n- Naming → follow existing names\\n</decision_making>\\n\\n<editing_files>\\n**Available edit tools:**\\n- `edit` - Single find/replace in a file\\n- `multiedit` - Multiple find/replace operations in one file\\n- `write` - Create/overwrite entire file\\n\\nNever use `apply_patch` or similar - those tools don't exist.\\n\\nCritical: ALWAYS read the relevant context of files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the relevant context first - note the EXACT indentation (spaces vs tabs, count)\\n2. Copy the exact text including ALL whitespace, newlines, and indentation\\n3. Include 3-5 lines of context before and after the target\\n4. Verify your old_string would appear exactly once in the file\\n5. If uncertain about whitespace, include more surrounding context\\n6. Verify edit succeeded\\n7. Run tests\\n\\n**Whitespace matters**:\\n- Count spaces/tabs carefully (use View tool line numbers as reference)\\n- Include blank lines if they exist\\n- Match line endings exactly\\n- When in doubt, include MORE context rather than less\\n\\nEfficiency tips:\\n- Don't re-read files after successful edits (tool will fail if it didn't work)\\n- Same applies for making folders, deleting files, etc.\\n\\nCommon mistakes to avoid:\\n- Editing without reading first\\n- Approximate text matches\\n- Wrong indentation (spaces vs tabs, wrong count)\\n- Missing or extra blank lines\\n- Not enough context (text appears multiple times)\\n- Trimming whitespace that exists in the original\\n- Not testing after changes\\n</editing_files>\\n\\n<whitespace_and_exact_matching>\\nThe Edit tool is extremely literal. \\\"Close enough\\\" will fail.\\n\\n**Before every edit**:\\n1. View the file and locate the exact lines to change\\n2. Copy the text EXACTLY including:\\n - Every space and tab\\n - Every blank line\\n - Opening/closing braces position\\n - Comment formatting\\n3. Include enough surrounding lines (3-5) to make it unique\\n4. Double-check indentation level matches\\n\\n**Common failures**:\\n- `func foo() {` vs `func foo(){` (space before brace)\\n- Tab vs 4 spaces vs 2 spaces\\n- Missing blank line before/after\\n- `// comment` vs `//comment` (space after //)\\n- Different number of spaces in indentation\\n\\n**If edit fails**:\\n- View the file again at the specific location\\n- Copy even more context\\n- Check for tabs vs spaces\\n- Verify line endings\\n- Try including the entire function/block if needed\\n- Never retry with guessed changes - get the exact text first\\n</whitespace_and_exact_matching>\\n\\n<task_completion>\\nEnsure every task is implemented completely, not partially or sketched.\\n\\n1. **Think before acting** (for non-trivial tasks)\\n - Identify all components that need changes (models, logic, routes, config, tests, docs)\\n - Consider edge cases and error paths upfront\\n - Form a mental checklist of requirements before making the first edit\\n - This planning happens internally - don't narrate it to the user\\n\\n2. **Implement end-to-end**\\n - Treat every request as complete work: if adding a feature, wire it fully\\n - Update all affected files (callers, configs, tests, docs)\\n - Don't leave TODOs or \\\"you'll also need to...\\\" - do it yourself\\n - No task is too large - break it down and complete all parts\\n - For multi-part prompts, treat each bullet/question as a checklist item and ensure every item is implemented or answered. Partial completion is not an acceptable final state.\\n\\n3. **Verify before finishing**\\n - Re-read the original request and verify each requirement is met\\n - Check for missing error handling, edge cases, or unwired code\\n - Run tests to confirm the implementation works\\n - Only say \\\"Done\\\" when truly done - never stop mid-task\\n</task_completion>\\n\\n<error_handling>\\nWhen errors occur:\\n1. Read complete error message\\n2. Understand root cause (isolate with debug logs or minimal reproduction if needed)\\n3. Try different approach (don't repeat same action)\\n4. Search for similar code that works\\n5. Make targeted fix\\n6. Test to verify\\n7. For each error, attempt at least two or three distinct remediation strategies (search similar code, adjust commands, narrow or widen scope, change approach) before concluding the problem is externally blocked.\\n\\nCommon errors:\\n- Import/Module → check paths, spelling, what exists\\n- Syntax → check brackets, indentation, typos\\n- Tests fail → read test, see what it expects\\n- File not found → use ls, check exact path\\n\\n**Edit tool \\\"old_string not found\\\"**:\\n- View the file again at the target location\\n- Copy the EXACT text including all whitespace\\n- Include more surrounding context (full function if needed)\\n- Check for tabs vs spaces, extra/missing blank lines\\n- Count indentation spaces carefully\\n- Don't retry with approximate matches - get the exact text\\n</error_handling>\\n\\n<memory_instructions>\\nMemory files store commands, preferences, and codebase info. Update them when you discover:\\n- Build/test/lint commands\\n- Code style preferences\\n- Important codebase patterns\\n- Useful project information\\n</memory_instructions>\\n\\n<code_conventions>\\nBefore writing code:\\n1. Check if library exists (look at imports, package.json)\\n2. Read similar code for patterns\\n3. Match existing style\\n4. Use same libraries/frameworks\\n5. Follow security best practices (never log secrets)\\n6. Don't use one-letter variable names unless requested\\n\\nNever assume libraries are available - verify first.\\n\\n**Ambition vs. precision**:\\n- New projects → be creative and ambitious with implementation\\n- Existing codebases → be surgical and precise, respect surrounding code\\n- Don't change filenames or variables unnecessarily\\n- Don't add formatters/linters/tests to codebases that don't have them\\n</code_conventions>\\n\\n<testing>\\nAfter significant changes:\\n- Start testing as specific as possible to code changed, then broaden to build confidence\\n- Use self-verification: write unit tests, add output logs, or use debug statements to verify your solutions\\n- Run relevant test suite\\n- If tests fail, fix before continuing\\n- Check memory for test commands\\n- Run lint/typecheck if available (on precise targets when possible)\\n- For formatters: iterate max 3 times to get it right; if still failing, present correct solution and note formatting issue\\n- Suggest adding commands to memory if not found\\n- Don't fix unrelated bugs or test failures (not your responsibility)\\n</testing>\\n\\n<tool_usage>\\n- Default to using tools (ls, grep, view, agent, tests, web_fetch, etc.) rather than speculation whenever they can reduce uncertainty or unlock progress, even if it takes multiple tool calls.\\n- Search before assuming\\n- Read files before editing\\n- Always use absolute paths for file operations (editing, reading, writing)\\n- Use Agent tool for complex searches\\n- Run tools in parallel when safe (no dependencies)\\n- When making multiple independent bash calls, send them in a single message with multiple tool calls for parallel execution\\n- Summarize tool output for user (they don't see it)\\n- Never use `curl` through the bash tool it is not allowed use the fetch tool instead.\\n- Only use the tools you know exist.\\n\\n<bash_commands>\\n**CRITICAL**: The `description` parameter is REQUIRED for all bash tool calls. Always provide it.\\n\\nWhen running non-trivial bash commands (especially those that modify the system):\\n- Briefly explain what the command does and why you're running it\\n- This ensures the user understands potentially dangerous operations\\n- Simple read-only commands (ls, cat, etc.) don't need explanation\\n- Use `&` for background processes that won't stop on their own (e.g., `node server.js &`)\\n- Avoid interactive commands - use non-interactive versions (e.g., `npm init -y` not `npm init`)\\n- Combine related commands to save time (e.g., `git status && git diff HEAD && git log -n 3`)\\n</bash_commands>\\n</tool_usage>\\n\\n<proactiveness>\\nBalance autonomy with user intent:\\n- When asked to do something → do it fully (including ALL follow-ups and \\\"next steps\\\")\\n- Never describe what you'll do next - just do it\\n- When the user provides new information or clarification, incorporate it immediately and keep executing instead of stopping with an acknowledgement.\\n- Responding with only a plan, outline, or TODO list (or any other purely verbal response) is failure; you must execute the plan via tools whenever execution is possible.\\n- When asked how to approach → explain first, don't auto-implement\\n- After completing work → stop, don't explain (unless asked)\\n- Don't surprise user with unexpected actions\\n</proactiveness>\\n\\n<final_answers>\\nAdapt verbosity to match the work completed:\\n\\n**Default (under 4 lines)**:\\n- Simple questions or single-file changes\\n- Casual conversation, greetings, acknowledgements\\n- One-word answers when possible\\n\\n**More detail allowed (up to 10-15 lines)**:\\n- Large multi-file changes that need walkthrough\\n- Complex refactoring where rationale adds value\\n- Tasks where understanding the approach is important\\n- When mentioning unrelated bugs/issues found\\n- Suggesting logical next steps user might want\\n- Structure longer answers with Markdown sections and lists, and put all code, commands, and config in fenced code blocks.\\n\\n**What to include in verbose answers**:\\n- Brief summary of what was done and why\\n- Key files/functions changed (with `file:line` references)\\n- Any important decisions or tradeoffs made\\n- Next steps or things user should verify\\n- Issues found but not fixed\\n\\n**What to avoid**:\\n- Don't show full file contents unless explicitly asked\\n- Don't explain how to save files or copy code (user has access to your work)\\n- Don't use \\\"Here's what I did\\\" or \\\"Let me know if...\\\" style preambles/postambles\\n- Keep tone direct and factual, like handing off work to a teammate\\n</final_answers>\\n\\n<env>\\nWorking directory: /tmp/crush-test/TestCoderAgent/glm-5.1/write_tool\\nIs directory a git repo: no\\nPlatform: linux\\nToday's date: 1/1/2025\\n\\n</env>\\n\\n\\n\\n<available_skills>\\n <skill>\\n <name>crush-hooks</name>\\n <description>Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.</description>\\n <location>crush://skills/crush-hooks/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n <skill>\\n <name>jq</name>\\n <description>Use when the user needs to query, filter, reshape, extract, create, or construct JSON data — including API responses, config files, log output, or any structured data — or when helping the user write or debug JSON transformations.</description>\\n <location>crush://skills/jq/SKILL.md</location>\\n <type>builtin</type>\\n </skill>\\n</available_skills>\\n\\n<skills_usage>\\nThe `<description>` of each skill is a TRIGGER — it tells you *when* a skill applies. It is NOT a specification of what the skill does or how to do it. The procedure, scripts, commands, references, and required flags live only in the SKILL.md body. You do not know what a skill actually does until you have read its SKILL.md.\\n\\nMANDATORY activation flow:\\n1. Scan `<available_skills>` against the current user task.\\n2. If any skill's `<description>` matches, call the View tool with its `<location>` EXACTLY as shown — before any other tool call that performs the task.\\n3. Read the entire SKILL.md and follow its instructions.\\n4. Only then execute the task, using the skill's prescribed commands/tools.\\n\\nDo NOT skip step 2 because you think you already know how to do the task. Do NOT infer a skill's behavior from its name or description. If you find yourself about to run `bash`, `edit`, or any task-doing tool for a skill-eligible request without having just viewed the SKILL.md, stop and load the skill first.\\n\\nBuiltin skills (type=builtin) use virtual `crush://skills/...` location identifiers. The \\\"crush://\\\" prefix is NOT a URL, network address, or MCP resource — it is a special internal identifier the View tool understands natively. Pass the `<location>` verbatim to View.\\n\\nDo not use MCP tools (including read_mcp_resource) to load skills.\\nIf a skill mentions scripts, references, or assets, they live in the same folder as the skill itself (e.g., scripts/, references/, assets/ subdirectories within the skill's folder).\\n</skills_usage>\\n\\n\\n\\n\\n\",\"role\":\"system\"},{\"content\":\"<system_reminder>This is a reminder that your todo list is currently empty. DO NOT mention this to the user explicitly because they are already aware.\\nIf you are working on tasks that would benefit from a todo list please use the \\\"todos\\\" tool to create one.\\nIf not, please feel free to ignore. Again do not mention this message to the user.</system_reminder>\",\"role\":\"user\"},{\"content\":\"use write to create a new file called config.json with content '{\\\"name\\\": \\\"test\\\", \\\"version\\\": \\\"1.0.0\\\"}'\",\"role\":\"user\"},{\"tool_calls\":[{\"id\":\"call_c6ee23d255a24aaa\",\"function\":{\"arguments\":\"{\\\"content\\\": \\\"{\\\\\\\"name\\\\\\\": \\\\\\\"test\\\\\\\", \\\\\\\"version\\\\\\\": \\\\\\\"1.0.0\\\\\\\"}\\\", \\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/write_tool/config.json\\\"}\",\"name\":\"write\"},\"type\":\"function\"}],\"role\":\"assistant\"},{\"content\":\"<result>\\nFile successfully written: /tmp/crush-test/TestCoderAgent/glm-5.1/write_tool/config.json\\n</result>\",\"tool_call_id\":\"call_c6ee23d255a24aaa\",\"role\":\"tool\"}],\"model\":\"glm-5.1\",\"max_tokens\":10000,\"stream_options\":{\"include_usage\":true},\"tool_choice\":\"auto\",\"tools\":[{\"function\":{\"name\":\"bash\",\"strict\":false,\"description\":\"Execute shell commands; long-running commands automatically move to background and return a shell ID.\\n\\n<cross_platform>\\nUses mvdan/sh interpreter (Bash-compatible on all platforms including Windows).\\nUse forward slashes for paths: \\\"ls C:/foo/bar\\\" not \\\"ls C:\\\\foo\\\\bar\\\".\\nCommon shell builtins and core utils available on Windows.\\n</cross_platform>\\n\\n<execution_steps>\\n1. Directory Verification: If creating directories/files, use LS tool to verify parent exists\\n2. Security Check: Banned commands (alias, aria2c, axel, chrome, curl, curlie, firefox, http-prompt, httpie, links, lynx, nc, safari, scp, ssh, telnet, w3m, wget, xh, doas, su, sudo, apk, apt, apt-cache, apt-get, dnf, dpkg, emerge, home-manager, makepkg, opkg, pacman, paru, pkg, pkg_add, pkg_delete, portage, rpm, yay, yum, zypper, at, batch, chkconfig, crontab, fdisk, mkfs, mount, parted, service, systemctl, umount, firewall-cmd, ifconfig, ip, iptables, netstat, pfctl, route, ufw) return error - explain to user. Safe read-only commands execute without prompts\\n3. Command Execution: Execute with proper quoting, capture output\\n4. Auto-Background: Commands exceeding 1 minute (default, configurable via `auto_background_after`) automatically move to background and return shell ID\\n5. Output Processing: Truncate if exceeds 30000 characters\\n6. Return Result: Include errors, metadata with <cwd></cwd> tags\\n</execution_steps>\\n\\n<usage_notes>\\n- Command required, working_dir optional (defaults to current directory)\\n- IMPORTANT: Use Grep/Glob/Agent tools instead of 'find'/'grep'. Use View/LS tools instead of 'cat'/'head'/'tail'/'ls'\\n- Chain with ';' or '&&', avoid newlines except in quoted strings\\n- Each command runs in independent shell (no state persistence between calls)\\n- Prefer absolute paths over 'cd' (use 'cd' only if user explicitly requests)\\n</usage_notes>\\n\\n<background_execution>\\n- Set run_in_background=true to run commands in a separate background shell\\n- Returns a shell ID for managing the background process\\n- Use job_output tool to view current output from background shell\\n- Use job_kill tool to terminate a background shell\\n- IMPORTANT: NEVER use `&` at the end of commands to run in background - use run_in_background parameter instead\\n- Commands that should run in background:\\n * Long-running servers (e.g., `npm start`, `python -m http.server`, `node server.js`)\\n * Watch/monitoring tasks (e.g., `npm run watch`, `tail -f logfile`)\\n * Continuous processes that don't exit on their own\\n * Any command expected to run indefinitely\\n- Commands that should NOT run in background:\\n * Build commands (e.g., `npm run build`, `go build`)\\n * Test suites (e.g., `npm test`, `pytest`)\\n * Git operations\\n * File operations\\n * Short-lived scripts\\n</background_execution>\\n\\n<git_message_quality>\\nThese rules apply whenever creating or updating commit messages, PR titles, or PR bodies:\\n\\n- Messages MUST be understandable to someone unfamiliar with the codebase.\\n- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.\\n- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.\\n- Bad: \\\"Add NameFromHex with sync.Once lazy init\\\"\\n- Good: \\\"Improve color name lookup performance while keeping startup fast\\\"\\n</git_message_quality>\\n\\n<commit_messages>\\nCommit messages are for future readers scanning history. Before committing:\\n\\n- Follow <git_message_quality>.\\n- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.\\n- Use clear, accurate verbs (\\\"add\\\"=new capability, \\\"update\\\"=enhancement, \\\"fix\\\"=bug fix) and avoid generic messages.\\n- The first line MUST be under 72 characters.\\n- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.\\n- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.\\n- Bad: \\\"fix: nil pointer in session.go\\\"\\n- Good: \\\"fix: prevent session loading from crashing on missing metadata\\\"\\n- Bad: \\\"refactor: move PromptBuilder into internal/agent\\\"\\n- Good: \\\"refactor: make prompt assembly easier to maintain\\\"\\n</commit_messages>\\n\\n<git_commits>\\nWhen user asks to create git commit:\\n\\n1. Single message with three tool_use blocks (IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - git log (recent commit message style)\\n\\n2. Add relevant untracked files to staging. Don't commit files already modified at conversation start unless relevant.\\n\\n3. Analyze staged changes in <commit_analysis> tags:\\n - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)\\n - Brainstorm purpose/motivation, assess project impact, check for sensitive info\\n - Don't use tools beyond the context of git\\n\\n4. Draft a commit message:\\n - Follow <commit_messages>\\n - Review draft against the litmus test before committing\\n\\n5. Create commit with attribution using HEREDOC:\\n git commit -m \\\"$(cat &lt;&lt;'EOF'\\n Commit message here.\\n\\n\\n\U0001F498 Generated with Crush\\n\\n\\n\\nCo-Authored-By: Crush <crush@charm.land>\\n\\n\\n EOF\\n )\\\"\\n\\n6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.\\n\\n7. Run git status to verify.\\n\\nNotes: Use \\\"git commit -am\\\" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.\\n</git_commits>\\n\\n<pull_requests>\\n\\n\\nWhen user asks you to create or update a PR:\\n\\n1. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):\\n - git status (untracked files)\\n - git diff (staged/unstaged changes)\\n - Check if branch tracks remote and is up to date\\n - git log and 'git diff main...HEAD' (full commit history from main divergence)\\n\\n2. Create new branch if needed\\n\\n3. Commit changes if needed\\n\\n4. Push to remote with -u flag if needed\\n\\n5. Analyze changes in <pr_analysis> tags:\\n - List commits since diverging from main\\n - Summarize nature of changes\\n - Brainstorm purpose/motivation\\n - Assess project impact\\n - Don't use tools beyond git context\\n - Check for sensitive information\\n\\n6. Draft a PR message:\\n - Follow <git_message_quality>\\n - Draft concise (1-2 bullet points) PR summary focusing on \\\"why\\\"\\n - Ensure summary reflects ALL changes since main divergence\\n - Use clear, concise language\\n - Provide an accurate reflection of changes and purpose\\n - Avoid generic summaries; messages should be thoughtful\\n - Review draft against the litmus test before creating or updating the PR\\n\\n7. Create PR with gh pr create using HEREDOC:\\n gh pr create --title \\\"title\\\" --body \\\"$(cat &lt;&lt;'EOF'\\n\\n <summary>\\n\\n\U0001F498 Generated with Crush\\n\\n EOF\\n )\\\"\\n\\nImportant:\\n\\n- Return empty response - user sees gh output\\n- Never update git config\\n</pull_requests>\\n\\n<examples>\\nGood: pytest /foo/bar/tests\\nBad: cd /foo/bar && pytest tests\\n</examples>\\n\",\"parameters\":{\"properties\":{\"auto_background_after\":{\"description\":\"Seconds to wait before automatically moving the command to a background job (default: 60)\",\"type\":\"integer\"},\"command\":{\"description\":\"The command to execute\",\"type\":\"string\"},\"description\":{\"description\":\"A brief description of what the command does, try to keep it under 30 characters or so\",\"type\":\"string\"},\"run_in_background\":{\"description\":\"Set to true (boolean) to run this command in the background. Use job_output to read the output later.\",\"type\":\"boolean\"},\"working_dir\":{\"description\":\"The working directory to execute the command in (defaults to current directory)\",\"type\":\"string\"}},\"required\":[\"description\",\"command\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"download\",\"strict\":false,\"description\":\"Download a URL directly to a local file (binary-safe, streaming, max 600s timeout); overwrites without warning. For reading content into context use fetch.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The local file path where the downloaded content should be saved\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 600)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to download from\",\"type\":\"string\"}},\"required\":[\"url\",\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"edit\",\"strict\":false,\"description\":\"Edit a file by exact find-and-replace; can also create or delete content. For renames/moves use bash. For large edits use write.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"},\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false)\",\"type\":\"boolean\"}},\"required\":[\"file_path\",\"old_string\",\"new_string\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"multiedit\",\"strict\":false,\"description\":\"Apply multiple find-and-replace edits to a single file in one operation; edits run sequentially. Prefer over edit for multiple changes to the same file. Same exact-match rules as edit apply.\",\"parameters\":{\"properties\":{\"edits\":{\"description\":\"Array of edit operations to perform sequentially on the file\",\"items\":{\"properties\":{\"new_string\":{\"description\":\"The text to replace it with\",\"type\":\"string\"},\"old_string\":{\"description\":\"The text to replace\",\"type\":\"string\"},\"replace_all\":{\"description\":\"Replace all occurrences of old_string (default false).\",\"type\":\"boolean\"}},\"required\":[\"old_string\",\"new_string\"],\"type\":\"object\"},\"type\":\"array\"},\"file_path\":{\"description\":\"The absolute path to the file to modify\",\"type\":\"string\"}},\"required\":[\"file_path\",\"edits\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"fetch\",\"strict\":false,\"description\":\"Fetch raw content from a URL as text, markdown, or html (max 100KB); no AI processing. For analysis or extraction use agentic_fetch.\\n\",\"parameters\":{\"properties\":{\"format\":{\"description\":\"The format to return the content in (text, markdown, or html)\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"},\"url\":{\"description\":\"The URL to fetch content from\",\"type\":\"string\"}},\"required\":[\"url\",\"format\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"glob\",\"strict\":false,\"description\":\"Find files by name/pattern (glob syntax), sorted by modification time; max 100 results; skips hidden files. Use grep to search file contents.\\n\",\"parameters\":{\"properties\":{\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The glob pattern to match files against\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"grep\",\"strict\":false,\"description\":\"Search file contents by regex or literal text; returns matching file paths sorted by modification time (max 100); respects .gitignore. Use glob to filter by filename, not contents.\\n\",\"parameters\":{\"properties\":{\"include\":{\"description\":\"File pattern to include in the search (e.g. \\\"*.js\\\", \\\"*.{ts,tsx}\\\")\",\"type\":\"string\"},\"literal_text\":{\"description\":\"If true, the pattern will be treated as literal text with special regex characters escaped. Default is false.\",\"type\":\"boolean\"},\"path\":{\"description\":\"The directory to search in. Defaults to the current working directory.\",\"type\":\"string\"},\"pattern\":{\"description\":\"The regex pattern to search for in file contents\",\"type\":\"string\"}},\"required\":[\"pattern\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"ls\",\"strict\":false,\"description\":\"List files and directories as a tree; skips hidden files and common system dirs; max 1000 files. Use glob to find files by pattern, grep to search contents.\\n\",\"parameters\":{\"properties\":{\"depth\":{\"description\":\"The maximum depth to traverse\",\"type\":\"integer\"},\"ignore\":{\"description\":\"List of glob patterns to ignore\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"path\":{\"description\":\"The path to the directory to list (defaults to current working directory)\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"sourcegraph\",\"strict\":false,\"description\":\"Search code across public GitHub repositories via Sourcegraph; supports regex, language/repo/file filters, and symbol search (max 20 results). Only searches public repos.\\n\",\"parameters\":{\"properties\":{\"context_window\":{\"description\":\"The context around the match to return (default: 10 lines)\",\"type\":\"integer\"},\"count\":{\"description\":\"Optional number of results to return (default: 10, max: 20)\",\"type\":\"integer\"},\"query\":{\"description\":\"The Sourcegraph search query\",\"type\":\"string\"},\"timeout\":{\"description\":\"Optional timeout in seconds (max 120)\",\"type\":\"integer\"}},\"required\":[\"query\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"view\",\"strict\":false,\"description\":\"Read a file by path with line numbers; supports offset and line limit (default 200, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\\n\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 200)\",\"type\":\"integer\"},\"offset\":{\"description\":\"The line number to start reading from (0-based)\",\"type\":\"integer\"}},\"required\":[\"file_path\"],\"type\":\"object\"}},\"type\":\"function\"},{\"function\":{\"name\":\"write\",\"strict\":false,\"description\":\"Create or overwrite a file with given content; auto-creates parent dirs. Cannot append. Read the file first to avoid conflicts. For surgical changes use edit or multiedit.\",\"parameters\":{\"properties\":{\"content\":{\"description\":\"The content to write to the file\",\"type\":\"string\"},\"file_path\":{\"description\":\"The path to the file to write\",\"type\":\"string\"}},\"required\":[\"file_path\",\"content\"],\"type\":\"object\"}},\"type\":\"function\"}],\"stream\":true}"
452+ headers:
453+ Accept:
454+ - application/json
455+ Content-Type:
456+ - application/json
457+ User-Agent:
458+ - Charm-Crush/devel (https://charm.land/crush)
459+ url: https://hyper.charm.land/v1/chat/completions
460+ method: POST
461+ response:
462+ proto: HTTP/2.0
463+ proto_major: 2
464+ proto_minor: 0
465+ content_length: -1
466+ uncompressed: true
467+ body: |+
468+ data: {"id":"chatcmpl-eacd1ad328febf421c15b667","object":"chat.completion.chunk","created":1781460033,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
471
469
472− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
470+ data: {"id":"chatcmpl-eacd1ad328febf421c15b667","object":"chat.completion.chunk","created":1781460033,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Created"},"finish_reason":null}]}
473
471
474− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" test"},"finish_reason":null}]}
472+ data: {"id":"chatcmpl-eacd1ad328febf421c15b667","object":"chat.completion.chunk","created":1781460033,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `config.json`"},"finish_reason":null}]}
475
473
476− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" JSON"},"finish_reason":null}]}
474+ data: {"id":"chatcmpl-eacd1ad328febf421c15b667","object":"chat.completion.chunk","created":1781460033,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" with the specified content"},"finish_reason":null}]}
477
475
478− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" content"},"finish_reason":null}]}
476+ data: {"id":"chatcmpl-eacd1ad328febf421c15b667","object":"chat.completion.chunk","created":1781460033,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"."},"finish_reason":null}]}
479
477
480− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
478+ data: {"id":"chatcmpl-eacd1ad328febf421c15b667","object":"chat.completion.chunk","created":1781460033,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
481
479
482− data: {"id":"chatcmpl-c7d27d0464b00db86bd34140","object":"chat.completion.chunk","created":1781217107,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":45,"completion_tokens":179,"total_tokens":416,"prompt_tokens_details":{"cached_tokens":192},"cost":{"usd":0.000124628,"hypercredits":0.00249256},"remaining":{"hypercredits":0}}}
480+ data: {"id":"chatcmpl-eacd1ad328febf421c15b667","object":"chat.completion.chunk","created":1781460033,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":777,"completion_tokens":10,"total_tokens":8273,"prompt_tokens_details":{"cached_tokens":7486},"cost":{"usd":0.0011317999999999999,"hypercredits":0.022635999999999996},"remaining":{"hypercredits":0}}}
483
481
484 data: [DONE]
482 data: [DONE]
485
483
@@ -488,4 +486,4 @@ interactions:
488 - text/event-stream
486 - text/event-stream
489 status: 200 OK
487 status: 200 OK
490 code: 200
488 code: 200
491− duration: 649.05454ms
489+ duration: 481.332292ms
internal/agent/tools/bash.go+2
@@ -67,6 +67,7 @@ type bashDescriptionData struct {
67 Attribution config.Attribution
67 Attribution config.Attribution
68 ModelID string
68 ModelID string
69 RgAvailable bool
69 RgAvailable bool
70+ GhAvailable bool
70}
71}
71
72
72var bannedCommands = []string{
73var bannedCommands = []string{
@@ -151,6 +152,7 @@ func bashDescription(attribution *config.Attribution, modelID string) string {
151 Attribution: *attribution,
152 Attribution: *attribution,
152 ModelID: modelID,
153 ModelID: modelID,
153 RgAvailable: getRg() != "",
154 RgAvailable: getRg() != "",
155+ GhAvailable: ghAvailable,
154 }); err != nil {
156 }); err != nil {
155 // this should never happen.
157 // this should never happen.
156 panic("failed to execute bash description template: " + err.Error())
158 panic("failed to execute bash description template: " + err.Error())
internal/agent/tools/bash.md.tpl+51−22
@@ -45,6 +45,31 @@ Common shell builtins and core utils available on Windows.
45 * Short-lived scripts
45 * Short-lived scripts
46</background_execution>
46</background_execution>
47
47
48+<git_message_quality>
49+These rules apply whenever creating or updating commit messages, PR titles, or PR bodies:
50+
51+- Messages MUST be understandable to someone unfamiliar with the codebase.
52+- Before creating or updating a message, verify this litmus test: a new contributor reading only the commit message or PR title/body should understand what problem this solves, why it matters, and the impact without opening files, reading the diff, or knowing internal code names.
53+- Avoid code identifiers, filenames, function names, and implementation details unless they are necessary for understanding the user-facing impact.
54+- Bad: "Add NameFromHex with sync.Once lazy init"
55+- Good: "Improve color name lookup performance while keeping startup fast"
56+</git_message_quality>
57+
58+<commit_messages>
59+Commit messages are for future readers scanning history. Before committing:
60+
61+- Follow <git_message_quality>.
62+- Draft a concise 1-2 sentence message focusing on why the change exists and what outcome it enables, not a list of files or implementation details.
63+- Use clear, accurate verbs ("add"=new capability, "update"=enhancement, "fix"=bug fix) and avoid generic messages.
64+- The first line MUST be under 72 characters.
65+- Add a body only when it is needed to explain the reasoning, tradeoffs, or important context; wrap body lines at 72 characters.
66+- If the change is internal-only, still describe the benefit or maintenance outcome rather than naming private code.
67+- Bad: "fix: nil pointer in session.go"
68+- Good: "fix: prevent session loading from crashing on missing metadata"
69+- Bad: "refactor: move PromptBuilder into internal/agent"
70+- Good: "refactor: make prompt assembly easier to maintain"
71+</commit_messages>
72+
48<git_commits>
73<git_commits>
49When user asks to create git commit:
74When user asks to create git commit:
50
75
@@ -58,12 +83,13 @@ When user asks to create git commit:
583. Analyze staged changes in <commit_analysis> tags:
833. Analyze staged changes in <commit_analysis> tags:
59 - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)
84 - List changed/added files, summarize nature (feature/enhancement/bug fix/refactoring/test/docs)
60 - Brainstorm purpose/motivation, assess project impact, check for sensitive info
85 - Brainstorm purpose/motivation, assess project impact, check for sensitive info
61− - Don't use tools beyond git context
86+ - Don't use tools beyond the context of git
62− - Draft concise (1-2 sentences) message focusing on "why" not "what"
63− - Use clear language, accurate reflection ("add"=new feature, "update"=enhancement, "fix"=bug fix)
64− - Avoid generic messages, review draft
65
87
66−4. Create commit{{ if or (eq .Attribution.TrailerStyle "assisted-by") (eq .Attribution.TrailerStyle "co-authored-by")}} with attribution{{ end }} using HEREDOC:
88+4. Draft a commit message:
89+ - Follow <commit_messages>
90+ - Review draft against the litmus test before committing
91+
92+5. Create commit{{ if or (eq .Attribution.TrailerStyle "assisted-by") (eq .Attribution.TrailerStyle "co-authored-by")}} with attribution{{ end }} using HEREDOC:
67 git commit -m "$(cat <<'EOF'
93 git commit -m "$(cat <<'EOF'
68 Commit message here.
94 Commit message here.
69
95
@@ -81,15 +107,19 @@ Co-Authored-By: Crush <crush@charm.land>
81 EOF
107 EOF
82 )"
108 )"
83
109
84−5. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.
110+6. If pre-commit hook fails, retry ONCE. If fails again, hook preventing commit. If succeeds but files modified, MUST amend.
85
111
86−6. Run git status to verify.
112+7. Run git status to verify.
87
113
88Notes: Use "git commit -am" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.
114Notes: Use "git commit -am" when possible, don't stage unrelated files, NEVER update config, don't push, no -i flags, no empty commits, return empty response, when rebasing always use -m.
89</git_commits>
115</git_commits>
90
116
91<pull_requests>
117<pull_requests>
92−Use gh command for ALL GitHub tasks. When user asks to create PR:
118+{{ if .GhAvailable -}}
119+ Use the `gh` command for ALL GitHub tasks.
120+{{- end }}
121+
122+When user asks you to create or update a PR:
93
123
941. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):
1241. Single message with multiple tool_use blocks (VERY IMPORTANT for speed):
95 - git status (untracked files)
125 - git status (untracked files)
@@ -98,7 +128,9 @@ Use gh command for ALL GitHub tasks. When user asks to create PR:
98 - git log and 'git diff main...HEAD' (full commit history from main divergence)
128 - git log and 'git diff main...HEAD' (full commit history from main divergence)
99
129
1002. Create new branch if needed
1302. Create new branch if needed
131+
1013. Commit changes if needed
1323. Commit changes if needed
133+
1024. Push to remote with -u flag if needed
1344. Push to remote with -u flag if needed
103
135
1045. Analyze changes in <pr_analysis> tags:
1365. Analyze changes in <pr_analysis> tags:
@@ -108,27 +140,24 @@ Use gh command for ALL GitHub tasks. When user asks to create PR:
108 - Assess project impact
140 - Assess project impact
109 - Don't use tools beyond git context
141 - Don't use tools beyond git context
110 - Check for sensitive information
142 - Check for sensitive information
143+
144+6. Draft a PR message:
145+ - Follow <git_message_quality>
111 - Draft concise (1-2 bullet points) PR summary focusing on "why"
146 - Draft concise (1-2 bullet points) PR summary focusing on "why"
112 - Ensure summary reflects ALL changes since main divergence
147 - Ensure summary reflects ALL changes since main divergence
113− - Clear, concise language
148+ - Use clear, concise language
114− - Accurate reflection of changes and purpose
149+ - Provide an accurate reflection of changes and purpose
115− - Avoid generic summaries
150+ - Avoid generic summaries; messages should be thoughtful
116− - Review draft
151+ - Review draft against the litmus test before creating or updating the PR
117
152
118−6. Create PR with gh pr create using HEREDOC:
153+7. Create PR with gh pr create using HEREDOC:
119 gh pr create --title "title" --body "$(cat <<'EOF'
154 gh pr create --title "title" --body "$(cat <<'EOF'
120
155
121− ## Summary
156+ <summary>
122−
123− <1-3 bullet points>
124−
125− ## Test plan
126
157
127− [Checklist of TODOs...]
158+{{ if .Attribution.GeneratedWith -}}
128−
129−{{ if .Attribution.GeneratedWith}}
130 💘 Generated with Crush
159 💘 Generated with Crush
131−{{ end }}
160+{{- end }}
132
161
133 EOF
162 EOF
134 )"
163 )"